import { Renderer } from "@mizu/internal/engine"
onmessage = async (event) => {
try {
const { expression, variables, imports, context } = event.data as { expression: string; variables: Record<PropertyKey, unknown> | null; imports: Record<string, string>; context: "expression" | "function" }
const renderer = await new Renderer(null as any, { directives: [] }).ready
const result = await renderer.evaluate(null, expression, {
state: { ...Object.fromEntries(await Promise.all(Object.entries(imports).map(async ([name, value]) => [name, await import(value)]))), ...variables },
args: context === "function" ? [] : undefined,
})
postMessage({ result })
} catch (error) {
postMessage({ error })
} finally {
self.close()
}
}
|