@cdk8s/awscdk-resolver 0.0.547 → 0.0.548
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.
- package/.jsii +3 -3
- package/lib/resolve.js +1 -1
- package/node_modules/@aws-sdk/client-cloudformation/dist-cjs/index.js +9 -9
- package/node_modules/@aws-sdk/client-cloudformation/dist-es/waiters/waitForChangeSetCreateComplete.js +2 -2
- package/node_modules/@aws-sdk/client-cloudformation/dist-es/waiters/waitForStackCreateComplete.js +2 -2
- package/node_modules/@aws-sdk/client-cloudformation/dist-es/waiters/waitForStackDeleteComplete.js +2 -2
- package/node_modules/@aws-sdk/client-cloudformation/dist-es/waiters/waitForStackExists.js +2 -2
- package/node_modules/@aws-sdk/client-cloudformation/dist-es/waiters/waitForStackImportComplete.js +2 -2
- package/node_modules/@aws-sdk/client-cloudformation/dist-es/waiters/waitForStackRefactorCreateComplete.js +1 -1
- package/node_modules/@aws-sdk/client-cloudformation/dist-es/waiters/waitForStackRefactorExecuteComplete.js +1 -1
- package/node_modules/@aws-sdk/client-cloudformation/dist-es/waiters/waitForStackRollbackComplete.js +2 -2
- package/node_modules/@aws-sdk/client-cloudformation/dist-es/waiters/waitForStackUpdateComplete.js +2 -2
- package/node_modules/@aws-sdk/client-cloudformation/dist-types/CloudFormation.d.ts +11 -10
- package/node_modules/@aws-sdk/client-cloudformation/dist-types/ts3.4/CloudFormation.d.ts +13 -10
- package/node_modules/@aws-sdk/client-cloudformation/dist-types/ts3.4/waiters/waitForChangeSetCreateComplete.d.ts +9 -3
- package/node_modules/@aws-sdk/client-cloudformation/dist-types/ts3.4/waiters/waitForStackCreateComplete.d.ts +9 -3
- package/node_modules/@aws-sdk/client-cloudformation/dist-types/ts3.4/waiters/waitForStackDeleteComplete.d.ts +11 -3
- package/node_modules/@aws-sdk/client-cloudformation/dist-types/ts3.4/waiters/waitForStackExists.d.ts +9 -3
- package/node_modules/@aws-sdk/client-cloudformation/dist-types/ts3.4/waiters/waitForStackImportComplete.d.ts +9 -3
- package/node_modules/@aws-sdk/client-cloudformation/dist-types/ts3.4/waiters/waitForStackRefactorCreateComplete.d.ts +11 -3
- package/node_modules/@aws-sdk/client-cloudformation/dist-types/ts3.4/waiters/waitForStackRefactorExecuteComplete.d.ts +11 -3
- package/node_modules/@aws-sdk/client-cloudformation/dist-types/ts3.4/waiters/waitForStackRollbackComplete.d.ts +9 -3
- package/node_modules/@aws-sdk/client-cloudformation/dist-types/ts3.4/waiters/waitForStackUpdateComplete.d.ts +9 -3
- package/node_modules/@aws-sdk/client-cloudformation/dist-types/ts3.4/waiters/waitForTypeRegistrationComplete.d.ts +11 -3
- package/node_modules/@aws-sdk/client-cloudformation/dist-types/waiters/waitForChangeSetCreateComplete.d.ts +4 -3
- package/node_modules/@aws-sdk/client-cloudformation/dist-types/waiters/waitForStackCreateComplete.d.ts +4 -3
- package/node_modules/@aws-sdk/client-cloudformation/dist-types/waiters/waitForStackDeleteComplete.d.ts +4 -3
- package/node_modules/@aws-sdk/client-cloudformation/dist-types/waiters/waitForStackExists.d.ts +4 -3
- package/node_modules/@aws-sdk/client-cloudformation/dist-types/waiters/waitForStackImportComplete.d.ts +4 -3
- package/node_modules/@aws-sdk/client-cloudformation/dist-types/waiters/waitForStackRefactorCreateComplete.d.ts +4 -3
- package/node_modules/@aws-sdk/client-cloudformation/dist-types/waiters/waitForStackRefactorExecuteComplete.d.ts +4 -3
- package/node_modules/@aws-sdk/client-cloudformation/dist-types/waiters/waitForStackRollbackComplete.d.ts +4 -3
- package/node_modules/@aws-sdk/client-cloudformation/dist-types/waiters/waitForStackUpdateComplete.d.ts +4 -3
- package/node_modules/@aws-sdk/client-cloudformation/dist-types/waiters/waitForTypeRegistrationComplete.d.ts +4 -3
- package/node_modules/@aws-sdk/client-cloudformation/package.json +8 -8
- package/node_modules/@aws-sdk/core/package.json +3 -3
- package/node_modules/@aws-sdk/credential-provider-env/package.json +2 -2
- package/node_modules/@aws-sdk/credential-provider-http/package.json +2 -2
- package/node_modules/@aws-sdk/credential-provider-ini/package.json +9 -9
- package/node_modules/@aws-sdk/credential-provider-login/package.json +3 -3
- package/node_modules/@aws-sdk/credential-provider-node/package.json +7 -7
- package/node_modules/@aws-sdk/credential-provider-process/package.json +2 -2
- package/node_modules/@aws-sdk/credential-provider-sso/package.json +4 -4
- package/node_modules/@aws-sdk/credential-provider-web-identity/package.json +3 -3
- package/node_modules/@aws-sdk/middleware-sdk-s3/package.json +2 -2
- package/node_modules/@aws-sdk/middleware-user-agent/package.json +3 -3
- package/node_modules/@aws-sdk/nested-clients/package.json +7 -7
- package/node_modules/@aws-sdk/signature-v4-multi-region/package.json +2 -2
- package/node_modules/@aws-sdk/token-providers/package.json +3 -3
- package/node_modules/@aws-sdk/util-user-agent-node/package.json +2 -2
- package/node_modules/@aws-sdk/xml-builder/dist-cjs/xml-external/nodable_entities.js +336 -0
- package/node_modules/@aws-sdk/xml-builder/dist-cjs/xml-parser.js +26 -0
- package/node_modules/@aws-sdk/xml-builder/dist-es/xml-external/nodable_entities.js +332 -0
- package/node_modules/@aws-sdk/xml-builder/dist-es/xml-parser.js +26 -0
- package/node_modules/@aws-sdk/xml-builder/dist-types/ts3.4/XmlNode.d.ts +49 -29
- package/node_modules/@aws-sdk/xml-builder/dist-types/ts3.4/XmlText.d.ts +11 -6
- package/node_modules/@aws-sdk/xml-builder/dist-types/ts3.4/escape-attribute.d.ts +6 -1
- package/node_modules/@aws-sdk/xml-builder/dist-types/ts3.4/escape-element.d.ts +6 -1
- package/node_modules/@aws-sdk/xml-builder/dist-types/ts3.4/index.d.ts +12 -3
- package/node_modules/@aws-sdk/xml-builder/dist-types/ts3.4/stringable.d.ts +6 -3
- package/node_modules/@aws-sdk/xml-builder/dist-types/ts3.4/xml-external/nodable_entities.d.ts +65 -0
- package/node_modules/@aws-sdk/xml-builder/dist-types/ts3.4/xml-parser.browser.d.ts +9 -1
- package/node_modules/@aws-sdk/xml-builder/dist-types/ts3.4/xml-parser.d.ts +4 -1
- package/node_modules/@aws-sdk/xml-builder/dist-types/xml-external/nodable_entities.d.ts +65 -0
- package/node_modules/@aws-sdk/xml-builder/package.json +3 -2
- package/node_modules/@smithy/middleware-retry/package.json +3 -3
- package/node_modules/@smithy/service-error-classification/dist-cjs/index.js +1 -0
- package/node_modules/@smithy/service-error-classification/dist-es/index.js +1 -0
- package/node_modules/@smithy/service-error-classification/package.json +1 -1
- package/node_modules/@smithy/util-retry/package.json +2 -2
- package/node_modules/@smithy/util-waiter/dist-cjs/index.js +59 -34
- package/node_modules/@smithy/util-waiter/dist-es/poller.js +61 -34
- package/node_modules/@smithy/util-waiter/dist-types/createWaiter.d.ts +1 -1
- package/node_modules/@smithy/util-waiter/dist-types/poller.d.ts +2 -1
- package/node_modules/@smithy/util-waiter/dist-types/waiter.d.ts +13 -13
- package/node_modules/@smithy/util-waiter/package.json +1 -1
- package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/CHANGELOG.md +8 -0
- package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/lib/fxp.cjs +1 -1
- package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/lib/fxp.min.js +1 -1
- package/node_modules/fast-xml-parser/lib/fxp.min.js.map +1 -0
- package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/lib/fxparser.min.js +1 -1
- package/node_modules/fast-xml-parser/lib/fxparser.min.js.map +1 -0
- package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/package.json +1 -1
- package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/xmlparser/OrderedObjParser.js +16 -11
- package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/xmlparser/XMLParser.js +2 -2
- package/package.json +2 -2
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/lib/fxp.min.js.map +0 -1
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/lib/fxparser.min.js.map +0 -1
- /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/LICENSE +0 -0
- /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/README.md +0 -0
- /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/lib/fxbuilder.min.js +0 -0
- /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/lib/fxbuilder.min.js.map +0 -0
- /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/lib/fxp.d.cts +0 -0
- /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/lib/fxvalidator.min.js +0 -0
- /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/lib/fxvalidator.min.js.map +0 -0
- /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/cli/cli.js +0 -0
- /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/cli/man.js +0 -0
- /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/cli/read.js +0 -0
- /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/fxp.d.ts +0 -0
- /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/fxp.js +0 -0
- /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/ignoreAttributes.js +0 -0
- /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/util.js +0 -0
- /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/v6/CharsSymbol.js +0 -0
- /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/v6/EntitiesParser.js +0 -0
- /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/v6/OptionsBuilder.js +0 -0
- /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/v6/OutputBuilders/BaseOutputBuilder.js +0 -0
- /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/v6/OutputBuilders/JsArrBuilder.js +0 -0
- /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/v6/OutputBuilders/JsMinArrBuilder.js +0 -0
- /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/v6/OutputBuilders/JsObjBuilder.js +0 -0
- /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/v6/OutputBuilders/ParserOptionsBuilder.js +0 -0
- /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/v6/Report.js +0 -0
- /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/v6/TagPath.js +0 -0
- /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/v6/TagPathMatcher.js +0 -0
- /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/v6/XMLParser.js +0 -0
- /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/v6/Xml2JsParser.js +0 -0
- /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/v6/XmlPartReader.js +0 -0
- /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/v6/XmlSpecialTagsReader.js +0 -0
- /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/v6/inputSource/BufferSource.js +0 -0
- /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/v6/inputSource/StringSource.js +0 -0
- /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/v6/valueParsers/EntitiesParser.js +0 -0
- /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/v6/valueParsers/booleanParser.js +0 -0
- /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/v6/valueParsers/booleanParserExt.js +0 -0
- /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/v6/valueParsers/currency.js +0 -0
- /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/v6/valueParsers/join.js +0 -0
- /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/v6/valueParsers/number.js +0 -0
- /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/v6/valueParsers/trim.js +0 -0
- /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/validator.js +0 -0
- /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/xmlbuilder/json2xml.js +0 -0
- /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/xmlparser/DocTypeReader.js +0 -0
- /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/xmlparser/OptionsBuilder.js +0 -0
- /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/xmlparser/node2json.js +0 -0
- /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/xmlparser/xmlNode.js +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@smithy/middleware-retry",
|
|
3
|
-
"version": "4.5.
|
|
3
|
+
"version": "4.5.6",
|
|
4
4
|
"scripts": {
|
|
5
5
|
"build": "concurrently 'yarn:build:types' 'yarn:build:es:cjs'",
|
|
6
6
|
"build:es:cjs": "yarn g:tsc -p tsconfig.es.json && node ../../scripts/inline middleware-retry",
|
|
@@ -36,11 +36,11 @@
|
|
|
36
36
|
"@smithy/core": "^3.23.17",
|
|
37
37
|
"@smithy/node-config-provider": "^4.3.14",
|
|
38
38
|
"@smithy/protocol-http": "^5.3.14",
|
|
39
|
-
"@smithy/service-error-classification": "^4.3.
|
|
39
|
+
"@smithy/service-error-classification": "^4.3.1",
|
|
40
40
|
"@smithy/smithy-client": "^4.12.13",
|
|
41
41
|
"@smithy/types": "^4.14.1",
|
|
42
42
|
"@smithy/util-middleware": "^4.2.14",
|
|
43
|
-
"@smithy/util-retry": "^4.3.
|
|
43
|
+
"@smithy/util-retry": "^4.3.5",
|
|
44
44
|
"@smithy/uuid": "^1.1.2",
|
|
45
45
|
"tslib": "^2.6.2"
|
|
46
46
|
},
|
|
@@ -51,6 +51,7 @@ const isThrottlingError = (error) => error.$metadata?.httpStatusCode === 429 ||
|
|
|
51
51
|
error.$retryable?.throttling == true;
|
|
52
52
|
const isTransientError = (error, depth = 0) => isRetryableByTrait(error) ||
|
|
53
53
|
isClockSkewCorrectedError(error) ||
|
|
54
|
+
(error.name === "InvalidSignatureException" && error.message?.includes("Signature expired")) ||
|
|
54
55
|
TRANSIENT_ERROR_CODES.includes(error.name) ||
|
|
55
56
|
NODEJS_TIMEOUT_ERROR_CODES.includes(error?.code || "") ||
|
|
56
57
|
NODEJS_NETWORK_ERROR_CODES.includes(error?.code || "") ||
|
|
@@ -21,6 +21,7 @@ export const isThrottlingError = (error) => error.$metadata?.httpStatusCode ===
|
|
|
21
21
|
error.$retryable?.throttling == true;
|
|
22
22
|
export const isTransientError = (error, depth = 0) => isRetryableByTrait(error) ||
|
|
23
23
|
isClockSkewCorrectedError(error) ||
|
|
24
|
+
(error.name === "InvalidSignatureException" && error.message?.includes("Signature expired")) ||
|
|
24
25
|
TRANSIENT_ERROR_CODES.includes(error.name) ||
|
|
25
26
|
NODEJS_TIMEOUT_ERROR_CODES.includes(error?.code || "") ||
|
|
26
27
|
NODEJS_NETWORK_ERROR_CODES.includes(error?.code || "") ||
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@smithy/service-error-classification",
|
|
3
|
-
"version": "4.3.
|
|
3
|
+
"version": "4.3.1",
|
|
4
4
|
"scripts": {
|
|
5
5
|
"build": "concurrently 'yarn:build:types' 'yarn:build:es:cjs'",
|
|
6
6
|
"build:es:cjs": "yarn g:tsc -p tsconfig.es.json && node ../../scripts/inline service-error-classification",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@smithy/util-retry",
|
|
3
|
-
"version": "4.3.
|
|
3
|
+
"version": "4.3.5",
|
|
4
4
|
"description": "Shared retry utilities to be used in middleware packages.",
|
|
5
5
|
"main": "./dist-cjs/index.js",
|
|
6
6
|
"module": "./dist-es/index.js",
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
"license": "Apache-2.0",
|
|
31
31
|
"sideEffects": false,
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"@smithy/service-error-classification": "^4.3.
|
|
33
|
+
"@smithy/service-error-classification": "^4.3.1",
|
|
34
34
|
"@smithy/types": "^4.14.1",
|
|
35
35
|
"tslib": "^2.6.2"
|
|
36
36
|
},
|
|
@@ -52,39 +52,27 @@ const checkExceptions = (result) => {
|
|
|
52
52
|
return result;
|
|
53
53
|
};
|
|
54
54
|
|
|
55
|
-
const exponentialBackoffWithJitter = (minDelay, maxDelay, attemptCeiling, attempt) => {
|
|
56
|
-
if (attempt > attemptCeiling)
|
|
57
|
-
return maxDelay;
|
|
58
|
-
const delay = minDelay * 2 ** (attempt - 1);
|
|
59
|
-
return randomInRange(minDelay, delay);
|
|
60
|
-
};
|
|
61
|
-
const randomInRange = (min, max) => min + Math.random() * (max - min);
|
|
62
55
|
const runPolling = async ({ minDelay, maxDelay, maxWaitTime, abortController, client, abortSignal }, input, acceptorChecks) => {
|
|
63
56
|
const observedResponses = {};
|
|
64
|
-
const
|
|
65
|
-
|
|
66
|
-
const message = createMessageFromResponse(reason);
|
|
67
|
-
observedResponses[message] |= 0;
|
|
68
|
-
observedResponses[message] += 1;
|
|
69
|
-
}
|
|
70
|
-
if (state !== exports.WaiterState.RETRY) {
|
|
71
|
-
return { state, reason, observedResponses };
|
|
72
|
-
}
|
|
73
|
-
let currentAttempt = 1;
|
|
57
|
+
const [minDelayMs, maxDelayMs] = [minDelay * 1000, maxDelay * 1000];
|
|
58
|
+
let currentAttempt = 0;
|
|
74
59
|
const waitUntil = Date.now() + maxWaitTime * 1000;
|
|
75
|
-
const
|
|
60
|
+
const warn403Time = Date.now() + 60_000;
|
|
61
|
+
let didWarn403 = false;
|
|
76
62
|
while (true) {
|
|
77
|
-
if (
|
|
78
|
-
const
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
63
|
+
if (currentAttempt > 0) {
|
|
64
|
+
const delayMs = exponentialBackoffWithJitter(minDelayMs, maxDelayMs, currentAttempt, waitUntil);
|
|
65
|
+
if (abortController?.signal?.aborted || abortSignal?.aborted) {
|
|
66
|
+
const message = "AbortController signal aborted.";
|
|
67
|
+
observedResponses[message] |= 0;
|
|
68
|
+
observedResponses[message] += 1;
|
|
69
|
+
return { state: exports.WaiterState.ABORTED, observedResponses };
|
|
70
|
+
}
|
|
71
|
+
if (Date.now() + delayMs > waitUntil) {
|
|
72
|
+
return { state: exports.WaiterState.TIMEOUT, observedResponses };
|
|
73
|
+
}
|
|
74
|
+
await sleep(delayMs / 1_000);
|
|
86
75
|
}
|
|
87
|
-
await sleep(delay);
|
|
88
76
|
const { state, reason } = await acceptorChecks(client, input);
|
|
89
77
|
if (reason) {
|
|
90
78
|
const message = createMessageFromResponse(reason);
|
|
@@ -92,23 +80,60 @@ const runPolling = async ({ minDelay, maxDelay, maxWaitTime, abortController, cl
|
|
|
92
80
|
observedResponses[message] += 1;
|
|
93
81
|
}
|
|
94
82
|
if (state !== exports.WaiterState.RETRY) {
|
|
95
|
-
return { state, reason, observedResponses };
|
|
83
|
+
return { state, reason, final: reason, observedResponses };
|
|
96
84
|
}
|
|
97
85
|
currentAttempt += 1;
|
|
86
|
+
if (!didWarn403 && Date.now() >= warn403Time) {
|
|
87
|
+
checkWarn403(observedResponses, client);
|
|
88
|
+
didWarn403 = true;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
};
|
|
92
|
+
const checkWarn403 = (observedResponses = {}, client) => {
|
|
93
|
+
const orderedErrors = Object.keys(observedResponses);
|
|
94
|
+
let count403 = 0;
|
|
95
|
+
for (const response of orderedErrors) {
|
|
96
|
+
const n = observedResponses[response] | 0;
|
|
97
|
+
if (response.startsWith("403:")) {
|
|
98
|
+
count403 += n;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
const clientLogger = client?.config?.logger;
|
|
102
|
+
const warningLogger = typeof clientLogger?.warn === "function" && !clientLogger.constructor?.name?.includes?.("NoOpLogger")
|
|
103
|
+
? clientLogger
|
|
104
|
+
: console;
|
|
105
|
+
if (count403 >= 3 || orderedErrors[orderedErrors.length - 1].startsWith("403:")) {
|
|
106
|
+
warningLogger.warn(`@smithy/util-waiter WARN - 403 status code encountered during waiter polling.`);
|
|
98
107
|
}
|
|
99
108
|
};
|
|
100
109
|
const createMessageFromResponse = (reason) => {
|
|
110
|
+
const status = reason?.$response?.statusCode ?? reason?.$metadata?.httpStatusCode;
|
|
101
111
|
if (reason?.$responseBodyText) {
|
|
102
|
-
return
|
|
112
|
+
return `${status ? status + ": " : ""}Deserialization error for body: ${reason.$responseBodyText}`;
|
|
103
113
|
}
|
|
104
|
-
if (
|
|
105
|
-
if (reason
|
|
106
|
-
return `${
|
|
114
|
+
if (status) {
|
|
115
|
+
if (reason?.$response || reason?.message) {
|
|
116
|
+
return `${status ?? "Unknown"}: ${reason?.message}`;
|
|
107
117
|
}
|
|
108
|
-
return `${
|
|
118
|
+
return `${status}: OK`;
|
|
109
119
|
}
|
|
110
120
|
return String(reason?.message ?? JSON.stringify(reason, getCircularReplacer()) ?? "Unknown");
|
|
111
121
|
};
|
|
122
|
+
const exponentialBackoffWithJitter = (minDelayMs, maxDelayMs, attempt, waitUntil) => {
|
|
123
|
+
const attemptCountCeiling = Math.log(maxDelayMs / minDelayMs) / Math.log(2) + 1;
|
|
124
|
+
if (attempt > attemptCountCeiling) {
|
|
125
|
+
return maxDelayMs;
|
|
126
|
+
}
|
|
127
|
+
const delay = minDelayMs * 2 ** (attempt - 1);
|
|
128
|
+
const capped = Math.min(delay, maxDelayMs);
|
|
129
|
+
const waitFor = randomInRange(minDelayMs, capped);
|
|
130
|
+
if (Date.now() + waitFor > waitUntil) {
|
|
131
|
+
const timeRemaining = waitUntil - Date.now();
|
|
132
|
+
return Math.max(0, timeRemaining - 500);
|
|
133
|
+
}
|
|
134
|
+
return waitFor;
|
|
135
|
+
};
|
|
136
|
+
const randomInRange = (min, max) => min + Math.random() * (max - min);
|
|
112
137
|
|
|
113
138
|
const validateWaiterOptions = (options) => {
|
|
114
139
|
if (options.maxWaitTime <= 0) {
|
|
@@ -1,39 +1,27 @@
|
|
|
1
1
|
import { getCircularReplacer } from "./circularReplacer";
|
|
2
2
|
import { sleep } from "./utils/sleep";
|
|
3
3
|
import { WaiterState } from "./waiter";
|
|
4
|
-
const exponentialBackoffWithJitter = (minDelay, maxDelay, attemptCeiling, attempt) => {
|
|
5
|
-
if (attempt > attemptCeiling)
|
|
6
|
-
return maxDelay;
|
|
7
|
-
const delay = minDelay * 2 ** (attempt - 1);
|
|
8
|
-
return randomInRange(minDelay, delay);
|
|
9
|
-
};
|
|
10
|
-
const randomInRange = (min, max) => min + Math.random() * (max - min);
|
|
11
4
|
export const runPolling = async ({ minDelay, maxDelay, maxWaitTime, abortController, client, abortSignal }, input, acceptorChecks) => {
|
|
12
5
|
const observedResponses = {};
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
-
const message = createMessageFromResponse(reason);
|
|
16
|
-
observedResponses[message] |= 0;
|
|
17
|
-
observedResponses[message] += 1;
|
|
18
|
-
}
|
|
19
|
-
if (state !== WaiterState.RETRY) {
|
|
20
|
-
return { state, reason, observedResponses };
|
|
21
|
-
}
|
|
22
|
-
let currentAttempt = 1;
|
|
6
|
+
const [minDelayMs, maxDelayMs] = [minDelay * 1000, maxDelay * 1000];
|
|
7
|
+
let currentAttempt = 0;
|
|
23
8
|
const waitUntil = Date.now() + maxWaitTime * 1000;
|
|
24
|
-
const
|
|
9
|
+
const warn403Time = Date.now() + 60_000;
|
|
10
|
+
let didWarn403 = false;
|
|
25
11
|
while (true) {
|
|
26
|
-
if (
|
|
27
|
-
const
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
12
|
+
if (currentAttempt > 0) {
|
|
13
|
+
const delayMs = exponentialBackoffWithJitter(minDelayMs, maxDelayMs, currentAttempt, waitUntil);
|
|
14
|
+
if (abortController?.signal?.aborted || abortSignal?.aborted) {
|
|
15
|
+
const message = "AbortController signal aborted.";
|
|
16
|
+
observedResponses[message] |= 0;
|
|
17
|
+
observedResponses[message] += 1;
|
|
18
|
+
return { state: WaiterState.ABORTED, observedResponses };
|
|
19
|
+
}
|
|
20
|
+
if (Date.now() + delayMs > waitUntil) {
|
|
21
|
+
return { state: WaiterState.TIMEOUT, observedResponses };
|
|
22
|
+
}
|
|
23
|
+
await sleep(delayMs / 1_000);
|
|
31
24
|
}
|
|
32
|
-
const delay = exponentialBackoffWithJitter(minDelay, maxDelay, attemptCeiling, currentAttempt);
|
|
33
|
-
if (Date.now() + delay * 1000 > waitUntil) {
|
|
34
|
-
return { state: WaiterState.TIMEOUT, observedResponses };
|
|
35
|
-
}
|
|
36
|
-
await sleep(delay);
|
|
37
25
|
const { state, reason } = await acceptorChecks(client, input);
|
|
38
26
|
if (reason) {
|
|
39
27
|
const message = createMessageFromResponse(reason);
|
|
@@ -41,20 +29,59 @@ export const runPolling = async ({ minDelay, maxDelay, maxWaitTime, abortControl
|
|
|
41
29
|
observedResponses[message] += 1;
|
|
42
30
|
}
|
|
43
31
|
if (state !== WaiterState.RETRY) {
|
|
44
|
-
return { state, reason, observedResponses };
|
|
32
|
+
return { state, reason, final: reason, observedResponses };
|
|
45
33
|
}
|
|
46
34
|
currentAttempt += 1;
|
|
35
|
+
if (!didWarn403 && Date.now() >= warn403Time) {
|
|
36
|
+
checkWarn403(observedResponses, client);
|
|
37
|
+
didWarn403 = true;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
const checkWarn403 = (observedResponses = {}, client) => {
|
|
42
|
+
const orderedErrors = Object.keys(observedResponses);
|
|
43
|
+
let maxCount = 0;
|
|
44
|
+
let count403 = 0;
|
|
45
|
+
for (const response of orderedErrors) {
|
|
46
|
+
const n = observedResponses[response] | 0;
|
|
47
|
+
maxCount = Math.max(n, maxCount);
|
|
48
|
+
if (response.startsWith("403:")) {
|
|
49
|
+
count403 += n;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
const clientLogger = client?.config?.logger;
|
|
53
|
+
const warningLogger = typeof clientLogger?.warn === "function" && !clientLogger.constructor?.name?.includes?.("NoOpLogger")
|
|
54
|
+
? clientLogger
|
|
55
|
+
: console;
|
|
56
|
+
if (count403 >= 3 || orderedErrors[orderedErrors.length - 1].startsWith("403:")) {
|
|
57
|
+
warningLogger.warn(`@smithy/util-waiter WARN - 403 status code encountered during waiter polling.`);
|
|
47
58
|
}
|
|
48
59
|
};
|
|
49
60
|
const createMessageFromResponse = (reason) => {
|
|
61
|
+
const status = reason?.$response?.statusCode ?? reason?.$metadata?.httpStatusCode;
|
|
50
62
|
if (reason?.$responseBodyText) {
|
|
51
|
-
return
|
|
63
|
+
return `${status ? status + ": " : ""}Deserialization error for body: ${reason.$responseBodyText}`;
|
|
52
64
|
}
|
|
53
|
-
if (
|
|
54
|
-
if (reason
|
|
55
|
-
return `${
|
|
65
|
+
if (status) {
|
|
66
|
+
if (reason?.$response || reason?.message) {
|
|
67
|
+
return `${status ?? "Unknown"}: ${reason?.message}`;
|
|
56
68
|
}
|
|
57
|
-
return `${
|
|
69
|
+
return `${status}: OK`;
|
|
58
70
|
}
|
|
59
71
|
return String(reason?.message ?? JSON.stringify(reason, getCircularReplacer()) ?? "Unknown");
|
|
60
72
|
};
|
|
73
|
+
const exponentialBackoffWithJitter = (minDelayMs, maxDelayMs, attempt, waitUntil) => {
|
|
74
|
+
const attemptCountCeiling = Math.log(maxDelayMs / minDelayMs) / Math.log(2) + 1;
|
|
75
|
+
if (attempt > attemptCountCeiling) {
|
|
76
|
+
return maxDelayMs;
|
|
77
|
+
}
|
|
78
|
+
const delay = minDelayMs * 2 ** (attempt - 1);
|
|
79
|
+
const capped = Math.min(delay, maxDelayMs);
|
|
80
|
+
const waitFor = randomInRange(minDelayMs, capped);
|
|
81
|
+
if (Date.now() + waitFor > waitUntil) {
|
|
82
|
+
const timeRemaining = waitUntil - Date.now();
|
|
83
|
+
return Math.max(0, timeRemaining - 500);
|
|
84
|
+
}
|
|
85
|
+
return waitFor;
|
|
86
|
+
};
|
|
87
|
+
const randomInRange = (min, max) => min + Math.random() * (max - min);
|
|
@@ -8,4 +8,4 @@ import type { WaiterOptions, WaiterResult } from "./waiter";
|
|
|
8
8
|
*
|
|
9
9
|
* @internal
|
|
10
10
|
*/
|
|
11
|
-
export declare const createWaiter: <Client, Input>(options: WaiterOptions<Client>, input: Input, acceptorChecks: (client: Client, input: Input) => Promise<WaiterResult
|
|
11
|
+
export declare const createWaiter: <Client, Input, Reason = any>(options: WaiterOptions<Client>, input: Input, acceptorChecks: (client: Client, input: Input) => Promise<WaiterResult<Reason>>) => Promise<WaiterResult<Reason>>;
|
|
@@ -2,9 +2,10 @@ import type { WaiterOptions, WaiterResult } from "./waiter";
|
|
|
2
2
|
/**
|
|
3
3
|
* Function that runs polling as part of waiters. This will make one inital attempt and then
|
|
4
4
|
* subsequent attempts with an increasing delay.
|
|
5
|
+
*
|
|
5
6
|
* @param params - options passed to the waiter.
|
|
6
7
|
* @param client - AWS SDK Client
|
|
7
8
|
* @param input - client input
|
|
8
9
|
* @param acceptorChecks - function that checks the acceptor states on each poll.
|
|
9
10
|
*/
|
|
10
|
-
export declare const runPolling: <Client, Input>({ minDelay, maxDelay, maxWaitTime, abortController, client, abortSignal }: WaiterOptions<Client>, input: Input, acceptorChecks: (client: Client, input: Input) => Promise<WaiterResult
|
|
11
|
+
export declare const runPolling: <Client, Input, Reason = any>({ minDelay, maxDelay, maxWaitTime, abortController, client, abortSignal }: WaiterOptions<Client>, input: Input, acceptorChecks: (client: Client, input: Input) => Promise<WaiterResult<Reason>>) => Promise<WaiterResult<Reason>>;
|
|
@@ -1,9 +1,5 @@
|
|
|
1
|
-
import type { WaiterConfiguration
|
|
2
|
-
|
|
3
|
-
* @internal
|
|
4
|
-
*/
|
|
5
|
-
export interface WaiterConfiguration<T> extends WaiterConfiguration__<T> {
|
|
6
|
-
}
|
|
1
|
+
import type { WaiterConfiguration } from "@smithy/types";
|
|
2
|
+
export { WaiterConfiguration };
|
|
7
3
|
/**
|
|
8
4
|
* @internal
|
|
9
5
|
*/
|
|
@@ -16,7 +12,7 @@ export declare const waiterServiceDefaults: {
|
|
|
16
12
|
*/
|
|
17
13
|
export type WaiterOptions<Client> = WaiterConfiguration<Client> & Required<Pick<WaiterConfiguration<Client>, "minDelay" | "maxDelay">>;
|
|
18
14
|
/**
|
|
19
|
-
* @
|
|
15
|
+
* @public
|
|
20
16
|
*/
|
|
21
17
|
export declare enum WaiterState {
|
|
22
18
|
ABORTED = "ABORTED",
|
|
@@ -26,14 +22,19 @@ export declare enum WaiterState {
|
|
|
26
22
|
TIMEOUT = "TIMEOUT"
|
|
27
23
|
}
|
|
28
24
|
/**
|
|
29
|
-
* @
|
|
25
|
+
* @public
|
|
30
26
|
*/
|
|
31
|
-
export type WaiterResult = {
|
|
27
|
+
export type WaiterResult<R = any> = {
|
|
32
28
|
state: WaiterState;
|
|
33
29
|
/**
|
|
34
|
-
*
|
|
30
|
+
* @deprecated because this was untyped as `any`, new code should use the field 'final',
|
|
31
|
+
* which is the same value, but typed.
|
|
35
32
|
*/
|
|
36
33
|
reason?: any;
|
|
34
|
+
/**
|
|
35
|
+
* (optional) Indicates a reason for why a waiter has reached its state.
|
|
36
|
+
*/
|
|
37
|
+
final?: R;
|
|
37
38
|
/**
|
|
38
39
|
* Responses observed by the waiter during its polling, where the value
|
|
39
40
|
* is the count.
|
|
@@ -41,9 +42,8 @@ export type WaiterResult = {
|
|
|
41
42
|
observedResponses?: Record<string, number>;
|
|
42
43
|
};
|
|
43
44
|
/**
|
|
44
|
-
* @internal
|
|
45
|
-
*
|
|
46
45
|
* Handles and throws exceptions resulting from the waiterResult
|
|
46
|
+
* @internal
|
|
47
47
|
* @param result - WaiterResult
|
|
48
48
|
*/
|
|
49
|
-
export declare const checkExceptions: (result: WaiterResult) => WaiterResult
|
|
49
|
+
export declare const checkExceptions: <R>(result: WaiterResult<R>) => WaiterResult<R>;
|
|
@@ -2,6 +2,14 @@
|
|
|
2
2
|
|
|
3
3
|
Note: Due to some last quick changes on v4, detail of v4.5.3 & v4.5.4 are not updated here. v4.5.4x is the last tag of v4 in github repository. I'm extremely sorry for the confusion
|
|
4
4
|
|
|
5
|
+
**5.7.2 / 2026-04-25**
|
|
6
|
+
- allow numerical external entity for backward compatibility
|
|
7
|
+
- fix #705: attributesGroupName working with preserveOrder
|
|
8
|
+
- fix #817: stackoverflow when tag expression is very long
|
|
9
|
+
|
|
10
|
+
**5.7.1 / 2026-04-20**
|
|
11
|
+
- fix typo in CJS typing file
|
|
12
|
+
|
|
5
13
|
**5.7.0 / 2026-04-17**
|
|
6
14
|
- Use `@nodable/entities` v2.1.0
|
|
7
15
|
- breaking changes
|