31 lines
787 B
TypeScript
31 lines
787 B
TypeScript
|
|
import { convertCadBufferToSvg, type CadFormat } from "./cadConversion";
|
||
|
|
|
||
|
|
type CadWorkerRequest = {
|
||
|
|
buffer: ArrayBuffer;
|
||
|
|
format: CadFormat;
|
||
|
|
};
|
||
|
|
|
||
|
|
type CadWorkerResponse =
|
||
|
|
| { ok: true; svg: string }
|
||
|
|
| { ok: false; error: string };
|
||
|
|
|
||
|
|
type WorkerScope = {
|
||
|
|
onmessage: ((event: MessageEvent<CadWorkerRequest>) => void) | null;
|
||
|
|
postMessage: (message: CadWorkerResponse) => void;
|
||
|
|
};
|
||
|
|
|
||
|
|
const workerScope = globalThis as unknown as WorkerScope;
|
||
|
|
|
||
|
|
workerScope.onmessage = (event) => {
|
||
|
|
try {
|
||
|
|
const { buffer, format } = event.data;
|
||
|
|
const svg = convertCadBufferToSvg(buffer, format);
|
||
|
|
workerScope.postMessage({ ok: true, svg });
|
||
|
|
} catch (error) {
|
||
|
|
workerScope.postMessage({
|
||
|
|
ok: false,
|
||
|
|
error: error instanceof Error ? error.message : String(error)
|
||
|
|
});
|
||
|
|
}
|
||
|
|
};
|