// 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[