import type { FunctionMap } from "../../plug-api/types.ts"; import type { AST } from "../../plug-api/lib/tree.ts"; import type { SysCallMapping } from "$lib/plugos/system.ts"; import { renderTemplate } from "$common/template/render.ts"; import { parseTemplate } from "$common/template/template_parser.ts"; import type { DataStore } from "$lib/data/datastore.ts"; export function templateSyscalls(ds: DataStore): SysCallMapping { return { "template.renderTemplate": ( _ctx, template: string, obj: any, globals: Record = {}, ): Promise => { return renderTheTemplate(template, obj, globals, ds.functionMap); }, "template.parseTemplate": ( _ctx, template: string, ): AST => { return parseTemplate(template); }, }; } export function renderTheTemplate( template: string, obj: any, globals: Record, functionMap: FunctionMap, ): Promise { const parsedTemplate = parseTemplate(template); return renderTemplate(parsedTemplate, obj, globals, functionMap); }