@ordojs/security
Version:
Security package for OrdoJS with XSS, CSRF, and injection protection
78 lines • 2.27 kB
TypeScript
/**
* 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