Parse RateLimit headers of various forms into a normalized format. Supports the
combined form from
draft 7
of the
IETF Rate Limit Headers standard,
the uncombined RateLimit-*
format of earlier drafts, traditional
X-RateLimit-*
headers, and a few other formats.
import { parseRateLimit } from 'ratelimit-header-parser'
const response = await fetch(
'https://api.github.com/repos/express-rate-limit/express-rate-limit/contributors?anon=1',
)
console.log('github ratelimit:', parseRateLimit(response))
// > github ratelimit: { limit: 60, used: 1, remaining: 59, reset: 2023-08-25T04:16:48.000Z }
Scans the input for ratelimit headers in a variety of formats and returns the result in a consistent format, or undefined if it fails to find any ratelimit headers.
responseOrHeadersObject
: May be either a fetch-style Response or Headers object or a node.js-style response or headers objectoptions
: Optional object with the following optional fields:reset
: How to parse the reset field. If unset, the parser will guess based on the content. Accepts the following strings:'date'
: past the value tonew Date(...)
to let the JavaScript engine parse it'unix'
: treat the value as the number of seconds since January 1, 1970 (A.K.A a unix timestamp)'seconds'
: treat the value as the number of seconds from the current time'milliseconds'
: treat the value as the number of milliseconds from the current time
Returns a object with the following fields, or undefined if it does not find any rate-limit headers.
{
limit: number
used: number
remaining: number
reset: Date or undefined
}