UNPKG

trojanhorse-js

Version:

A comprehensive JavaScript library for fetching, managing, and analyzing global threat intelligence from multiple open-source feeds and security news sources. Unlike its mythological namesake, this Trojan protects your digital fortress.

99 lines 3.23 kB
/// <reference types="node" /> import { EventEmitter } from 'events'; export type CircuitState = 'CLOSED' | 'OPEN' | 'HALF_OPEN'; export interface CircuitBreakerConfig { failureThreshold: number; successThreshold: number; timeout: number; monitoringWindow: number; volumeThreshold: number; errorFilter?: (error: Error) => boolean; onStateChange?: (state: CircuitState) => void; } interface CircuitBreakerStats { state: CircuitState; failureCount: number; successCount: number; totalRequests: number; lastFailureTime: number | null; lastSuccessTime: number | null; stateChangeTime: number; requestStats: { total: number; failures: number; successes: number; timeouts: number; circuitOpen: number; }; responseTimeStats: { average: number; min: number; max: number; p95: number; p99: number; }; } export declare class CircuitBreaker extends EventEmitter { private config; private state; private failureCount; private successCount; private lastFailureTime; private lastSuccessTime; private stateChangeTime; private requestHistory; private responseTimes; constructor(config?: Partial<CircuitBreakerConfig>); execute<T>(fn: () => Promise<T>): Promise<T>; executeWithRetry<T>(fn: () => Promise<T>, maxRetries?: number, retryDelay?: number): Promise<T>; executeBatch<T>(functions: Array<() => Promise<T>>, options?: { maxConcurrency?: number; failFast?: boolean; continueOnFailure?: boolean; }): Promise<Array<{ success: boolean; result?: T; error?: Error; }>>; private onSuccess; private onFailure; private shouldOpen; private shouldAttemptReset; private setState; private reset; private recordRequest; private getRecentRequests; private cleanupOldRecords; private calculatePercentile; private sleep; getStats(): CircuitBreakerStats; getState(): CircuitState; getConfig(): CircuitBreakerConfig; updateConfig(newConfig: Partial<CircuitBreakerConfig>): void; open(): void; close(): void; halfOpen(): void; isHealthy(): boolean; getHealthScore(): number; exportMetrics(): Record<string, number>; } export declare class CircuitBreakerManager { private breakers; private globalConfig; constructor(globalConfig?: Partial<CircuitBreakerConfig>); getBreaker(serviceName: string, config?: Partial<CircuitBreakerConfig>): CircuitBreaker; execute<T>(serviceName: string, fn: () => Promise<T>, config?: Partial<CircuitBreakerConfig>): Promise<T>; getAllStats(): Record<string, CircuitBreakerStats>; getSystemHealth(): { healthy: number; degraded: number; unhealthy: number; totalServices: number; overallScore: number; }; resetAll(): void; removeBreaker(serviceName: string): boolean; } export declare function createCircuitBreaker(pattern: 'aggressive' | 'conservative' | 'api' | 'database' | 'custom', customConfig?: Partial<CircuitBreakerConfig>): CircuitBreaker; export {}; //# sourceMappingURL=CircuitBreaker.d.ts.map