41 lines
1.0 KiB
JavaScript
41 lines
1.0 KiB
JavaScript
"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;
|