mirror of
https://github.com/SukkaW/Surge.git
synced 2025-12-12 09:10:35 +08:00
Print task run duration time
This commit is contained in:
parent
09c8b62f6a
commit
9f05105b29
@ -4,11 +4,9 @@ const { isIPv4, isIPv6 } = require('net');
|
|||||||
const { createRuleset } = require('./lib/create-file');
|
const { createRuleset } = require('./lib/create-file');
|
||||||
const { fetchRemoteTextAndCreateReadlineInterface, readFileByLine } = require('./lib/fetch-remote-text-by-line');
|
const { fetchRemoteTextAndCreateReadlineInterface, readFileByLine } = require('./lib/fetch-remote-text-by-line');
|
||||||
const { processLine } = require('./lib/process-line');
|
const { processLine } = require('./lib/process-line');
|
||||||
|
const { runner } = require('./lib/trace-runner');
|
||||||
|
|
||||||
(async () => {
|
runner(__filename, async () => {
|
||||||
console.time('Total Time - build-anti-bogus-domain');
|
|
||||||
console.time('* Download bogus-nxdomain-list');
|
|
||||||
|
|
||||||
/** @type {string[]} */
|
/** @type {string[]} */
|
||||||
const res = [];
|
const res = [];
|
||||||
for await (const line of await fetchRemoteTextAndCreateReadlineInterface('https://raw.githubusercontent.com/felixonmars/dnsmasq-china-list/master/bogus-nxdomain.china.conf')) {
|
for await (const line of await fetchRemoteTextAndCreateReadlineInterface('https://raw.githubusercontent.com/felixonmars/dnsmasq-china-list/master/bogus-nxdomain.china.conf')) {
|
||||||
@ -17,8 +15,6 @@ const { processLine } = require('./lib/process-line');
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
console.timeEnd('* Download bogus-nxdomain-list');
|
|
||||||
|
|
||||||
const filePath = path.resolve(__dirname, '../Source/ip/reject.conf');
|
const filePath = path.resolve(__dirname, '../Source/ip/reject.conf');
|
||||||
|
|
||||||
/** @type {string[]} */
|
/** @type {string[]} */
|
||||||
@ -60,6 +56,4 @@ const { processLine } = require('./lib/process-line');
|
|||||||
path.resolve(__dirname, '../List/ip/reject.conf'),
|
path.resolve(__dirname, '../List/ip/reject.conf'),
|
||||||
path.resolve(__dirname, '../Clash/ip/reject.txt')
|
path.resolve(__dirname, '../Clash/ip/reject.txt')
|
||||||
));
|
));
|
||||||
|
});
|
||||||
console.timeEnd('Total Time - build-anti-bogus-domain');
|
|
||||||
})();
|
|
||||||
|
|||||||
@ -1,10 +1,9 @@
|
|||||||
const path = require('path');
|
const path = require('path');
|
||||||
const { createRuleset } = require('./lib/create-file');
|
const { createRuleset } = require('./lib/create-file');
|
||||||
const { parseFelixDnsmasq } = require('./lib/parse-dnsmasq');
|
const { parseFelixDnsmasq } = require('./lib/parse-dnsmasq');
|
||||||
|
const { runner } = require('./lib/trace-runner');
|
||||||
|
|
||||||
(async () => {
|
runner(__filename, async () => {
|
||||||
console.time('Total Time - build-apple-cdn-conf');
|
|
||||||
|
|
||||||
const res = await parseFelixDnsmasq('https://raw.githubusercontent.com/felixonmars/dnsmasq-china-list/master/apple.china.conf');
|
const res = await parseFelixDnsmasq('https://raw.githubusercontent.com/felixonmars/dnsmasq-china-list/master/apple.china.conf');
|
||||||
|
|
||||||
const description = [
|
const description = [
|
||||||
@ -41,6 +40,4 @@ const { parseFelixDnsmasq } = require('./lib/parse-dnsmasq');
|
|||||||
path.resolve(__dirname, '../Clash/domainset/apple_cdn.txt')
|
path.resolve(__dirname, '../Clash/domainset/apple_cdn.txt')
|
||||||
)
|
)
|
||||||
]);
|
]);
|
||||||
|
});
|
||||||
console.timeEnd('Total Time - build-apple-cdn-conf');
|
|
||||||
})();
|
|
||||||
|
|||||||
@ -4,10 +4,9 @@ const { createRuleset } = require('./lib/create-file');
|
|||||||
const { minifyRules } = require('./lib/minify-rules');
|
const { minifyRules } = require('./lib/minify-rules');
|
||||||
const { fetchRemoteTextAndCreateReadlineInterface, readFileByLine } = require('./lib/fetch-remote-text-by-line');
|
const { fetchRemoteTextAndCreateReadlineInterface, readFileByLine } = require('./lib/fetch-remote-text-by-line');
|
||||||
const Trie = require('./lib/trie');
|
const Trie = require('./lib/trie');
|
||||||
|
const { runner } = require('./lib/trace-runner');
|
||||||
|
|
||||||
(async () => {
|
runner(__filename, async () => {
|
||||||
console.time('Total Time - build-cdn-conf');
|
|
||||||
|
|
||||||
const trie = new Trie();
|
const trie = new Trie();
|
||||||
for await (const line of await fetchRemoteTextAndCreateReadlineInterface('https://publicsuffix.org/list/public_suffix_list.dat')) {
|
for await (const line of await fetchRemoteTextAndCreateReadlineInterface('https://publicsuffix.org/list/public_suffix_list.dat')) {
|
||||||
trie.add(line);
|
trie.add(line);
|
||||||
@ -55,6 +54,4 @@ const Trie = require('./lib/trie');
|
|||||||
path.resolve(__dirname, '../List/non_ip/cdn.conf'),
|
path.resolve(__dirname, '../List/non_ip/cdn.conf'),
|
||||||
path.resolve(__dirname, '../Clash/non_ip/cdn.txt')
|
path.resolve(__dirname, '../Clash/non_ip/cdn.txt')
|
||||||
));
|
));
|
||||||
|
});
|
||||||
console.timeEnd('Total Time - build-cdn-conf');
|
|
||||||
})();
|
|
||||||
|
|||||||
@ -4,6 +4,7 @@ const { resolve: pathResolve } = require('path');
|
|||||||
// This should not use `createRuleset` API since we are going to generate ipcidr for Clash
|
// This should not use `createRuleset` API since we are going to generate ipcidr for Clash
|
||||||
const { compareAndWriteFile, withBannerArray } = require('./lib/create-file');
|
const { compareAndWriteFile, withBannerArray } = require('./lib/create-file');
|
||||||
const { processLine } = require('./lib/process-line');
|
const { processLine } = require('./lib/process-line');
|
||||||
|
const { runner } = require('./lib/trace-runner');
|
||||||
|
|
||||||
// https://github.com/misakaio/chnroutes2/issues/25
|
// https://github.com/misakaio/chnroutes2/issues/25
|
||||||
const EXCLUDE_CIDRS = [
|
const EXCLUDE_CIDRS = [
|
||||||
@ -11,8 +12,7 @@ const EXCLUDE_CIDRS = [
|
|||||||
'223.120.0.0/15'
|
'223.120.0.0/15'
|
||||||
];
|
];
|
||||||
|
|
||||||
(async () => {
|
runner(__filename, async () => {
|
||||||
console.time('Total Time - build-chnroutes-cidr');
|
|
||||||
const { exclude: excludeCidrs } = await import('cidr-tools-wasm');
|
const { exclude: excludeCidrs } = await import('cidr-tools-wasm');
|
||||||
|
|
||||||
/** @type {Set<string>} */
|
/** @type {Set<string>} */
|
||||||
@ -56,6 +56,4 @@ const EXCLUDE_CIDRS = [
|
|||||||
pathResolve(__dirname, '../Clash/ip/china_ip.txt')
|
pathResolve(__dirname, '../Clash/ip/china_ip.txt')
|
||||||
)
|
)
|
||||||
]);
|
]);
|
||||||
|
});
|
||||||
console.timeEnd('Total Time - build-chnroutes-cidr');
|
|
||||||
})();
|
|
||||||
|
|||||||
@ -5,8 +5,9 @@ const { readFileByLine } = require('./lib/fetch-remote-text-by-line');
|
|||||||
const { processLine } = require('./lib/process-line');
|
const { processLine } = require('./lib/process-line');
|
||||||
const { compareAndWriteFile, createRuleset } = require('./lib/create-file');
|
const { compareAndWriteFile, createRuleset } = require('./lib/create-file');
|
||||||
const domainSorter = require('./lib/stable-sort-domain');
|
const domainSorter = require('./lib/stable-sort-domain');
|
||||||
|
const { runner } = require('./lib/trace-runner');
|
||||||
|
|
||||||
(async () => {
|
runner(__filename, async () => {
|
||||||
const rl = readFileByLine(path.resolve(__dirname, '../Source/non_ip/domestic.conf'));
|
const rl = readFileByLine(path.resolve(__dirname, '../Source/non_ip/domestic.conf'));
|
||||||
const results = [];
|
const results = [];
|
||||||
for await (const l of rl) {
|
for await (const l of rl) {
|
||||||
@ -60,4 +61,4 @@ const domainSorter = require('./lib/stable-sort-domain');
|
|||||||
path.resolve(__dirname, '../Modules/sukka_local_dns_mapping.sgmodule')
|
path.resolve(__dirname, '../Modules/sukka_local_dns_mapping.sgmodule')
|
||||||
)
|
)
|
||||||
]);
|
]);
|
||||||
})();
|
});
|
||||||
|
|||||||
@ -7,6 +7,7 @@ const tldts = require('tldts');
|
|||||||
const { processLine } = require('./lib/process-line');
|
const { processLine } = require('./lib/process-line');
|
||||||
const { readFileByLine } = require('./lib/fetch-remote-text-by-line');
|
const { readFileByLine } = require('./lib/fetch-remote-text-by-line');
|
||||||
const domainSorter = require('./lib/stable-sort-domain');
|
const domainSorter = require('./lib/stable-sort-domain');
|
||||||
|
const { runner } = require('./lib/trace-runner');
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {string} string
|
* @param {string} string
|
||||||
@ -15,7 +16,7 @@ const escapeRegExp = (string) => {
|
|||||||
return string.replace(/[\\^$.*+?()[\]{}|]/g, '\\$&');
|
return string.replace(/[\\^$.*+?()[\]{}|]/g, '\\$&');
|
||||||
};
|
};
|
||||||
|
|
||||||
(async () => {
|
runner(__filename, async () => {
|
||||||
const set = new Set();
|
const set = new Set();
|
||||||
const keywords = new Set();
|
const keywords = new Set();
|
||||||
|
|
||||||
@ -84,4 +85,4 @@ const escapeRegExp = (string) => {
|
|||||||
''
|
''
|
||||||
].join('\n')
|
].join('\n')
|
||||||
);
|
);
|
||||||
})();
|
});
|
||||||
|
|||||||
@ -3,8 +3,9 @@ const path = require('path');
|
|||||||
const fse = require('fs-extra');
|
const fse = require('fs-extra');
|
||||||
const fs = require('fs');
|
const fs = require('fs');
|
||||||
const { parseFelixDnsmasq } = require('./lib/parse-dnsmasq');
|
const { parseFelixDnsmasq } = require('./lib/parse-dnsmasq');
|
||||||
|
const { runner } = require('./lib/trace-runner');
|
||||||
|
|
||||||
(async () => {
|
runner(__filename, async () => {
|
||||||
const [result] = await Promise.all([
|
const [result] = await Promise.all([
|
||||||
parseFelixDnsmasq('https://raw.githubusercontent.com/felixonmars/dnsmasq-china-list/master/accelerated-domains.china.conf'),
|
parseFelixDnsmasq('https://raw.githubusercontent.com/felixonmars/dnsmasq-china-list/master/accelerated-domains.china.conf'),
|
||||||
fse.ensureDir(path.resolve(__dirname, '../List/internal'))
|
fse.ensureDir(path.resolve(__dirname, '../List/internal'))
|
||||||
@ -14,4 +15,4 @@ const { parseFelixDnsmasq } = require('./lib/parse-dnsmasq');
|
|||||||
path.resolve(__dirname, '../List/internal/accelerated-china-domains.txt'),
|
path.resolve(__dirname, '../List/internal/accelerated-china-domains.txt'),
|
||||||
`${result.map(line => `SUFFIX,${line}`).join('\n')}\n`
|
`${result.map(line => `SUFFIX,${line}`).join('\n')}\n`
|
||||||
);
|
);
|
||||||
})();
|
});
|
||||||
|
|||||||
@ -4,6 +4,7 @@ const { processLine } = require('./lib/process-line');
|
|||||||
const path = require('path');
|
const path = require('path');
|
||||||
const fse = require('fs-extra');
|
const fse = require('fs-extra');
|
||||||
const fs = require('fs');
|
const fs = require('fs');
|
||||||
|
const { runner } = require('./lib/trace-runner');
|
||||||
|
|
||||||
const RESERVED_IPV4_CIDR = [
|
const RESERVED_IPV4_CIDR = [
|
||||||
'0.0.0.0/8',
|
'0.0.0.0/8',
|
||||||
@ -23,7 +24,7 @@ const RESERVED_IPV4_CIDR = [
|
|||||||
'240.0.0.0/4'
|
'240.0.0.0/4'
|
||||||
];
|
];
|
||||||
|
|
||||||
(async () => {
|
runner(__filename, async () => {
|
||||||
const { exclude } = await import('cidr-tools-wasm');
|
const { exclude } = await import('cidr-tools-wasm');
|
||||||
|
|
||||||
/** @type {Set<string>} */
|
/** @type {Set<string>} */
|
||||||
@ -46,4 +47,4 @@ const RESERVED_IPV4_CIDR = [
|
|||||||
path.resolve(__dirname, '../List/internal/reversed-chn-cidr.txt'),
|
path.resolve(__dirname, '../List/internal/reversed-chn-cidr.txt'),
|
||||||
`${reversedCidr.join('\n')}\n`
|
`${reversedCidr.join('\n')}\n`
|
||||||
);
|
);
|
||||||
})();
|
});
|
||||||
|
|||||||
@ -4,6 +4,7 @@ const path = require('path');
|
|||||||
const { createRuleset } = require('./lib/create-file');
|
const { createRuleset } = require('./lib/create-file');
|
||||||
const { processLine } = require('./lib/process-line.js');
|
const { processLine } = require('./lib/process-line.js');
|
||||||
const domainSorter = require('./lib/stable-sort-domain');
|
const domainSorter = require('./lib/stable-sort-domain');
|
||||||
|
const { runner } = require('./lib/trace-runner.js');
|
||||||
|
|
||||||
const WHITELIST_DOMAIN = new Set([
|
const WHITELIST_DOMAIN = new Set([
|
||||||
'w3s.link',
|
'w3s.link',
|
||||||
@ -59,7 +60,7 @@ const BLACK_TLD = new Set([
|
|||||||
'com.cn'
|
'com.cn'
|
||||||
]);
|
]);
|
||||||
|
|
||||||
(async () => {
|
runner(__filename, async () => {
|
||||||
const domainSet = Array.from(
|
const domainSet = Array.from(
|
||||||
(
|
(
|
||||||
await processFilterRules('https://curbengh.github.io/phishing-filter/phishing-filter-agh.txt')
|
await processFilterRules('https://curbengh.github.io/phishing-filter/phishing-filter-agh.txt')
|
||||||
@ -159,4 +160,4 @@ const BLACK_TLD = new Set([
|
|||||||
path.resolve(__dirname, '../List/domainset/reject_phishing.conf'),
|
path.resolve(__dirname, '../List/domainset/reject_phishing.conf'),
|
||||||
path.resolve(__dirname, '../Clash/domainset/reject_phishing.txt')
|
path.resolve(__dirname, '../Clash/domainset/reject_phishing.txt')
|
||||||
));
|
));
|
||||||
})();
|
});
|
||||||
|
|||||||
@ -23,8 +23,6 @@ const domainKeywordsSet = new Set();
|
|||||||
/** @type {Set<string>} Dedupe domains included by DOMAIN-SUFFIX */
|
/** @type {Set<string>} Dedupe domains included by DOMAIN-SUFFIX */
|
||||||
const domainSuffixSet = new Set();
|
const domainSuffixSet = new Set();
|
||||||
(async () => {
|
(async () => {
|
||||||
console.time('Total Time - build-reject-domain-set');
|
|
||||||
|
|
||||||
/** @type Set<string> */
|
/** @type Set<string> */
|
||||||
const domainSets = new Set();
|
const domainSets = new Set();
|
||||||
|
|
||||||
@ -35,15 +33,14 @@ const domainSuffixSet = new Set();
|
|||||||
|
|
||||||
await Promise.all([
|
await Promise.all([
|
||||||
// Parse from remote hosts & domain lists
|
// Parse from remote hosts & domain lists
|
||||||
Promise.all(HOSTS.map(entry => processHosts(entry[0], entry[1])))
|
...HOSTS.map(entry => processHosts(entry[0], entry[1]).then(hosts => {
|
||||||
.then(r => r.forEach(hosts => {
|
hosts.forEach(host => {
|
||||||
hosts.forEach(host => {
|
if (host) {
|
||||||
if (host) {
|
domainSets.add(host);
|
||||||
domainSets.add(host);
|
}
|
||||||
}
|
});
|
||||||
});
|
})),
|
||||||
})),
|
...ADGUARD_FILTERS.map(input => {
|
||||||
Promise.all(ADGUARD_FILTERS.map(input => {
|
|
||||||
const promise = typeof input === 'string'
|
const promise = typeof input === 'string'
|
||||||
? processFilterRules(input, undefined, false)
|
? processFilterRules(input, undefined, false)
|
||||||
: processFilterRules(input[0], input[1] || undefined, input[2] ?? false);
|
: processFilterRules(input[0], input[1] || undefined, input[2] ?? false);
|
||||||
@ -62,34 +59,34 @@ const domainSuffixSet = new Set();
|
|||||||
});
|
});
|
||||||
black.forEach(i => domainSets.add(i));
|
black.forEach(i => domainSets.add(i));
|
||||||
} else {
|
} else {
|
||||||
process.exit(1);
|
process.exitCode = 1;
|
||||||
|
throw new Error('Failed to process AdGuard Filter Rules!');
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
})),
|
}),
|
||||||
Promise.all([
|
...([
|
||||||
'https://raw.githubusercontent.com/AdguardTeam/AdGuardSDNSFilter/master/Filters/exceptions.txt',
|
'https://raw.githubusercontent.com/AdguardTeam/AdGuardSDNSFilter/master/Filters/exceptions.txt',
|
||||||
'https://raw.githubusercontent.com/AdguardTeam/AdGuardSDNSFilter/master/Filters/exclusions.txt'
|
'https://raw.githubusercontent.com/AdguardTeam/AdGuardSDNSFilter/master/Filters/exclusions.txt'
|
||||||
].map(
|
].map(input => processFilterRules(input).then((i) => {
|
||||||
input => processFilterRules(input).then((i) => {
|
if (i) {
|
||||||
if (i) {
|
const { white, black } = i;
|
||||||
const { white, black } = i;
|
white.forEach(i => {
|
||||||
white.forEach(i => {
|
// if (PREDEFINED_ENFORCED_BACKLIST.some(j => i.endsWith(j))) {
|
||||||
// if (PREDEFINED_ENFORCED_BACKLIST.some(j => i.endsWith(j))) {
|
// return;
|
||||||
// return;
|
// }
|
||||||
// }
|
filterRuleWhitelistDomainSets.add(i);
|
||||||
filterRuleWhitelistDomainSets.add(i);
|
});
|
||||||
});
|
black.forEach(i => {
|
||||||
black.forEach(i => {
|
// if (PREDEFINED_ENFORCED_BACKLIST.some(j => i.endsWith(j))) {
|
||||||
// if (PREDEFINED_ENFORCED_BACKLIST.some(j => i.endsWith(j))) {
|
// return;
|
||||||
// return;
|
// }
|
||||||
// }
|
filterRuleWhitelistDomainSets.add(i);
|
||||||
filterRuleWhitelistDomainSets.add(i);
|
});
|
||||||
});
|
} else {
|
||||||
} else {
|
process.exitCode = 1;
|
||||||
process.exit(1);
|
throw new Error('Failed to process AdGuard Filter Rules!');
|
||||||
}
|
}
|
||||||
})
|
})))
|
||||||
))
|
|
||||||
]);
|
]);
|
||||||
|
|
||||||
const trie0 = Trie.from(Array.from(filterRuleWhitelistDomainSets));
|
const trie0 = Trie.from(Array.from(filterRuleWhitelistDomainSets));
|
||||||
@ -100,6 +97,7 @@ const domainSuffixSet = new Set();
|
|||||||
console.timeEnd('* Download and process Hosts / AdBlock Filter Rules');
|
console.timeEnd('* Download and process Hosts / AdBlock Filter Rules');
|
||||||
|
|
||||||
if (shouldStop) {
|
if (shouldStop) {
|
||||||
|
// eslint-disable-next-line n/no-process-exit -- force stop
|
||||||
process.exit(1);
|
process.exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -183,8 +181,6 @@ const domainSuffixSet = new Set();
|
|||||||
console.log(`* Dedupe from covered subdomain - ${(Date.now() - START_TIME) / 1000}s`);
|
console.log(`* Dedupe from covered subdomain - ${(Date.now() - START_TIME) / 1000}s`);
|
||||||
console.log(`Deduped ${previousSize - dudupedDominArray.length} rules!`);
|
console.log(`Deduped ${previousSize - dudupedDominArray.length} rules!`);
|
||||||
|
|
||||||
console.time('* Write reject.conf');
|
|
||||||
|
|
||||||
/** @type {Record<string, number>} */
|
/** @type {Record<string, number>} */
|
||||||
const rejectDomainsStats = dudupedDominArray.reduce((acc, cur) => {
|
const rejectDomainsStats = dudupedDominArray.reduce((acc, cur) => {
|
||||||
const suffix = tldts.getDomain(cur, { allowPrivateDomains: false });
|
const suffix = tldts.getDomain(cur, { allowPrivateDomains: false });
|
||||||
@ -234,8 +230,4 @@ const domainSuffixSet = new Set();
|
|||||||
// Copy reject_sukka.conf for backward compatibility
|
// Copy reject_sukka.conf for backward compatibility
|
||||||
fse.copy(pathResolve(__dirname, '../Source/domainset/reject_sukka.conf'), pathResolve(__dirname, '../List/domainset/reject_sukka.conf'))
|
fse.copy(pathResolve(__dirname, '../Source/domainset/reject_sukka.conf'), pathResolve(__dirname, '../List/domainset/reject_sukka.conf'))
|
||||||
]);
|
]);
|
||||||
|
|
||||||
console.timeEnd('* Write reject.conf');
|
|
||||||
|
|
||||||
console.timeEnd('Total Time - build-reject-domain-set');
|
|
||||||
})();
|
})();
|
||||||
|
|||||||
@ -5,6 +5,7 @@ const { createRuleset } = require('./lib/create-file');
|
|||||||
const domainSorter = require('./lib/stable-sort-domain');
|
const domainSorter = require('./lib/stable-sort-domain');
|
||||||
|
|
||||||
const { Sema } = require('async-sema');
|
const { Sema } = require('async-sema');
|
||||||
|
const { runner } = require('./lib/trace-runner');
|
||||||
const s = new Sema(2);
|
const s = new Sema(2);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -45,7 +46,7 @@ const querySpeedtestApi = async (keyword) => {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
(async () => {
|
runner(__filename, async () => {
|
||||||
/** @type {Set<string>} */
|
/** @type {Set<string>} */
|
||||||
const domains = new Set([
|
const domains = new Set([
|
||||||
'.speedtest.net',
|
'.speedtest.net',
|
||||||
@ -122,4 +123,4 @@ const querySpeedtestApi = async (keyword) => {
|
|||||||
path.resolve(__dirname, '../List/domainset/speedtest.conf'),
|
path.resolve(__dirname, '../List/domainset/speedtest.conf'),
|
||||||
path.resolve(__dirname, '../Clash/domainset/speedtest.txt')
|
path.resolve(__dirname, '../Clash/domainset/speedtest.txt')
|
||||||
));
|
));
|
||||||
})();
|
});
|
||||||
|
|||||||
@ -4,10 +4,9 @@ const path = require('path');
|
|||||||
const { isIPv4, isIPv6 } = require('net');
|
const { isIPv4, isIPv6 } = require('net');
|
||||||
const { processLine } = require('./lib/process-line');
|
const { processLine } = require('./lib/process-line');
|
||||||
const { createRuleset } = require('./lib/create-file');
|
const { createRuleset } = require('./lib/create-file');
|
||||||
|
const { runner } = require('./lib/trace-runner');
|
||||||
|
|
||||||
(async () => {
|
runner(__filename, async () => {
|
||||||
console.time('Total Time - build-telegram-cidr');
|
|
||||||
|
|
||||||
/** @type {Response} */
|
/** @type {Response} */
|
||||||
const resp = await fetchWithRetry('https://core.telegram.org/resources/cidr.txt');
|
const resp = await fetchWithRetry('https://core.telegram.org/resources/cidr.txt');
|
||||||
const lastModified = resp.headers.get('last-modified');
|
const lastModified = resp.headers.get('last-modified');
|
||||||
@ -50,6 +49,4 @@ const { createRuleset } = require('./lib/create-file');
|
|||||||
path.resolve(__dirname, '../List/ip/telegram.conf'),
|
path.resolve(__dirname, '../List/ip/telegram.conf'),
|
||||||
path.resolve(__dirname, '../Clash/ip/telegram.txt')
|
path.resolve(__dirname, '../Clash/ip/telegram.txt')
|
||||||
));
|
));
|
||||||
|
});
|
||||||
console.timeEnd('Total Time - build-telegram-cidr');
|
|
||||||
})();
|
|
||||||
|
|||||||
@ -6,6 +6,7 @@ const { readFileByLine } = require('./lib/fetch-remote-text-by-line');
|
|||||||
const { processLine } = require('./lib/process-line');
|
const { processLine } = require('./lib/process-line');
|
||||||
const { createRuleset } = require('./lib/create-file');
|
const { createRuleset } = require('./lib/create-file');
|
||||||
const { domainDeduper } = require('./lib/domain-deduper');
|
const { domainDeduper } = require('./lib/domain-deduper');
|
||||||
|
const { runner } = require('./lib/trace-runner');
|
||||||
|
|
||||||
const MAGIC_COMMAND_SKIP = '# $ custom_build_script';
|
const MAGIC_COMMAND_SKIP = '# $ custom_build_script';
|
||||||
const MAGIC_COMMAND_TITLE = '# $ meta_title ';
|
const MAGIC_COMMAND_TITLE = '# $ meta_title ';
|
||||||
@ -15,7 +16,7 @@ const sourceDir = path.resolve(__dirname, '../Source');
|
|||||||
const outputSurgeDir = path.resolve(__dirname, '../List');
|
const outputSurgeDir = path.resolve(__dirname, '../List');
|
||||||
const outputClashDir = path.resolve(__dirname, '../Clash');
|
const outputClashDir = path.resolve(__dirname, '../Clash');
|
||||||
|
|
||||||
(async () => {
|
runner(__filename, async () => {
|
||||||
/** @type {Promise<void>[]} */
|
/** @type {Promise<void>[]} */
|
||||||
const promises = [];
|
const promises = [];
|
||||||
|
|
||||||
@ -42,7 +43,7 @@ const outputClashDir = path.resolve(__dirname, '../Clash');
|
|||||||
}
|
}
|
||||||
|
|
||||||
await Promise.all(promises);
|
await Promise.all(promises);
|
||||||
})();
|
});
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {string} sourcePath
|
* @param {string} sourcePath
|
||||||
|
|||||||
@ -8,6 +8,7 @@ const { Readable } = require('stream');
|
|||||||
const { pipeline } = require('stream/promises');
|
const { pipeline } = require('stream/promises');
|
||||||
const { readFileByLine } = require('./lib/fetch-remote-text-by-line');
|
const { readFileByLine } = require('./lib/fetch-remote-text-by-line');
|
||||||
const { isCI } = require('ci-info');
|
const { isCI } = require('ci-info');
|
||||||
|
const { runner } = require('./lib/trace-runner');
|
||||||
|
|
||||||
const fileExists = (path) => {
|
const fileExists = (path) => {
|
||||||
return fs.promises.access(path, fs.constants.F_OK)
|
return fs.promises.access(path, fs.constants.F_OK)
|
||||||
@ -15,7 +16,7 @@ const fileExists = (path) => {
|
|||||||
.catch(() => false);
|
.catch(() => false);
|
||||||
};
|
};
|
||||||
|
|
||||||
(async () => {
|
runner(__filename, async () => {
|
||||||
const filesList = ['Clash', 'List'];
|
const filesList = ['Clash', 'List'];
|
||||||
|
|
||||||
let allFileExists = true;
|
let allFileExists = true;
|
||||||
@ -77,4 +78,4 @@ const fileExists = (path) => {
|
|||||||
}));
|
}));
|
||||||
|
|
||||||
await fs.promises.unlink(extractedPath).catch(() => { });
|
await fs.promises.unlink(extractedPath).catch(() => { });
|
||||||
})();
|
});
|
||||||
|
|||||||
@ -172,7 +172,12 @@ const ADGUARD_FILTERS = /** @type {const} */([
|
|||||||
// GameConsoleAdblockList
|
// GameConsoleAdblockList
|
||||||
'https://raw.githubusercontent.com/DandelionSprout/adfilt/master/GameConsoleAdblockList.txt',
|
'https://raw.githubusercontent.com/DandelionSprout/adfilt/master/GameConsoleAdblockList.txt',
|
||||||
// PiHoleBlocklist
|
// PiHoleBlocklist
|
||||||
'https://raw.githubusercontent.com/Perflyst/PiHoleBlocklist/master/SmartTV-AGH.txt',
|
[
|
||||||
|
'https://perflyst.github.io/PiHoleBlocklist/SmartTV-AGH.txt',
|
||||||
|
[
|
||||||
|
'https://raw.githubusercontent.com/Perflyst/PiHoleBlocklist/master/SmartTV-AGH.txt'
|
||||||
|
]
|
||||||
|
],
|
||||||
// Spam404
|
// Spam404
|
||||||
'https://raw.githubusercontent.com/Spam404/lists/master/adblock-list.txt',
|
'https://raw.githubusercontent.com/Spam404/lists/master/adblock-list.txt',
|
||||||
// BarbBlock
|
// BarbBlock
|
||||||
|
|||||||
15
Build/lib/trace-runner.js
Normal file
15
Build/lib/trace-runner.js
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
const path = require('path');
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {Function} fn
|
||||||
|
* @param {string} __filename
|
||||||
|
*/
|
||||||
|
module.exports.runner = async (__filename, fn) => {
|
||||||
|
const runnerName = path.basename(__filename, path.extname(__filename));
|
||||||
|
|
||||||
|
const start = Date.now();
|
||||||
|
const result = await fn();
|
||||||
|
const end = Date.now();
|
||||||
|
console.log(`⌛ [${runnerName}]: ${end - start}ms`);
|
||||||
|
return result;
|
||||||
|
};
|
||||||
@ -6,6 +6,7 @@ const path = require('path');
|
|||||||
const listDir = require('@sukka/listdir');
|
const listDir = require('@sukka/listdir');
|
||||||
const { readFileByLine } = require('./lib/fetch-remote-text-by-line');
|
const { readFileByLine } = require('./lib/fetch-remote-text-by-line');
|
||||||
const { processLine } = require('./lib/process-line');
|
const { processLine } = require('./lib/process-line');
|
||||||
|
const { runner } = require('./lib/trace-runner');
|
||||||
|
|
||||||
const SPECIAL_SUFFIXES = new Set([
|
const SPECIAL_SUFFIXES = new Set([
|
||||||
'linodeobjects.com', // only *.linodeobjects.com are public suffix
|
'linodeobjects.com', // only *.linodeobjects.com are public suffix
|
||||||
@ -57,7 +58,7 @@ const _validateRuleset = async (filePath) => {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
(async () => {
|
runner(__filename, async () => {
|
||||||
const [domainsetFiles, _rulesetFiles] = await Promise.all([
|
const [domainsetFiles, _rulesetFiles] = await Promise.all([
|
||||||
listDir(path.resolve(__dirname, '../List/domainset')),
|
listDir(path.resolve(__dirname, '../List/domainset')),
|
||||||
listDir(path.resolve(__dirname, '../List/non_ip'))
|
listDir(path.resolve(__dirname, '../List/non_ip'))
|
||||||
@ -66,4 +67,4 @@ const _validateRuleset = async (filePath) => {
|
|||||||
domainsetFiles.map(file => validateDomainSet(file))
|
domainsetFiles.map(file => validateDomainSet(file))
|
||||||
// rulesetFiles.map(file => validateRuleset(file))
|
// rulesetFiles.map(file => validateRuleset(file))
|
||||||
);
|
);
|
||||||
})();
|
});
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user