UNPKG

@croct/cache

Version:

An abstraction layer for caching.

40 lines (39 loc) 1.81 kB
import { JsonCompatible, JsonValue } from '@croct/json'; import { CacheLoader, CacheProvider } from './cacheProvider'; export type Transformer<D, S> = (value: D) => Promise<S> | S; export type HashAlgorithm = 'passthrough' | 'md5' | 'sha1'; type Configuration<K, V, IK, IV> = { cache: CacheProvider<IK, IV>; keyTransformer: Transformer<K, IK>; valueInputTransformer: Transformer<V, IV>; valueOutputTransformer: Transformer<IV, V>; }; /** * A cache provider to transform keys and values between composition layers. */ export declare class AdaptedCache<K, V, IK = K, IV = V> implements CacheProvider<K, V> { private readonly cache; private readonly keyTransformer; private readonly valueInputTransformer; private readonly valueOutputTransformer; constructor(config: Configuration<K, V, IK, IV>); static transformKeys<K, IK, V>(cache: CacheProvider<IK, V>, keyTransformer: Transformer<K, IK>): AdaptedCache<K, V, IK, V>; static transformValues<K, V, IV>(cache: CacheProvider<K, IV>, inputTransformer: Transformer<V, IV>, outputTransformer: Transformer<IV, V>): AdaptedCache<K, V, K, IV>; get(key: K, loader: CacheLoader<K, V>): Promise<V>; set(key: K, value: V): Promise<void>; delete(key: K): Promise<void>; static createHashSerializer(algorithm?: HashAlgorithm): Transformer<any, string>; /** * Serializes a JSON compatible value to a string using JSON.stringify. * * This is a helper function for type safety. */ static jsonSerializer<T extends JsonCompatible>(): Transformer<T, string>; /** * Deserializes a string into a JSON value using JSON.parse. * * This is a helper function for type safety. */ static jsonDeserializer<T extends JsonValue>(): Transformer<string, T>; } export {};