diff --git a/.changeset/yellow-olives-obey.md b/.changeset/yellow-olives-obey.md new file mode 100644 index 000000000..85cd8117a --- /dev/null +++ b/.changeset/yellow-olives-obey.md @@ -0,0 +1,5 @@ +--- +"synckit": patch +--- + +feat: add custom transferList support diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 899cb8469..c52bd06e0 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -19,7 +19,7 @@ jobs: - name: Setup Node.js LTS uses: actions/setup-node@v4 with: - node-version: --lts + node-version: lts cache: yarn - name: Install Dependencies diff --git a/src/index.ts b/src/index.ts index 846f75961..b6fd7cb9f 100644 --- a/src/index.ts +++ b/src/index.ts @@ -4,11 +4,12 @@ import path from 'node:path' import { pathToFileURL } from 'node:url' import { MessageChannel, + TransferListItem, Worker, + parentPort, receiveMessageOnPort, // type-coverage:ignore-next-line -- we can't control workerData, - parentPort, } from 'node:worker_threads' import { findUp, isPkgAvailable, tryExtensions } from '@pkgr/utils' @@ -70,6 +71,7 @@ export interface SynckitOptions { timeout?: number execArgv?: string[] tsRunner?: TsRunner + transferList?: TransferListItem[] } // MessagePort doesn't copy the properties of Error objects. We still want @@ -284,6 +286,7 @@ function startWorkerThread>( timeout = DEFAULT_TIMEOUT, execArgv = DEFAULT_EXEC_ARGV, tsRunner = DEFAULT_TS_RUNNER, + transferList = [], }: SynckitOptions = {}, ) { const { port1: mainPort, port2: workerPort } = new MessageChannel() @@ -340,7 +343,7 @@ function startWorkerThread>( { eval: useEval, workerData: { workerPort }, - transferList: [workerPort], + transferList: [workerPort, ...transferList], execArgv: finalExecArgv, }, )