'use strict';Object.defineProperty(exports,Symbol.toStringTag,{value:'Module'});const buildRejectDomainset=require('../_virtual/build-reject-domainset.cjs'),require$$0=require('node:path'),require$$1=require('node:process'),hosts=require('./lib/parse-filter/hosts.cjs'),domainlists=require('./lib/parse-filter/domainlists.cjs'),filters=require('./lib/parse-filter/filters.cjs'),rejectDataSource=require('./constants/reject-data-source.cjs'),fetchTextByLine=require('./lib/fetch-text-by-line.cjs'),index=require('./trace/index.cjs'),description=require('./constants/description.cjs'),getPhishingDomains=require('./lib/get-phishing-domains.cjs'),require$$10=require('foxts/add-array-elements-to-set'),dir=require('./constants/dir.cjs'),domainset=require('./lib/rules/domainset.cjs'),shared=require('./lib/parse-filter/shared.cjs');var hasRequiredBuildRejectDomainset; function requireBuildRejectDomainset () { if (hasRequiredBuildRejectDomainset) return buildRejectDomainset.__module.exports; hasRequiredBuildRejectDomainset = 1; (function (module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "buildRejectDomainSet", { enumerable: true, get: function() { return buildRejectDomainSet; } }); const _nodepath = /*#__PURE__*/ _interop_require_default(require$$0); const _nodeprocess = /*#__PURE__*/ _interop_require_default(require$$1); const _hosts = /*@__PURE__*/ hosts.__require(); const _domainlists = /*@__PURE__*/ domainlists.__require(); const _filters = /*@__PURE__*/ filters.__require(); const _rejectdatasource = /*@__PURE__*/ rejectDataSource.__require(); const _fetchtextbyline = /*@__PURE__*/ fetchTextByLine.__require(); const _trace = /*@__PURE__*/ index.__require(); const _description = /*@__PURE__*/ description.__require(); const _getphishingdomains = /*@__PURE__*/ getPhishingDomains.__require(); const _addarrayelementstoset = require$$10; const _dir = /*@__PURE__*/ dir.__require(); const _domainset = /*@__PURE__*/ domainset.__require(); const _shared = /*@__PURE__*/ shared.__require(); function _interop_require_default(obj) { return obj && obj.__esModule ? obj : { default: obj }; } const readLocalRejectDomainsetPromise = (0, _fetchtextbyline.readFileIntoProcessedArray)(_nodepath.default.join(_dir.SOURCE_DIR, 'domainset/reject_sukka.conf')); const readLocalRejectExtraDomainsetPromise = (0, _fetchtextbyline.readFileIntoProcessedArray)(_nodepath.default.join(_dir.SOURCE_DIR, 'domainset/reject_sukka_extra.conf')); const readLocalRejectRulesetPromise = (0, _fetchtextbyline.readFileIntoProcessedArray)(_nodepath.default.join(_dir.SOURCE_DIR, 'non_ip/reject.conf')); const readLocalRejectDropRulesetPromise = (0, _fetchtextbyline.readFileIntoProcessedArray)(_nodepath.default.join(_dir.SOURCE_DIR, 'non_ip/reject-drop.conf')); const readLocalRejectNoDropRulesetPromise = (0, _fetchtextbyline.readFileIntoProcessedArray)(_nodepath.default.join(_dir.SOURCE_DIR, 'non_ip/reject-no-drop.conf')); const readLocalMyRejectRulesetPromise = (0, _fetchtextbyline.readFileIntoProcessedArray)(_nodepath.default.join(_dir.SOURCE_DIR, 'non_ip/my_reject.conf')); const hostsDownloads = _rejectdatasource.HOSTS.map((entry)=>(0, _hosts.processHostsWithPreload)(...entry)); const hostsExtraDownloads = _rejectdatasource.HOSTS_EXTRA.map((entry)=>(0, _hosts.processHostsWithPreload)(...entry)); const domainListsDownloads = _rejectdatasource.DOMAIN_LISTS.map((entry)=>(0, _domainlists.processDomainListsWithPreload)(...entry)); const domainListsExtraDownloads = _rejectdatasource.DOMAIN_LISTS_EXTRA.map((entry)=>(0, _domainlists.processDomainListsWithPreload)(...entry)); const adguardFiltersDownloads = _rejectdatasource.ADGUARD_FILTERS.map((entry)=>(0, _filters.processFilterRulesWithPreload)(...entry)); const adguardFiltersExtraDownloads = _rejectdatasource.ADGUARD_FILTERS_EXTRA.map((entry)=>(0, _filters.processFilterRulesWithPreload)(...entry)); const adguardFiltersWhitelistsDownloads = _rejectdatasource.ADGUARD_FILTERS_WHITELIST.map((entry)=>(0, _filters.processFilterRulesWithPreload)(...entry)); const buildRejectDomainSet = (0, _trace.task)(require.main === module, __filename)(async (span)=>{ const rejectBaseDescription = [ ..._description.SHARED_DESCRIPTION, '', 'The domainset supports AD blocking, tracking protection, privacy protection, anti-phishing, anti-mining', '', 'Build from:', ..._rejectdatasource.HOSTS.map((host)=>` - ${host[0]}`), ..._rejectdatasource.DOMAIN_LISTS.map((domainList)=>` - ${domainList[0]}`), ..._rejectdatasource.ADGUARD_FILTERS.map((filter)=>` - ${Array.isArray(filter) ? filter[0] : filter}`) ]; const rejectOutput = new _domainset.DomainsetOutput(span, 'reject').withTitle('Sukka\'s Ruleset - Reject Base').withDescription(rejectBaseDescription); const rejectExtraOutput = new _domainset.DomainsetOutput(span, 'reject_extra').withTitle('Sukka\'s Ruleset - Reject Extra').withDescription([ ..._description.SHARED_DESCRIPTION, '', 'The domainset supports AD blocking, tracking protection, privacy protection, anti-phishing, anti-mining', '', 'Build from:', ..._rejectdatasource.HOSTS_EXTRA.map((host)=>` - ${host[0]}`), ..._rejectdatasource.DOMAIN_LISTS_EXTRA.map((domainList)=>` - ${domainList[0]}`), ..._rejectdatasource.ADGUARD_FILTERS_EXTRA.map((filter)=>` - ${Array.isArray(filter) ? filter[0] : filter}`), ..._rejectdatasource.PHISHING_DOMAIN_LISTS_EXTRA.map((domainList)=>` - ${domainList[0]}`) ]); const appendArrayToRejectOutput = rejectOutput.addFromDomainset.bind(rejectOutput); const appendArrayToRejectExtraOutput = rejectExtraOutput.addFromDomainset.bind(rejectExtraOutput); /** Whitelists */ const filterRuleWhitelistDomainSets = new Set(_rejectdatasource.PREDEFINED_WHITELIST); // Parse from AdGuard Filters await span.traceChild('download and process hosts / adblock filter rules').traceAsyncFn((childSpan)=>Promise.all([ // Parse from remote hosts & domain lists hostsDownloads.map((task)=>task(childSpan).then(appendArrayToRejectOutput)), hostsExtraDownloads.map((task)=>task(childSpan).then(appendArrayToRejectExtraOutput)), domainListsDownloads.map((task)=>task(childSpan).then(appendArrayToRejectOutput)), domainListsExtraDownloads.map((task)=>task(childSpan).then(appendArrayToRejectExtraOutput)), adguardFiltersDownloads.map((task)=>task(childSpan).then(({ whiteDomains, whiteDomainSuffixes, blackDomains, blackDomainSuffixes })=>{ (0, _addarrayelementstoset.addArrayElementsToSet)(filterRuleWhitelistDomainSets, whiteDomains); (0, _addarrayelementstoset.addArrayElementsToSet)(filterRuleWhitelistDomainSets, whiteDomainSuffixes, (suffix)=>'.' + suffix); rejectOutput.bulkAddDomain(blackDomains); rejectOutput.bulkAddDomainSuffix(blackDomainSuffixes); })), adguardFiltersExtraDownloads.map((task)=>task(childSpan).then(({ whiteDomains, whiteDomainSuffixes, blackDomains, blackDomainSuffixes })=>{ (0, _addarrayelementstoset.addArrayElementsToSet)(filterRuleWhitelistDomainSets, whiteDomains); (0, _addarrayelementstoset.addArrayElementsToSet)(filterRuleWhitelistDomainSets, whiteDomainSuffixes, (suffix)=>'.' + suffix); rejectExtraOutput.bulkAddDomain(blackDomains); rejectExtraOutput.bulkAddDomainSuffix(blackDomainSuffixes); })), adguardFiltersWhitelistsDownloads.map((task)=>task(childSpan).then(({ whiteDomains, whiteDomainSuffixes, blackDomains, blackDomainSuffixes })=>{ (0, _addarrayelementstoset.addArrayElementsToSet)(filterRuleWhitelistDomainSets, whiteDomains); (0, _addarrayelementstoset.addArrayElementsToSet)(filterRuleWhitelistDomainSets, whiteDomainSuffixes, (suffix)=>'.' + suffix); (0, _addarrayelementstoset.addArrayElementsToSet)(filterRuleWhitelistDomainSets, blackDomains); (0, _addarrayelementstoset.addArrayElementsToSet)(filterRuleWhitelistDomainSets, blackDomainSuffixes, (suffix)=>'.' + suffix); })), (0, _getphishingdomains.getPhishingDomains)(childSpan).then(appendArrayToRejectExtraOutput), readLocalRejectDomainsetPromise.then(appendArrayToRejectOutput), readLocalRejectDomainsetPromise.then(appendArrayToRejectExtraOutput), readLocalRejectExtraDomainsetPromise.then(appendArrayToRejectExtraOutput), // Dedupe domainSets // span.traceChildAsync('collect black keywords/suffixes', async () => /** * Collect DOMAIN, DOMAIN-SUFFIX, and DOMAIN-KEYWORD from non_ip/reject.conf for deduplication * DOMAIN-WILDCARD is not really useful for deduplication, it is only included in AdGuardHome output */ rejectOutput.addFromRuleset(readLocalRejectRulesetPromise), rejectExtraOutput.addFromRuleset(readLocalRejectRulesetPromise) ].flat())); if (_shared.foundDebugDomain.value) { // eslint-disable-next-line sukka/unicorn/no-process-exit -- cli App _nodeprocess.default.exit(1); } await Promise.all([ rejectOutput.done(), rejectExtraOutput.done() ]); // whitelist span.traceChildSync('whitelist', ()=>{ for (const domain of filterRuleWhitelistDomainSets){ rejectOutput.whitelistDomain(domain); rejectExtraOutput.whitelistDomain(domain); } rejectOutput.domainTrie.dump(rejectExtraOutput.whitelistDomain.bind(rejectExtraOutput)); }); await Promise.all([ rejectOutput.write(), rejectExtraOutput.write() ]); // we are going to re-use rejectOutput's domainTrie and mutate it // so we must wait until we write rejectOutput to disk after we can mutate its trie const rejectOutputAdGuardHome = new _domainset.AdGuardHomeOutput(span, 'reject-adguardhome', _dir.OUTPUT_INTERNAL_DIR).withTitle('Sukka\'s Ruleset - Blocklist for AdGuardHome').withDescription([ 'The domainset supports AD blocking, tracking protection, privacy protection, anti-phishing, anti-mining' ]); rejectOutputAdGuardHome.domainTrie = rejectOutput.domainTrie; await rejectOutputAdGuardHome.addFromRuleset(readLocalMyRejectRulesetPromise).addFromRuleset(readLocalRejectRulesetPromise).addFromRuleset(readLocalRejectDropRulesetPromise).addFromRuleset(readLocalRejectNoDropRulesetPromise).write(); }); } (buildRejectDomainset.__module, buildRejectDomainset.__module.exports)); return buildRejectDomainset.__module.exports; }exports.__require=requireBuildRejectDomainset;