@casoon/auditmysite
Version:
A comprehensive command-line tool for automated accessibility, security, performance, and SEO testing using Playwright and pa11y, based on sitemap URLs
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