reqoal
Version:
A lightweight and efficient JavaScript library for request coalescing — merge concurrent identical async calls into a single request to reduce load and improve performance.
29 lines (26 loc) • 1.46 kB
TypeScript
declare class ReqoalInstance {
private _pruneIntervalMs;
private _ttlMs;
private _maxConcurrency;
private _console;
private _interval;
private _resultCache;
private _inFlightRequests;
private _currentConcurrency;
private _customKeyGen?;
constructor(intervalMs?: number, ttlMs?: number, consoler?: Console, maxConcurrency?: number);
coalesce<T, Args extends unknown[]>(fn: (...args: Args) => T | Promise<T>, ...args: Args): Promise<T>;
isCoalesced<Args extends unknown[]>(fn: (...args: Args) => Promise<unknown>, ...args: Args): boolean;
setKeyGenerator(keyGen: (functionName: string, ...args: unknown[]) => string): void;
prune(): void;
invalidate<Args extends unknown[]>(fn: (...args: Args) => Promise<unknown>, ...args: Args): void;
clear(): void;
private _createKey;
}
declare const coalesce: <T, Args extends unknown[]>(fn: (...args: Args) => T | Promise<T>, ...args: Args) => Promise<T>;
declare const isCoalesced: <Args extends unknown[]>(fn: (...args: Args) => Promise<unknown>, ...args: Args) => boolean;
declare const invalidate: <Args extends unknown[]>(fn: (...args: Args) => Promise<unknown>, ...args: Args) => void;
declare const clear: () => void;
declare const prune: () => void;
declare const setKeyGenerator: (keyGen: (functionName: string, ...args: unknown[]) => string) => void;
export { ReqoalInstance, clear, coalesce, invalidate, isCoalesced, prune, setKeyGenerator };