Surge_by_SukkaW/Dist/chunks/build-cdn-download-conf.Dj0KZ2lm.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.6 KiB
JavaScript

'use strict';const require$$0$1=require('node:path'),fetchTextByLine=require('./fetch-text-by-line.YY5b5610.cjs'),trie=require('./trie.Vu1FNyv-.cjs'),index=require('./index.B8Uk9n3v.cjs'),base=require('./base.C13YY5P3.cjs'),fetchRetry=require('./fetch-retry.D06uBUaW.cjs'),domainset=require('./domainset.CSQfKAtf.cjs'),rejectDataSource=require('./reject-data-source.DaKwvNlG.cjs'),require$$0=require('foxts/append-set-elements-to-array');var buildCdnDownloadConf = {exports: {}};var hasRequiredBuildCdnDownloadConf;
function requireBuildCdnDownloadConf () {
if (hasRequiredBuildCdnDownloadConf) return buildCdnDownloadConf.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.a();
const _trie = /*@__PURE__*/ trie.r();
const _trace = /*@__PURE__*/ index.r();
const _description = /*@__PURE__*/ base.r();
const _appendarrayinplace = /*@__PURE__*/ base.a();
const _dir = /*@__PURE__*/ fetchRetry.a();
const _domainset = /*@__PURE__*/ domainset.r();
const _rejectdatasource = /*@__PURE__*/ rejectDataSource.r();
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, buildCdnDownloadConf.exports));
return buildCdnDownloadConf.exports;
}exports.r=requireBuildCdnDownloadConf;