@gibme/webserver
    Preparing search index...

    Type Alias RateLimitOptions

    type RateLimitOptions = {
        errorSink?: ErrorSink;
        handler?: (
            request: express.Request,
            response: express.Response,
            info: RateLimitInfo,
        ) => void | Promise<void>;
        keyGenerator?: (request: express.Request) => string;
        legacyHeaders?: boolean;
        max: number;
        skip?: (request: express.Request) => boolean | Promise<boolean>;
        standardHeaders?: boolean;
        store?: RateLimitStore;
        windowMs: number;
    }
    Index

    Properties

    errorSink?: ErrorSink

    Error sink for store failures.

    handler?: (
        request: express.Request,
        response: express.Response,
        info: RateLimitInfo,
    ) => void | Promise<void>

    Override the default 429 response.

    keyGenerator?: (request: express.Request) => string

    Function producing the bucket key. Defaults to request.remoteIp || request.ip.

    legacyHeaders?: boolean

    Emit legacy X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset headers.

    false
    
    max: number

    Maximum requests allowed per key per window.

    skip?: (request: express.Request) => boolean | Promise<boolean>

    Predicate; when truthy the request is not counted and is forwarded.

    standardHeaders?: boolean

    Emit RateLimit, RateLimit-Limit, RateLimit-Remaining, RateLimit-Reset headers per draft-ietf-httpapi-ratelimit-headers.

    true
    

    Pluggable bucket store. Defaults to an in-process node-cache.

    windowMs: number

    Window length in milliseconds.