UNPKG

@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
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; }