import assert from "node:assert/strict";
import test from "node:test";
import type { DiagramIRV2 } from "../../model/diagram-ir.js";
import { diagramIRToMermaid, diagramIRToStructuredMarkdown } from "./reverse.js";
const IR: DiagramIRV2 = {
version: 2,
title: "Platform",
pages: [{
id: "system", title: "System",
nodes: [
{ id: "a", label: "Client" },
{ id: "b", label: "API \"danger\"]\n%%{init: {}}%% [click](javascript:alert(1))" },
],
edges: [{ id: "call", source: "a", target: "b", label: "calls | inject" }],
}],
};
test("reverse Mermaid flowchart is deterministic and escapes untrusted labels", () => {
const output = diagramIRToMermaid(IR);
assert.equal(output, diagramIRToMermaid(IR));
assert.match(output, /^flowchart LR/m);
assert.match(output, /n0\["Client"\]/);
assert.match(output, /n0 -->\|"calls | inject"\| n1/);
assert.doesNotMatch(output, /