UNPKG

@allan1361/iota-big3-sdk-middleware

Version:

🏆 A+ Grade Certified Enterprise Middleware Framework - Phase 3 Certified (90/100) with advanced resilience patterns, comprehensive type safety, and production-ready observability

62 lines 2.05 kB
import { EventEmitter } from 'events'; import type { Request, RequestHandler, Response } from 'express'; export interface CircuitBreakerConfig { failureThreshold?: number; successThreshold?: number; timeWindow?: number; resetTimeout?: number; requestTimeout?: number; errorThresholdPercentage?: number; volumeThreshold?: number; isFailure?: (error: Error | null, response?: Response) => boolean; fallback?: (req: Request, res: Response) => void; onOpen?: (metrics: CircuitMetrics) => void; onClose?: (metrics: CircuitMetrics) => void; onHalfOpen?: (metrics: CircuitMetrics) => void; healthCheck?: () => Promise<boolean>; healthCheckInterval?: number; } type CircuitState = 'CLOSED' | 'OPEN' | 'HALF_OPEN'; interface CircuitMetrics { failures: number; successes: number; totalRequests: number; errorPercentage: number; lastFailureTime?: Date; lastSuccessTime?: Date; consecutiveFailures: number; consecutiveSuccesses: number; state: CircuitState; stateChangedAt: Date; } export declare class CircuitBreaker extends EventEmitter { private state; private config; private metrics; private requestHistory; private nextAttempt; private healthCheckTimer?; constructor(config?: CircuitBreakerConfig); middleware(routeName?: string): RequestHandler; execute<T>(fn: () => Promise<T>): Promise<T>; getState(): CircuitState; getMetrics(): Readonly<CircuitMetrics>; reset(): void; open(): void; close(): void; stop(): void; private initializeMetrics; private recordSuccess; private recordFailure; private shouldOpen; private transitionTo; private cleanupHistory; private getRecentRequests; private updateErrorPercentage; private defaultIsFailure; private defaultFallback; private startHealthCheck; } export declare function createCircuitBreaker(config?: CircuitBreakerConfig): CircuitBreaker; export {}; //# sourceMappingURL=circuit-breaker-middleware.d.ts.map