deepsource-mcp-server
Version:
Model Context Protocol server for DeepSource
67 lines (66 loc) • 2.52 kB
TypeScript
/**
* @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;