@politie/sherlock-utils
Version:
Utility functions that are designed to work with Sherlock. His toolbelt.
14 lines (13 loc) • 579 B
TypeScript
import { Derivable, SettableDerivable, Unwrappable } from '@politie/sherlock';
export interface MapImplementation<K, V> {
set(key: K, value: V): void;
delete(key: K): void;
get(key: K): V | undefined;
}
export interface DerivableCacheOptions<K, V> {
derivableFactory(key: K): Derivable<V>;
mapFactory?(): MapImplementation<K, Derivable<V>>;
delayedEviction?: boolean;
}
export type DerivableCache<K, V> = (key: Unwrappable<K>) => SettableDerivable<V>;
export declare function derivableCache<K, V>(opts: DerivableCacheOptions<K, V>): DerivableCache<K, V>;