///
import type { CompileWorkerRequest, CompileWorkerResponse } from "./protocol";
import { analyzeStylesheet, compileStylesheet } from "@reactive-resume/resume/stylesheet";
import { collectCompiledColorTokens } from "./color-tokens";
self.addEventListener("message", ({ data }: MessageEvent) => {
if (data.type !== "compile") return;
const compiled = compileStylesheet(data.source);
const diagnostics = compiled.program
? [...compiled.diagnostics, ...analyzeStylesheet(compiled.program, data.semanticTree)]
: compiled.diagnostics;
const response: CompileWorkerResponse = {
type: "compile_result",
requestId: data.requestId,
editGeneration: data.editGeneration,
program: compiled.program,
diagnostics,
colorTokens: collectCompiledColorTokens(data.source.text, compiled.program),
};
self.postMessage(response);
});