layered-loader
Version:
Data loader with support for caching and fallback data sources
29 lines (28 loc) • 1.22 kB
TypeScript
export interface SynchronousWriteCache<T> {
set: (key: string, value: T | null) => void;
delete: (key: string) => void;
deleteMany: (keys: string[]) => void;
clear: () => void;
}
export type GetManyResult<T> = {
resolvedValues: T[];
unresolvedKeys: string[];
};
export interface SynchronousCache<LoadedValue> extends SynchronousWriteCache<LoadedValue> {
readonly ttlLeftBeforeRefreshInMsecs?: number;
get: (key: string) => LoadedValue | undefined | null;
getMany: (keys: string[]) => GetManyResult<LoadedValue>;
getExpirationTime: (key: string) => number | undefined;
}
export interface SynchronousWriteGroupCache<T> {
setForGroup: (key: string, value: T | null, group: string) => void;
deleteFromGroup: (key: string, group: string) => void;
deleteGroup: (group: string) => void;
clear: () => void;
}
export interface SynchronousGroupCache<T> extends SynchronousWriteGroupCache<T> {
readonly ttlLeftBeforeRefreshInMsecs?: number;
getFromGroup: (key: string, group: string) => T | undefined | null;
getManyFromGroup: (keys: string[], group: string) => GetManyResult<T>;
getExpirationTimeFromGroup: (key: string, group: string) => number | undefined;
}