UNPKG

axios-retryer

Version:

axios-retryer is an advanced Axios request manager offering intelligent retry logic with token refresh, concurrency control, priority queuing, and a flexible plugin architecture, all built with TypeScript for robust HTTP client integrations.

92 lines (91 loc) 2.59 kB
import type { RetryPlugin } from '../../types'; import { RetryManager } from '../../core/RetryManager'; /** * Options for the CachingPlugin. */ export interface CachingPluginOptions { /** * If true, include the entire headers object in the cache key. * @default false */ compareHeaders?: boolean; /** * Duration (in milliseconds) a cached entry is considered fresh. * If 0, the cache never expires. * @default 0 */ timeToRevalidate?: number; /** * HTTP methods to cache. By default, only GET requests are cached. * @default ['GET'] */ cacheMethods?: string[]; /** * Interval in milliseconds to run cache cleanup. * If 0, periodic cleanup is disabled. * @default 0 */ cleanupInterval?: number; /** * Maximum age in milliseconds for cached items. * Items older than this will be removed during cleanup. * If 0, items don't expire based on age. * @default 0 */ maxAge?: number; /** * Maximum number of items to keep in cache. * If exceeded, oldest items will be removed first. * If 0, no limit is applied. * @default 1000 */ maxItems?: number; /** * If true, only requests that are retried will be cached. * Requests that are not retried will not be cached even if they are cacheable. * @default false */ cacheOnlyRetriedRequests?: boolean; } export declare class CachingPlugin implements RetryPlugin { name: string; version: string; private manager; private interceptorIdReq; private interceptorIdRes; private cache; private cacheLock; private cleanupTimer; private readonly options; constructor(options?: CachingPluginOptions); initialize(manager: RetryManager): void; onBeforeDestroyed(): void; /** * Checks if there is a fresh cached response and handles the request accordingly. */ private handleRequest; /** * Handles successful responses by caching them when appropriate. */ private handleResponseSuccess; /** * Generates a unique cache key based on the request configuration. */ private generateCacheKey; private startPeriodicCleanup; private stopPeriodicCleanup; private runCacheCleanup; /** * Manually clears all cache entries. */ clearCache(): void; /** * Returns current cache statistics. */ getCacheStats(): { size: number; oldestItemAge: number; newestItemAge: number; averageAge: number; }; }