UNPKG

markdown-mermaid-converter-cli

Version:

CLI tool to convert Markdown files with Mermaid diagrams to various formats (PDF, etc.)

51 lines 1.61 kB
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