Skip to content
Buy me a coffee

RateLimiterAlgorithm

Defined in: src/window-rate-limiter.ts:29

The admission logic of a rate limiter, without waiting or telemetry. The in-memory WindowCounter implements it; implement it over Redis (one Lua script per acquire) to share a limit between processes. acquire may be async.

readonly permitLimit: number

Defined in: src/window-rate-limiter.ts:30

acquire(permits, now): MaybePromise<AcquireResult>

Defined in: src/window-rate-limiter.ts:32

Takes permits if they fit, else says how many ms until they would. permits is never above permitLimit.

number

number

MaybePromise<AcquireResult>


optional adjust(points, now): MaybePromise<void>

Defined in: src/window-rate-limiter.ts:34

Charges (points > 0) or refunds (points < 0) permits without admission check: penalty / reward. Optional.

number

number

MaybePromise<void>


optional restore(state, now): void

Defined in: src/window-rate-limiter.ts:38

Loads a snapshot, aging it by the time passed since it was taken. Optional.

unknown

number

void


optional snapshot(now): unknown

Defined in: src/window-rate-limiter.ts:36

JSON-serializable state as of now, for restore (e.g. after a restart). Optional.

number

unknown