import { parentPort, Worker as NodeWorker } from "node:worker_threads"; if (!parentPort) throw new Error("browser-worker-node-shim requires a worker_threads parent port."); class BrowserStyleNestedWorker { constructor(url) { const moduleUrl = url instanceof URL ? url.href : new URL(String(url), import.meta.url).href; this.onmessage = null; this.onerror = null; this._worker = new NodeWorker(new URL("./browser-nested-worker-node-shim.mjs", import.meta.url), { type: "module", workerData: { moduleUrl }, }); this._worker.on("message", (data) => this.onmessage?.({ data })); this._worker.on("error", (error) => this.onerror?.({ message: error?.message || String(error), error })); } postMessage(message, transfer = []) { this._worker.postMessage(message, transfer); } terminate() { return this._worker.terminate(); } } globalThis.Worker = BrowserStyleNestedWorker; globalThis.self = { onmessage: null, postMessage(message, transfer = []) { parentPort.postMessage(message, transfer); }, }; await import("../src/mapPatchWorker.js"); if (typeof globalThis.self.onmessage !== "function") { throw new Error("mapPatchWorker did not install its browser Worker message handler."); } parentPort.on("message", (data) => globalThis.self.onmessage({ data }));