import { availableLanguages, highlight } from "@arborium/arborium"; export interface HighlightRequest { id: number; language: string; source: string; } export type HighlightReply = { id: number; html: string | null } | { id: number; error: string }; const available = new Set(availableLanguages); onmessage = async ({ data: { id, language, source } }: MessageEvent) => { let reply: HighlightReply; try { reply = { id, html: available.has(language) ? await highlight(language, source) : null }; } catch (error) { reply = { id, error: String(error) }; } postMessage(reply); };