import type { CanonicalUsage } from "../../model/index.js";
export class SessionUsageCache {
private readonly map = new Map<string, CanonicalUsage>();
private readonly capacity: number;
constructor(capacity = 500) {
this.capacity = Math.max(1, capacity);
}
get(sessionId: string): CanonicalUsage | undefined {
return this.map.get(sessionId);
}
observe(sessionId: string, usage: CanonicalUsage | undefined): void {
if (!usage) {
return;
}
if (this.map.has(sessionId)) {
this.map.delete(sessionId);
} else if (this.map.size >= this.capacity) {
const oldest = this.map.keys().next().value;
if (oldest !== undefined) {
this.map.delete(oldest);
}
}
this.map.set(sessionId, usage);
}
clear(): void {
this.map.clear();
}
}