mes-engine
Version:
A powerful and flexible video processing framework for Node.js with support for multiple processing engines, adaptive streaming, and intelligent caching.
35 lines (30 loc) • 912 B
text/typescript
// cache/LRU.ts
export class LRU<T> {
private maxSize: number;
private cache: Map<string, T>;
constructor(maxSize: number) {
this.maxSize = maxSize;
this.cache = new Map();
}
set(key: string, value: T): void {
if (this.cache.has(key)) {
this.cache.delete(key);
} else if (this.cache.size >= this.maxSize) {
const oldestKey = this.cache.keys().next().value;
if (oldestKey !== undefined) {
this.cache.delete(oldestKey);
}
}
this.cache.set(key, value);
}
get(key: string): T | undefined {
if (!this.cache.has(key)) return undefined;
const value = this.cache.get(key)!;
this.cache.delete(key);
this.cache.set(key, value);
return value;
}
clear(): void {
this.cache.clear();
}
}