index.d.ts 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. import type { AxiosError, AxiosRequestConfig, AxiosInstance, AxiosStatic } from 'axios';
  2. export interface IAxiosRetryConfig {
  3. /**
  4. * The number of times to retry before failing
  5. * default: 3
  6. */
  7. retries?: number;
  8. /**
  9. * Defines if the timeout should be reset between retries
  10. * default: false
  11. */
  12. shouldResetTimeout?: boolean;
  13. /**
  14. * A callback to further control if a request should be retried.
  15. * default: it retries if it is a network error or a 5xx error on an idempotent request (GET, HEAD, OPTIONS, PUT or DELETE).
  16. */
  17. retryCondition?: (error: AxiosError) => boolean | Promise<boolean>;
  18. /**
  19. * A callback to further control the delay between retry requests. By default there is no delay.
  20. */
  21. retryDelay?: (retryCount: number, error: AxiosError) => number;
  22. /**
  23. * A callback to get notified when a retry occurs, the number of times it has occurred, and the error
  24. */
  25. onRetry?: (retryCount: number, error: AxiosError, requestConfig: AxiosRequestConfig) => Promise<void> | void;
  26. }
  27. export interface IAxiosRetryConfigExtended extends IAxiosRetryConfig {
  28. /**
  29. * The number of times the request was retried
  30. */
  31. retryCount?: number;
  32. /**
  33. * The last time the request was retried (timestamp in milliseconds)
  34. */
  35. lastRequestTime?: number;
  36. }
  37. export interface IAxiosRetryReturn {
  38. /**
  39. * The interceptorId for the request interceptor
  40. */
  41. requestInterceptorId: number;
  42. /**
  43. * The interceptorId for the response interceptor
  44. */
  45. responseInterceptorId: number;
  46. }
  47. export interface AxiosRetry {
  48. (axiosInstance: AxiosStatic | AxiosInstance, axiosRetryConfig?: IAxiosRetryConfig): IAxiosRetryReturn;
  49. isNetworkError(error: AxiosError): boolean;
  50. isRetryableError(error: AxiosError): boolean;
  51. isSafeRequestError(error: AxiosError): boolean;
  52. isIdempotentRequestError(error: AxiosError): boolean;
  53. isNetworkOrIdempotentRequestError(error: AxiosError): boolean;
  54. exponentialDelay(retryNumber?: number, error?: AxiosError, delayFactor?: number): number;
  55. }
  56. declare module 'axios' {
  57. interface AxiosRequestConfig {
  58. 'axios-retry'?: IAxiosRetryConfigExtended;
  59. }
  60. }
  61. export declare const namespace = "axios-retry";
  62. export declare function isNetworkError(error: any): boolean;
  63. export declare function isRetryableError(error: AxiosError): boolean;
  64. export declare function isSafeRequestError(error: AxiosError): boolean;
  65. export declare function isIdempotentRequestError(error: AxiosError): boolean;
  66. export declare function isNetworkOrIdempotentRequestError(error: AxiosError): boolean;
  67. export declare function exponentialDelay(retryNumber?: number, _error?: AxiosError | undefined, delayFactor?: number): number;
  68. export declare const DEFAULT_OPTIONS: Required<IAxiosRetryConfig>;
  69. declare const axiosRetry: AxiosRetry;
  70. export default axiosRetry;