@d-fischer/rate-limiter
Version:
Rate limit your requests.
27 lines (26 loc) • 1.12 kB
TypeScript
import type { RateLimiter, RateLimiterRequestOptions } from '../RateLimiter';
import type { TimeBasedRateLimiterConfig } from './TimeBasedRateLimiter';
export interface PartitionedTimeBasedRateLimiterConfig<Req, Res> extends TimeBasedRateLimiterConfig<Req, Res> {
getPartitionKey: (req: Req) => string | null;
}
export declare class PartitionedTimeBasedRateLimiter<Req, Res> implements RateLimiter<Req, Res> {
private readonly _partitionedQueue;
private readonly _usedFromBucket;
private readonly _bucketSize;
private readonly _timeFrame;
private readonly _callback;
private readonly _partitionKeyCallback;
private readonly _counterTimers;
private _paused;
private _destroyed;
private readonly _logger;
constructor({ logger, bucketSize, timeFrame, doRequest, getPartitionKey }: PartitionedTimeBasedRateLimiterConfig<Req, Res>);
request(req: Req, options?: RateLimiterRequestOptions): Promise<Res>;
clear(): void;
pause(): void;
resume(): void;
destroy(): void;
private _getPartitionedQueue;
private _runRequest;
private _runNextRequest;
}