@cdklabs/cdk-ecs-codedeploy 0.0.436 → 0.0.438

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.
Files changed (177) hide show
  1. package/.jsii +3 -3
  2. package/.jsii.tabl.json +1 -1
  3. package/lib/api-canary/index.js +1 -1
  4. package/lib/ecs-appspec/index.js +1 -1
  5. package/lib/ecs-deployment/index.js +1 -1
  6. package/lib/ecs-patterns/application-load-balanced-codedeployed-fargate-service.js +1 -1
  7. package/node_modules/@aws-sdk/client-codedeploy/package.json +34 -34
  8. package/node_modules/@aws-sdk/core/dist-cjs/index.js +69 -50
  9. package/node_modules/@aws-sdk/core/dist-cjs/submodules/client/index.js +17 -0
  10. package/node_modules/@aws-sdk/core/dist-cjs/submodules/protocols/index.js +52 -50
  11. package/node_modules/@aws-sdk/core/dist-es/submodules/client/index.js +1 -0
  12. package/node_modules/@aws-sdk/core/dist-es/submodules/client/longPollMiddleware.js +15 -0
  13. package/node_modules/@aws-sdk/core/dist-es/submodules/protocols/ProtocolLib.js +11 -10
  14. package/node_modules/@aws-sdk/core/dist-es/submodules/protocols/UnionSerde.js +4 -1
  15. package/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/AwsJsonRpcProtocol.js +4 -5
  16. package/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/AwsRestJsonProtocol.js +2 -1
  17. package/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/JsonShapeSerializer.js +9 -7
  18. package/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/parseJsonBody.js +17 -17
  19. package/node_modules/@aws-sdk/core/dist-es/submodules/protocols/query/AwsQueryProtocol.js +3 -8
  20. package/node_modules/@aws-sdk/core/dist-es/submodules/protocols/xml/AwsRestXmlProtocol.js +2 -1
  21. package/node_modules/@aws-sdk/core/dist-types/submodules/client/index.d.ts +1 -0
  22. package/node_modules/@aws-sdk/core/dist-types/submodules/client/longPollMiddleware.d.ts +14 -0
  23. package/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/JsonShapeSerializer.d.ts +2 -2
  24. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/index.d.ts +1 -0
  25. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/longPollMiddleware.d.ts +15 -0
  26. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/JsonShapeSerializer.d.ts +1 -1
  27. package/node_modules/@aws-sdk/core/package.json +11 -11
  28. package/node_modules/@aws-sdk/credential-provider-env/package.json +5 -5
  29. package/node_modules/@aws-sdk/credential-provider-http/package.json +10 -10
  30. package/node_modules/@aws-sdk/credential-provider-ini/package.json +14 -14
  31. package/node_modules/@aws-sdk/credential-provider-login/package.json +8 -8
  32. package/node_modules/@aws-sdk/credential-provider-node/package.json +12 -12
  33. package/node_modules/@aws-sdk/credential-provider-process/package.json +6 -6
  34. package/node_modules/@aws-sdk/credential-provider-sso/package.json +8 -8
  35. package/node_modules/@aws-sdk/credential-provider-web-identity/package.json +7 -7
  36. package/node_modules/@aws-sdk/middleware-host-header/package.json +4 -4
  37. package/node_modules/@aws-sdk/middleware-logger/package.json +3 -3
  38. package/node_modules/@aws-sdk/middleware-recursion-detection/package.json +4 -4
  39. package/node_modules/@aws-sdk/middleware-user-agent/package.json +8 -8
  40. package/node_modules/@aws-sdk/nested-clients/package.json +32 -32
  41. package/node_modules/@aws-sdk/region-config-resolver/package.json +5 -5
  42. package/node_modules/@aws-sdk/token-providers/package.json +7 -7
  43. package/node_modules/@aws-sdk/types/package.json +2 -2
  44. package/node_modules/@aws-sdk/util-endpoints/package.json +5 -5
  45. package/node_modules/@aws-sdk/util-user-agent-browser/package.json +3 -3
  46. package/node_modules/@aws-sdk/util-user-agent-node/package.json +5 -5
  47. package/node_modules/@aws-sdk/xml-builder/package.json +2 -2
  48. package/node_modules/@smithy/config-resolver/package.json +5 -5
  49. package/node_modules/@smithy/core/dist-cjs/index.js +2 -1
  50. package/node_modules/@smithy/core/dist-cjs/submodules/cbor/index.js +32 -14
  51. package/node_modules/@smithy/core/dist-cjs/submodules/endpoints/index.js +2 -2
  52. package/node_modules/@smithy/core/dist-cjs/submodules/event-streams/index.js +16 -8
  53. package/node_modules/@smithy/core/dist-cjs/submodules/protocols/index.js +17 -10
  54. package/node_modules/@smithy/core/dist-cjs/submodules/schema/index.js +6 -1
  55. package/node_modules/@smithy/core/dist-cjs/submodules/serde/index.js +6 -3
  56. package/node_modules/@smithy/core/dist-cjs/util-identity-and-auth/DefaultIdentityProviderConfig.js +2 -1
  57. package/node_modules/@smithy/core/dist-es/submodules/cbor/CborCodec.js +23 -11
  58. package/node_modules/@smithy/core/dist-es/submodules/cbor/parseCborBody.js +9 -3
  59. package/node_modules/@smithy/core/dist-es/submodules/endpoints/toEndpointV1.js +2 -2
  60. package/node_modules/@smithy/core/dist-es/submodules/event-streams/EventStreamSerde.js +16 -8
  61. package/node_modules/@smithy/core/dist-es/submodules/protocols/HttpBindingProtocol.js +9 -4
  62. package/node_modules/@smithy/core/dist-es/submodules/protocols/HttpProtocol.js +8 -6
  63. package/node_modules/@smithy/core/dist-es/submodules/schema/TypeRegistry.js +6 -1
  64. package/node_modules/@smithy/core/dist-es/submodules/serde/parse-utils.js +6 -3
  65. package/node_modules/@smithy/core/dist-es/util-identity-and-auth/DefaultIdentityProviderConfig.js +2 -1
  66. package/node_modules/@smithy/core/dist-types/submodules/schema/TypeRegistry.d.ts +1 -1
  67. package/node_modules/@smithy/core/package.json +7 -7
  68. package/node_modules/@smithy/credential-provider-imds/package.json +5 -5
  69. package/node_modules/@smithy/fetch-http-handler/package.json +5 -5
  70. package/node_modules/@smithy/hash-node/package.json +2 -2
  71. package/node_modules/@smithy/invalid-dependency/package.json +2 -2
  72. package/node_modules/@smithy/middleware-content-length/package.json +3 -3
  73. package/node_modules/@smithy/middleware-endpoint/package.json +8 -8
  74. package/node_modules/@smithy/middleware-retry/package.json +9 -9
  75. package/node_modules/@smithy/middleware-serde/package.json +4 -4
  76. package/node_modules/@smithy/middleware-stack/package.json +2 -2
  77. package/node_modules/@smithy/node-config-provider/package.json +4 -4
  78. package/node_modules/@smithy/node-http-handler/dist-cjs/index.js +191 -96
  79. package/node_modules/@smithy/node-http-handler/dist-es/http2/ClientHttp2SessionRef.js +45 -0
  80. package/node_modules/@smithy/node-http-handler/dist-es/node-http2-connection-manager.js +71 -35
  81. package/node_modules/@smithy/node-http-handler/dist-es/node-http2-connection-pool.js +32 -18
  82. package/node_modules/@smithy/node-http-handler/dist-es/node-http2-handler.js +44 -43
  83. package/node_modules/@smithy/node-http-handler/dist-types/http2/ClientHttp2SessionRef.d.ts +42 -0
  84. package/node_modules/@smithy/node-http-handler/dist-types/node-http2-connection-manager.d.ts +34 -14
  85. package/node_modules/@smithy/node-http-handler/dist-types/node-http2-connection-pool.d.ts +32 -8
  86. package/node_modules/@smithy/node-http-handler/dist-types/node-http2-handler.d.ts +14 -6
  87. package/node_modules/@smithy/node-http-handler/package.json +5 -5
  88. package/node_modules/@smithy/property-provider/package.json +2 -2
  89. package/node_modules/@smithy/protocol-http/package.json +2 -2
  90. package/node_modules/@smithy/querystring-builder/package.json +2 -2
  91. package/node_modules/@smithy/querystring-parser/package.json +2 -2
  92. package/node_modules/@smithy/service-error-classification/dist-cjs/index.js +5 -0
  93. package/node_modules/@smithy/service-error-classification/dist-es/index.js +4 -0
  94. package/node_modules/@smithy/service-error-classification/dist-types/index.d.ts +6 -0
  95. package/node_modules/@smithy/service-error-classification/package.json +2 -2
  96. package/node_modules/@smithy/shared-ini-file-loader/package.json +2 -2
  97. package/node_modules/@smithy/signature-v4/dist-cjs/index.js +11 -5
  98. package/node_modules/@smithy/signature-v4/dist-es/SignatureV4.js +11 -5
  99. package/node_modules/@smithy/signature-v4/dist-types/SignatureV4.d.ts +3 -3
  100. package/node_modules/@smithy/signature-v4/package.json +4 -4
  101. package/node_modules/@smithy/smithy-client/dist-cjs/index.js +8 -1
  102. package/node_modules/@smithy/smithy-client/dist-es/command.js +8 -1
  103. package/node_modules/@smithy/smithy-client/package.json +7 -7
  104. package/node_modules/@smithy/types/dist-types/connection/config.d.ts +5 -0
  105. package/node_modules/@smithy/types/dist-types/signature.d.ts +20 -3
  106. package/node_modules/@smithy/types/package.json +1 -1
  107. package/node_modules/@smithy/url-parser/package.json +3 -3
  108. package/node_modules/@smithy/util-defaults-mode-browser/package.json +4 -4
  109. package/node_modules/@smithy/util-defaults-mode-node/package.json +7 -7
  110. package/node_modules/@smithy/util-endpoints/dist-cjs/index.js +212 -111
  111. package/node_modules/@smithy/util-endpoints/dist-es/bdd/BinaryDecisionDiagram.js +15 -0
  112. package/node_modules/@smithy/util-endpoints/dist-es/decideEndpoint.js +42 -0
  113. package/node_modules/@smithy/util-endpoints/dist-es/index.js +2 -0
  114. package/node_modules/@smithy/util-endpoints/dist-es/lib/coalesce.js +8 -0
  115. package/node_modules/@smithy/util-endpoints/dist-es/lib/getAttr.js +2 -1
  116. package/node_modules/@smithy/util-endpoints/dist-es/lib/index.js +3 -0
  117. package/node_modules/@smithy/util-endpoints/dist-es/lib/ite.js +3 -0
  118. package/node_modules/@smithy/util-endpoints/dist-es/lib/split.js +13 -0
  119. package/node_modules/@smithy/util-endpoints/dist-es/lib/substring.js +1 -1
  120. package/node_modules/@smithy/util-endpoints/dist-es/resolveEndpoint.js +8 -13
  121. package/node_modules/@smithy/util-endpoints/dist-es/utils/endpointFunctions.js +4 -1
  122. package/node_modules/@smithy/util-endpoints/dist-es/utils/evaluateCondition.js +9 -7
  123. package/node_modules/@smithy/util-endpoints/dist-es/utils/evaluateConditions.js +12 -8
  124. package/node_modules/@smithy/util-endpoints/dist-es/utils/evaluateEndpointRule.js +14 -13
  125. package/node_modules/@smithy/util-endpoints/dist-es/utils/evaluateErrorRule.js +7 -4
  126. package/node_modules/@smithy/util-endpoints/dist-es/utils/evaluateExpression.js +22 -5
  127. package/node_modules/@smithy/util-endpoints/dist-es/utils/evaluateRules.js +4 -4
  128. package/node_modules/@smithy/util-endpoints/dist-es/utils/evaluateTemplate.js +3 -6
  129. package/node_modules/@smithy/util-endpoints/dist-es/utils/getEndpointHeaders.js +5 -5
  130. package/node_modules/@smithy/util-endpoints/dist-es/utils/getEndpointProperties.js +4 -4
  131. package/node_modules/@smithy/util-endpoints/dist-es/utils/getReferenceValue.js +1 -5
  132. package/node_modules/@smithy/util-endpoints/dist-types/bdd/BinaryDecisionDiagram.d.ts +22 -0
  133. package/node_modules/@smithy/util-endpoints/dist-types/decideEndpoint.d.ts +7 -0
  134. package/node_modules/@smithy/util-endpoints/dist-types/index.d.ts +2 -0
  135. package/node_modules/@smithy/util-endpoints/dist-types/lib/coalesce.d.ts +7 -0
  136. package/node_modules/@smithy/util-endpoints/dist-types/lib/index.d.ts +3 -0
  137. package/node_modules/@smithy/util-endpoints/dist-types/lib/ite.d.ts +6 -0
  138. package/node_modules/@smithy/util-endpoints/dist-types/lib/split.d.ts +11 -0
  139. package/node_modules/@smithy/util-endpoints/dist-types/types/shared.d.ts +3 -3
  140. package/node_modules/@smithy/util-endpoints/dist-types/utils/endpointFunctions.d.ts +2 -11
  141. package/node_modules/@smithy/util-endpoints/dist-types/utils/evaluateCondition.d.ts +6 -3
  142. package/node_modules/@smithy/util-endpoints/dist-types/utils/evaluateConditions.d.ts +3 -3
  143. package/node_modules/@smithy/util-endpoints/dist-types/utils/getEndpointHeaders.d.ts +1 -1
  144. package/node_modules/@smithy/util-endpoints/dist-types/utils/getEndpointProperties.d.ts +2 -2
  145. package/node_modules/@smithy/util-endpoints/dist-types/utils/getReferenceValue.d.ts +3 -1
  146. package/node_modules/@smithy/util-endpoints/package.json +3 -3
  147. package/node_modules/@smithy/util-middleware/package.json +2 -2
  148. package/node_modules/@smithy/util-retry/dist-cjs/index.js +6 -0
  149. package/node_modules/@smithy/util-retry/dist-es/AdaptiveRetryStrategy.js +3 -0
  150. package/node_modules/@smithy/util-retry/dist-es/StandardRetryStrategy.js +3 -0
  151. package/node_modules/@smithy/util-retry/dist-types/AdaptiveRetryStrategy.d.ts +5 -0
  152. package/node_modules/@smithy/util-retry/dist-types/StandardRetryStrategy.d.ts +5 -0
  153. package/node_modules/@smithy/util-retry/package.json +3 -3
  154. package/node_modules/@smithy/util-stream/package.json +4 -4
  155. package/node_modules/@smithy/util-waiter/package.json +3 -3
  156. package/node_modules/fast-xml-builder/package.json +1 -1
  157. package/node_modules/fast-xml-builder/src/fxb.js +6 -2
  158. package/node_modules/fast-xml-builder/src/orderedJs2Xml.js +16 -2
  159. package/node_modules/path-expression-matcher/README.md +214 -62
  160. package/node_modules/path-expression-matcher/lib/pem.cjs +1 -1
  161. package/node_modules/path-expression-matcher/lib/pem.d.cts +111 -0
  162. package/node_modules/path-expression-matcher/lib/pem.min.js +1 -1
  163. package/node_modules/path-expression-matcher/lib/pem.min.js.map +1 -1
  164. package/node_modules/path-expression-matcher/package.json +1 -1
  165. package/node_modules/path-expression-matcher/src/Expression.js +2 -2
  166. package/node_modules/path-expression-matcher/src/ExpressionSet.js +209 -0
  167. package/node_modules/path-expression-matcher/src/Matcher.js +235 -177
  168. package/node_modules/path-expression-matcher/src/index.d.ts +199 -194
  169. package/node_modules/path-expression-matcher/src/index.js +3 -2
  170. package/node_modules/strnum/package.json +1 -1
  171. package/package.json +6 -6
  172. package/node_modules/strnum/.github/SECURITY.md +0 -5
  173. package/node_modules/strnum/.vscode/launch.json +0 -25
  174. package/node_modules/strnum/algo.stflow +0 -84
  175. package/node_modules/strnum/tests/infinity_test.js +0 -18
  176. package/node_modules/strnum/tests/strnum_test.js +0 -175
  177. package/node_modules/strnum/tests/temp.js +0 -8
