Feat: Surge Compatible MTProto DC Config

This commit is contained in:
SukkaW
2026-08-13 22:34:09 +08:00
parent 3ec3f02d28
commit cf76e874d3
9 changed files with 772 additions and 220 deletions

View File

@@ -30,6 +30,7 @@ import { ROOT_DIR } from './constants/dir';
import { isCI } from 'ci-info';
import { printExternalDownloadStats } from './lib/download-stats';
import { endOutputWorkerFarm, warmOutputWorkerFarm } from './lib/rules/output-worker-farm';
import { appendArrayInPlace } from 'foxts/append-array-in-place';
process.on('uncaughtException', (error) => {
console.error('Uncaught exception:', error);
@@ -78,9 +79,9 @@ const buildFinishedLock = path.join(ROOT_DIR, '.BUILD_FINISHED');
require.resolve('./build-cdn-download-conf.worker')
)(['buildCdnDownloadConf']);
const telegramCidrWorker = createWorker<typeof import('./build-telegram-cidr.worker')>(
require.resolve('./build-telegram-cidr.worker')
)(['buildTelegramCIDR']);
const telegramWorker = createWorker<typeof import('./build-telegram.worker')>(
require.resolve('./build-telegram.worker')
)(['buildTelegram']);
const mockAssetsWorker = createWorker<typeof import('./download-mock-assets.worker')>(
require.resolve('./download-mock-assets.worker')
@@ -99,31 +100,31 @@ const buildFinishedLock = path.join(ROOT_DIR, '.BUILD_FINISHED');
const downloadPreviousBuildPromise = downloadPreviousBuild();
const traces: TraceResult[] = await Promise.all([
downloadPreviousBuildPromise,
downloadPreviousBuildPromise.then(() => buildCommon()),
downloadPreviousBuildPromise.then(() => buildRejectIPList()),
downloadPreviousBuildPromise.then(() => buildAppleCdn()),
downloadPreviousBuildPromise.then(() => buildAICIDR()),
downloadPreviousBuildPromise.then(() => cdnDownloadWorker.buildCdnDownloadConf()),
downloadPreviousBuildPromise.then(() => buildRejectDomainSet()),
downloadPreviousBuildPromise.then(() => telegramCidrWorker.buildTelegramCIDR()),
downloadPreviousBuildPromise.then(() => buildChnCidr()),
downloadPreviousBuildPromise.then(() => buildSpeedtestDomainSet()),
downloadPreviousBuildPromise.then(() => buildDomesticRuleset()),
downloadPreviousBuildPromise.then(() => buildGlobalRuleset()),
downloadPreviousBuildPromise.then(() => buildRedirectModule()),
downloadPreviousBuildPromise.then(() => buildAlwaysRealIPModule()),
downloadPreviousBuildPromise.then(() => buildStreamService()),
downloadPreviousBuildPromise.then(() => microsoftCdnWorker.buildMicrosoftCdn()),
downloadPreviousBuildPromise.then(() => buildCloudMounterRules()),
mockAssetsWorker.downloadMockAssets()
const [traces, telegramTraces]: [TraceResult[], TraceResult[]] = await Promise.all([
Promise.all([
downloadPreviousBuildPromise,
downloadPreviousBuildPromise.then(() => buildCommon()),
downloadPreviousBuildPromise.then(() => buildRejectIPList()),
downloadPreviousBuildPromise.then(() => buildAppleCdn()),
downloadPreviousBuildPromise.then(() => buildAICIDR()),
downloadPreviousBuildPromise.then(() => cdnDownloadWorker.buildCdnDownloadConf()),
downloadPreviousBuildPromise.then(() => buildRejectDomainSet()),
downloadPreviousBuildPromise.then(() => buildChnCidr()),
downloadPreviousBuildPromise.then(() => buildSpeedtestDomainSet()),
downloadPreviousBuildPromise.then(() => buildDomesticRuleset()),
downloadPreviousBuildPromise.then(() => buildGlobalRuleset()),
downloadPreviousBuildPromise.then(() => buildRedirectModule()),
downloadPreviousBuildPromise.then(() => buildAlwaysRealIPModule()),
downloadPreviousBuildPromise.then(() => buildStreamService()),
downloadPreviousBuildPromise.then(() => microsoftCdnWorker.buildMicrosoftCdn()),
downloadPreviousBuildPromise.then(() => buildCloudMounterRules()),
mockAssetsWorker.downloadMockAssets()
]),
downloadPreviousBuildPromise.then(() => telegramWorker.buildTelegram())
]);
traces.push(
await buildDeprecateFiles(),
await buildPublic()
);
appendArrayInPlace(traces, telegramTraces);
traces.push(await buildDeprecateFiles(), await buildPublic());
// write a file to demonstrate that the build is finished
fs.writeFileSync(buildFinishedLock, 'BUILD_FINISHED\n');
@@ -137,7 +138,7 @@ const buildFinishedLock = path.join(ROOT_DIR, '.BUILD_FINISHED');
await Promise.all([
microsoftCdnWorker.end(),
cdnDownloadWorker.end(),
telegramCidrWorker.end(),
telegramWorker.end(),
mockAssetsWorker.end(),
endOutputWorkerFarm()
]);