import * as fs from 'fs';
import * as path from 'path';
const MDX_DIR = path.join(process.cwd(), 'content/blog');
function repairMermaidSyntax(content: string): string {
// 1. Convert to ... style or just fix the graph prop
// Actually, let's keep the graph prop but make sure the content is VERY safe.
const mermaidRegex = //g;
return content.replace(mermaidRegex, (match, before, graphLiteral, after) => {
let graphContent = graphLiteral.slice(1, -1);
// Replace all {Label} with ["Label"]
graphContent = graphContent.replace(/\{([^{}]+)\}/g, '["$1"]');
// Sometimes people use double {{Label}}
graphContent = graphContent.replace(/\{\{([^{}]+)\}\}/g, '["$1"]');
// Remove any trailing backticks inside that might have been accidentally added
graphContent = graphContent.trim();
return ``;
});
}
// Additional fix for other diagram components that might have similar issues with props
function repairOtherDiagrams(content: string): string {
// For DiagramSequence, DiagramTimeline etc., we often pass arrays of objects.
// MDX handles these better, but let's make sure there are no weird backticks.
return content;
}
function processFiles() {
const files = fs.readdirSync(MDX_DIR).filter(f => f.endsWith('.mdx'));
for (const file of files) {
const filePath = path.join(MDX_DIR, file);
const content = fs.readFileSync(filePath, 'utf8');
let repaired = repairMermaidSyntax(content);
repaired = repairOtherDiagrams(repaired);
if (content !== repaired) {
fs.writeFileSync(filePath, repaired);
console.log(`✅ Repaired Mermaid syntax in ${file}`);
} else {
console.log(`- Checked ${file}`);
}
}
}
processFiles();