From 6c623fa7c527dfff5403a919e915b004c1aec07e Mon Sep 17 00:00:00 2001 From: Dimitri DO BAIRRO Date: Mon, 15 Dec 2025 13:34:04 +0100 Subject: [PATCH 1/4] feat: add axios-retry dependency to enhance request reliability --- package.json | 1 + yarn.lock | 12 ++++++++++++ 2 files changed, 13 insertions(+) diff --git a/package.json b/package.json index b10cfde..fc7f2e1 100644 --- a/package.json +++ b/package.json @@ -9,6 +9,7 @@ "dependencies": { "@rimiti/stimmy": "1.11.0", "axios": "1.6.8", + "axios-retry": "4.0.0", "http-proxy-agent": "7.0.2", "https-proxy-agent": "7.0.4" }, diff --git a/yarn.lock b/yarn.lock index a9e3cf2..6ffca0c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1125,6 +1125,13 @@ asynckit@^0.4.0: resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= +axios-retry@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/axios-retry/-/axios-retry-4.0.0.tgz#d5cb8ea1db18e05ce6f08aa5fe8b2663bba48e60" + integrity sha512-F6P4HVGITD/v4z9Lw2mIA24IabTajvpDZmKa6zq/gGwn57wN5j1P3uWrAV0+diqnW6kTM2fTqmWNfgYWGmMuiA== + dependencies: + is-retry-allowed "^2.2.0" + axios@1.6.8: version "1.6.8" resolved "https://registry.yarnpkg.com/axios/-/axios-1.6.8.tgz#66d294951f5d988a00e87a0ffb955316a619ea66" @@ -1974,6 +1981,11 @@ is-path-inside@^3.0.3: resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== +is-retry-allowed@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-2.2.0.tgz#88f34cbd236e043e71b6932d09b0c65fb7b4d71d" + integrity sha512-XVm7LOeLpTW4jV19QSH38vkswxoLud8sQ57YwJVTPWdiaI9I8keEhGFpBlslyVsgdQy4Opg8QOLb8YRgsyZiQg== + is-stream@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" From ddaab5910084ec8afe64d6b55b9047bbf2753e4e Mon Sep 17 00:00:00 2001 From: Dimitri DO BAIRRO Date: Mon, 15 Dec 2025 13:34:54 +0100 Subject: [PATCH 2/4] feat: add retryConfig to IBaseConfig for axios-retry integration --- src/classes/providers/base/types.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/classes/providers/base/types.ts b/src/classes/providers/base/types.ts index 3f575ec..163103f 100644 --- a/src/classes/providers/base/types.ts +++ b/src/classes/providers/base/types.ts @@ -1,6 +1,7 @@ import { HttpsProxyAgent } from 'https-proxy-agent'; import { HttpProxyAgent } from 'http-proxy-agent'; import { AxiosRequestConfig } from 'axios'; +import { IAxiosRetryConfig } from 'axios-retry/dist/esm'; enum EStrategyMode { MANUAL = 'MANUAL', @@ -9,6 +10,7 @@ enum EStrategyMode { interface IBaseConfig { axiosConfig?: AxiosRequestConfig; + retryConfig?: IAxiosRetryConfig; } interface ICreateProxyConfig { From ec52416b63f7889df4777c52555ed785da1141b9 Mon Sep 17 00:00:00 2001 From: Dimitri DO BAIRRO Date: Mon, 15 Dec 2025 13:35:03 +0100 Subject: [PATCH 3/4] feat: configure axios-retry with default options and support for custom retryConfig --- src/classes/providers/base/index.ts | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/classes/providers/base/index.ts b/src/classes/providers/base/index.ts index 1bdf4c6..ed24f25 100644 --- a/src/classes/providers/base/index.ts +++ b/src/classes/providers/base/index.ts @@ -1,4 +1,5 @@ import axios, { AxiosInstance, AxiosPromise, AxiosRequestConfig } from 'axios'; +import axiosRetry from 'axios-retry'; import { IBaseConfig } from './types'; export class Base { @@ -14,6 +15,18 @@ export class Base { } else { this.axios = axios.create({ proxy: false }); } + + // Configure axios-retry with sensible defaults and allow overrides from config.retryConfig + const defaultRetryOptions = { + retries: 3, + retryDelay: axiosRetry.exponentialDelay, + shouldResetTimeout: true, + retryCondition: axiosRetry.isNetworkOrIdempotentRequestError, + }; + + const retryOptions = config.retryConfig ? { ...defaultRetryOptions, ...config.retryConfig } : defaultRetryOptions; + + axiosRetry(this.axios, retryOptions); } /** From 6701dde4dfda7acd53e3140287bba6914f139e33 Mon Sep 17 00:00:00 2001 From: Dimitri DO BAIRRO Date: Mon, 15 Dec 2025 13:57:23 +0100 Subject: [PATCH 4/4] feat: update axios-retry import path for consistency --- src/classes/providers/base/types.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/classes/providers/base/types.ts b/src/classes/providers/base/types.ts index 163103f..9803c58 100644 --- a/src/classes/providers/base/types.ts +++ b/src/classes/providers/base/types.ts @@ -1,7 +1,7 @@ import { HttpsProxyAgent } from 'https-proxy-agent'; import { HttpProxyAgent } from 'http-proxy-agent'; import { AxiosRequestConfig } from 'axios'; -import { IAxiosRetryConfig } from 'axios-retry/dist/esm'; +import { IAxiosRetryConfig } from 'axios-retry'; enum EStrategyMode { MANUAL = 'MANUAL',