// mermaidSanitizer.js export function validateAndFixMermaid(raw) { const warnings = []; if (!raw || !String(raw).trim()) { return { ok: false, fixedSource: "", warnings }; } let text = String(raw) // HTML 实体 .replace(/&/g, "&") .replace(/</g, "<") .replace(/>/g, ">") .replace(/"/g, '"') .replace(/'/g, "'") // 零宽字符 .replace(/[\u200b-\u200f\u2028\u202f\u205f\u2060\ufeff]/g, "") // 全角符号 .replace(/[“”]/g, '"') .replace(/[‘’]/g, "'") .replace(/\u00a0/g, " ") // HTML 换行 .replace(//gi, "\n") // CRLF .replace(/\r\n?/g, "\n") .trim(); // 清理残留的 HTML 标签,但保留 mermaid 语法可能用到的字符 // 仅移除常见的块级和内联标签,避免误伤 mermaid 节点文本(如 A[