storytellurx-v1/public/assets/esm/worker.js
Elias Rhouzlane 9d9c5b0f20 fix: add
2025-06-12 16:51:15 +02:00

73 lines
2.2 KiB
JavaScript

// Ensure we're in a worker context
if (typeof self === "undefined") {
throw new Error("This script must be run in a Web Worker");
}
console.log("[Worker] Starting initialization...");
// Wrap the entire worker code in a try-catch
try {
// Wait for the main thread to send us the module URL
self.onmessage = async (msg) => {
if (msg.data.type === "init") {
console.log("[Worker] Received init message");
const moduleURL = msg.data.moduleURL;
try {
const module = await import(moduleURL);
console.log("[Worker] Module loaded successfully");
const handler = new module.WebWorkerMLCEngineHandler();
// Replace onmessage handler with the actual handler
self.onmessage = (msg) => {
console.log("[Worker] Received message:", msg.data);
try {
handler.onmessage(msg);
} catch (error) {
console.error("[Worker] Handler error:", error);
self.postMessage({
type: "error",
error: error instanceof Error ? error.message : String(error),
});
}
};
self.postMessage({ type: "ready" });
console.log("[Worker] Handler initialized successfully");
} catch (error) {
console.error("[Worker] Failed to load module:", error);
self.postMessage({
type: "error",
error: "Failed to initialize worker: " +
(error instanceof Error ? error.message : String(error)),
});
}
}
};
} catch (error) {
console.error("[Worker] Initialization error:", error);
self.postMessage({
type: "error",
error: "Worker initialization failed: " +
(error instanceof Error ? error.message : String(error)),
});
}
self.onerror = (error) => {
console.error("[Worker] Global error:", error);
self.postMessage({
type: "error",
error: error instanceof ErrorEvent ? error.message : "Unknown worker error",
});
};
self.onmessageerror = (error) => {
console.error("[Worker] Message error:", error);
self.postMessage({
type: "error",
error: "Message error: " +
(error instanceof Error ? error.message : String(error)),
});
};
console.log("[Worker] Basic initialization complete");