Spaces:
Running
Running
| console.info("[PocketBootstrap] worker module starting"); | |
| self.addEventListener("error", (event) => { | |
| console.error("[PocketBootstrap] error event", { | |
| message: event.message, | |
| filename: event.filename, | |
| lineno: event.lineno, | |
| colno: event.colno, | |
| }); | |
| }); | |
| self.addEventListener("unhandledrejection", (event) => { | |
| console.error("[PocketBootstrap] unhandled rejection", event.reason); | |
| }); | |
| const postBootstrapError = (error: unknown) => { | |
| const message = | |
| error instanceof Error ? `${error.name}: ${error.message}` : String(error); | |
| self.postMessage({ | |
| type: "error", | |
| error: `Pocket bootstrap failed: ${message}`, | |
| }); | |
| }; | |
| const queuedMessages: unknown[] = []; | |
| let vendorMessageHandler: | |
| | ((event: MessageEvent) => void | Promise<void>) | |
| | null = null; | |
| const forwardOrQueueMessage = (event: MessageEvent) => { | |
| if (vendorMessageHandler) { | |
| void vendorMessageHandler(event); | |
| return; | |
| } | |
| queuedMessages.push(event.data); | |
| console.info("[PocketBootstrap] queued message", { | |
| type: | |
| typeof event.data === "object" && | |
| event.data !== null && | |
| "type" in (event.data as Record<string, unknown>) | |
| ? (event.data as { type?: unknown }).type | |
| : "unknown", | |
| }); | |
| }; | |
| self.addEventListener("message", forwardOrQueueMessage); | |
| void (async () => { | |
| try { | |
| const vendorWorkerUrl = new URL( | |
| "/pocket-tts/inference-worker.js", | |
| self.location.origin, | |
| ).toString(); | |
| console.info("[PocketBootstrap] importing vendor worker"); | |
| await import(/* @vite-ignore */ vendorWorkerUrl); | |
| console.info("[PocketBootstrap] vendor worker imported"); | |
| if (typeof self.onmessage !== "function") { | |
| throw new Error("Vendor worker did not install a message handler."); | |
| } | |
| vendorMessageHandler = self.onmessage.bind(self); | |
| console.info("[PocketBootstrap] vendor handler ready", { | |
| queuedMessages: queuedMessages.length, | |
| }); | |
| while (queuedMessages.length > 0) { | |
| const data = queuedMessages.shift(); | |
| await vendorMessageHandler( | |
| new MessageEvent("message", { | |
| data, | |
| }), | |
| ); | |
| } | |
| } catch (error) { | |
| console.error("[PocketBootstrap] vendor worker import failed", error); | |
| postBootstrapError(error); | |
| throw error; | |
| } | |
| })(); | |
| export {}; | |