cache-manager
Version:
Cache Manager for Node.js
96 lines (92 loc) • 3.43 kB
text/typescript
import EventEmitter from 'node:events';
import { KeyvStoreAdapter, StoredData, Keyv, StoredDataRaw } from 'keyv';
type CacheManagerStore = {
name: string;
isCacheable?: (value: unknown) => boolean;
get(key: string): Promise<any>;
mget(...keys: string[]): Promise<unknown[]>;
set(key: string, value: any, ttl?: number): Promise<any>;
mset(data: Record<string, any>, ttl?: number): Promise<void>;
del(key: string): Promise<void>;
mdel(...keys: string[]): Promise<void>;
ttl(key: string, ttl?: number): Promise<number>;
keys(): Promise<string[]>;
reset?(): Promise<void>;
on?(event: string, listener: (...arguments_: any[]) => void): void;
disconnect?(): Promise<void>;
};
declare class KeyvAdapter implements KeyvStoreAdapter {
opts: any;
namespace?: string | undefined;
private readonly _cache;
constructor(store: CacheManagerStore);
get<T>(key: string): Promise<StoredData<T> | undefined>;
set(key: string, value: any, ttl?: number): Promise<boolean>;
delete(key: string): Promise<boolean>;
clear(): Promise<void>;
has?(key: string): Promise<boolean>;
getMany?<T>(keys: string[]): Promise<Array<StoredData<T | undefined>>>;
deleteMany?(key: string[]): Promise<boolean>;
on(event: string, listener: (...arguments_: any[]) => void): this;
disconnect?(): Promise<void>;
}
type CreateCacheOptions = {
stores?: Keyv[];
ttl?: number;
refreshThreshold?: number;
refreshAllStores?: boolean;
nonBlocking?: boolean;
cacheId?: string;
};
type WrapOptions<T> = {
ttl?: number | ((value: T) => number);
refreshThreshold?: number | ((value: T) => number);
};
type WrapOptionsRaw<T> = WrapOptions<T> & {
raw: true;
};
type Cache = {
get: <T>(key: string) => Promise<T | null>;
mget: <T>(keys: string[]) => Promise<Array<T | null>>;
ttl: (key: string) => Promise<number | null>;
set: <T>(key: string, value: T, ttl?: number) => Promise<T>;
mset: <T>(list: Array<{
key: string;
value: T;
ttl?: number;
}>) => Promise<Array<{
key: string;
value: T;
ttl?: number;
}>>;
del: (key: string) => Promise<boolean>;
mdel: (keys: string[]) => Promise<boolean>;
clear: () => Promise<boolean>;
on: <E extends keyof Events>(event: E, listener: Events[E]) => EventEmitter;
off: <E extends keyof Events>(event: E, listener: Events[E]) => EventEmitter;
disconnect: () => Promise<undefined>;
cacheId: () => string;
stores: Keyv[];
wrap<T>(key: string, fnc: () => T | Promise<T>, ttl?: number | ((value: T) => number), refreshThreshold?: number | ((value: T) => number)): Promise<T>;
wrap<T>(key: string, fnc: () => T | Promise<T>, options: WrapOptions<T>): Promise<T>;
wrap<T>(key: string, fnc: () => T | Promise<T>, options: WrapOptionsRaw<T>): Promise<StoredDataRaw<T>>;
};
type Events = {
set: <T>(data: {
key: string;
value: T;
error?: unknown;
}) => void;
del: (data: {
key: string;
error?: unknown;
}) => void;
clear: (error?: unknown) => void;
refresh: <T>(data: {
key: string;
value: T;
error?: unknown;
}) => void;
};
declare const createCache: (options?: CreateCacheOptions) => Cache;
export { type Cache, type CacheManagerStore, type CreateCacheOptions, type Events, KeyvAdapter, createCache };