73 lines
2.2 KiB
JavaScript
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");
|