@croct/cache
Version:
An abstraction layer for caching.
24 lines (23 loc) • 860 B
TypeScript
import { Log, Logger } from '@croct/logging';
import { CacheLoader, CacheProvider } from './cacheProvider';
type CacheErrorLog = Log<{
errorMessage: string;
errorStack?: string;
}>;
/**
* A cache wrapper that prevents any error from the wrapped cache from propagating to the caller.
*
* Errors retrieving values from the cache behave as a cache miss.
* Errors retrieving a fresh value from the loader are propagated unchanged.
*/
export declare class ErrorResilientCache<K, V> implements CacheProvider<K, V> {
private readonly cache;
private readonly logger;
constructor(cache: CacheProvider<K, V>, logger: Logger<CacheErrorLog>);
get(key: K, loader: CacheLoader<K, V>): Promise<V>;
set(key: K, value: V): Promise<void>;
delete(key: K): Promise<void>;
private logLoaderError;
private logProviderError;
}
export {};