UNPKG

@ahmedhegazee/nestjs-telescope

Version:

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

77 lines (76 loc) 2.35 kB
export interface CircuitBreakerOptions { failureThreshold: number; timeout: number; resetTimeout: number; onOpen?: (breaker: CircuitBreaker) => void; onHalfOpen?: (breaker: CircuitBreaker) => void; onClose?: (breaker: CircuitBreaker) => void; name?: string; } export interface CircuitBreakerState { state: 'closed' | 'open' | 'half-open'; failures: number; successes: number; lastFailureTime: number; lastSuccessTime: number; nextAttempt: number; } export declare class CircuitBreaker { private readonly options; private readonly logger; private state; private failures; private successes; private lastFailureTime; private lastSuccessTime; private nextAttempt; constructor(options: CircuitBreakerOptions); execute<T>(operation: () => Promise<T>): Promise<T>; private onSuccess; private onFailure; getState(): CircuitBreakerState; getFailureCount(): number; getSuccessCount(): number; getLastFailureTime(): number; getLastSuccessTime(): number; getCurrentState(): 'closed' | 'open' | 'half-open'; isOpen(): boolean; isClosed(): boolean; isHalfOpen(): boolean; forceOpen(): void; forceClose(): void; reset(): void; getHealthInfo(): { isHealthy: boolean; state: string; failureRate: number; successRate: number; uptime: number; }; } export declare class CircuitBreakerOpenError extends Error { constructor(message: string); } export declare class CircuitBreakerFactory { static createForStorage(name?: string): CircuitBreaker; static createForDevTools(name?: string): CircuitBreaker; static createForNetwork(name?: string): CircuitBreaker; static createCustom(options: CircuitBreakerOptions): CircuitBreaker; } export declare class CircuitBreakerRegistry { private readonly logger; private breakers; register(name: string, breaker: CircuitBreaker): void; get(name: string): CircuitBreaker | undefined; getAll(): Map<string, CircuitBreaker>; getAllStates(): Record<string, CircuitBreakerState>; getHealthStatus(): { healthy: number; unhealthy: number; total: number; details: Record<string, any>; }; resetAll(): void; remove(name: string): boolean; clear(): void; }