'use strict';Object.defineProperty(exports,Symbol.toStringTag,{value:'Module'});const buildMicrosoftCdn=require('../_virtual/build-microsoft-cdn.cjs'),index=require('./trace/index.cjs'),fetchTextByLine=require('./lib/fetch-text-by-line.cjs'),trie=require('./lib/trie.cjs'),description=require('./constants/description.cjs'),memoPromise=require('./lib/memo-promise.cjs'),parseDnsmasq=require('./lib/parse-dnsmasq.cjs'),ruleset=require('./lib/rules/ruleset.cjs'),appendArrayInPlace=require('./lib/append-array-in-place.cjs');var hasRequiredBuildMicrosoftCdn; function requireBuildMicrosoftCdn () { if (hasRequiredBuildMicrosoftCdn) return buildMicrosoftCdn.__module.exports; hasRequiredBuildMicrosoftCdn = 1; (function (module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); function _export(target, all) { for(var name in all)Object.defineProperty(target, name, { enumerable: true, get: all[name] }); } _export(exports, { buildMicrosoftCdn: function() { return buildMicrosoftCdn; }, getMicrosoftCdnRulesetPromise: function() { return getMicrosoftCdnRulesetPromise; } }); const _trace = /*@__PURE__*/ index.__require(); const _fetchtextbyline = /*@__PURE__*/ fetchTextByLine.__require(); const _trie = /*@__PURE__*/ trie.__require(); const _description = /*@__PURE__*/ description.__require(); const _memopromise = /*@__PURE__*/ memoPromise.__require(); const _parsednsmasq = /*@__PURE__*/ parseDnsmasq.__require(); const _ruleset = /*@__PURE__*/ ruleset.__require(); const _appendarrayinplace = /*@__PURE__*/ appendArrayInPlace.__require(); const PROBE_DOMAINS = [ '.microsoft.com', '.windows.net', '.windows.com', '.windowsupdate.com', '.windowssearch.com', '.office.net' ]; const DOMAINS = [ 'res.cdn.office.net', 'res-1.cdn.office.net', 'statics.teams.cdn.office.net' ]; const DOMAIN_SUFFIXES = [ 'download.prss.microsoft.com' ]; const BLACKLIST = [ 'www.microsoft.com', 'windowsupdate.com' ]; const getMicrosoftCdnRulesetPromise = (0, _memopromise.createMemoizedPromise)(async ()=>{ // First trie is to find the microsoft domains that matches probe domains const trie = new _trie.HostnameSmolTrie(); for await (const line of (await (0, _fetchtextbyline.fetchRemoteTextByLine)('https://raw.githubusercontent.com/felixonmars/dnsmasq-china-list/master/accelerated-domains.china.conf'))){ const domain = (0, _parsednsmasq.extractDomainsFromFelixDnsmasq)(line); if (domain) { trie.add(domain); } } // remove blacklist domain from trie, to prevent them from being included in the later dump BLACKLIST.forEach((black)=>trie.whitelist(black)); const domains = DOMAINS; const domainSuffixes = (0, _appendarrayinplace.appendArrayInPlace)(PROBE_DOMAINS.flatMap((domain)=>trie.find(domain)), DOMAIN_SUFFIXES); return [ domains, domainSuffixes ]; }); const buildMicrosoftCdn = (0, _trace.task)(require.main === module, __filename)(async (span)=>{ const description = [ ..._description.SHARED_DESCRIPTION, '', 'This file contains Microsoft\'s domains using their China mainland CDN servers.', '', 'Data from:', ' - https://github.com/felixonmars/dnsmasq-china-list' ]; const [domains, domainSuffixes] = await span.traceChildPromise('get microsoft cdn domains', getMicrosoftCdnRulesetPromise()); return new _ruleset.RulesetOutput(span, 'microsoft_cdn', 'non_ip').withTitle('Sukka\'s Ruleset - Microsoft CDN').withDescription(description).bulkAddDomain(domains).bulkAddDomainSuffix(domainSuffixes).write(); }); } (buildMicrosoftCdn.__module, buildMicrosoftCdn.__module.exports)); return buildMicrosoftCdn.__module.exports; }exports.__require=requireBuildMicrosoftCdn;