@zauru-sdk/services 6.11.10 → 6.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { AsyncLocalStorage } from "node:async_hooks";
|
|
2
|
+
import { bindHttpClientPolicyRuntime, getHttpClientPolicy, httpTimeoutMsForClient, isRetryableHttpError, } from "@zauru-sdk/common";
|
|
3
|
+
const als = new AsyncLocalStorage();
|
|
4
|
+
bindHttpClientPolicyRuntime({
|
|
5
|
+
get: () => als.getStore(),
|
|
6
|
+
run: (policy, fn) => als.run(policy, fn),
|
|
7
|
+
});
|
|
8
|
+
export function applyHttpClientTimeout(request, client) {
|
|
9
|
+
if (request.timeout != null && request.timeout > 0) {
|
|
10
|
+
return request;
|
|
11
|
+
}
|
|
12
|
+
request.timeout = httpTimeoutMsForClient(client);
|
|
13
|
+
return request;
|
|
14
|
+
}
|
|
15
|
+
export async function maybeRetryHttpRequest(error, instance, client) {
|
|
16
|
+
const axiosError = error;
|
|
17
|
+
const config = axiosError.config;
|
|
18
|
+
if (!config) {
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
const policy = getHttpClientPolicy();
|
|
22
|
+
const retries = policy.retries ?? 0;
|
|
23
|
+
const attempt = config.__zauruRetryCount ?? 0;
|
|
24
|
+
if (attempt >= retries || !isRetryableHttpError(axiosError, client)) {
|
|
25
|
+
return null;
|
|
26
|
+
}
|
|
27
|
+
config.__zauruRetryCount = attempt + 1;
|
|
28
|
+
console.log(`[http] retry ${config.__zauruRetryCount}/${retries} ${client} ${(config.method ?? "get").toUpperCase()} ${config.baseURL ?? ""}${config.url ?? ""}`);
|
|
29
|
+
return instance.request(config);
|
|
30
|
+
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import axios from "axios";
|
|
2
2
|
import chalk from "chalk";
|
|
3
3
|
import { config } from "@zauru-sdk/config";
|
|
4
|
+
import { applyHttpClientTimeout, maybeRetryHttpRequest, } from "./httpClientRuntime.js";
|
|
4
5
|
const axiosInstance = axios.create({
|
|
5
6
|
baseURL: `${config.graphqlAPIBaseURL}`,
|
|
6
7
|
});
|
|
@@ -8,7 +9,7 @@ axiosInstance.interceptors.request.use(function (request) {
|
|
|
8
9
|
// Do something before request is sent
|
|
9
10
|
const baseName = `${request.baseURL}${request.url}`;
|
|
10
11
|
console.log(chalk.green(baseName));
|
|
11
|
-
request
|
|
12
|
+
applyHttpClientTimeout(request, "graphql");
|
|
12
13
|
request.metadata = { startTime: Date.now() };
|
|
13
14
|
if (config.debugHTTP) {
|
|
14
15
|
console.log(chalk.cyan(`[DEBUG] REQUEST METHOD: ${request.method?.toUpperCase()}`));
|
|
@@ -54,7 +55,11 @@ axiosInstance.interceptors.response.use(function (response) {
|
|
|
54
55
|
console.log(chalk.cyan("[DEBUG] RESPONSE DATA:"), JSON.stringify(response.data, null, 2));
|
|
55
56
|
}
|
|
56
57
|
return response;
|
|
57
|
-
}, function (error) {
|
|
58
|
+
}, async function (error) {
|
|
59
|
+
const retried = await maybeRetryHttpRequest(error, axiosInstance, "graphql");
|
|
60
|
+
if (retried) {
|
|
61
|
+
return retried;
|
|
62
|
+
}
|
|
58
63
|
console.log(chalk.red("---------------- ERROR CON REQUEST GRAPHQL ----------------"));
|
|
59
64
|
console.log(`${error}`);
|
|
60
65
|
// Do something with response error
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import axios from "axios";
|
|
2
2
|
import chalk from "chalk";
|
|
3
3
|
import { config } from "@zauru-sdk/config";
|
|
4
|
+
import { applyHttpClientTimeout, maybeRetryHttpRequest, } from "./httpClientRuntime.js";
|
|
4
5
|
const axiosInstance = axios.create({
|
|
5
6
|
baseURL: `${config.zauruBaseURL}`,
|
|
6
7
|
});
|
|
@@ -8,7 +9,7 @@ axiosInstance.interceptors.request.use(function (request) {
|
|
|
8
9
|
// Do something before request is sent
|
|
9
10
|
const baseName = `${request.baseURL}${request.url}`;
|
|
10
11
|
console.log(chalk.green(baseName));
|
|
11
|
-
request
|
|
12
|
+
applyHttpClientTimeout(request, "zauru");
|
|
12
13
|
request.metadata = { startTime: Date.now() };
|
|
13
14
|
if (config.debugHTTP) {
|
|
14
15
|
console.log(chalk.cyan(`[DEBUG] REQUEST METHOD: ${request.method?.toUpperCase()}`));
|
|
@@ -54,7 +55,11 @@ axiosInstance.interceptors.response.use(function (response) {
|
|
|
54
55
|
console.log(chalk.cyan("[DEBUG] RESPONSE DATA:"), JSON.stringify(response.data, null, 2));
|
|
55
56
|
}
|
|
56
57
|
return response;
|
|
57
|
-
}, function (error) {
|
|
58
|
+
}, async function (error) {
|
|
59
|
+
const retried = await maybeRetryHttpRequest(error, axiosInstance, "zauru");
|
|
60
|
+
if (retried) {
|
|
61
|
+
return retried;
|
|
62
|
+
}
|
|
58
63
|
console.log(chalk.red("---------------- ERROR CON REQUEST (RESPONSE INTERCEPTOR) ----------------"));
|
|
59
64
|
// Do something with response error
|
|
60
65
|
const { response } = error;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { AxiosInstance, InternalAxiosRequestConfig } from "axios";
|
|
2
|
+
import { type HttpClientKind } from "@zauru-sdk/common";
|
|
3
|
+
export declare function applyHttpClientTimeout(request: InternalAxiosRequestConfig, client: HttpClientKind): InternalAxiosRequestConfig;
|
|
4
|
+
export declare function maybeRetryHttpRequest(error: unknown, instance: AxiosInstance, client: HttpClientKind): Promise<unknown | null>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zauru-sdk/services",
|
|
3
|
-
"version": "6.
|
|
3
|
+
"version": "6.12.0",
|
|
4
4
|
"description": "Servicios de consulta a Zauru",
|
|
5
5
|
"main": "./dist/esm/index.js",
|
|
6
6
|
"module": "./dist/esm/index.js",
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
"dependencies": {
|
|
27
27
|
"@remix-run/node": "^2.8.1",
|
|
28
28
|
"@upstash/redis": "^1.34.5",
|
|
29
|
-
"@zauru-sdk/common": "^6.
|
|
29
|
+
"@zauru-sdk/common": "^6.10.0",
|
|
30
30
|
"@zauru-sdk/config": "^6.0.0",
|
|
31
31
|
"@zauru-sdk/graphql": "^6.8.0",
|
|
32
32
|
"@zauru-sdk/types": "^6.24.0",
|
|
@@ -34,5 +34,5 @@
|
|
|
34
34
|
"chalk": "5.3.0",
|
|
35
35
|
"moment": "^2.30.1"
|
|
36
36
|
},
|
|
37
|
-
"gitHead": "
|
|
37
|
+
"gitHead": "8df8d97cb33e23e09198c617a95cffdff96cd05b"
|
|
38
38
|
}
|