From 0dcfca7883d429cbb371a85129e53b0bc0416922 Mon Sep 17 00:00:00 2001 From: Chris Duncan Date: Fri, 18 Jul 2025 14:25:58 -0700 Subject: [PATCH] Enable worker communications in node environment. --- src/lib/workers/worker-interface.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/lib/workers/worker-interface.ts b/src/lib/workers/worker-interface.ts index c915760..13e722d 100644 --- a/src/lib/workers/worker-interface.ts +++ b/src/lib/workers/worker-interface.ts @@ -20,6 +20,7 @@ import { Data, Headers } from '#types' * `work()` function. See the documentation of those functions for details. */ export abstract class WorkerInterface { + static parentPort: any /** * Processes data through a worker. * @@ -32,6 +33,7 @@ export abstract class WorkerInterface { * @returns Promise for processed data */ static async work (headers: Headers | null, data?: Data): Promise { + NODE: this.parentPort = (await import('node:worker_threads')).parentPort return new Promise(async (resolve, reject): Promise => { try { let x, y = new ArrayBuffer(0) @@ -77,7 +79,7 @@ export abstract class WorkerInterface { * ``` */ static listen (): void { - addEventListener('message', (message: MessageEvent): void => { + const listener = (message: MessageEvent): void => { const { name, headers, data } = message.data if (name === 'STOP') { close() @@ -85,6 +87,8 @@ export abstract class WorkerInterface { } else { this.work(headers, data).then(this.report).catch(this.report) } - }) + } + BROWSER: addEventListener('message', listener) + NODE: this.parentPort?.on('message', listener) } } -- 2.47.3