japanpost-api
Version:
Japan Post Servive API client
59 lines • 1.78 kB
TypeScript
/**
* Retry configuration options
*/
export interface RetryOptions {
/** Maximum number of retries (default: 3) */
maxRetries?: number;
/** Base delay time in milliseconds (default: 1000) */
baseDelay?: number;
/** Exponential backoff multiplier (default: 2) */
backoffMultiplier?: number;
/** Maximum delay time in milliseconds (default: 30000) */
maxDelay?: number;
/** Maximum jitter (random element) in milliseconds (default: 1000) */
jitter?: number;
/** Error types to retry */
retryableErrors?: Array<new (...args: any[]) => Error>;
}
/**
* Function that executes retry with exponential backoff
*/
export declare function withRetry<T>(operation: () => Promise<T>, options?: RetryOptions): Promise<T>;
/**
* Circuit breaker state
*/
export declare enum CircuitBreakerState {
CLOSED = "CLOSED",
OPEN = "OPEN",
HALF_OPEN = "HALF_OPEN"
}
/**
* Circuit breaker configuration
*/
export interface CircuitBreakerOptions {
/** Failure threshold (circuit opens after this many failures) */
failureThreshold?: number;
/** Reset timeout in milliseconds */
resetTimeout?: number;
/** Monitoring period in milliseconds */
monitoringPeriod?: number;
}
/**
* Basic circuit breaker implementation
* Protects the system from cascading failures
*/
export declare class CircuitBreaker {
private state;
private failureCount;
private lastFailureTime;
private readonly options;
constructor(options?: CircuitBreakerOptions);
execute<T>(operation: () => Promise<T>): Promise<T>;
private shouldAttemptReset;
private onSuccess;
private onFailure;
getState(): CircuitBreakerState;
getFailureCount(): number;
reset(): void;
}
//# sourceMappingURL=retry.d.ts.map