markdown-mermaid-converter-cli
Version:
CLI tool to convert Markdown files with Mermaid diagrams to various formats (PDF, etc.)
51 lines • 1.61 kB
JavaScript
import * as crypto from 'crypto';
import { renderMermaid } from './mermaidRenderer.js';
export class DiagramCache {
static instance;
cache = new Map();
hits = 0;
misses = 0;
constructor() { }
static getInstance() {
if (!DiagramCache.instance) {
DiagramCache.instance = new DiagramCache();
}
return DiagramCache.instance;
}
generateHash(mermaidCode) {
return crypto.createHash('sha256').update(mermaidCode.trim()).digest('hex');
}
async getOrRender(mermaidCode, tempImagePath) {
const hash = this.generateHash(mermaidCode);
const cached = this.cache.get(hash);
if (cached) {
this.hits++;
return cached.base64Data;
}
this.misses++;
await renderMermaid(mermaidCode, tempImagePath);
const { promises: fs } = await import('fs');
const imageBuffer = await fs.readFile(tempImagePath);
const base64Data = imageBuffer.toString('base64');
this.cache.set(hash, {
base64Data,
timestamp: Date.now()
});
return base64Data;
}
getStats() {
const totalRequests = this.hits + this.misses;
const hitRate = totalRequests > 0 ? (this.hits / totalRequests) * 100 : 0;
return {
totalEntries: this.cache.size,
hitRate: Math.round(hitRate * 100) / 100
};
}
destroy() {
this.cache.clear();
this.hits = 0;
this.misses = 0;
DiagramCache.instance = null;
}
}
//# sourceMappingURL=diagramCache.js.map