UNPKG

@ahmedhegazee/nestjs-telescope

Version:

Advanced observability and monitoring solution for NestJS applications with ML-powered analytics, enterprise features, and production-ready scaling

51 lines (50 loc) 1.58 kB
export declare enum CircuitState { CLOSED = "closed", OPEN = "open", HALF_OPEN = "half_open" } export interface CircuitBreakerConfig { failureThreshold: number; timeoutThreshold: number; resetTimeout: number; halfOpenMaxCalls: number; successThreshold: number; monitoringInterval: number; } export interface CircuitBreakerStats { state: CircuitState; failureCount: number; successCount: number; totalRequests: number; lastFailureTime: Date | null; lastSuccessTime: Date | null; uptime: number; failureRate: number; averageResponseTime: number; timeoutCount: number; } export interface CircuitBreakerResult<T> { success: boolean; data?: T; error?: Error; fromCache?: boolean; executionTime: number; circuitState: CircuitState; } export declare class CircuitBreakerService { private readonly logger; private readonly circuits; private readonly destroy$; constructor(); createCircuit(name: string, config?: Partial<CircuitBreakerConfig>): string; execute<T>(circuitName: string, operation: () => Promise<T>, fallback?: () => Promise<T>): Promise<CircuitBreakerResult<T>>; getStats(circuitName: string): CircuitBreakerStats | null; getAllStats(): Map<string, CircuitBreakerStats>; forceOpen(circuitName: string): boolean; forceClose(circuitName: string): boolean; reset(circuitName: string): boolean; getCircuitNames(): string[]; removeCircuit(circuitName: string): boolean; private startMonitoring; onDestroy(): void; }