diff options
Diffstat (limited to 'ext/node/polyfills/worker_threads.ts')
-rw-r--r-- | ext/node/polyfills/worker_threads.ts | 37 |
1 files changed, 17 insertions, 20 deletions
diff --git a/ext/node/polyfills/worker_threads.ts b/ext/node/polyfills/worker_threads.ts index 49562d892..c34f1fe23 100644 --- a/ext/node/polyfills/worker_threads.ts +++ b/ext/node/polyfills/worker_threads.ts @@ -343,14 +343,7 @@ internals.__initWorkerThreads = ( defaultExport.parentPort = parentPort; defaultExport.threadId = threadId; - for (const obj in workerData as Record<string, unknown>) { - if (ObjectPrototypeIsPrototypeOf(MessagePortPrototype, workerData[obj])) { - workerData[obj] = webMessagePortToNodeMessagePort( - workerData[obj] as MessagePort, - ); - break; - } - } + workerData = patchMessagePortIfFound(workerData); parentPort.off = parentPort.removeListener = function ( this: ParentPort, @@ -369,18 +362,7 @@ internals.__initWorkerThreads = ( // deno-lint-ignore no-explicit-any const _listener = (ev: any) => { let message = ev.data; - if (ObjectPrototypeIsPrototypeOf(MessagePortPrototype, message)) { - message = webMessagePortToNodeMessagePort(message); - } else { - for (const obj in message) { - if ( - ObjectPrototypeIsPrototypeOf(MessagePortPrototype, message[obj]) - ) { - message[obj] = webMessagePortToNodeMessagePort(message[obj]); - break; - } - } - } + message = patchMessagePortIfFound(message); return listener(message); }; listeners.set(listener, _listener); @@ -481,6 +463,21 @@ function webMessagePortToNodeMessagePort(port: MessagePort) { return port; } +// deno-lint-ignore no-explicit-any +function patchMessagePortIfFound(data: any) { + if (ObjectPrototypeIsPrototypeOf(MessagePortPrototype, data)) { + data = webMessagePortToNodeMessagePort(data); + } else { + for (const obj in data as Record<string, unknown>) { + if (ObjectPrototypeIsPrototypeOf(MessagePortPrototype, data[obj])) { + data[obj] = webMessagePortToNodeMessagePort(data[obj] as MessagePort); + break; + } + } + } + return data; +} + export { BroadcastChannel, MessagePort, |