highlight.worker.ts
| 1 | import { highlightFile } from "../services/diffHighlight.ts"; |
| 2 | import { highlightStartup, serveFile } from "../services/highlight.ts"; |
| 3 | |
| 4 | declare const self: { |
| 5 | postMessage(message: unknown): void; |
| 6 | onmessage: ((event: MessageEvent) => void) | null; |
| 7 | }; |
| 8 | |
| 9 | await highlightStartup(); |
| 10 | self.postMessage({ type: "ready" }); |
| 11 | |
| 12 | self.onmessage = async (event: MessageEvent) => { |
| 13 | const { id, type, ...data } = event.data; |
| 14 | try { |
| 15 | let result: unknown; |
| 16 | if (type === "serveFile") { |
| 17 | const content = Buffer.from(data.content as ArrayBuffer); |
| 18 | result = await serveFile(content, data.filename, data.cacheKey); |
| 19 | } else if (type === "highlightFile") { |
| 20 | result = await highlightFile(data.file); |
| 21 | } |
| 22 | self.postMessage({ id, result }); |
| 23 | } catch (err) { |
| 24 | self.postMessage({ id, error: String(err) }); |
| 25 | } |
| 26 | }; |
| 27 |