UNPKG

@freemework/common

Version:

Common library of the Freemework Project.

42 lines (41 loc) 1.95 kB
import { FCancellationToken } from "../cancellation/index.js"; import { FDisposable } from "../lifecycle/index.js"; export declare namespace FLimit { type Weight = number; interface Opts { perSecond?: Weight; perMinute?: Weight; perHour?: Weight; perTimespan?: { delay: number; count: Weight; }; parallel?: Weight; } interface Token { rollback(): void; commit(): void; } type TokenLazyCallback = (err: any, limitToken?: Token) => void; function isLimitOpts(probablyOpts: any): probablyOpts is Opts; function ensureLimitOpts(probablyOpts: any): Opts; } export interface FLimit extends FDisposable { readonly availableWeight: number; readonly maxWeight: number; /** * @param tokenWeight default: 1 */ accrueTokenImmediately(): FLimit.Token; accrueTokenImmediately(tokenWeight?: FLimit.Weight): FLimit.Token; accrueTokenLazy(timeout: number): Promise<FLimit.Token>; accrueTokenLazy(cancellationToken: FCancellationToken): Promise<FLimit.Token>; accrueTokenLazy(timeout: number, cb: FLimit.TokenLazyCallback): void; accrueTokenLazy(cancellationToken: FCancellationToken, cb: FLimit.TokenLazyCallback): void; accrueTokenLazy(timeout: number, cancellationToken: FCancellationToken): Promise<FLimit.Token>; accrueTokenLazy(tokenWeight: FLimit.Weight, timeout: number): Promise<FLimit.Token>; accrueTokenLazy(timeout: number, cancellationToken: FCancellationToken, cb: FLimit.TokenLazyCallback): void; accrueTokenLazy(tokenWeight: FLimit.Weight, timeout: number, cb: FLimit.TokenLazyCallback): void; accrueTokenLazy(tokenWeight: FLimit.Weight, timeout: number, cancellationToken: FCancellationToken): Promise<FLimit.Token>; accrueTokenLazy(tokenWeight: FLimit.Weight, timeout: number, cancellationToken: FCancellationToken, cb: FLimit.TokenLazyCallback): void; }