@wildix/xbees-conversations-client 1.2.8 → 1.2.10
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.
|
@@ -32,6 +32,44 @@ class ConversationsClient extends smithy_client_1.Client {
|
|
|
32
32
|
this.middlewareStack.add(smithy_utils_1.authorizationMiddleware.bind(this, configuration.token), { step: "build" });
|
|
33
33
|
this.middlewareStack.use((0, middleware_user_agent_1.getUserAgentPlugin)(this.config));
|
|
34
34
|
this.middlewareStack.use((0, middleware_retry_1.getRetryPlugin)(this.config));
|
|
35
|
+
this.middlewareStack.add((next) => async (args) => {
|
|
36
|
+
try {
|
|
37
|
+
return await next(args);
|
|
38
|
+
}
|
|
39
|
+
catch (error) {
|
|
40
|
+
const statusCode = error?.$metadata?.httpStatusCode ?? error?.$response?.statusCode;
|
|
41
|
+
const headers = error?.$response?.headers;
|
|
42
|
+
if (statusCode === 429 && headers) {
|
|
43
|
+
const headerEntries = Object.entries(headers);
|
|
44
|
+
const getHeaderWithKey = (name) => {
|
|
45
|
+
const normalizedName = name.toLowerCase();
|
|
46
|
+
for (const [key, value] of headerEntries) {
|
|
47
|
+
if (key.toLowerCase() === normalizedName && (typeof value === "string" || typeof value === "number")) {
|
|
48
|
+
return [key, value];
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
return undefined;
|
|
52
|
+
};
|
|
53
|
+
const retryAfterHeader = getHeaderWithKey("retry-after");
|
|
54
|
+
if (retryAfterHeader) {
|
|
55
|
+
const [retryAfterKey, retryAfterValueRaw] = retryAfterHeader;
|
|
56
|
+
const retryAfterNumeric = Number(retryAfterValueRaw);
|
|
57
|
+
if (!Number.isNaN(retryAfterNumeric) && retryAfterNumeric >= 1000) {
|
|
58
|
+
const normalizedRetryAfterValue = new Date(Date.now() + retryAfterNumeric).toUTCString();
|
|
59
|
+
headers[retryAfterKey] = normalizedRetryAfterValue;
|
|
60
|
+
if (configuration?.retryLogging) {
|
|
61
|
+
console.warn(`[ConversationsClient] Normalized retry-after header from ${String(retryAfterValueRaw)} to ${normalizedRetryAfterValue}`);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
throw error;
|
|
67
|
+
}
|
|
68
|
+
}, {
|
|
69
|
+
name: "retryAfterHeaderNormalizationMiddleware",
|
|
70
|
+
step: "finalizeRequest",
|
|
71
|
+
priority: "low",
|
|
72
|
+
});
|
|
35
73
|
if (configuration?.retryLogging) {
|
|
36
74
|
this.middlewareStack.add((next) => async (args) => {
|
|
37
75
|
const request = args.request;
|
|
@@ -69,9 +107,9 @@ class ConversationsClient extends smithy_client_1.Client {
|
|
|
69
107
|
const rateLimitRemainingRaw = getHeader("x-ratelimit-remaining", "ratelimit-remaining", "rateLimitRemaining");
|
|
70
108
|
let retryAfterDelayMs;
|
|
71
109
|
if (retryAfterRaw !== undefined) {
|
|
72
|
-
const
|
|
73
|
-
if (!Number.isNaN(
|
|
74
|
-
retryAfterDelayMs =
|
|
110
|
+
const retryAfterNumeric = Number(retryAfterRaw);
|
|
111
|
+
if (!Number.isNaN(retryAfterNumeric)) {
|
|
112
|
+
retryAfterDelayMs = retryAfterNumeric >= 1000 ? retryAfterNumeric : retryAfterNumeric * 1000;
|
|
75
113
|
}
|
|
76
114
|
else {
|
|
77
115
|
retryAfterDelayMs = new Date(retryAfterRaw).getTime() - Date.now();
|
|
@@ -81,7 +119,12 @@ class ConversationsClient extends smithy_client_1.Client {
|
|
|
81
119
|
if (rateLimitResetRaw !== undefined) {
|
|
82
120
|
const resetValue = Number(rateLimitResetRaw);
|
|
83
121
|
if (!Number.isNaN(resetValue)) {
|
|
84
|
-
|
|
122
|
+
if (resetValue > 1000000000) {
|
|
123
|
+
rateLimitResetDelayMs = (resetValue * 1000) - Date.now();
|
|
124
|
+
}
|
|
125
|
+
else {
|
|
126
|
+
rateLimitResetDelayMs = resetValue >= 1000 ? resetValue : resetValue * 1000;
|
|
127
|
+
}
|
|
85
128
|
}
|
|
86
129
|
}
|
|
87
130
|
if (willRetry) {
|
|
@@ -29,6 +29,44 @@ export class ConversationsClient extends __Client {
|
|
|
29
29
|
this.middlewareStack.add(authorizationMiddleware.bind(this, configuration.token), { step: "build" });
|
|
30
30
|
this.middlewareStack.use(getUserAgentPlugin(this.config));
|
|
31
31
|
this.middlewareStack.use(getRetryPlugin(this.config));
|
|
32
|
+
this.middlewareStack.add((next) => async (args) => {
|
|
33
|
+
try {
|
|
34
|
+
return await next(args);
|
|
35
|
+
}
|
|
36
|
+
catch (error) {
|
|
37
|
+
const statusCode = error?.$metadata?.httpStatusCode ?? error?.$response?.statusCode;
|
|
38
|
+
const headers = error?.$response?.headers;
|
|
39
|
+
if (statusCode === 429 && headers) {
|
|
40
|
+
const headerEntries = Object.entries(headers);
|
|
41
|
+
const getHeaderWithKey = (name) => {
|
|
42
|
+
const normalizedName = name.toLowerCase();
|
|
43
|
+
for (const [key, value] of headerEntries) {
|
|
44
|
+
if (key.toLowerCase() === normalizedName && (typeof value === "string" || typeof value === "number")) {
|
|
45
|
+
return [key, value];
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
return undefined;
|
|
49
|
+
};
|
|
50
|
+
const retryAfterHeader = getHeaderWithKey("retry-after");
|
|
51
|
+
if (retryAfterHeader) {
|
|
52
|
+
const [retryAfterKey, retryAfterValueRaw] = retryAfterHeader;
|
|
53
|
+
const retryAfterNumeric = Number(retryAfterValueRaw);
|
|
54
|
+
if (!Number.isNaN(retryAfterNumeric) && retryAfterNumeric >= 1000) {
|
|
55
|
+
const normalizedRetryAfterValue = new Date(Date.now() + retryAfterNumeric).toUTCString();
|
|
56
|
+
headers[retryAfterKey] = normalizedRetryAfterValue;
|
|
57
|
+
if (configuration?.retryLogging) {
|
|
58
|
+
console.warn(`[ConversationsClient] Normalized retry-after header from ${String(retryAfterValueRaw)} to ${normalizedRetryAfterValue}`);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
throw error;
|
|
64
|
+
}
|
|
65
|
+
}, {
|
|
66
|
+
name: "retryAfterHeaderNormalizationMiddleware",
|
|
67
|
+
step: "finalizeRequest",
|
|
68
|
+
priority: "low",
|
|
69
|
+
});
|
|
32
70
|
if (configuration?.retryLogging) {
|
|
33
71
|
this.middlewareStack.add((next) => async (args) => {
|
|
34
72
|
const request = args.request;
|
|
@@ -66,9 +104,9 @@ export class ConversationsClient extends __Client {
|
|
|
66
104
|
const rateLimitRemainingRaw = getHeader("x-ratelimit-remaining", "ratelimit-remaining", "rateLimitRemaining");
|
|
67
105
|
let retryAfterDelayMs;
|
|
68
106
|
if (retryAfterRaw !== undefined) {
|
|
69
|
-
const
|
|
70
|
-
if (!Number.isNaN(
|
|
71
|
-
retryAfterDelayMs =
|
|
107
|
+
const retryAfterNumeric = Number(retryAfterRaw);
|
|
108
|
+
if (!Number.isNaN(retryAfterNumeric)) {
|
|
109
|
+
retryAfterDelayMs = retryAfterNumeric >= 1000 ? retryAfterNumeric : retryAfterNumeric * 1000;
|
|
72
110
|
}
|
|
73
111
|
else {
|
|
74
112
|
retryAfterDelayMs = new Date(retryAfterRaw).getTime() - Date.now();
|
|
@@ -78,7 +116,12 @@ export class ConversationsClient extends __Client {
|
|
|
78
116
|
if (rateLimitResetRaw !== undefined) {
|
|
79
117
|
const resetValue = Number(rateLimitResetRaw);
|
|
80
118
|
if (!Number.isNaN(resetValue)) {
|
|
81
|
-
|
|
119
|
+
if (resetValue > 1000000000) {
|
|
120
|
+
rateLimitResetDelayMs = (resetValue * 1000) - Date.now();
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
rateLimitResetDelayMs = resetValue >= 1000 ? resetValue : resetValue * 1000;
|
|
124
|
+
}
|
|
82
125
|
}
|
|
83
126
|
}
|
|
84
127
|
if (willRetry) {
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wildix/xbees-conversations-client",
|
|
3
3
|
"description": "@wildix/xbees-conversations-client client",
|
|
4
|
-
"version": "1.2.
|
|
4
|
+
"version": "1.2.10",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types'",
|
|
7
7
|
"build:cjs": "tsc -p tsconfig.cjs.json",
|