19 lines
662 B
JavaScript
19 lines
662 B
JavaScript
|
|
import { parentPort, workerData } from "node:worker_threads";
|
||
|
|
|
||
|
|
if (!parentPort) throw new Error("browser-nested-worker-node-shim requires a parent port.");
|
||
|
|
if (!workerData?.moduleUrl) throw new Error("browser-nested-worker-node-shim requires moduleUrl.");
|
||
|
|
|
||
|
|
globalThis.self = {
|
||
|
|
onmessage: null,
|
||
|
|
postMessage(message, transfer = []) {
|
||
|
|
parentPort.postMessage(message, transfer);
|
||
|
|
},
|
||
|
|
};
|
||
|
|
|
||
|
|
await import(workerData.moduleUrl);
|
||
|
|
|
||
|
|
if (typeof globalThis.self.onmessage !== "function") {
|
||
|
|
throw new Error(`Nested browser worker module did not install onmessage: ${workerData.moduleUrl}`);
|
||
|
|
}
|
||
|
|
|
||
|
|
parentPort.on("message", (data) => globalThis.self.onmessage({ data }));
|