| 12345678910111213141516171819202122 |
- // cache em memória com TTL, sem dependência externa — escopo suficiente pra um único
- // processo Node com tráfego modesto (chatbot interno). Cada chamada a createTtlCache
- // cria um Map isolado, pra caches diferentes (embeddings, rewrite+hyde, ...) não colidirem.
- export function createTtlCache(ttlMs, { maxEntries = 500 } = {}) {
- const store = new Map();
- return {
- get(key) {
- const entry = store.get(key);
- if (!entry) return undefined;
- if (Date.now() > entry.expiresAt) {
- store.delete(key);
- return undefined;
- }
- return entry.value;
- },
- set(key, value) {
- if (store.size >= maxEntries) store.delete(store.keys().next().value);
- store.set(key, { value, expiresAt: Date.now() + ttlMs });
- }
- };
- }
|