export class LRUCache { constructor(maxSize) { this.maxSize = maxSize; this.map = new Map(); this.keys = []; } clear() { this.map.clear(); } has(k) { return this.map.has(k); } get(k) { const v = this.map.get(k); if (v !== undefined) { this.keys.push(k); if (this.keys.length > this.maxSize * 2) { this.keys.splice(-this.maxSize); } } return v; } set(k, v) { this.map.set(k, v); this.keys.push(k); if (this.map.size > this.maxSize) { this.map.delete(this.keys.shift()); } } }