UNPKG

@juspay/neurolink

Version:

The pipe layer of an AI nervous system: one interface connecting provider neurons to your application, across three inference types — generate, stream and decide. `decide` returns typed, calibrated judgements from a non-generative model (~400ms, ~$0.00002

71 lines (70 loc) • 2.42 kB
/** * Rate Limiting Middleware * Provides configurable rate limiting for server adapters */ import type { FixedWindowRateLimitConfig, MiddlewareDefinition, RateLimitEntry, RateLimitMiddlewareConfig, RateLimitStore } from "../../types/index.js"; /** * In-memory rate limit store */ export declare class InMemoryRateLimitStore implements RateLimitStore { private store; private cleanupInterval?; constructor(); get(key: string): Promise<RateLimitEntry | undefined>; set(key: string, entry: RateLimitEntry): Promise<void>; increment(key: string, windowMs: number): Promise<RateLimitEntry>; reset(key: string): Promise<void>; private cleanup; destroy(): void; } /** * Create rate limiting middleware * * Response headers set on all requests: * - `X-RateLimit-Limit`: Maximum requests allowed per window * - `X-RateLimit-Remaining`: Requests remaining in current window * - `X-RateLimit-Reset`: Unix timestamp when the window resets * * Additional headers on rate limit exceeded (HTTP 429): * - `Retry-After`: Seconds to wait before retrying * * @example * ```typescript * const rateLimiter = createRateLimitMiddleware({ * maxRequests: 100, * windowMs: 15 * 60 * 1000, // 15 minutes * skipPaths: ["/api/health"], * }); * * server.registerMiddleware(rateLimiter); * ``` */ export declare function createRateLimitMiddleware(config: RateLimitMiddlewareConfig): MiddlewareDefinition; /** * Create a sliding window rate limiter * More accurate than fixed window but slightly more complex */ export declare function createSlidingWindowRateLimitMiddleware(config: RateLimitMiddlewareConfig & { /** Number of sub-windows for smoothing (default: 10) */ subWindows?: number; }): MiddlewareDefinition; /** * Alias for InMemoryRateLimitStore for compatibility */ export { InMemoryRateLimitStore as MemoryRateLimitStore }; /** * Create fixed window rate limit middleware * * Accepts config and optional store as separate parameters for compatibility. * Returns rate limit headers in the response object. * * @example * ```typescript * const store = new MemoryRateLimitStore(); * const middleware = createFixedWindowRateLimitMiddleware( * { windowMs: 60000, maxRequests: 10 }, * store * ); * ``` */ export declare function createFixedWindowRateLimitMiddleware(config: FixedWindowRateLimitConfig, store?: RateLimitStore): MiddlewareDefinition;