UNPKG

@remcostoeten/fync

Version:

Unified TypeScript library for 9 popular APIs with consistent functional architecture

56 lines 1.47 kB
/** * Rate limiting implementation to prevent hitting API limits */ type TRateLimitConfig = { maxRequests: number; windowMs: number; retryAfter?: number; }; export declare class RateLimiter { private limits; private state; private defaultConfig; constructor(defaultConfig?: Partial<TRateLimitConfig>); setLimit(key: string, config: TRateLimitConfig): void; private getConfig; private getState; private cleanOldRequests; checkLimit(key: string): Promise<boolean>; waitForLimit(key: string): Promise<void>; getRemainingRequests(key: string): number; getResetTime(key: string): number | null; reset(key?: string): void; } export declare function createRateLimiter(defaultConfig?: Partial<TRateLimitConfig>): RateLimiter; export declare const RATE_LIMIT_PRESETS: { github: { authenticated: { maxRequests: number; windowMs: number; }; unauthenticated: { maxRequests: number; windowMs: number; }; }; spotify: { default: { maxRequests: number; windowMs: number; }; }; vercel: { default: { maxRequests: number; windowMs: number; }; }; google: { default: { maxRequests: number; windowMs: number; }; }; }; export type { TRateLimitConfig }; //# sourceMappingURL=rate-limiter.d.ts.map