@croct/cache
Version:
An abstraction layer for caching.
40 lines (39 loc) • 1.81 kB
TypeScript
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 {};