31 lines
780 B
JavaScript
31 lines
780 B
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.LruMap = void 0;
|
|
class LruMap extends Map {
|
|
constructor(
|
|
// 2^30 - 1 (a SMI in V8, for 32-bit platforms)
|
|
limit = 1073741823) {
|
|
super();
|
|
this.limit = limit;
|
|
}
|
|
set(key, value) {
|
|
super.delete(key);
|
|
super.set(key, value);
|
|
if (super.size > this.limit)
|
|
super.delete(super.keys().next().value);
|
|
return this;
|
|
}
|
|
get(key) {
|
|
const value = super.get(key);
|
|
if (value === void 0) {
|
|
if (super.delete(key))
|
|
super.set(key, value);
|
|
return value;
|
|
}
|
|
super.delete(key);
|
|
super.set(key, value);
|
|
return value;
|
|
}
|
|
}
|
|
exports.LruMap = LruMap;
|