@mgiamberardino/rate-limiter
Version:
A Rate Limiter wrote in Typescript for NodeJS
34 lines (33 loc) • 861 B
TypeScript
export interface RateLimiterStoreAdapter {
resetAll(): void;
increment(key: string): number;
}
export interface KeyMapper {
(req: any): string;
}
export interface RateLimiterOptions {
requestsLimit?: number;
timeWindow?: number;
keyMapper: KeyMapper;
store?: RateLimiterStoreAdapter;
}
export declare class RateLimiter {
static readonly DEFAULT_REQUESTS_LIMIT: number;
static readonly DEFAULT_TIME_WINDOW: number;
static readonly DEFAULT_OPTIONS: {
requestsLimit: number;
timeWindow: number;
};
private options;
private store;
private isRunning;
private timeoutId;
constructor(options: RateLimiterOptions);
private cyclicReset();
start(): void;
stop(): void;
skip(req: any): boolean;
isValid(req: any): boolean;
reset(): void;
}
export default RateLimiter;