UNPKG

@woosh/meep-engine

Version:

Pure JavaScript game engine. Fully featured and production ready.

57 lines (39 loc) 1.26 kB
import Signal from "../events/signal/Signal"; interface Hashable { hash(): number equals(other: any): boolean } export class Cache<K extends Hashable, V> extends Map<K,V>{ constructor({ maxWeight, keyWeigher, valueWeigher, keyHashFunction, keyEqualityFunction, capacity }?: { maxWeight?: number, keyWeigher?: (key: K) => number, valueWeigher?: (value: V) => number, keyHashFunction?: (key: K) => number, keyEqualityFunction?: (a: K, b: K) => boolean, capacity?: number }) readonly onEvicted: Signal<K, V> readonly onRemoved: Signal<K, V> readonly onSet: Signal<K, V> readonly weight: number maxWeight: number size(): number put(k: K, v: V): void get(k: K): V | null contains(k: K): boolean remove(k: K): boolean silentRemove(k: K): boolean evictOne(): boolean clear(): void drop(): void getOrCompute(key: K, compute: (key: K) => V, compute_context?: any): V recomputeWeight(): void updateElementWeight(key: K): boolean }