Server authority

This commit is contained in:
2026-09-24 19:34:07 -03:00
parent 1bef94ce0c
commit 79faa556de
75 changed files with 2247 additions and 1632 deletions
+35
View File
@@ -0,0 +1,35 @@
// a Map that forgets the least recently used entries past max_size
export class LruMap<K, V> {
#map = new Map<K, V>();
readonly max_size: number;
constructor(max_size: number) {
this.max_size = max_size;
}
get(key: K): V | undefined {
const value = this.#map.get(key);
if (value !== undefined) {
// maps keep insertion order, so re-inserting moves it to the back
this.#map.delete(key);
this.#map.set(key, value);
}
return value;
}
set(key: K, value: V) {
this.#map.delete(key);
this.#map.set(key, value);
if (this.#map.size > this.max_size) {
this.#map.delete(this.#map.keys().next().value!);
}
}
delete(key: K) {
this.#map.delete(key);
}
get size() {
return this.#map.size;
}
}