import { parentPort } from "node:worker_threads"; import { convertSwfToNitro, extractIconFromSwf } from "./index"; export interface ConvertRequest { id: number; type: "convert"; buffer: Buffer; classname: string; } export interface IconRequest { id: number; type: "icon"; buffer: Buffer; classname: string; } export type WorkerRequest = ConvertRequest | IconRequest; export type WorkerResponse = | { id: number; ok: true; result?: import("./index").ConversionResult; icon?: Buffer | null; } | { id: number; ok: false; error: string }; if (parentPort) { parentPort.on("message", (msg: WorkerRequest) => { try { if (msg.type === "convert") { const result = convertSwfToNitro(msg.buffer, msg.classname); parentPort?.postMessage({ id: msg.id, ok: true, result, } satisfies WorkerResponse); } else { const icon = extractIconFromSwf(msg.buffer, msg.classname); parentPort?.postMessage({ id: msg.id, ok: true, icon: icon ?? null, } satisfies WorkerResponse); } } catch (err) { parentPort?.postMessage({ id: msg.id, ok: false, error: (err as Error).message, } satisfies WorkerResponse); } }); }