@rhofkens/mcp-quotes-server-claude-code
Version:
Model Context Protocol (MCP) server for managing and serving quotes
109 lines • 2.64 kB
TypeScript
/**
* 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