g14o
Packages@g14o/ratelimit-express

API Reference

Express helpers for @g14o/ratelimit.

CreateRateLimitOptions

OptionTypeDescription
env?Environment | undefined

Environment name override. When omitted, falls back to process.env.NODE_ENV or "development".

Values "development" and "test" use in-memory cache and rate limiting.

inMemoryDuringBuild?boolean | undefined

When true (default), use in-memory cache/rate-limit backends during static build phases (phase-production-build, phase-export via NEXT_PHASE).

Default: true
hooks?object

Optional lifecycle hooks for observability and side effects.

Hooks are awaited; hook errors are logged and swallowed so they never affect rate limiting or fail-open behavior.

logger?object

Application logger. Defaults to a silent no-op logger.

skipRateLimit?boolean | undefined

When true, skip rate limiting for every request from this client. Evaluated at client creation — no request is available. Use per-call skipRateLimit for request-aware skip logic.

tiers?object

Override built-in tier limits/windows/prefixes. Each tier key is optional; each field inside a tier is optional and merged onto factory defaults.

redis?RedisConfig | undefined

Legacy Upstash credentials or client.

Mutually exclusive with store. Use store: upstashStore({ url, token }) for new projects.

store?object

Explicit store implementation (preferred).

ExpressRateLimitClient

PropTypeDescription
checkRateLimitfunction

Checks the rate limit for an Express request without wrapping a handler.

getRateLimiterfunction

Returns a cached rate limiter adapter for a tier.

middlewarefunction

Express middleware that rate-limits before next().

Sends 429 with standard headers when blocked; calls next() when allowed.

resetfunction

Clears in-memory limiter state and the adapter cache.

Useful in tests; does not reset Upstash Redis counters.

userMiddlewarefunction

Express middleware with per-user rate limiting.

Uses getUserId(req) as the identifier; falls back to IP when null.

withRateLimitfunction

Wraps an Express route handler with rate limiting.

Sends 429 when blocked; invokes the handler when allowed.

withUserRateLimitfunction

Wraps an Express route handler with per-user rate limiting.

ExpressRateLimitOptions

OptionTypeDescription
identifierFn?function

Function to get the identifier for the request. Defaults to the IP address of the request.

prefix?string

Redis key prefix override for this call. Defaults to the tier prefix.

skipRateLimit?boolean | ((req: Request) => boolean | Promise<boolean>) | undefined

Skip rate limit for this request.

tier?TokenTier | undefined

Rate limit tier to use. Defaults to "moderate".

On this page