Surge_by_SukkaW/Dist/Build/build-cdn-download-conf2.cjs
SukkaW d354c5e988
Some checks are pending
Build / Build (push) Waiting to run
Build / Diff output (push) Blocked by required conditions
Build / Deploy to Cloudflare Pages (push) Blocked by required conditions
Build / Deploy to GitHub and GitLab (push) Blocked by required conditions
Chore: maintainance
2025-02-07 17:52:36 +08:00

86 lines
4.9 KiB
JavaScript

'use strict';Object.defineProperty(exports,Symbol.toStringTag,{value:'Module'});const buildCdnDownloadConf=require('../_virtual/build-cdn-download-conf.cjs'),require$$0$1=require('node:path'),fetchTextByLine=require('./lib/fetch-text-by-line.cjs'),trie=require('./lib/trie.cjs'),index=require('./trace/index.cjs'),description=require('./constants/description.cjs'),appendArrayInPlace=require('./lib/append-array-in-place.cjs'),dir=require('./constants/dir.cjs'),domainset=require('./lib/rules/domainset.cjs'),rejectDataSource=require('./constants/reject-data-source.cjs'),require$$0=require('foxts/append-set-elements-to-array');var hasRequiredBuildCdnDownloadConf;
function requireBuildCdnDownloadConf () {
if (hasRequiredBuildCdnDownloadConf) return buildCdnDownloadConf.__module.exports;
hasRequiredBuildCdnDownloadConf = 1;
(function (module, exports) {
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "buildCdnDownloadConf", {
enumerable: true,
get: function() {
return buildCdnDownloadConf;
}
});
const _nodepath = /*#__PURE__*/ _interop_require_default(require$$0$1);
const _fetchtextbyline = /*@__PURE__*/ fetchTextByLine.__require();
const _trie = /*@__PURE__*/ trie.__require();
const _trace = /*@__PURE__*/ index.__require();
const _description = /*@__PURE__*/ description.__require();
const _appendarrayinplace = /*@__PURE__*/ appendArrayInPlace.__require();
const _dir = /*@__PURE__*/ dir.__require();
const _domainset = /*@__PURE__*/ domainset.__require();
const _rejectdatasource = /*@__PURE__*/ rejectDataSource.__require();
const _appendsetelementstoarray = require$$0;
function _interop_require_default(obj) {
return obj && obj.__esModule ? obj : {
default: obj
};
}
const getS3OSSDomainsPromise = (async ()=>{
const trie = new _trie.HostnameTrie();
for await (const line of (await (0, _fetchtextbyline.fetchRemoteTextByLine)('https://publicsuffix.org/list/public_suffix_list.dat', true))){
trie.add(line);
}
/**
* Extract OSS domain from publicsuffix list
*/ const S3OSSDomains = new Set();
trie.find('.amazonaws.com').forEach((line)=>{
if ((line.startsWith('s3-') || line.startsWith('s3.')) && !line.includes('cn-')) {
S3OSSDomains.add('.' + line);
}
});
trie.find('.scw.cloud').forEach((line)=>{
if ((line.startsWith('s3-') || line.startsWith('s3.')) && !line.includes('cn-')) {
S3OSSDomains.add('.' + line);
}
});
trie.find('sakurastorage.jp').forEach((line)=>{
if (line.startsWith('s3-') || line.startsWith('s3.')) {
S3OSSDomains.add('.' + line);
}
});
return S3OSSDomains;
})();
const cdnDomainsListPromise = (0, _fetchtextbyline.readFileIntoProcessedArray)(_nodepath.default.join(_dir.SOURCE_DIR, 'domainset/cdn.conf'));
const downloadDomainSetPromise = (0, _fetchtextbyline.readFileIntoProcessedArray)(_nodepath.default.join(_dir.SOURCE_DIR, 'domainset/download.conf'));
const steamDomainSetPromise = (0, _fetchtextbyline.readFileIntoProcessedArray)(_nodepath.default.join(_dir.SOURCE_DIR, 'domainset/game-download.conf'));
const buildCdnDownloadConf = (0, _trace.task)(require.main === module, __filename)(async (span)=>{
const [S3OSSDomains, cdnDomainsList, downloadDomainSet, steamDomainSet] = await Promise.all([
getS3OSSDomainsPromise,
cdnDomainsListPromise,
downloadDomainSetPromise,
steamDomainSetPromise
]);
// Move S3 domains to download domain set, since S3 files may be large
(0, _appendsetelementstoarray.appendSetElementsToArray)(downloadDomainSet, S3OSSDomains);
(0, _appendarrayinplace.appendArrayInPlace)(downloadDomainSet, steamDomainSet);
// we have whitelisted the crashlytics domain, and we also want to put it in CDN policy
(0, _appendarrayinplace.appendArrayInPlace)(cdnDomainsList, _rejectdatasource.CRASHLYTICS_WHITELIST);
return Promise.all([
new _domainset.DomainsetOutput(span, 'cdn').withTitle('Sukka\'s Ruleset - CDN Domains').withDescription([
..._description.SHARED_DESCRIPTION,
'',
'This file contains object storage and static assets CDN domains.'
]).addFromDomainset(cdnDomainsList).write(),
new _domainset.DomainsetOutput(span, 'download').withTitle('Sukka\'s Ruleset - Large Files Hosting Domains').withDescription([
..._description.SHARED_DESCRIPTION,
'',
'This file contains domains for software updating & large file hosting.'
]).addFromDomainset(downloadDomainSet).write()
]);
});
} (buildCdnDownloadConf.__module, buildCdnDownloadConf.__module.exports));
return buildCdnDownloadConf.__module.exports;
}exports.__require=requireBuildCdnDownloadConf;