safe-calls
Version:
A simple rate limit and retry manager
28 lines (26 loc) • 916 B
TypeScript
type RateLimitConfig = {
concurrency: number;
requestsPerInterval: number;
intervalMs: number;
retries?: number;
};
declare class RateLimitManager<Service extends string = string> {
#private;
private limiters;
private throttlers;
private configs;
constructor(options?: Partial<Record<Service, RateLimitConfig>>);
/**
* Wraps an async function with the rate limit and retry logic for the specified service.
*/
wrap<Args extends unknown[], Return>(service: Service, fn: (...args: Args) => Promise<Return>): (...args: Args) => Promise<Return>;
/**
* Updates the configuration for an existing service.
*/
updateService(service: Service, config: RateLimitConfig): void;
/**
* Returns the number of pending tasks for a service.
*/
getPendingCount(service: Service): number;
}
export { type RateLimitConfig, RateLimitManager };