simpleCache.js 777 B

12345678910111213141516171819202122
  1. // cache em memória com TTL, sem dependência externa — escopo suficiente pra um único
  2. // processo Node com tráfego modesto (chatbot interno). Cada chamada a createTtlCache
  3. // cria um Map isolado, pra caches diferentes (embeddings, rewrite+hyde, ...) não colidirem.
  4. export function createTtlCache(ttlMs, { maxEntries = 500 } = {}) {
  5. const store = new Map();
  6. return {
  7. get(key) {
  8. const entry = store.get(key);
  9. if (!entry) return undefined;
  10. if (Date.now() > entry.expiresAt) {
  11. store.delete(key);
  12. return undefined;
  13. }
  14. return entry.value;
  15. },
  16. set(key, value) {
  17. if (store.size >= maxEntries) store.delete(store.keys().next().value);
  18. store.set(key, { value, expiresAt: Date.now() + ttlMs });
  19. }
  20. };
  21. }