@casoon/auditmysite
Version:
Professional website analysis suite with robust accessibility testing, Core Web Vitals performance monitoring, SEO analysis, and content optimization insights. Features isolated browser contexts, retry mechanisms, and comprehensive API endpoints for profe
69 lines • 2.06 kB
TypeScript
import { EventEmitter } from 'events';
export interface ThrottleConfig {
requestsPerSecond?: number;
requestsPerMinute?: number;
concurrentRequests?: number;
delayBetweenRequests?: number;
burstLimit?: number;
burstWindow?: number;
enableBackoff?: boolean;
backoffMultiplier?: number;
maxBackoffDelay?: number;
}
export interface ThrottleStats {
totalRequests: number;
successfulRequests: number;
throttledRequests: number;
failedRequests: number;
averageResponseTime: number;
currentConcurrentRequests: number;
requestsInLastSecond: number;
requestsInLastMinute: number;
lastRequestTime?: Date;
isThrottling: boolean;
}
export interface ThrottleRequest {
id: string;
url: string;
method: string;
timestamp: Date;
priority: number;
retryCount: number;
maxRetries: number;
}
export declare class NetworkThrottler extends EventEmitter {
private config;
private requestQueue;
private activeRequests;
private requestHistory;
private stats;
private isThrottling;
private lastRequestTime;
private burstCount;
private burstStartTime;
private backoffDelay;
constructor(config?: ThrottleConfig);
throttleRequest<T>(requestFn: () => Promise<T>, url: string, method?: string, priority?: number, maxRetries?: number): Promise<T>;
private addToQueue;
private waitForSlot;
private canExecuteRequest;
private executeRequest;
private updateStats;
private updateCurrentRates;
private recordRequestSuccess;
private recordRequestFailure;
private cleanupHistory;
private delay;
getStats(): ThrottleStats;
getQueueSize(): number;
getActiveRequests(): number;
getThrottlingStatus(): boolean;
updateConfig(newConfig: Partial<ThrottleConfig>): void;
clearQueue(): void;
pauseThrottling(): void;
resumeThrottling(): void;
getConfig(): ThrottleConfig;
resetStats(): void;
cleanup(): Promise<void>;
}
//# sourceMappingURL=network-throttler.d.ts.map