UNPKG

@ordojs/security

Version:

Security package for OrdoJS with XSS, CSRF, and injection protection

78 lines 2.27 kB
/** * Rate Limiter * Provides request throttling and rate limiting functionality */ import type { RateLimitOptions, RateLimitStore } from './types'; /** * In-memory rate limit store */ export declare class MemoryRateLimitStore implements RateLimitStore { private store; private cleanupInterval; constructor(); get(key: string): Promise<number | null>; set(key: string, value: number, ttl: number): Promise<void>; increment(key: string, ttl: number): Promise<number>; reset(key: string): Promise<void>; private cleanup; destroy(): void; } /** * Redis-based rate limit store */ export declare class RedisRateLimitStore implements RateLimitStore { private redisClient; constructor(redisClient: any); get(key: string): Promise<number | null>; set(key: string, value: number, ttl: number): Promise<void>; increment(key: string, ttl: number): Promise<number>; reset(key: string): Promise<void>; } /** * Rate limiter implementation */ export declare class RateLimiter { private store; private options; constructor(options: RateLimitOptions, store?: RateLimitStore); /** * Check if request should be rate limited */ checkLimit(request: any): Promise<{ allowed: boolean; limit: number; remaining: number; resetTime: number; retryAfter?: number; }>; /** * Reset rate limit for a specific key */ resetLimit(request: any): Promise<void>; /** * Default key generator using IP address */ private defaultKeyGenerator; /** * Create middleware for Express-like frameworks */ middleware(): (req: any, res: any, next: any) => Promise<void>; } /** * Sliding window rate limiter for more precise control */ export declare class SlidingWindowRateLimiter { private store; private options; constructor(options: RateLimitOptions, store?: RateLimitStore); checkLimit(request: any): Promise<{ allowed: boolean; limit: number; remaining: number; resetTime: number; retryAfter?: number; }>; private defaultKeyGenerator; middleware(): (req: any, res: any, next: any) => Promise<void>; } //# sourceMappingURL=rate-limiter.d.ts.map