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