From 6380d0be5a6e6f10a4fb4858f8f7ae427ccb3a31 Mon Sep 17 00:00:00 2001 From: SukkaW Date: Sun, 19 May 2024 03:29:20 +0800 Subject: [PATCH] Chore: merge reject ruleset and domainset during build --- Build/build-reject-domainset.ts | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/Build/build-reject-domainset.ts b/Build/build-reject-domainset.ts index bfd4803a..b84d8e1f 100644 --- a/Build/build-reject-domainset.ts +++ b/Build/build-reject-domainset.ts @@ -78,9 +78,7 @@ export const buildRejectDomainSet = task(import.meta.path, async (span) => { console.log(`Import ${previousSize} rules from Hosts / AdBlock Filter Rules & reject_sukka.conf!`); // Dedupe domainSets - await span.traceChildAsync('dedupe from black keywords/suffixes', async (childSpan) => { - /** Collect DOMAIN-SUFFIX from non_ip/reject.conf for deduplication */ - const domainSuffixSet = new Set(); + await span.traceChildAsync('dedupe from black keywords', async (childSpan) => { /** Collect DOMAIN-KEYWORD from non_ip/reject.conf for deduplication */ const domainKeywordsSet = new Set(); @@ -91,28 +89,26 @@ export const buildRejectDomainSet = task(import.meta.path, async (span) => { if (type === 'DOMAIN-KEYWORD') { domainKeywordsSet.add(value.trim()); } else if (type === 'DOMAIN-SUFFIX') { - domainSuffixSet.add(value.trim()); + domainSets.add(`.${value.trim()}`); // Add to domainSets for later deduplication } } }); // Remove as many domains as possible from domainSets before creating trie - SetHelpers.subtract(domainSets, domainSuffixSet); SetHelpers.subtract(domainSets, filterRuleWhitelistDomainSets); - childSpan.traceChildSync('dedupe from white/suffixes', () => { + childSpan.traceChildSync('dedupe from white suffixes', () => { const trie = createTrie(domainSets); - domainSuffixSet.forEach(suffix => { - trie.substractSetInPlaceFromFound(suffix, domainSets); - }); filterRuleWhitelistDomainSets.forEach(suffix => { trie.substractSetInPlaceFromFound(suffix, domainSets); - domainSets.delete( - suffix[0] === '.' - ? suffix.slice(1) // handle case like removing `g.msn.com` due to white `.g.msn.com` (`@@||g.msn.com`) - : `.${suffix}` // If `g.msn.com` is whitelisted, then `.g.msn.com` should be removed from domain set - ); + if (suffix[0] === '.') { + domainSets.delete(suffix.slice(1)); + domainSets.delete(suffix); + } else { + domainSets.delete(`.${suffix}`); + domainSets.delete(suffix); + } }); });