From 4cedc81b6c19b4f6a8365e4e6c88b40db9110f1a Mon Sep 17 00:00:00 2001 From: SukkaW Date: Sat, 18 Jan 2025 03:09:54 +0800 Subject: [PATCH] Perf: preload more reject data source --- Build/build-reject-domainset.ts | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/Build/build-reject-domainset.ts b/Build/build-reject-domainset.ts index bd713292..cf35fad4 100644 --- a/Build/build-reject-domainset.ts +++ b/Build/build-reject-domainset.ts @@ -2,8 +2,8 @@ import path from 'node:path'; import process from 'node:process'; -import { processHosts } from './lib/parse-filter/hosts'; -import { processDomainLists } from './lib/parse-filter/domainlists'; +import { processHostsWithPreload } from './lib/parse-filter/hosts'; +import { processDomainListsWithPreload } from './lib/parse-filter/domainlists'; import { processFilterRules } from './lib/parse-filter/filters'; import { HOSTS, ADGUARD_FILTERS, PREDEFINED_WHITELIST, DOMAIN_LISTS, HOSTS_EXTRA, DOMAIN_LISTS_EXTRA, ADGUARD_FILTERS_EXTRA, PHISHING_DOMAIN_LISTS_EXTRA, ADGUARD_FILTERS_WHITELIST } from './constants/reject-data-source'; @@ -29,6 +29,11 @@ const readLocalRejectDropRulesetPromise = readFileIntoProcessedArray(path.join(S const readLocalRejectNoDropRulesetPromise = readFileIntoProcessedArray(path.join(SOURCE_DIR, 'non_ip/reject-no-drop.conf')); const readLocalMyRejectRulesetPromise = readFileIntoProcessedArray(path.join(SOURCE_DIR, 'non_ip/my_reject.conf')); +const hostsDownloads = HOSTS.map(entry => processHostsWithPreload(...entry)); +const hostsExtraDownloads = HOSTS_EXTRA.map(entry => processHostsWithPreload(...entry)); +const domainListsDownloads = DOMAIN_LISTS.map(entry => processDomainListsWithPreload(...entry)); +const domainListsExtraDownloads = DOMAIN_LISTS_EXTRA.map(entry => processDomainListsWithPreload(...entry)); + export const buildRejectDomainSet = task(require.main === module, __filename)(async (span) => { const rejectBaseDescription = [ ...SHARED_DESCRIPTION, @@ -70,11 +75,11 @@ export const buildRejectDomainSet = task(require.main === module, __filename)(as .traceChild('download and process hosts / adblock filter rules') .traceAsyncFn((childSpan) => Promise.all([ // Parse from remote hosts & domain lists - HOSTS.map(entry => processHosts(childSpan, ...entry).then(appendArrayToRejectOutput)), - HOSTS_EXTRA.map(entry => processHosts(childSpan, ...entry).then(appendArrayToRejectExtraOutput)), + hostsDownloads.map(task => task(childSpan).then(appendArrayToRejectOutput)), + hostsExtraDownloads.map(task => task(childSpan).then(appendArrayToRejectExtraOutput)), - DOMAIN_LISTS.map(entry => processDomainLists(childSpan, ...entry).then(appendArrayToRejectOutput)), - DOMAIN_LISTS_EXTRA.map(entry => processDomainLists(childSpan, ...entry).then(appendArrayToRejectExtraOutput)), + domainListsDownloads.map(task => task(childSpan).then(appendArrayToRejectOutput)), + domainListsExtraDownloads.map(task => task(childSpan).then(appendArrayToRejectExtraOutput)), ADGUARD_FILTERS.map( entry => processFilterRules(childSpan, ...entry)