diff --git a/Build/index.ts b/Build/index.ts index df85b5f0..4c17fc2e 100644 --- a/Build/index.ts +++ b/Build/index.ts @@ -22,6 +22,8 @@ import { TaskResult } from './lib/trace-runner'; console.log('Bun version:', Bun.version); try { + const buildInternalReverseChnCIDRWorker = new Worker(new URL('./workers/build-internal-reverse-chn-cidr-worker.ts', import.meta.url)); + const downloadPreviousBuildPromise = downloadPreviousBuild(); const downloadPublicSuffixListPromise = downloadPublicSuffixList(); const buildCommonPromise = downloadPreviousBuildPromise.then(() => buildCommon()); @@ -50,14 +52,15 @@ import { TaskResult } from './lib/trace-runner'; ]).then(() => buildInternalCDNDomains()); const buildInternalReverseChnCIDRPromise = new Promise(resolve => { - const buildInternalReverseChnCIDRWorker = new Worker(new URL('./workers/build-internal-reverse-chn-cidr-worker.ts', import.meta.url)); - const handleMessage = (e: MessageEvent) => { - buildInternalReverseChnCIDRWorker.terminate(); - resolve(e.data); - } + buildInternalReverseChnCIDRWorker.unref(); + const { data } = e; - buildInternalReverseChnCIDRWorker.addEventListener('message', handleMessage); + buildInternalReverseChnCIDRWorker.postMessage('exit'); + resolve(data); + }; + buildInternalReverseChnCIDRWorker.addEventListener('message', handleMessage, { once: true }); + buildInternalReverseChnCIDRWorker.postMessage('build'); }); const buildInternalChnDomainsPromise = buildInternalChnDomains(); @@ -94,6 +97,7 @@ import { TaskResult } from './lib/trace-runner'; printStats(stats); } catch (e) { console.error(e); + console.error('Something went wrong!') } })(); diff --git a/Build/workers/build-internal-reverse-chn-cidr-worker.ts b/Build/workers/build-internal-reverse-chn-cidr-worker.ts index 562557e0..f87dac42 100644 --- a/Build/workers/build-internal-reverse-chn-cidr-worker.ts +++ b/Build/workers/build-internal-reverse-chn-cidr-worker.ts @@ -1,5 +1,11 @@ -(async () => { - const { buildInternalReverseChnCIDR } = await import('../build-internal-reverse-chn-cidr'); - const stat = await buildInternalReverseChnCIDR(); - postMessage(stat); -})(); +declare const self: Worker; + +self.addEventListener('message', async (e: MessageEvent<'build' | 'exit'>) => { + if (e.data === 'build') { + const { buildInternalReverseChnCIDR } = await import('../build-internal-reverse-chn-cidr'); + const stat = await buildInternalReverseChnCIDR(); + postMessage(stat); + } else if (e.data === 'exit') { + process.exit(0); + } +}, { once: true });