highlight.worker.ts
Raw
1import { highlightFile } from "../services/diffHighlight.ts";
2import { highlightStartup, serveFile } from "../services/highlight.ts";
3
4declare const self: {
5 postMessage(message: unknown): void;
6 onmessage: ((event: MessageEvent) => void) | null;
7};
8
9await highlightStartup();
10self.postMessage({ type: "ready" });
11
12self.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