riot-ratelimiter
Version:
A rate limiter handling rate-limits enforced by the riot-games api
74 lines (73 loc) • 2.49 kB
TypeScript
import { RateLimiter, STRATEGY } from '../RateLimiter/index';
export interface RateLimitOptions {
requests: number;
seconds: number;
type?: RATELIMIT_TYPE;
count?: number;
debug?: boolean;
}
export interface RateLimitUpdateOptions {
requests?: number;
seconds?: number;
type?: RATELIMIT_TYPE;
count?: number;
debug?: boolean;
}
export declare enum RATELIMIT_TYPE {
APP = 0,
METHOD = 1,
SYNC = 2,
BACKOFF = 3,
}
export declare const RATELIMIT_TYPE_STRINGS: {
[x: number]: string;
};
export declare const RATELIMIT_INIT_SECONDS: number;
export declare const FACTOR_REQUEST_MARGIN_BELOW_5_SEC: number;
export declare const FACTOR_REQUEST_MARGIN_ABOVE_5_SEC: number;
export interface Comparable {
equals(c: any): boolean;
compareTo(c1: any, c2: any): number;
}
export declare class RateLimit implements Comparable, RateLimitOptions {
private _requests;
private requestsSafeBurst;
readonly requests: number;
private _seconds;
readonly seconds: number;
private _type;
readonly type: RATELIMIT_TYPE;
private _count;
readonly count: number;
private _debug;
readonly debug: boolean;
private resetTimeout;
private timestampLastReset;
private limiters;
constructor({requests, seconds, type, count}: RateLimitOptions, {debug}?: {
debug?: boolean;
});
static getRateLimitTypeString(type: RATELIMIT_TYPE): string;
addLimiter(limiter: RateLimiter): void;
reloadLimiters(): void;
dispose(): void;
static calcMSUntilReset(limitIntervalSeconds: number, timestampLastLimitReset?: number): number;
check(strategy: STRATEGY): boolean;
private getSecondsUntilReset();
getMaximumRequests(strategy: STRATEGY): number;
getRemainingRequests(strategy: STRATEGY): number;
isUsingSafetyMargin(strategy: STRATEGY): boolean;
getSpreadInterval(): number;
increment(count?: number): void;
reset(): void;
toString(): string;
update({requests, seconds, type, count}: RateLimitUpdateOptions): void;
updateSilently(limit: RateLimitOptions): void;
private updateValues(limit);
private startResetTimer();
private notifyLimiters();
static compare(limit1: RateLimitOptions, limit2: RateLimitOptions): number;
compareTo(comparable: RateLimitOptions): number;
equals(limit: RateLimitOptions): boolean;
restartTimeout(): void;
}