@@ -1,14 +1,16 @@
1
1
  import { debugId, toDebugString } from "../debug";
2
2
  import { EndpointError } from "../types";
3
3
  import { callFunction } from "./callFunction";
4
- export const evaluateCondition = ({ assign, ...fnArgs }, options) => {
4
+ export const evaluateCondition = (condition, options) => {
5
+ const { assign } = condition;
5
6
  if (assign && assign in options.referenceRecord) {
6
7
  throw new EndpointError(`'${assign}' is already defined in Reference Record.`);
7
8
  }
8
- const value = callFunction(fnArgs, options);
9
- options.logger?.debug?.(`${debugId} evaluateCondition: ${toDebugString(fnArgs)} = ${toDebugString(value)}`);
10
- return {
11
- result: value === "" ? true : !!value,
12
- ...(assign != null && { toAssign: { name: assign, value } }),
13
- };
9
+ const value = callFunction(condition, options);
10
+ options.logger?.debug?.(`${debugId} evaluateCondition: ${toDebugString(condition)} = ${toDebugString(value)}`);
11
+ const result = value === "" ? true : !!value;
12
+ if (assign != null) {
13
+ return { result, toAssign: { name: assign, value } };
14
+ }
15
+ return { result };
14
16
  };
@@ -2,21 +2,25 @@ import { debugId, toDebugString } from "../debug";
2
2
  import { evaluateCondition } from "./evaluateCondition";
3
3
  export const evaluateConditions = (conditions = [], options) => {
4
4
  const conditionsReferenceRecord = {};
5
+ const conditionOptions = {
6
+ ...options,
7
+ referenceRecord: { ...options.referenceRecord },
8
+ };
9
+ let didAssign = false;
5
10
  for (const condition of conditions) {
6
- const { result, toAssign } = evaluateCondition(condition, {
7
- ...options,
8
- referenceRecord: {
9
- ...options.referenceRecord,
10
- ...conditionsReferenceRecord,
11
- },
12
- });
11
+ const { result, toAssign } = evaluateCondition(condition, conditionOptions);
13
12
  if (!result) {
14
13
  return { result };
15
14
  }
16
15
  if (toAssign) {
16
+ didAssign = true;
17
17
  conditionsReferenceRecord[toAssign.name] = toAssign.value;
18
+ conditionOptions.referenceRecord[toAssign.name] = toAssign.value;
18
19
  options.logger?.debug?.(`${debugId} assign: ${toAssign.name} := ${toDebugString(toAssign.value)}`);
19
20
  }
20
21
  }
21
- return { result: true, referenceRecord: conditionsReferenceRecord };
22
+ if (didAssign) {
23
+ return { result: true, referenceRecord: conditionsReferenceRecord };
24
+ }
25
+ return { result: true };
22
26
  };
@@ -9,19 +9,20 @@ export const evaluateEndpointRule = (endpointRule, options) => {
9
9
  if (!result) {
10
10
  return;
11
11
  }
12
- const endpointRuleOptions = {
13
- ...options,
14
- referenceRecord: { ...options.referenceRecord, ...referenceRecord },
15
- };
12
+ const endpointRuleOptions = referenceRecord
13
+ ? {
14
+ ...options,
15
+ referenceRecord: { ...options.referenceRecord, ...referenceRecord },
16
+ }
17
+ : options;
16
18
  const { url, properties, headers } = endpoint;
17
19
  options.logger?.debug?.(`${debugId} Resolving endpoint from template: ${toDebugString(endpoint)}`);
18
- return {
19
- ...(headers != undefined && {
20
- headers: getEndpointHeaders(headers, endpointRuleOptions),
21
- }),
22
- ...(properties != undefined && {
23
- properties: getEndpointProperties(properties, endpointRuleOptions),
24
- }),
25
- url: getEndpointUrl(url, endpointRuleOptions),
26
- };
20
+ const endpointToReturn = { url: getEndpointUrl(url, endpointRuleOptions) };
21
+ if (headers != null) {
22
+ endpointToReturn.headers = getEndpointHeaders(headers, endpointRuleOptions);
23
+ }
24
+ if (properties != null) {
25
+ endpointToReturn.properties = getEndpointProperties(properties, endpointRuleOptions);
26
+ }
27
+ return endpointToReturn;
27
28
  };
@@ -7,8 +7,11 @@ export const evaluateErrorRule = (errorRule, options) => {
7
7
  if (!result) {
8
8
  return;
9
9
  }
10
- throw new EndpointError(evaluateExpression(error, "Error", {
11
- ...options,
12
- referenceRecord: { ...options.referenceRecord, ...referenceRecord },
13
- }));
10
+ const errorRuleOptions = referenceRecord
11
+ ? {
12
+ ...options,
13
+ referenceRecord: { ...options.referenceRecord, ...referenceRecord },
14
+ }
15
+ : options;
16
+ throw new EndpointError(evaluateExpression(error, "Error", errorRuleOptions));
14
17
  };
@@ -16,12 +16,29 @@ export const evaluateExpression = (obj, keyName, options) => {
16
16
  throw new EndpointError(`'${keyName}': ${String(obj)} is not a string, function or reference.`);
17
17
  };
18
18
  export const callFunction = ({ fn, argv }, options) => {
19
- const evaluatedArgs = argv.map((arg) => ["boolean", "number"].includes(typeof arg) ? arg : group.evaluateExpression(arg, "arg", options));
20
- const fnSegments = fn.split(".");
21
- if (fnSegments[0] in customEndpointFunctions && fnSegments[1] != null) {
22
- return customEndpointFunctions[fnSegments[0]][fnSegments[1]](...evaluatedArgs);
19
+ const evaluatedArgs = Array(argv.length);
20
+ for (let i = 0; i < evaluatedArgs.length; ++i) {
21
+ const arg = argv[i];
22
+ if (typeof arg === "boolean" || typeof arg === "number") {
23
+ evaluatedArgs[i] = arg;
24
+ }
25
+ else {
26
+ evaluatedArgs[i] = group.evaluateExpression(arg, "arg", options);
27
+ }
23
28
  }
24
- return endpointFunctions[fn](...evaluatedArgs);
29
+ const namespaceSeparatorIndex = fn.indexOf(".");
30
+ if (namespaceSeparatorIndex !== -1) {
31
+ const namespaceFunctions = customEndpointFunctions[fn.slice(0, namespaceSeparatorIndex)];
32
+ const customFunction = namespaceFunctions?.[fn.slice(namespaceSeparatorIndex + 1)];
33
+ if (typeof customFunction === "function") {
34
+ return customFunction(...evaluatedArgs);
35
+ }
36
+ }
37
+ const callable = endpointFunctions[fn];
38
+ if (typeof callable === "function") {
39
+ return callable(...evaluatedArgs);
40
+ }
41
+ throw new Error(`function ${fn} not loaded in endpointFunctions.`);
25
42
  };
26
43
  export const group = {
27
44
  evaluateExpression,
@@ -31,10 +31,10 @@ export const evaluateTreeRule = (treeRule, options) => {
31
31
  if (!result) {
32
32
  return;
33
33
  }
34
- return group.evaluateRules(rules, {
35
- ...options,
36
- referenceRecord: { ...options.referenceRecord, ...referenceRecord },
37
- });
34
+ const treeRuleOptions = referenceRecord
35
+ ? { ...options, referenceRecord: { ...options.referenceRecord, ...referenceRecord } }
36
+ : options;
37
+ return group.evaluateRules(rules, treeRuleOptions);
38
38
  };
39
39
  export const group = {
40
40
  evaluateRules,
@@ -1,10 +1,7 @@
1
1
  import { getAttr } from "../lib";
2
2
  export const evaluateTemplate = (template, options) => {
3
3
  const evaluatedTemplateArr = [];
4
- const templateContext = {
5
- ...options.endpointParams,
6
- ...options.referenceRecord,
7
- };
4
+ const { referenceRecord, endpointParams } = options;
8
5
  let currentIndex = 0;
9
6
  while (currentIndex < template.length) {
10
7
  const openingBraceIndex = template.indexOf("{", currentIndex);
@@ -25,10 +22,10 @@ export const evaluateTemplate = (template, options) => {
25
22
  const parameterName = template.substring(openingBraceIndex + 1, closingBraceIndex);
26
23
  if (parameterName.includes("#")) {
27
24
  const [refName, attrName] = parameterName.split("#");
28
- evaluatedTemplateArr.push(getAttr(templateContext[refName], attrName));
25
+ evaluatedTemplateArr.push(getAttr((referenceRecord[refName] ?? endpointParams[refName]), attrName));
29
26
  }
30
27
  else {
31
- evaluatedTemplateArr.push(templateContext[parameterName]);
28
+ evaluatedTemplateArr.push((referenceRecord[parameterName] ?? endpointParams[parameterName]));
32
29
  }
33
30
  currentIndex = closingBraceIndex + 1;
34
31
  }
@@ -1,12 +1,12 @@
1
1
  import { EndpointError } from "../types";
2
2
  import { evaluateExpression } from "./evaluateExpression";
3
- export const getEndpointHeaders = (headers, options) => Object.entries(headers).reduce((acc, [headerKey, headerVal]) => ({
4
- ...acc,
5
- [headerKey]: headerVal.map((headerValEntry) => {
3
+ export const getEndpointHeaders = (headers, options) => Object.entries(headers ?? {}).reduce((acc, [headerKey, headerVal]) => {
4
+ acc[headerKey] = headerVal.map((headerValEntry) => {
6
5
  const processedExpr = evaluateExpression(headerValEntry, "Header value entry", options);
7
6
  if (typeof processedExpr !== "string") {
8
7
  throw new EndpointError(`Header '${headerKey}' value '${processedExpr}' is not a string`);
9
8
  }
10
9
  return processedExpr;
11
- }),
12
- }), {});
10
+ });
11
+ return acc;
12
+ }, {});
@@ -1,9 +1,9 @@
1
1
  import { EndpointError } from "../types";
2
2
  import { evaluateTemplate } from "./evaluateTemplate";
3
- export const getEndpointProperties = (properties, options) => Object.entries(properties).reduce((acc, [propertyKey, propertyVal]) => ({
4
- ...acc,
5
- [propertyKey]: group.getEndpointProperty(propertyVal, options),
6
- }), {});
3
+ export const getEndpointProperties = (properties, options) => Object.entries(properties).reduce((acc, [propertyKey, propertyVal]) => {
4
+ acc[propertyKey] = group.getEndpointProperty(propertyVal, options);
5
+ return acc;
6
+ }, {});
7
7
  export const getEndpointProperty = (property, options) => {
8
8
  if (Array.isArray(property)) {
9
9
  return property.map((propertyEntry) => getEndpointProperty(propertyEntry, options));
@@ -1,7 +1,3 @@
1
1
  export const getReferenceValue = ({ ref }, options) => {
2
- const referenceRecord = {
3
- ...options.endpointParams,
4
- ...options.referenceRecord,
5
- };
6
- return referenceRecord[ref];
2
+ return options.referenceRecord[ref] ?? options.endpointParams[ref];
7
3
  };
@@ -0,0 +1,22 @@
1
+ import type { EndpointObjectHeaders, ParameterObject } from "@smithy/types";
2
+ import type { Expression, FunctionArgv } from "../types/shared";
3
+ /**
4
+ * @internal
5
+ */
6
+ type BddCondition = [string, FunctionArgv] | [string, FunctionArgv, string];
7
+ /**
8
+ * @internal
9
+ */
10
+ type BddResult = [-1] | [-1, Expression] | [string, Record<string, ParameterObject>, EndpointObjectHeaders] | [string, Record<string, ParameterObject>];
11
+ /**
12
+ * @internal
13
+ */
14
+ export declare class BinaryDecisionDiagram {
15
+ nodes: Int32Array;
16
+ root: number;
17
+ conditions: BddCondition[];
18
+ results: BddResult[];
19
+ private constructor();
20
+ static from(bdd: Int32Array, root: number, conditions: BddCondition[] | any[], results: BddResult[] | any[]): BinaryDecisionDiagram;
21
+ }
22
+ export {};
@@ -0,0 +1,7 @@
1
+ import type { EndpointV2 } from "@smithy/types";
2
+ import type { BinaryDecisionDiagram } from "./bdd/BinaryDecisionDiagram";
3
+ import type { EndpointResolverOptions } from "./types";
4
+ /**
5
+ * Resolves an endpoint URL by processing the endpoints bdd and options.
6
+ */
7
+ export declare const decideEndpoint: (bdd: BinaryDecisionDiagram, options: EndpointResolverOptions) => EndpointV2;
@@ -1,4 +1,6 @@
1
+ export { BinaryDecisionDiagram } from "./bdd/BinaryDecisionDiagram";
1
2
  export * from "./cache/EndpointCache";
3
+ export { decideEndpoint } from "./decideEndpoint";
2
4
  export * from "./lib/isIpAddress";
3
5
  export * from "./lib/isValidHostLabel";
4
6
  export * from "./utils/customEndpointFunctions";
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Evaluates arguments in order and returns the first non-empty result,
3
+ * otherwise returns the result of the last argument.
4
+ *
5
+ * @internal
6
+ */
7
+ export declare function coalesce<T>(...args: (T | undefined)[]): T | undefined;
@@ -1,9 +1,12 @@
1
1
  export * from "./booleanEquals";
2
+ export * from "./coalesce";
2
3
  export * from "./getAttr";
3
4
  export * from "./isSet";
4
5
  export * from "./isValidHostLabel";
6
+ export * from "./ite";
5
7
  export * from "./not";
6
8
  export * from "./parseURL";
9
+ export * from "./split";
7
10
  export * from "./stringEquals";
8
11
  export * from "./substring";
9
12
  export * from "./uriEncode";
@@ -0,0 +1,6 @@
1
+ /**
2
+ * An if-then-else function that returns one of two values based on a boolean condition.
3
+ *
4
+ * @internal
5
+ */
6
+ export declare function ite<T>(condition: boolean, trueValue: T | undefined, falseValue: T | undefined): T | undefined;
@@ -0,0 +1,11 @@
1
+ /**
2
+ * The split function divides a string into an array of substrings based on a non-empty delimiter.
3
+ * The behavior is controlled by the limit parameter:
4
+ *
5
+ * limit = 0: Split all occurrences (unlimited).
6
+ * limit = 1: No split performed (returns original string as single element array).
7
+ * limit > 1: Split into at most 'limit' parts (performs limit-1 splits).
8
+ *
9
+ * @internal
10
+ */
11
+ export declare function split(value: string, delimiter: string, limit: number): string[];
@@ -1,4 +1,4 @@
1
- import type { EndpointARN, EndpointPartition, Logger } from "@smithy/types";
1
+ import type { EndpointARN, EndpointPartition, EndpointURL, Logger } from "@smithy/types";
2
2
  export type ReferenceObject = {
3
3
  ref: string;
4
4
  };
@@ -7,9 +7,9 @@ export type FunctionObject = {
7
7
  argv: FunctionArgv;
8
8
  };
9
9
  export type FunctionArgv = Array<Expression | boolean | number>;
10
- export type FunctionReturn = string | boolean | number | EndpointARN | EndpointPartition | {
10
+ export type FunctionReturn = string | boolean | number | EndpointARN | EndpointPartition | EndpointURL | {
11
11
  [key: string]: FunctionReturn;
12
- } | null;
12
+ } | Array<FunctionReturn> | null;
13
13
  export type ConditionObject = FunctionObject & {
14
14
  assign?: string;
15
15
  };
@@ -1,11 +1,2 @@
1
- export declare const endpointFunctions: {
2
- booleanEquals: (value1: boolean, value2: boolean) => boolean;
3
- getAttr: (value: import("../lib").GetAttrValue, path: string) => import("../lib").GetAttrValue;
4
- isSet: (value: unknown) => value is {};
5
- isValidHostLabel: (value: string, allowSubDomains?: boolean) => boolean;
6
- not: (value: boolean) => boolean;
7
- parseURL: (value: string | URL | import("@smithy/types").Endpoint) => import("@smithy/types").EndpointURL | null;
8
- stringEquals: (value1: string, value2: string) => boolean;
9
- substring: (input: string, start: number, stop: number, reverse: boolean) => string | null;
10
- uriEncode: (value: string) => string;
11
- };
1
+ import type { EndpointFunctions } from "../types";
2
+ export declare const endpointFunctions: EndpointFunctions;
@@ -1,8 +1,11 @@
1
1
  import type { ConditionObject, EvaluateOptions } from "../types";
2
- export declare const evaluateCondition: ({ assign, ...fnArgs }: ConditionObject, options: EvaluateOptions) => {
3
- toAssign?: {
2
+ export declare const evaluateCondition: (condition: ConditionObject, options: EvaluateOptions) => {
3
+ result: boolean;
4
+ toAssign: {
4
5
  name: string;
5
6
  value: import("../types").FunctionReturn;
6
- } | undefined;
7
+ };
8
+ } | {
7
9
  result: boolean;
10
+ toAssign?: undefined;
8
11
  };
@@ -1,8 +1,8 @@
1
1
  import type { ConditionObject, EvaluateOptions, FunctionReturn } from "../types";
2
2
  export declare const evaluateConditions: (conditions: ConditionObject[] | undefined, options: EvaluateOptions) => {
3
- result: false;
4
- referenceRecord?: undefined;
5
- } | {
6
3
  result: boolean;
7
4
  referenceRecord: Record<string, FunctionReturn>;
5
+ } | {
6
+ result: boolean;
7
+ referenceRecord?: undefined;
8
8
  };
@@ -1,2 +1,2 @@
1
1
  import type { EndpointObjectHeaders, EvaluateOptions } from "../types";
2
- export declare const getEndpointHeaders: (headers: EndpointObjectHeaders, options: EvaluateOptions) => {};
2
+ export declare const getEndpointHeaders: (headers: EndpointObjectHeaders, options: EvaluateOptions) => Record<string, string[]>;
@@ -1,8 +1,8 @@
1
1
  import type { EndpointObjectProperty } from "@smithy/types";
2
2
  import type { EndpointObjectProperties, EvaluateOptions } from "../types";
3
- export declare const getEndpointProperties: (properties: EndpointObjectProperties, options: EvaluateOptions) => {};
3
+ export declare const getEndpointProperties: (properties: EndpointObjectProperties, options: EvaluateOptions) => Record<string, EndpointObjectProperty>;
4
4
  export declare const getEndpointProperty: (property: EndpointObjectProperty, options: EvaluateOptions) => EndpointObjectProperty;
5
5
  export declare const group: {
6
6
  getEndpointProperty: (property: EndpointObjectProperty, options: EvaluateOptions) => EndpointObjectProperty;
7
- getEndpointProperties: (properties: EndpointObjectProperties, options: EvaluateOptions) => {};
7
+ getEndpointProperties: (properties: EndpointObjectProperties, options: EvaluateOptions) => Record<string, EndpointObjectProperty>;
8
8
  };
@@ -1,2 +1,4 @@
1
1
  import type { EvaluateOptions, ReferenceObject } from "../types";
2
- export declare const getReferenceValue: ({ ref }: ReferenceObject, options: EvaluateOptions) => import("../types").FunctionReturn;
2
+ export declare const getReferenceValue: ({ ref }: ReferenceObject, options: EvaluateOptions) => string | number | boolean | import("@smithy/types").EndpointPartition | import("@smithy/types").EndpointARN | import("@smithy/types").EndpointURL | {
3
+ [key: string]: import("../types").FunctionReturn;
4
+ } | import("../types").FunctionReturn[];
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@smithy/util-endpoints",
3
- "version": "3.3.4",
3
+ "version": "3.4.2",
4
4
  "description": "Utilities to help with endpoint resolution.",
5
5
  "main": "./dist-cjs/index.js",
6
6
  "module": "./dist-es/index.js",
@@ -28,8 +28,8 @@
28
28
  "license": "Apache-2.0",
29
29
  "sideEffects": false,
30
30
  "dependencies": {
31
- "@smithy/node-config-provider": "^4.3.13",
32
- "@smithy/types": "^4.14.0",
31
+ "@smithy/node-config-provider": "^4.3.14",
32
+ "@smithy/types": "^4.14.1",
33
33
  "tslib": "^2.6.2"
34
34
  },
35
35
  "devDependencies": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@smithy/util-middleware",
3
- "version": "4.2.13",
3
+ "version": "4.2.14",
4
4
  "description": "Shared utilities for to be used in middleware packages.",
5
5
  "main": "./dist-cjs/index.js",
6
6
  "module": "./dist-es/index.js",
@@ -27,7 +27,7 @@
27
27
  "license": "Apache-2.0",
28
28
  "sideEffects": false,
29
29
  "dependencies": {
30
- "@smithy/types": "^4.14.0",
30
+ "@smithy/types": "^4.14.1",
31
31
  "tslib": "^2.6.2"
32
32
  },
33
33
  "devDependencies": {
@@ -261,6 +261,9 @@ class StandardRetryStrategy {
261
261
  isRetryableError(errorType) {
262
262
  return errorType === "THROTTLING" || errorType === "TRANSIENT";
263
263
  }
264
+ async maxAttempts() {
265
+ return this.maxAttemptsProvider();
266
+ }
264
267
  }
265
268
 
266
269
  class AdaptiveRetryStrategy {
@@ -289,6 +292,9 @@ class AdaptiveRetryStrategy {
289
292
  this.rateLimiter.updateClientSendingRate({});
290
293
  this.standardRetryStrategy.recordSuccess(token);
291
294
  }
295
+ async maxAttemptsProvider() {
296
+ return this.standardRetryStrategy.maxAttempts();
297
+ }
292
298
  }
293
299
 
294
300
  class ConfiguredRetryStrategy extends StandardRetryStrategy {
@@ -27,4 +27,7 @@ export class AdaptiveRetryStrategy {
27
27
  this.rateLimiter.updateClientSendingRate({});
28
28
  this.standardRetryStrategy.recordSuccess(token);
29
29
  }
30
+ async maxAttemptsProvider() {
31
+ return this.standardRetryStrategy.maxAttempts();
32
+ }
30
33
  }
@@ -77,4 +77,7 @@ export class StandardRetryStrategy {
77
77
  isRetryableError(errorType) {
78
78
  return errorType === "THROTTLING" || errorType === "TRANSIENT";
79
79
  }
80
+ async maxAttempts() {
81
+ return this.maxAttemptsProvider();
82
+ }
80
83
  }
@@ -30,4 +30,9 @@ export declare class AdaptiveRetryStrategy implements RetryStrategyV2 {
30
30
  acquireInitialRetryToken(retryTokenScope: string): Promise<RetryToken>;
31
31
  refreshRetryTokenForRetry(tokenToRenew: StandardRetryToken, errorInfo: RetryErrorInfo): Promise<RetryToken>;
32
32
  recordSuccess(token: StandardRetryToken): void;
33
+ /**
34
+ * There is an existing integration which accesses this field.
35
+ * @deprecated
36
+ */
37
+ maxAttemptsProvider(): Promise<number>;
33
38
  }
@@ -40,4 +40,9 @@ export declare class StandardRetryStrategy implements RetryStrategyV2 {
40
40
  private shouldRetry;
41
41
  private getCapacityCost;
42
42
  private isRetryableError;
43
+ /**
44
+ * There is an existing integration which accesses this field.
45
+ * @deprecated
46
+ */
47
+ maxAttempts(): Promise<number>;
43
48
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@smithy/util-retry",
3
- "version": "4.3.0",
3
+ "version": "4.3.3",
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,8 +30,8 @@
30
30
  "license": "Apache-2.0",
31
31
  "sideEffects": false,
32
32
  "dependencies": {
33
- "@smithy/service-error-classification": "^4.2.13",
34
- "@smithy/types": "^4.14.0",
33
+ "@smithy/service-error-classification": "^4.3.0",
34
+ "@smithy/types": "^4.14.1",
35
35
  "tslib": "^2.6.2"
36
36
  },
37
37
  "devDependencies": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@smithy/util-stream",
3
- "version": "4.5.22",
3
+ "version": "4.5.24",
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 util-stream",
@@ -28,9 +28,9 @@
28
28
  "license": "Apache-2.0",
29
29
  "sideEffects": false,
30
30
  "dependencies": {
31
- "@smithy/fetch-http-handler": "^5.3.16",
32
- "@smithy/node-http-handler": "^4.5.2",
33
- "@smithy/types": "^4.14.0",
31
+ "@smithy/fetch-http-handler": "^5.3.17",
32
+ "@smithy/node-http-handler": "^4.6.0",
33
+ "@smithy/types": "^4.14.1",
34
34
  "@smithy/util-base64": "^4.3.2",
35
35
  "@smithy/util-buffer-from": "^4.2.2",
36
36
  "@smithy/util-hex-encoding": "^4.2.2",
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "@smithy/util-waiter",
3
- "version": "4.2.15",
3
+ "version": "4.2.16",
4
4
  "description": "Shared utilities for client waiters for the AWS SDK",
5
5
  "dependencies": {
6
- "@smithy/types": "^4.14.0",
6
+ "@smithy/types": "^4.14.1",
7
7
  "tslib": "^2.6.2"
8
8
  },
9
9
  "scripts": {
@@ -47,7 +47,7 @@
47
47
  "directory": "packages/util-waiter"
48
48
  },
49
49
  "devDependencies": {
50
- "@smithy/abort-controller": "^4.2.13",
50
+ "@smithy/abort-controller": "^4.2.14",
51
51
  "concurrently": "7.0.0",
52
52
  "downlevel-dts": "0.10.1",
53
53
  "premove": "4.0.0",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fast-xml-builder",
3
- "version": "1.1.4",
3
+ "version": "1.1.5",
4
4
  "description": "Build XML from JSON without C/C++ based libraries",
5
5
  "main": "./lib/fxb.cjs",
6
6
  "type": "module",
@@ -486,9 +486,13 @@ function buildEmptyObjNode(val, key, attrStr, level) {
486
486
 
487
487
  Builder.prototype.buildTextValNode = function (val, key, attrStr, level, matcher) {
488
488
  if (this.options.cdataPropName !== false && key === this.options.cdataPropName) {
489
- return this.indentate(level) + `<![CDATA[${val}]]>` + this.newLine;
489
+ const safeVal = String(val).replace(/\]\]>/g, ']]]]><![CDATA[>');
490
+ return this.indentate(level) + `<![CDATA[${safeVal}]]>` + this.newLine;
490
491
  } else if (this.options.commentPropName !== false && key === this.options.commentPropName) {
491
- return this.indentate(level) + `<!--${val}-->` + this.newLine;
492
+ const safeVal = String(val)
493
+ .replace(/--/g, '- -') // -- is illegal anywhere in comment content
494
+ .replace(/-$/, '- '); // trailing - would form -- with the closing -->
495
+ return this.indentate(level) + `<!--${safeVal}-->` + this.newLine;
492
496
  } else if (key[0] === "?") {//PI tag
493
497
  return this.indentate(level) + '<' + key + attrStr + '?' + this.tagEndChar;
494
498
  } else {
@@ -82,12 +82,18 @@ function arrToStr(arr, options, indentation, matcher, stopNodeExpressions) {
82
82
  if (isPreviousElementTag) {
83
83
  xmlStr += indentation;
84
84
  }
85
- xmlStr += `<![CDATA[${tagObj[tagName][0][options.textNodeName]}]]>`;
85
+ const val = tagObj[tagName][0][options.textNodeName];
86
+ const safeVal = String(val).replace(/\]\]>/g, ']]]]><![CDATA[>');
87
+ xmlStr += `<![CDATA[${safeVal}]]>`;
86
88
  isPreviousElementTag = false;
87
89
  matcher.pop();
88
90
  continue;
89
91
  } else if (tagName === options.commentPropName) {
90
- xmlStr += indentation + `<!--${tagObj[tagName][0][options.textNodeName]}-->`;
92
+ const val = tagObj[tagName][0][options.textNodeName]
93
+ const safeVal = String(val)
94
+ .replace(/--/g, '- -') // -- is illegal anywhere in comment content
95
+ .replace(/-$/, '- '); // trailing - would form -- with the closing -->
96
+ xmlStr += indentation + `<!--${safeVal}-->`;
91
97
  isPreviousElementTag = true;
92
98
  matcher.pop();
93
99
  continue;
@@ -289,4 +295,12 @@ function replaceEntitiesValue(textValue, options) {
289
295
  }
290
296
  }
291
297
  return textValue;
298
+ }
299
+
300
+ function cdataVal(val) {
301
+
302
+ }
303
+
304
+ function commentVal(val) {
305
+
292
306
  }