3 lines
1.2 KiB
JavaScript
3 lines
1.2 KiB
JavaScript
import fs from "node:fs";import path from "node:path";import{createRequire}from"node:module";import{parentPort,workerData}from"node:worker_threads";import{pathToFileURL}from"node:url";
|
|
const facade=await import(workerData.facadePath),envelope=await import(workerData.envelopePath);globalThis.__dirname=`${workerData.buildDirectory}${path.sep}`;globalThis.require=createRequire(import.meta.url);const f=await import(pathToFileURL(path.join(workerData.buildDirectory,"FreeCADWebPartIoProbe.js")));const k=await f.default({wasmBinary:fs.readFileSync(path.join(workerData.buildDirectory,"FreeCADWebPartIoProbe.wasm"))});const q=new envelope.FacadeSerialQueue();parentPort.postMessage({kind:"ready",action:facade.PART_IO_COMMAND});parentPort.on("message",async m=>{if(envelope.isFacadeCancel(m)){if(!q.cancel(m))parentPort.postMessage(envelope.createFailure(m.requestId,"cancel_rejected","request is not active"));return}if(facade.isPartIoRequest(m)){const src=m.requestId==="part-io-cancel-1"?new Promise(r=>setTimeout(()=>r(k),25)):k;parentPort.postMessage(await facade.dispatchPartIo(q,m,src));return}parentPort.postMessage(envelope.createFailure("invalid","invalid_request","Part IO request envelope is invalid"))});
|