transitory
Version:
In-memory cache with high hit rates via LFU eviction. Supports time-based expiration, automatic loading and metrics.
24 lines (21 loc) • 820 B
text/typescript
import { Cache } from './Cache';
import { KeyType } from './KeyType';
import { Metrics } from './metrics/Metrics';
/**
* Abstract class for all cache implementations. This exists so that its
* possible to use instanceof with caches like: `obj instanceof AbstractCache`.
*/
export abstract class AbstractCache<K extends KeyType, V> implements Cache<K, V> {
public abstract maxSize: number;
public abstract size: number;
public abstract weightedSize: number;
public abstract set(key: K, value: V): V | null;
public abstract getIfPresent(key: K): V | null;
public abstract peek(key: K): V | null;
public abstract has(key: K): boolean;
public abstract delete(key: K): V | null;
public abstract clear(): void;
public abstract keys(): K[];
public abstract cleanUp(): void;
public abstract metrics: Metrics;
}