@remcostoeten/fync
Version:
Unified TypeScript library for 9 popular APIs with consistent functional architecture
56 lines • 1.47 kB
TypeScript
/**
* 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