UNPKG

endpoint-sentinel

Version:

User-friendly security scanner with interactive setup that scales from beginner to expert

89 lines 2.78 kB
/** * Production-grade Token Bucket Rate Limiter * Implements ethical scanning boundaries with configurable limits */ import { HttpRequest, RateLimiter, RateLimitStats } from '../types/scanner.js'; export declare class TokenBucketRateLimiter implements RateLimiter { protected requestsPerSecond: number; protected burstSize: number; private tokens; private lastRefill; private totalRequests; private throttledRequests; constructor(requestsPerSecond?: number, burstSize?: number); /** * Throttles requests according to token bucket algorithm * Respects server capabilities and ethical boundaries */ throttle(_request: HttpRequest): Promise<void>; /** * Refills tokens based on elapsed time */ private refillTokens; /** * Calculates wait time until next token is available */ private calculateWaitTime; /** * Sleep utility for throttling */ private sleep; /** * Gets current rate limiting statistics */ getStats(): RateLimitStats; /** * Updates rate limiting parameters */ updateLimits(requestsPerSecond: number, burstSize: number): void; /** * Calculates optimal rate limit based on server response headers */ adaptToServerCapabilities(responseHeaders: Record<string, string>): void; /** * Resets rate limiter state */ reset(): void; } /** * Advanced Rate Limiter with domain-specific controls */ export declare class AdaptiveRateLimiter extends TokenBucketRateLimiter { private domainLimits; private serverResponseTimes; constructor(requestsPerSecond?: number, burstSize?: number); /** * Sets domain-specific rate limits */ setDomainLimit(domain: string, requestsPerSecond: number, burstSize: number): void; /** * Throttles with domain-aware rate limiting */ throttle(request: HttpRequest): Promise<void>; /** * Records server response time for adaptive rate limiting */ recordResponseTime(url: string, responseTime: number): void; /** * Adapts rate limiting based on server performance */ private adaptRateToServerPerformance; /** * Extracts domain from URL */ private extractDomain; } /** * Rate Limiter Factory */ export declare class RateLimiterFactory { static createBasic(requestsPerSecond?: number, burstSize?: number): RateLimiter; static createAdaptive(requestsPerSecond?: number, burstSize?: number): AdaptiveRateLimiter; static createEthical(): RateLimiter; static createFromConfig(config: { type: 'basic' | 'adaptive' | 'ethical'; requestsPerSecond?: number; burstSize?: number; }): RateLimiter; } //# sourceMappingURL=rate-limiter.d.ts.map