From: Chris Duncan Date: Fri, 18 Jul 2025 21:25:58 +0000 (-0700) Subject: Enable worker communications in node environment. X-Git-Tag: v0.10.5~55^2~63 X-Git-Url: https://git.codecow.com/?a=commitdiff_plain;h=0dcfca7883d429cbb371a85129e53b0bc0416922;p=libnemo.git Enable worker communications in node environment. --- 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) } }