mirror of
https://github.com/imezx/Warp.git
synced 2025-04-25 07:30:02 +00:00
33 lines
809 B
JavaScript
33 lines
809 B
JavaScript
// adapted from https://stackoverflow.com/a/46432113/11613622
|
|
export class LRUCache {
|
|
max;
|
|
cache;
|
|
constructor(max = 10) {
|
|
this.max = max;
|
|
this.cache = new Map();
|
|
}
|
|
get(key) {
|
|
let item = this.cache.get(key);
|
|
if (item !== undefined) {
|
|
// refresh key
|
|
this.cache.delete(key);
|
|
this.cache.set(key, item);
|
|
}
|
|
return item;
|
|
}
|
|
set(key, val) {
|
|
// refresh key
|
|
if (this.cache.has(key))
|
|
this.cache.delete(key);
|
|
// evict oldest
|
|
else if (this.cache.size === this.max)
|
|
this.cache.delete(this.first());
|
|
this.cache.set(key, val);
|
|
}
|
|
first() {
|
|
return this.cache.keys().next().value;
|
|
}
|
|
clear() {
|
|
this.cache.clear();
|
|
}
|
|
}
|