Files
nostr-connect/extension/utils.js
2026-04-08 12:57:04 +07:00

39 lines
575 B
JavaScript

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())
}
}
}