UNPKG

@d-fischer/rate-limiter

Version:
27 lines (26 loc) 1.12 kB
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; }