UNPKG

survey-mcp-server

Version:

Survey management server handling survey creation, response collection, analysis, and reporting with database access for data management

87 lines (86 loc) 2.71 kB
import { BaseError } from '../middleware/error-handling.js'; export interface CircuitBreakerConfig { failureThreshold: number; resetTimeout: number; monitoringPeriod: number; expectedErrors?: Array<string | typeof BaseError>; } export interface RetryConfig { maxAttempts: number; baseDelay: number; maxDelay: number; backoffMultiplier: number; retryableErrors?: Array<string | typeof BaseError>; } export interface HealthCheckResult { isHealthy: boolean; lastCheck: Date; responseTime?: number; error?: string; details?: any; } export declare enum CircuitBreakerState { CLOSED = "CLOSED", OPEN = "OPEN", HALF_OPEN = "HALF_OPEN" } export declare class CircuitBreaker { private state; private failureCount; private lastFailureTime; private nextAttemptTime; private config; constructor(config: CircuitBreakerConfig); execute<T>(operation: () => Promise<T>): Promise<T>; private onSuccess; private onFailure; private shouldTripCircuit; private shouldAttemptReset; getState(): CircuitBreakerState; getFailureCount(): number; reset(): void; } export declare class RetryHandler { private config; constructor(config: RetryConfig); execute<T>(operation: () => Promise<T>, operationName?: string): Promise<T>; private shouldRetry; private calculateDelay; private delay; } export declare abstract class BaseService { protected serviceName: string; protected circuitBreaker: CircuitBreaker; protected retryHandler: RetryHandler; private healthStatus; private healthCheckInterval; constructor(serviceName: string, circuitBreakerConfig?: Partial<CircuitBreakerConfig>, retryConfig?: Partial<RetryConfig>); protected executeWithResilience<T>(operation: () => Promise<T>, operationName: string, options?: { useCircuitBreaker?: boolean; useRetry?: boolean; timeout?: number; }): Promise<T>; private withTimeout; protected abstract performHealthCheck(): Promise<HealthCheckResult>; private startHealthMonitoring; private updateHealthStatus; getHealthStatus(): HealthCheckResult; getServiceMetrics(): { circuitBreakerState: CircuitBreakerState; failureCount: number; healthStatus: HealthCheckResult; }; resetCircuitBreaker(): void; shutdown(): Promise<void>; } export interface ServiceConfig { enabled: boolean; circuitBreaker?: Partial<CircuitBreakerConfig>; retry?: Partial<RetryConfig>; healthCheck?: { enabled: boolean; interval: number; timeout: number; }; } export declare const defaultServiceConfig: ServiceConfig;