mirror of
https://github.com/SukkaW/Surge.git
synced 2025-12-21 13:50:29 +08:00
77 lines
3.8 KiB
JavaScript
77 lines
3.8 KiB
JavaScript
'use strict';const require$$0$1=require('node:path'),index=require('./index.B8Uk9n3v.cjs'),buildChnCidr=require('./build-chn-cidr.BjyqKcvm.cjs'),require$$1=require('node:fs'),fetchRetry=require('./fetch-retry.D06uBUaW.cjs'),require$$0=require('foxts/async-write-to-stream'),misc=require('./misc.BpcQjda1.cjs'),require$$7=require('worktank'),require$$8=require('url');var buildInternalReverseChnCidr = {exports: {}};var hasRequiredBuildInternalReverseChnCidr;
|
|
|
|
function requireBuildInternalReverseChnCidr () {
|
|
if (hasRequiredBuildInternalReverseChnCidr) return buildInternalReverseChnCidr.exports;
|
|
hasRequiredBuildInternalReverseChnCidr = 1;
|
|
(function (module, exports) {
|
|
Object.defineProperty(exports, "__esModule", {
|
|
value: true
|
|
});
|
|
Object.defineProperty(exports, "buildInternalReverseChnCIDR", {
|
|
enumerable: true,
|
|
get: function() {
|
|
return buildInternalReverseChnCIDR;
|
|
}
|
|
});
|
|
const _nodepath = /*#__PURE__*/ _interop_require_default(require$$0$1);
|
|
const _trace = /*@__PURE__*/ index.r();
|
|
const _buildchncidr = buildChnCidr.r();
|
|
const _nodefs = /*#__PURE__*/ _interop_require_default(require$$1);
|
|
const _dir = /*@__PURE__*/ fetchRetry.a();
|
|
const _asyncwritetostream = require$$0;
|
|
const _misc = /*@__PURE__*/ misc.r();
|
|
const _worktank = /*#__PURE__*/ _interop_require_default(require$$7);
|
|
function _interop_require_default(obj) {
|
|
return obj && obj.__esModule ? obj : {
|
|
default: obj
|
|
};
|
|
}
|
|
const pool = new _worktank.default({
|
|
name: 'build-internal-reverse-chn-cidr',
|
|
size: 1,
|
|
timeout: 10000,
|
|
warmup: true,
|
|
autoterminate: 30000,
|
|
env: {},
|
|
methods: {
|
|
// eslint-disable-next-line object-shorthand -- workertank
|
|
getreversedCidr: async function(cidr, importMetaUrl) {
|
|
// TODO: createRequire is a temporary workaround for https://github.com/nodejs/node/issues/51956
|
|
const { default: module1 } = await import('node:module');
|
|
const __require = module1.createRequire(importMetaUrl);
|
|
const { exclude, merge } = __require('fast-cidr-tools');
|
|
const { RESERVED_IPV4_CIDR, NON_CN_CIDR_INCLUDED_IN_CHNROUTE } = __require('./constants/cidr');
|
|
const { appendArrayInPlace } = __require('./lib/append-array-in-place');
|
|
return merge(appendArrayInPlace(exclude([
|
|
'0.0.0.0/0'
|
|
], RESERVED_IPV4_CIDR.concat(cidr), true), // https://github.com/misakaio/chnroutes2/issues/25
|
|
NON_CN_CIDR_INCLUDED_IN_CHNROUTE), true);
|
|
}
|
|
}
|
|
});
|
|
const buildInternalReverseChnCIDR = (0, _trace.task)(require.main === module, __filename)(async (span)=>{
|
|
const [cidr] = await span.traceChildPromise('download chnroutes2', (0, _buildchncidr.getChnCidrPromise)());
|
|
const reversedCidr = await span.traceChildAsync('build reversed chn cidr', async ()=>{
|
|
const reversedCidr = await pool.exec('getreversedCidr', [
|
|
cidr,
|
|
require$$8.pathToFileURL(__filename).toString()
|
|
]);
|
|
pool.terminate();
|
|
return reversedCidr;
|
|
});
|
|
const outputFile = _nodepath.default.join(_dir.OUTPUT_INTERNAL_DIR, 'reversed-chn-cidr.txt');
|
|
await (0, _misc.mkdirp)(_dir.OUTPUT_INTERNAL_DIR);
|
|
const writeStream = _nodefs.default.createWriteStream(outputFile);
|
|
for (const line of reversedCidr){
|
|
const p = (0, _asyncwritetostream.asyncWriteToStream)(writeStream, line + '\n');
|
|
if (p) {
|
|
// eslint-disable-next-line no-await-in-loop -- stream high water mark
|
|
await p;
|
|
}
|
|
}
|
|
await (0, _asyncwritetostream.asyncWriteToStream)(writeStream, '\n');
|
|
writeStream.end();
|
|
});
|
|
} (buildInternalReverseChnCidr, buildInternalReverseChnCidr.exports));
|
|
return buildInternalReverseChnCidr.exports;
|
|
}exports.r=requireBuildInternalReverseChnCidr; |