Files
FreeCADWasmDev/tools/templatepymod-facade-smoke-worker.mjs
wangdequan 9a7c4f0335 Save FreeCAD Web workspace sources and user validation evidence
IFC native binding remains incomplete; preserve accurate test results.
2026-09-15 22:01:58 +08:00

2 lines
1.4 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); const envelope = await import(workerData.envelopePath); globalThis.__dirname = `${workerData.build}${path.sep}`; globalThis.require = createRequire(import.meta.url); const loader = await import(pathToFileURL(path.join(workerData.build, "FreeCADWebTemplatePyModRuntimeProbe.js"))); const kernel = await loader.default({ wasmBinary: fs.readFileSync(path.join(workerData.build, "FreeCADWebTemplatePyModRuntimeProbe.wasm")), print: () => {}, printErr: () => {} }); const queue = new envelope.FacadeSerialQueue(); parentPort.postMessage({ kind: "ready", action: facade.TPM_COMMAND }); parentPort.on("message", async (message) => { if (envelope.isFacadeCancel(message)) { if (!queue.cancel(message)) parentPort.postMessage(envelope.createFailure(message.requestId, "cancel_rejected", "request is not active")); return; } if (facade.isTpmRequest(message)) { const source = message.requestId === "tpm-act-e-cancel" ? new Promise((resolve) => setTimeout(() => resolve(kernel), 25)) : kernel; parentPort.postMessage(await facade.dispatchTpm(queue, message, source)); return; } parentPort.postMessage(envelope.createFailure("invalid", "invalid_request", "TemplatePyMod envelope invalid")); });