shadow$provide.module$node_modules$tiny_lru$dist$tiny_lru_cjs = function(global, require, module, exports) { class LRU { constructor(max = 0, ttl = 0, resetTtl = !1) { this.first = null; this.items = Object.create(null); this.last = null; this.max = max; this.resetTtl = resetTtl; this.size = 0; this.ttl = ttl; } clear() { this.first = null; this.items = Object.create(null); this.last = null; this.size = 0; return this; } delete(key) { if (this.has(key)) { const item = this.items[key]; delete this.items[key]; this.size--; null !== item.prev && (item.prev.next = item.next); null !== item.next && (item.next.prev = item.prev); this.first === item && (this.first = item.next); this.last === item && (this.last = item.prev); } return this; } entries(keys = this.keys()) { const result = Array(keys.length); for (let i = 0; i < keys.length; i++) { const key = keys[i]; result[i] = [key, this.get(key)]; } return result; } evict(bypass = !1) { if (bypass || 0 < this.size) { bypass = this.first, delete this.items[bypass.key], 0 === --this.size ? this.last = this.first = null : (this.first = bypass.next, this.first.prev = null); } return this; } expiresAt(key) { let result; this.has(key) && (result = this.items[key].expiry); return result; } get(key) { const item = this.items[key]; if (void 0 !== item) { if (0 < this.ttl && item.expiry <= Date.now()) { this.delete(key); } else { return this.moveToEnd(item), item.value; } } } has(key) { return key in this.items; } moveToEnd(item) { this.last !== item && (null !== item.prev && (item.prev.next = item.next), null !== item.next && (item.next.prev = item.prev), this.first === item && (this.first = item.next), item.prev = this.last, item.next = null, null !== this.last && (this.last.next = item), this.last = item, null === this.first && (this.first = item)); } keys() { const result = Array(this.size); let x = this.first, i = 0; for (; null !== x;) { result[i++] = x.key, x = x.next; } return result; } setWithEvicted(key, value, resetTtl = this.resetTtl) { let evicted = null; this.has(key) ? this.set(key, value, !0, resetTtl) : (0 < this.max && this.size === this.max && (evicted = {...this.first}, this.evict(!0)), key = this.items[key] = {expiry:0 < this.ttl ? Date.now() + this.ttl : this.ttl, key, prev:this.last, next:null, value}, 1 === ++this.size ? this.first = key : this.last.next = key, this.last = key); return evicted; } set(key, value, bypass = !1, resetTtl = this.resetTtl) { let item = this.items[key]; bypass || void 0 !== item ? (item.value = value, !1 === bypass && resetTtl && (item.expiry = 0 < this.ttl ? Date.now() + this.ttl : this.ttl), this.moveToEnd(item)) : (0 < this.max && this.size === this.max && this.evict(!0), item = this.items[key] = {expiry:0 < this.ttl ? Date.now() + this.ttl : this.ttl, key, prev:this.last, next:null, value}, 1 === ++this.size ? this.first = item : this.last.next = item, this.last = item); return this; } values(keys = this.keys()) { const result = Array(keys.length); for (let i = 0; i < keys.length; i++) { result[i] = this.get(keys[i]); } return result; } } exports.LRU = LRU; exports.lru = function(max = 1000, ttl = 0, resetTtl = !1) { if (isNaN(max) || 0 > max) { throw new TypeError("Invalid max value"); } if (isNaN(ttl) || 0 > ttl) { throw new TypeError("Invalid ttl value"); } if ("boolean" !== typeof resetTtl) { throw new TypeError("Invalid resetTtl value"); } return new LRU(max, ttl, resetTtl); }; }; //# sourceMappingURL=module$node_modules$tiny_lru$dist$tiny_lru_cjs.js.map