@@ -4,11 +4,12 @@ import path from 'node:path'
4
4
import { pathToFileURL } from 'node:url'
5
5
import {
6
6
MessageChannel ,
7
+ TransferListItem ,
7
8
Worker ,
9
+ parentPort ,
8
10
receiveMessageOnPort ,
9
11
// type-coverage:ignore-next-line -- we can't control
10
12
workerData ,
11
- parentPort ,
12
13
} from 'node:worker_threads'
13
14
14
15
import { findUp , isPkgAvailable , tryExtensions } from '@pkgr/utils'
@@ -70,6 +71,7 @@ export interface SynckitOptions {
70
71
timeout ?: number
71
72
execArgv ?: string [ ]
72
73
tsRunner ?: TsRunner
74
+ transferList ?: TransferListItem [ ]
73
75
}
74
76
75
77
// MessagePort doesn't copy the properties of Error objects. We still want
@@ -284,6 +286,7 @@ function startWorkerThread<R, T extends AnyAsyncFn<R>>(
284
286
timeout = DEFAULT_TIMEOUT ,
285
287
execArgv = DEFAULT_EXEC_ARGV ,
286
288
tsRunner = DEFAULT_TS_RUNNER ,
289
+ transferList = [ ] ,
287
290
} : SynckitOptions = { } ,
288
291
) {
289
292
const { port1 : mainPort , port2 : workerPort } = new MessageChannel ( )
@@ -340,7 +343,7 @@ function startWorkerThread<R, T extends AnyAsyncFn<R>>(
340
343
{
341
344
eval : useEval ,
342
345
workerData : { workerPort } ,
343
- transferList : [ workerPort ] ,
346
+ transferList : [ workerPort , ... transferList ] ,
344
347
execArgv : finalExecArgv ,
345
348
} ,
346
349
)
0 commit comments