import init, { handle_worker_message } from "./pkg/leptos_next_metadata.js";
let wasmInitialized = false;
async function initializeWasm() {
if (!wasmInitialized) {
await init();
wasmInitialized = true;
}
}
self.onmessage = async (event) => {
try {
await initializeWasm();
const { id, taskType, payload } = event.data;
const result = await handle_worker_message(taskType, payload);
self.postMessage({
id,
status: "success",
result: result,
});
} catch (error) {
self.postMessage({
id: event.data.id || 0,
status: "error",
error: error.toString(),
});
}
};
self.onerror = (error) => {
console.error("Worker error:", error);
self.postMessage({
id: 0,
status: "error",
error: error.toString(),
});
};
self.onunhandledrejection = (event) => {
console.error("Worker unhandled rejection:", event.reason);
self.postMessage({
id: 0,
status: "error",
error: event.reason.toString(),
});
};