"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.LruTtlMap = void 0; const LruMap_1 = require("./LruMap"); class LruTtlMap extends LruMap_1.LruMap { constructor() { super(...arguments); this.expiry = new Map(); } clear() { this.expiry.clear(); super.clear(); } delete(key) { this.expiry.delete(key); return super.delete(key); } has(key, now = 0) { if (!super.has(key)) return false; const expiry = this.expiry.get(key) || 0; const expired = now > expiry; if (expired) this.delete(key); return !expired; } get(key, now) { if (!this.has(key, now)) return undefined; const value = super.get(key); super.set(key, value); return value; } set(key, value, expiry = Infinity) { super.set(key, value); this.expiry.set(key, expiry); return this; } } exports.LruTtlMap = LruTtlMap;