Chore: fix jest-worker w/ bun

This commit is contained in:
SukkaW 2023-11-16 10:45:11 +08:00
parent 99589cf2fc
commit d1cd4918f1

View File

@ -21,13 +21,14 @@ import { Worker } from 'jest-worker';
type WithWorker<T> = import('jest-worker').Worker & { __sukka_worker_name: string } & T type WithWorker<T> = import('jest-worker').Worker & { __sukka_worker_name: string } & T
const requireWorker = <T>(path: string): WithWorker<T> => { const requireWorker = <T>(path: string, exposedMethods?: (keyof T & string)[]): WithWorker<T> => {
const _worker = new Worker( const _worker = new Worker(
require.resolve(path), import.meta.require.resolve(path),
{ {
numWorkers: 1, numWorkers: 1,
maxRetries: 0, maxRetries: 0,
enableWorkerThreads: true enableWorkerThreads: true,
exposedMethods
} }
) as WithWorker<T>; ) as WithWorker<T>;
_worker.getStderr().pipe(process.stderr); _worker.getStderr().pipe(process.stderr);
@ -44,69 +45,72 @@ const endWorker = async <T>(worker: WithWorker<T>) => {
}; };
(async () => { (async () => {
const buildInternalReverseChnCIDRWorker: WithWorker<typeof import('./build-internal-reverse-chn-cidr')> = requireWorker('./build-internal-reverse-chn-cidr'); const buildInternalReverseChnCIDRWorker: WithWorker<typeof import('./build-internal-reverse-chn-cidr')> = requireWorker('./build-internal-reverse-chn-cidr', ['buildInternalReverseChnCIDR']);
const { buildInternalReverseChnCIDR } = buildInternalReverseChnCIDRWorker; try {
const { buildInternalReverseChnCIDR } = buildInternalReverseChnCIDRWorker;
const downloadPreviousBuildPromise = downloadPreviousBuild(); const downloadPreviousBuildPromise = downloadPreviousBuild();
const downloadPublicSuffixListPromise = downloadPublicSuffixList(); const downloadPublicSuffixListPromise = downloadPublicSuffixList();
const buildCommonPromise = downloadPreviousBuildPromise.then(() => buildCommon()); const buildCommonPromise = downloadPreviousBuildPromise.then(() => buildCommon());
const buildAntiBogusDomainPromise = downloadPreviousBuildPromise.then(() => buildAntiBogusDomain()); const buildAntiBogusDomainPromise = downloadPreviousBuildPromise.then(() => buildAntiBogusDomain());
const buildAppleCdnPromise = downloadPreviousBuildPromise.then(() => buildAppleCdn()); const buildAppleCdnPromise = downloadPreviousBuildPromise.then(() => buildAppleCdn());
const buildCdnConfPromise = Promise.all([ const buildCdnConfPromise = Promise.all([
downloadPreviousBuildPromise, downloadPreviousBuildPromise,
downloadPublicSuffixListPromise downloadPublicSuffixListPromise
]).then(() => buildCdnConf()); ]).then(() => buildCdnConf());
const buildPhilishingDomainsetPromise = Promise.all([ const buildPhilishingDomainsetPromise = Promise.all([
downloadPreviousBuildPromise, downloadPreviousBuildPromise,
downloadPublicSuffixListPromise downloadPublicSuffixListPromise
]).then(() => buildPhishingDomainSet()); ]).then(() => buildPhishingDomainSet());
const buildRejectDomainSetPromise = Promise.all([ const buildRejectDomainSetPromise = Promise.all([
downloadPreviousBuildPromise, downloadPreviousBuildPromise,
downloadPublicSuffixListPromise, downloadPublicSuffixListPromise,
buildPhilishingDomainsetPromise buildPhilishingDomainsetPromise
]).then(() => buildRejectDomainSet()); ]).then(() => buildRejectDomainSet());
const buildTelegramCIDRPromise = downloadPreviousBuildPromise.then(() => buildTelegramCIDR()); const buildTelegramCIDRPromise = downloadPreviousBuildPromise.then(() => buildTelegramCIDR());
const buildChnCidrPromise = downloadPreviousBuildPromise.then(() => buildChnCidr()); const buildChnCidrPromise = downloadPreviousBuildPromise.then(() => buildChnCidr());
const buildSpeedtestDomainSetPromise = downloadPreviousBuildPromise.then(() => buildSpeedtestDomainSet()); const buildSpeedtestDomainSetPromise = downloadPreviousBuildPromise.then(() => buildSpeedtestDomainSet());
const buildInternalCDNDomainsPromise = Promise.all([ const buildInternalCDNDomainsPromise = Promise.all([
downloadPublicSuffixListPromise, downloadPublicSuffixListPromise,
buildCommonPromise, buildCommonPromise,
buildCdnConfPromise buildCdnConfPromise
]).then(() => buildInternalCDNDomains()); ]).then(() => buildInternalCDNDomains());
const buildInternalReverseChnCIDRPromise = buildInternalReverseChnCIDR(); const buildInternalReverseChnCIDRPromise = buildInternalReverseChnCIDR();
const buildInternalChnDomainsPromise = buildInternalChnDomains(); const buildInternalChnDomainsPromise = buildInternalChnDomains();
const buildDomesticRulesetPromise = downloadPreviousBuildPromise.then(() => buildDomesticRuleset()); const buildDomesticRulesetPromise = downloadPreviousBuildPromise.then(() => buildDomesticRuleset());
const buildRedirectModulePromise = downloadPreviousBuildPromise.then(() => buildRedirectModule()); const buildRedirectModulePromise = downloadPreviousBuildPromise.then(() => buildRedirectModule());
const buildStreamServicePromise = downloadPreviousBuildPromise.then(() => buildStreamService()); const buildStreamServicePromise = downloadPreviousBuildPromise.then(() => buildStreamService());
const stats: Array<{ start: number, end: number, taskName: string }> = await Promise.all([ const stats: Array<{ start: number, end: number, taskName: string }> = await Promise.all([
downloadPreviousBuildPromise, downloadPreviousBuildPromise,
downloadPublicSuffixListPromise, downloadPublicSuffixListPromise,
buildCommonPromise, buildCommonPromise,
buildAntiBogusDomainPromise, buildAntiBogusDomainPromise,
buildAppleCdnPromise, buildAppleCdnPromise,
buildCdnConfPromise, buildCdnConfPromise,
buildPhilishingDomainsetPromise, buildPhilishingDomainsetPromise,
buildRejectDomainSetPromise, buildRejectDomainSetPromise,
buildTelegramCIDRPromise, buildTelegramCIDRPromise,
buildChnCidrPromise, buildChnCidrPromise,
buildSpeedtestDomainSetPromise, buildSpeedtestDomainSetPromise,
buildInternalCDNDomainsPromise, buildInternalCDNDomainsPromise,
buildInternalReverseChnCIDRPromise, buildInternalReverseChnCIDRPromise,
buildInternalChnDomainsPromise, buildInternalChnDomainsPromise,
buildDomesticRulesetPromise, buildDomesticRulesetPromise,
buildRedirectModulePromise, buildRedirectModulePromise,
buildStreamServicePromise buildStreamServicePromise
]); ]);
await Promise.all([ await Promise.all([
buildPublicHtml(), buildPublicHtml(),
validate(), validate()
endWorker(buildInternalReverseChnCIDRWorker) ]);
]);
printStats(stats); printStats(stats);
} finally {
await endWorker(buildInternalReverseChnCIDRWorker)
}
})(); })();
function printStats(stats: Array<{ start: number, end: number, taskName: string }>): void { function printStats(stats: Array<{ start: number, end: number, taskName: string }>): void {