File size: 847 Bytes
12d3f0e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import crypto from 'crypto';
import { MAX_CACHE_ITEMS } from '../config.js';

// High-speed in-memory cache of pre-rendered PDF buffers (SHA-256 key -> { buffer, createdAt }).
// Eviction is oldest-inserted-first once MAX_CACHE_ITEMS is reached.
const pdfRamCache = new Map();

export function generateContentHash(content, metadata) {
    return crypto.createHash('sha256')
        .update(content + JSON.stringify(metadata || {}))
        .digest('hex');
}

export function getCachedPdf(key) {
    return pdfRamCache.get(key);
}

export function cachePdf(key, buffer) {
    if (pdfRamCache.size >= MAX_CACHE_ITEMS) {
        const oldestKey = pdfRamCache.keys().next().value;
        pdfRamCache.delete(oldestKey);
    }
    pdfRamCache.set(key, { buffer, createdAt: Date.now() });
}

export function cacheSize() {
    return pdfRamCache.size;
}