UNPKG

@rhofkens/mcp-quotes-server-claude-code

Version:

Model Context Protocol (MCP) server for managing and serving quotes

109 lines 2.64 kB
/** * Circuit Breaker Pattern Implementation * * Provides fault tolerance for external API calls by preventing * cascading failures and allowing systems to recover */ /** * Circuit breaker states */ export declare enum CircuitState { CLOSED = "CLOSED",// Normal operation OPEN = "OPEN",// Failing, reject all requests HALF_OPEN = "HALF_OPEN" } /** * Circuit breaker configuration */ export interface ICircuitBreakerConfig { failureThreshold?: number; successThreshold?: number; timeout?: number; monitoringPeriod?: number; fallbackFunction?: () => unknown; healthCheckFunction?: () => Promise<boolean>; } /** * Circuit breaker statistics */ export interface ICircuitBreakerStats { state: CircuitState; failures: number; successes: number; lastFailureTime?: number; lastSuccessTime?: number; totalRequests: number; rejectedRequests: number; fallbacksExecuted: number; } /** * Circuit breaker implementation */ export declare class CircuitBreaker<T = unknown> { private state; private failureCount; private successCount; private lastFailureTime; private lastSuccessTime; private nextAttempt; private readonly config; private stats; constructor(config?: ICircuitBreakerConfig); /** * Execute a function with circuit breaker protection */ execute<R = T>(fn: () => Promise<R>): Promise<R>; /** * Handle request when circuit is open */ private handleOpenState; /** * Handle request when circuit is half-open */ private handleHalfOpenState; /** * Handle request when circuit is closed */ private handleClosedState; /** * Record successful execution */ private onSuccess; /** * Record failed execution */ private onFailure; /** * Open the circuit */ private open; /** * Close the circuit */ private close; /** * Get current state */ getState(): CircuitState; /** * Get circuit breaker statistics */ getStats(): ICircuitBreakerStats; /** * Reset circuit breaker to initial state */ reset(): void; /** * Force circuit to open state (for testing/maintenance) */ forceOpen(): void; /** * Force circuit to closed state (for testing/recovery) */ forceClose(): void; } /** * Factory function to create configured circuit breakers */ export declare function createCircuitBreaker<T = unknown>(name: string, config?: ICircuitBreakerConfig): CircuitBreaker<T>; //# sourceMappingURL=circuitBreaker.d.ts.map