Skip to content

RateLimiter

Fixed-window token-bucket rate limiter.

typescript
import { RateLimiter, RateLimitConfig } from 'super-http'

RateLimitConfig

typescript
interface RateLimitConfig {
  permitLimit: number
  windowMs: number
  queueRequests?: boolean   // default: false
  queueTimeoutMs?: number   // default: undefined
}

Usage via HttpClient

typescript
client.rateLimit({ permitLimit: 100, windowMs: 60_000 })

Direct usage

typescript
const rl = new RateLimiter({ permitLimit: 100, windowMs: 60_000 })

await rl.acquire()  // blocks or throws if limit exceeded
// then make your request

Properties

PropertyTypeDescription
availablenumberTokens remaining in current window

Errors

Error messageWhen
'Rate limit exceeded'Limit hit and queueRequests is false
'Rate limit queue timeout'Queued request waited > queueTimeoutMs

Released under the MIT License.