@dbs-portal/core-api
Version:
HTTP client and API utilities for DBS Portal
73 lines • 2.5 kB
TypeScript
/**
* Retry strategies for different scenarios
*/
import type { ApiError, RetryConfig } from '../types';
/**
* Exponential backoff strategy
*/
export declare function exponentialBackoff(baseDelay?: number, maxDelay?: number, multiplier?: number): (retryCount: number) => number;
/**
* Linear backoff strategy
*/
export declare function linearBackoff(baseDelay?: number, increment?: number): (retryCount: number) => number;
/**
* Fixed delay strategy
*/
export declare function fixedDelay(delay?: number): (retryCount: number) => number;
/**
* Jittered exponential backoff to avoid thundering herd
*/
export declare function jitteredExponentialBackoff(baseDelay?: number, maxDelay?: number, jitterFactor?: number): (retryCount: number) => number;
/**
* Retry condition for network errors only
*/
export declare function networkErrorsOnly(error: ApiError): boolean;
/**
* Retry condition for server errors only
*/
export declare function serverErrorsOnly(error: ApiError): boolean;
/**
* Retry condition for specific status codes
*/
export declare function statusCodesOnly(codes: number[]): (error: ApiError) => boolean;
/**
* Retry condition for timeout errors
*/
export declare function timeoutErrorsOnly(error: ApiError): boolean;
/**
* Retry condition that respects Retry-After headers
*/
export declare function respectRetryAfter(error: ApiError): boolean;
/**
* Comprehensive retry condition for production use
*/
export declare function productionRetryCondition(error: ApiError): boolean;
/**
* Conservative retry condition for critical operations
*/
export declare function conservativeRetryCondition(error: ApiError): boolean;
/**
* Aggressive retry condition for non-critical operations
*/
export declare function aggressiveRetryCondition(error: ApiError): boolean;
/**
* Creates a retry strategy that respects Retry-After headers
*/
export declare function createRetryAfterStrategy(): RetryConfig;
/**
* Creates a retry strategy for API rate limiting
*/
export declare function createRateLimitStrategy(): RetryConfig;
/**
* Creates a retry strategy for unreliable networks
*/
export declare function createUnreliableNetworkStrategy(): RetryConfig;
/**
* Creates a retry strategy for critical operations
*/
export declare function createCriticalOperationStrategy(): RetryConfig;
/**
* Creates a retry strategy for background operations
*/
export declare function createBackgroundOperationStrategy(): RetryConfig;
//# sourceMappingURL=retry-strategies.d.ts.map