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