@freemework/common
Version:
Common library of the Freemework Project.
42 lines (41 loc) • 1.95 kB
TypeScript
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;
}