UNPKG

@easyflow/pixel

Version:

Easyflow client-side pixel SDK

92 lines (91 loc) 2.59 kB
/** * Circuit Breaker implementation for robust error handling * * States: * - CLOSED: Normal operation, requests pass through * - OPEN: Circuit is open, requests fail fast * - HALF_OPEN: Testing if service has recovered */ export declare enum CircuitState { CLOSED = "CLOSED", OPEN = "OPEN", HALF_OPEN = "HALF_OPEN" } export interface CircuitBreakerConfig { /** Number of failures before opening circuit */ failureThreshold: number; /** Time in ms to wait before trying HALF_OPEN */ recoveryTimeout: number; /** Number of successful calls needed to close circuit */ successThreshold: number; /** Time window for counting failures (ms) */ failureWindow: number; } export interface CircuitBreakerStats { state: CircuitState; failures: number; successes: number; lastFailureTime: number | null; nextAttemptTime: number | null; } export declare class CircuitBreaker { private config; private state; private failures; private successes; private lastFailureTime; private nextAttemptTime; private failureTimes; constructor(config: CircuitBreakerConfig); /** * Execute a function with circuit breaker protection */ execute<T>(fn: () => Promise<T>): Promise<T>; /** * Check if circuit breaker allows requests */ canExecute(): boolean; /** * Get current circuit breaker statistics */ getStats(): CircuitBreakerStats; /** * Reset circuit breaker to initial state */ reset(): void; private onSuccess; private onFailure; } /** * Exponential backoff with jitter for retry operations */ export interface RetryConfig { /** Maximum number of retry attempts */ maxRetries: number; /** Base delay in milliseconds */ baseDelay: number; /** Maximum delay in milliseconds */ maxDelay: number; /** Multiplier for exponential backoff */ multiplier: number; /** Jitter factor (0-1) to add randomness */ jitter: number; } export declare class ExponentialBackoff { private config; constructor(config: RetryConfig); /** * Calculate delay for given attempt number */ getDelay(attempt: number): number; /** * Execute function with exponential backoff retry */ execute<T>(fn: () => Promise<T>, circuitBreaker?: CircuitBreaker): Promise<T>; private sleep; } /** * Default configurations for common use cases */ export declare const DEFAULT_CIRCUIT_BREAKER_CONFIG: CircuitBreakerConfig; export declare const DEFAULT_RETRY_CONFIG: RetryConfig;