import createModule from "../../../build-wasm/linuxcnc-sim-core.js"; import { XyzacSession as SimSession } from "../../worker/xyzac-session.mjs"; // The boot event is a transport diagnostic; it carries no simulation state. self.postMessage({ schema_version: 1, kind: "WORKER_BOOT", context_id: "linuxcnc-2.10.0-pre0-wasm-m1-py-c1", session_id: "boot", seq: 0, payload: { status: "booting", runtime: "react-vite-worker" } }); let session: SimSession | null = null; const queue: MessageEvent[] = []; const handle = (event: MessageEvent) => { try { if (!session) { queue.push(event); return; } self.postMessage(session.accept(event.data)); } catch (error) { self.postMessage({ schema_version: 1, kind: "ERROR", context_id: session?.contextId ?? "linuxcnc-2.10.0-pre0-wasm-m1-py-c1", session_id: session?.sessionId ?? "boot", seq: event.data?.seq ?? 0, payload: { status: "error", code: "worker_exception", message_key: error instanceof Error ? error.message : String(error), retryable: false } }); } }; self.onmessage = handle; createModule().then((core) => { session = new SimSession(core); for (const event of queue.splice(0)) handle(event); }).catch((error) => { self.postMessage({ schema_version: 1, kind: "ERROR", context_id: "linuxcnc-2.10.0-pre0-wasm-m1-py-c1", session_id: "boot", seq: 0, payload: { status: "error", code: "worker_wasm_init", message_key: error instanceof Error ? error.message : String(error), retryable: false } }); });