UNPKG

deepsource-mcp-server

Version:
67 lines (66 loc) 2.52 kB
/** * @fileoverview Exponential backoff implementation for retry logic * This module handles delay calculations with exponential growth and jitter. */ import { RetryPolicy } from './retry-policy.js'; /** * Information about a Retry-After header * @interface * @public */ export interface RetryAfterInfo { /** The delay in milliseconds to wait */ delayMs: number; /** The source of the retry information */ source: 'header-seconds' | 'header-date' | 'exponential'; /** The original header value if present */ originalValue?: string; } /** * Calculate exponential backoff delay with jitter * @param attemptNumber The current retry attempt (0-indexed) * @param policy The retry policy to use * @returns The delay in milliseconds * @public */ export declare function calculateBackoffDelay(attemptNumber: number, policy: RetryPolicy): number; /** * Parse a Retry-After header value * Supports both seconds (e.g., "120") and HTTP-date format * @param retryAfterHeader The Retry-After header value * @returns The parsed retry information or null if invalid * @public */ export declare function parseRetryAfter(retryAfterHeader: string | undefined): RetryAfterInfo | null; /** * Calculate the retry delay considering both policy and Retry-After header * @param attemptNumber The current retry attempt (0-indexed) * @param policy The retry policy to use * @param retryAfterHeader Optional Retry-After header value * @returns The retry information with calculated delay * @public */ export declare function calculateRetryDelay(attemptNumber: number, policy: RetryPolicy, retryAfterHeader?: string): RetryAfterInfo; /** * Sleep for a specified duration * @param ms The number of milliseconds to sleep * @returns A promise that resolves after the specified duration * @public */ export declare function sleep(ms: number): Promise<void>; /** * Calculate the total maximum possible delay for a retry policy * This is useful for timeouts and resource planning * @param policy The retry policy * @returns The maximum total delay in milliseconds * @public */ export declare function calculateMaxTotalDelay(policy: RetryPolicy): number; /** * Check if we should continue retrying based on elapsed time * @param startTime The timestamp when retries started * @param maxDuration Maximum duration allowed for retries (ms) * @returns True if we can continue retrying * @public */ export declare function canContinueRetrying(startTime: number, maxDuration: number): boolean;