endpoint-sentinel
Version:
User-friendly security scanner with interactive setup that scales from beginner to expert
89 lines • 2.78 kB
TypeScript
/**
* 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