Refactor: use jest-worker

This commit is contained in:
SukkaW
2026-03-31 22:23:43 +08:00
parent 09183a3cd1
commit 939fa0d2a0
13 changed files with 686 additions and 560 deletions

28
Build/lib/worker.ts Normal file
View File

@@ -0,0 +1,28 @@
import process from 'node:process';
import type { JestWorkerFarm } from 'jest-worker';
import { Worker as JestWorker } from 'jest-worker';
const sharedWorkerOptions = {
numWorkers: 1,
enableWorkerThreads: true,
forkOptions: {
env: {
...process.env,
NODE_OPTIONS: process.env.NODE_OPTIONS
}
}
} satisfies ConstructorParameters<typeof JestWorker>[1];
export function createWorker<T extends Record<string, unknown>>(workerPath: string) {
return <const K extends ReadonlyArray<keyof T & string>>(exposedMethods: K): JestWorkerFarm<Pick<T, K[number]>> => {
const worker = new JestWorker(workerPath, {
...sharedWorkerOptions,
exposedMethods
}) as JestWorkerFarm<Pick<T, K[number]>>;
worker.getStdout().pipe(process.stdout);
worker.getStderr().pipe(process.stderr);
return worker;
};
}