@ahmedhegazee/nestjs-telescope
Version:
Advanced observability and monitoring solution for NestJS applications with ML-powered analytics, enterprise features, and production-ready scaling
43 lines (42 loc) • 1.68 kB
TypeScript
export interface CircuitBreakerConfig {
failureThreshold: number;
recoveryTimeout: number;
monitoringWindow: number;
minimumRequests: number;
successThreshold: number;
}
export declare enum CircuitBreakerState {
CLOSED = "CLOSED",
OPEN = "OPEN",
HALF_OPEN = "HALF_OPEN"
}
export interface CircuitBreakerStats {
state: CircuitBreakerState;
failureCount: number;
successCount: number;
totalRequests: number;
lastFailureTime: number | null;
lastSuccessTime: number | null;
nextAttemptTime: number | null;
}
export declare class EnhancedCircuitBreakerService {
private readonly logger;
private readonly circuitBreakers;
private readonly requestHistory;
private readonly defaultConfig;
execute<T>(operationName: string, operation: () => Promise<T>, config?: Partial<CircuitBreakerConfig>): Promise<T>;
executeWithFallback<T>(operationName: string, operation: () => Promise<T>, fallback: () => Promise<T>, config?: Partial<CircuitBreakerConfig>): Promise<T>;
canExecute(operationName: string, config: CircuitBreakerConfig): boolean;
getStats(operationName: string): CircuitBreakerStats | null;
getAllStats(): Record<string, CircuitBreakerStats>;
reset(operationName: string): void;
forceOpen(operationName: string, recoveryTimeout?: number): void;
forceClose(operationName: string): void;
private getOrCreateStats;
private recordSuccess;
private recordFailure;
private getRecentRequests;
private cleanupHistory;
getFailureRate(operationName: string, windowMs?: number): number;
getSuccessRate(operationName: string, windowMs?: number): number;
}