initial commit
This commit is contained in:
@@ -0,0 +1,107 @@
|
||||
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
|
||||
Reference in New Issue
Block a user