import { parseTemplate } from "@yaakapp-internal/templates"; import { activeEnvironmentIdAtom } from "../hooks/useActiveEnvironment"; import { activeWorkspaceIdAtom } from "../hooks/useActiveWorkspace"; import { jotaiStore } from "./jotai"; import { invokeCmd } from "./tauri"; export function analyzeTemplate(template: string): "global_secured" | "local_secured" | "insecure" { let secureTags = 0; let insecureTags = 0; let totalTags = 0; for (const t of parseTemplate(template).tokens) { if (t.type === "eof") continue; totalTags++; if (t.type === "tag" && t.val.type === "fn" && t.val.name === "secure") { secureTags++; } else if (t.type === "tag" && t.val.type === "var") { // Variables are secure } else if (t.type === "tag" && t.val.type === "bool") { // Booleans are secure } else { insecureTags++; } } if (secureTags === 1 && totalTags === 1) { return "global_secured"; } if (insecureTags === 0) { return "local_secured"; } return "insecure"; } export async function convertTemplateToInsecure(template: string) { if (template === "") { return ""; } const workspaceId = jotaiStore.get(activeWorkspaceIdAtom) ?? "n/a"; const environmentId = jotaiStore.get(activeEnvironmentIdAtom) ?? null; return invokeCmd("cmd_decrypt_template", { template, workspaceId, environmentId }); } export async function convertTemplateToSecure(template: string): Promise { if (template === "") { return ""; } if (analyzeTemplate(template) === "global_secured") { return template; } const workspaceId = jotaiStore.get(activeWorkspaceIdAtom) ?? "n/a"; const environmentId = jotaiStore.get(activeEnvironmentIdAtom) ?? null; return invokeCmd("cmd_secure_template", { template, workspaceId, environmentId }); }