@cdklabs/cdk-ecs-codedeploy 0.0.437 → 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 (135) hide show
  1. package/.jsii +3 -3
  2. package/lib/api-canary/index.js +1 -1
  3. package/lib/ecs-appspec/index.js +1 -1
  4. package/lib/ecs-deployment/index.js +1 -1
  5. package/lib/ecs-patterns/application-load-balanced-codedeployed-fargate-service.js +1 -1
  6. package/node_modules/@aws-sdk/client-codedeploy/package.json +34 -34
  7. package/node_modules/@aws-sdk/core/dist-cjs/index.js +52 -50
  8. package/node_modules/@aws-sdk/core/dist-cjs/submodules/protocols/index.js +52 -50
  9. package/node_modules/@aws-sdk/core/dist-es/submodules/protocols/ProtocolLib.js +11 -10
  10. package/node_modules/@aws-sdk/core/dist-es/submodules/protocols/UnionSerde.js +4 -1
  11. package/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/AwsJsonRpcProtocol.js +4 -5
  12. package/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/AwsRestJsonProtocol.js +2 -1
  13. package/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/JsonShapeSerializer.js +9 -7
  14. package/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/parseJsonBody.js +17 -17
  15. package/node_modules/@aws-sdk/core/dist-es/submodules/protocols/query/AwsQueryProtocol.js +3 -8
  16. package/node_modules/@aws-sdk/core/dist-es/submodules/protocols/xml/AwsRestXmlProtocol.js +2 -1
  17. package/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/JsonShapeSerializer.d.ts +2 -2
  18. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/JsonShapeSerializer.d.ts +1 -1
  19. package/node_modules/@aws-sdk/core/package.json +11 -11
  20. package/node_modules/@aws-sdk/credential-provider-env/package.json +5 -5
  21. package/node_modules/@aws-sdk/credential-provider-http/package.json +10 -10
  22. package/node_modules/@aws-sdk/credential-provider-ini/package.json +14 -14
  23. package/node_modules/@aws-sdk/credential-provider-login/package.json +8 -8
  24. package/node_modules/@aws-sdk/credential-provider-node/package.json +12 -12
  25. package/node_modules/@aws-sdk/credential-provider-process/package.json +6 -6
  26. package/node_modules/@aws-sdk/credential-provider-sso/package.json +8 -8
  27. package/node_modules/@aws-sdk/credential-provider-web-identity/package.json +7 -7
  28. package/node_modules/@aws-sdk/middleware-host-header/package.json +4 -4
  29. package/node_modules/@aws-sdk/middleware-logger/package.json +3 -3
  30. package/node_modules/@aws-sdk/middleware-recursion-detection/package.json +4 -4
  31. package/node_modules/@aws-sdk/middleware-user-agent/package.json +8 -8
  32. package/node_modules/@aws-sdk/nested-clients/package.json +32 -32
  33. package/node_modules/@aws-sdk/region-config-resolver/package.json +5 -5
  34. package/node_modules/@aws-sdk/token-providers/package.json +7 -7
  35. package/node_modules/@aws-sdk/types/package.json +2 -2
  36. package/node_modules/@aws-sdk/util-endpoints/package.json +5 -5
  37. package/node_modules/@aws-sdk/util-user-agent-browser/package.json +3 -3
  38. package/node_modules/@aws-sdk/util-user-agent-node/package.json +5 -5
  39. package/node_modules/@aws-sdk/xml-builder/package.json +2 -2
  40. package/node_modules/@smithy/config-resolver/package.json +5 -5
  41. package/node_modules/@smithy/core/dist-cjs/index.js +2 -1
  42. package/node_modules/@smithy/core/dist-cjs/submodules/cbor/index.js +32 -14
  43. package/node_modules/@smithy/core/dist-cjs/submodules/endpoints/index.js +2 -2
  44. package/node_modules/@smithy/core/dist-cjs/submodules/event-streams/index.js +16 -8
  45. package/node_modules/@smithy/core/dist-cjs/submodules/protocols/index.js +17 -10
  46. package/node_modules/@smithy/core/dist-cjs/submodules/schema/index.js +6 -1
  47. package/node_modules/@smithy/core/dist-cjs/submodules/serde/index.js +6 -3
  48. package/node_modules/@smithy/core/dist-cjs/util-identity-and-auth/DefaultIdentityProviderConfig.js +2 -1
  49. package/node_modules/@smithy/core/dist-es/submodules/cbor/CborCodec.js +23 -11
  50. package/node_modules/@smithy/core/dist-es/submodules/cbor/parseCborBody.js +9 -3
  51. package/node_modules/@smithy/core/dist-es/submodules/endpoints/toEndpointV1.js +2 -2
  52. package/node_modules/@smithy/core/dist-es/submodules/event-streams/EventStreamSerde.js +16 -8
  53. package/node_modules/@smithy/core/dist-es/submodules/protocols/HttpBindingProtocol.js +9 -4
  54. package/node_modules/@smithy/core/dist-es/submodules/protocols/HttpProtocol.js +8 -6
  55. package/node_modules/@smithy/core/dist-es/submodules/schema/TypeRegistry.js +6 -1
  56. package/node_modules/@smithy/core/dist-es/submodules/serde/parse-utils.js +6 -3
  57. package/node_modules/@smithy/core/dist-es/util-identity-and-auth/DefaultIdentityProviderConfig.js +2 -1
  58. package/node_modules/@smithy/core/dist-types/submodules/schema/TypeRegistry.d.ts +1 -1
  59. package/node_modules/@smithy/core/package.json +7 -7
  60. package/node_modules/@smithy/credential-provider-imds/package.json +5 -5
  61. package/node_modules/@smithy/fetch-http-handler/package.json +5 -5
  62. package/node_modules/@smithy/hash-node/package.json +2 -2
  63. package/node_modules/@smithy/invalid-dependency/package.json +2 -2
  64. package/node_modules/@smithy/middleware-content-length/package.json +3 -3
  65. package/node_modules/@smithy/middleware-endpoint/package.json +8 -8
  66. package/node_modules/@smithy/middleware-retry/package.json +9 -9
  67. package/node_modules/@smithy/middleware-serde/package.json +4 -4
  68. package/node_modules/@smithy/middleware-stack/package.json +2 -2
  69. package/node_modules/@smithy/node-config-provider/package.json +4 -4
  70. package/node_modules/@smithy/node-http-handler/dist-cjs/index.js +191 -96
  71. package/node_modules/@smithy/node-http-handler/dist-es/http2/ClientHttp2SessionRef.js +45 -0
  72. package/node_modules/@smithy/node-http-handler/dist-es/node-http2-connection-manager.js +71 -35
  73. package/node_modules/@smithy/node-http-handler/dist-es/node-http2-connection-pool.js +32 -18
  74. package/node_modules/@smithy/node-http-handler/dist-es/node-http2-handler.js +44 -43
  75. package/node_modules/@smithy/node-http-handler/dist-types/http2/ClientHttp2SessionRef.d.ts +42 -0
  76. package/node_modules/@smithy/node-http-handler/dist-types/node-http2-connection-manager.d.ts +34 -14
  77. package/node_modules/@smithy/node-http-handler/dist-types/node-http2-connection-pool.d.ts +32 -8
  78. package/node_modules/@smithy/node-http-handler/dist-types/node-http2-handler.d.ts +14 -6
  79. package/node_modules/@smithy/node-http-handler/package.json +5 -5
  80. package/node_modules/@smithy/property-provider/package.json +2 -2
  81. package/node_modules/@smithy/protocol-http/package.json +2 -2
  82. package/node_modules/@smithy/querystring-builder/package.json +2 -2
  83. package/node_modules/@smithy/querystring-parser/package.json +2 -2
  84. package/node_modules/@smithy/service-error-classification/dist-cjs/index.js +5 -0
  85. package/node_modules/@smithy/service-error-classification/dist-es/index.js +4 -0
  86. package/node_modules/@smithy/service-error-classification/dist-types/index.d.ts +6 -0
  87. package/node_modules/@smithy/service-error-classification/package.json +2 -2
  88. package/node_modules/@smithy/shared-ini-file-loader/package.json +2 -2
  89. package/node_modules/@smithy/signature-v4/dist-cjs/index.js +11 -5
  90. package/node_modules/@smithy/signature-v4/dist-es/SignatureV4.js +11 -5
  91. package/node_modules/@smithy/signature-v4/dist-types/SignatureV4.d.ts +3 -3
  92. package/node_modules/@smithy/signature-v4/package.json +4 -4
  93. package/node_modules/@smithy/smithy-client/dist-cjs/index.js +8 -1
  94. package/node_modules/@smithy/smithy-client/dist-es/command.js +8 -1
  95. package/node_modules/@smithy/smithy-client/package.json +7 -7
  96. package/node_modules/@smithy/types/dist-types/connection/config.d.ts +5 -0
  97. package/node_modules/@smithy/types/dist-types/signature.d.ts +20 -3
  98. package/node_modules/@smithy/types/package.json +1 -1
  99. package/node_modules/@smithy/url-parser/package.json +3 -3
  100. package/node_modules/@smithy/util-defaults-mode-browser/package.json +4 -4
  101. package/node_modules/@smithy/util-defaults-mode-node/package.json +7 -7
  102. package/node_modules/@smithy/util-endpoints/dist-cjs/index.js +79 -71
  103. package/node_modules/@smithy/util-endpoints/dist-es/decideEndpoint.js +4 -3
  104. package/node_modules/@smithy/util-endpoints/dist-es/lib/getAttr.js +2 -1
  105. package/node_modules/@smithy/util-endpoints/dist-es/resolveEndpoint.js +8 -13
  106. package/node_modules/@smithy/util-endpoints/dist-es/utils/evaluateCondition.js +9 -7
  107. package/node_modules/@smithy/util-endpoints/dist-es/utils/evaluateConditions.js +12 -8
  108. package/node_modules/@smithy/util-endpoints/dist-es/utils/evaluateEndpointRule.js +14 -13
  109. package/node_modules/@smithy/util-endpoints/dist-es/utils/evaluateErrorRule.js +7 -4
  110. package/node_modules/@smithy/util-endpoints/dist-es/utils/evaluateExpression.js +10 -8
  111. package/node_modules/@smithy/util-endpoints/dist-es/utils/evaluateRules.js +4 -4
  112. package/node_modules/@smithy/util-endpoints/dist-es/utils/getEndpointHeaders.js +5 -5
  113. package/node_modules/@smithy/util-endpoints/dist-es/utils/getEndpointProperties.js +4 -4
  114. package/node_modules/@smithy/util-endpoints/dist-types/bdd/BinaryDecisionDiagram.d.ts +2 -2
  115. package/node_modules/@smithy/util-endpoints/dist-types/types/shared.d.ts +3 -3
  116. package/node_modules/@smithy/util-endpoints/dist-types/utils/endpointFunctions.d.ts +2 -15
  117. package/node_modules/@smithy/util-endpoints/dist-types/utils/evaluateCondition.d.ts +6 -3
  118. package/node_modules/@smithy/util-endpoints/dist-types/utils/evaluateConditions.d.ts +3 -3
  119. package/node_modules/@smithy/util-endpoints/dist-types/utils/getEndpointHeaders.d.ts +1 -1
  120. package/node_modules/@smithy/util-endpoints/dist-types/utils/getEndpointProperties.d.ts +2 -2
  121. package/node_modules/@smithy/util-endpoints/dist-types/utils/getReferenceValue.d.ts +2 -2
  122. package/node_modules/@smithy/util-endpoints/package.json +3 -3
  123. package/node_modules/@smithy/util-middleware/package.json +2 -2
  124. package/node_modules/@smithy/util-retry/package.json +3 -3
  125. package/node_modules/@smithy/util-stream/package.json +4 -4
  126. package/node_modules/@smithy/util-waiter/package.json +3 -3
  127. package/node_modules/fast-xml-builder/package.json +1 -1
  128. package/node_modules/fast-xml-builder/src/fxb.js +6 -2
  129. package/node_modules/fast-xml-builder/src/orderedJs2Xml.js +16 -2
  130. package/package.json +4 -4
  131. /package/node_modules/{@aws-sdk/xml-builder/node_modules/strnum → strnum}/CHANGELOG.md +0 -0
  132. /package/node_modules/{@aws-sdk/xml-builder/node_modules/strnum → strnum}/LICENSE +0 -0
  133. /package/node_modules/{@aws-sdk/xml-builder/node_modules/strnum → strnum}/README.md +0 -0
  134. /package/node_modules/{@aws-sdk/xml-builder/node_modules/strnum → strnum}/package.json +0 -0
  135. /package/node_modules/{@aws-sdk/xml-builder/node_modules/strnum → strnum}/strnum.js +0 -0
@@ -56,6 +56,7 @@ const isTransientError = (error, depth = 0) => isRetryableByTrait(error) ||
56
56
  NODEJS_NETWORK_ERROR_CODES.includes(error?.code || "") ||
57
57
  TRANSIENT_ERROR_STATUS_CODES.includes(error.$metadata?.httpStatusCode || 0) ||
58
58
  isBrowserNetworkError(error) ||
59
+ isNodeJsHttp2TransientError(error) ||
59
60
  (error.cause !== undefined && depth <= 10 && isTransientError(error.cause, depth + 1));
60
61
  const isServerError = (error) => {
61
62
  if (error.$metadata?.httpStatusCode !== undefined) {
@@ -67,10 +68,14 @@ const isServerError = (error) => {
67
68
  }
68
69
  return false;
69
70
  };
71
+ function isNodeJsHttp2TransientError(error) {
72
+ return error.code === "ERR_HTTP2_STREAM_ERROR" && error.message.includes("NGHTTP2_REFUSED_STREAM");
73
+ }
70
74
 
71
75
  exports.isBrowserNetworkError = isBrowserNetworkError;
72
76
  exports.isClockSkewCorrectedError = isClockSkewCorrectedError;
73
77
  exports.isClockSkewError = isClockSkewError;
78
+ exports.isNodeJsHttp2TransientError = isNodeJsHttp2TransientError;
74
79
  exports.isRetryableByTrait = isRetryableByTrait;
75
80
  exports.isServerError = isServerError;
76
81
  exports.isThrottlingError = isThrottlingError;
@@ -26,6 +26,7 @@ export const isTransientError = (error, depth = 0) => isRetryableByTrait(error)
26
26
  NODEJS_NETWORK_ERROR_CODES.includes(error?.code || "") ||
27
27
  TRANSIENT_ERROR_STATUS_CODES.includes(error.$metadata?.httpStatusCode || 0) ||
28
28
  isBrowserNetworkError(error) ||
29
+ isNodeJsHttp2TransientError(error) ||
29
30
  (error.cause !== undefined && depth <= 10 && isTransientError(error.cause, depth + 1));
30
31
  export const isServerError = (error) => {
31
32
  if (error.$metadata?.httpStatusCode !== undefined) {
@@ -37,3 +38,6 @@ export const isServerError = (error) => {
37
38
  }
38
39
  return false;
39
40
  };
41
+ export function isNodeJsHttp2TransientError(error) {
42
+ return error.code === "ERR_HTTP2_STREAM_ERROR" && error.message.includes("NGHTTP2_REFUSED_STREAM");
43
+ }
@@ -22,3 +22,9 @@ export declare const isThrottlingError: (error: SdkError) => boolean;
22
22
  */
23
23
  export declare const isTransientError: (error: SdkError, depth?: number) => boolean;
24
24
  export declare const isServerError: (error: SdkError) => boolean;
25
+ /**
26
+ * @internal
27
+ */
28
+ export declare function isNodeJsHttp2TransientError(error: Error & {
29
+ code?: string;
30
+ }): boolean;
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@smithy/service-error-classification",
3
- "version": "4.2.13",
3
+ "version": "4.3.0",
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",
@@ -54,6 +54,6 @@
54
54
  "directory": ".release/package"
55
55
  },
56
56
  "dependencies": {
57
- "@smithy/types": "^4.14.0"
57
+ "@smithy/types": "^4.14.1"
58
58
  }
59
59
  }
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@smithy/shared-ini-file-loader",
3
- "version": "4.4.8",
3
+ "version": "4.4.9",
4
4
  "dependencies": {
5
- "@smithy/types": "^4.14.0",
5
+ "@smithy/types": "^4.14.1",
6
6
  "tslib": "^2.6.2"
7
7
  },
8
8
  "devDependencies": {
@@ -448,7 +448,7 @@ class SignatureV4 extends SignatureV4Base {
448
448
  return this.signRequest(toSign, options);
449
449
  }
450
450
  }
451
- async signEvent({ headers, payload }, { signingDate = new Date(), priorSignature, signingRegion, signingService }) {
451
+ async signEvent({ headers, payload }, { signingDate = new Date(), priorSignature, signingRegion, signingService, eventStreamCredentials, }) {
452
452
  const region = signingRegion ?? (await this.regionProvider());
453
453
  const { shortDate, longDate } = this.formatDate(signingDate);
454
454
  const scope = createScope(shortDate, region, signingService ?? this.service);
@@ -464,9 +464,14 @@ class SignatureV4 extends SignatureV4Base {
464
464
  hashedHeaders,
465
465
  hashedPayload,
466
466
  ].join("\n");
467
- return this.signString(stringToSign, { signingDate, signingRegion: region, signingService });
467
+ return this.signString(stringToSign, {
468
+ signingDate,
469
+ signingRegion: region,
470
+ signingService,
471
+ eventStreamCredentials,
472
+ });
468
473
  }
469
- async signMessage(signableMessage, { signingDate = new Date(), signingRegion, signingService }) {
474
+ async signMessage(signableMessage, { signingDate = new Date(), signingRegion, signingService, eventStreamCredentials }) {
470
475
  const promise = this.signEvent({
471
476
  headers: this.headerFormatter.format(signableMessage.message.headers),
472
477
  payload: signableMessage.message.body,
@@ -475,13 +480,14 @@ class SignatureV4 extends SignatureV4Base {
475
480
  signingRegion,
476
481
  signingService,
477
482
  priorSignature: signableMessage.priorSignature,
483
+ eventStreamCredentials,
478
484
  });
479
485
  return promise.then((signature) => {
480
486
  return { message: signableMessage.message, signature };
481
487
  });
482
488
  }
483
- async signString(stringToSign, { signingDate = new Date(), signingRegion, signingService } = {}) {
484
- const credentials = await this.credentialProvider();
489
+ async signString(stringToSign, { signingDate = new Date(), signingRegion, signingService, eventStreamCredentials, } = {}) {
490
+ const credentials = eventStreamCredentials ?? (await this.credentialProvider());
485
491
  this.validateResolvedCredentials(credentials);
486
492
  const region = signingRegion ?? (await this.regionProvider());
487
493
  const { shortDate } = this.formatDate(signingDate);
@@ -58,7 +58,7 @@ export class SignatureV4 extends SignatureV4Base {
58
58
  return this.signRequest(toSign, options);
59
59
  }
60
60
  }
61
- async signEvent({ headers, payload }, { signingDate = new Date(), priorSignature, signingRegion, signingService }) {
61
+ async signEvent({ headers, payload }, { signingDate = new Date(), priorSignature, signingRegion, signingService, eventStreamCredentials, }) {
62
62
  const region = signingRegion ?? (await this.regionProvider());
63
63
  const { shortDate, longDate } = this.formatDate(signingDate);
64
64
  const scope = createScope(shortDate, region, signingService ?? this.service);
@@ -74,9 +74,14 @@ export class SignatureV4 extends SignatureV4Base {
74
74
  hashedHeaders,
75
75
  hashedPayload,
76
76
  ].join("\n");
77
- return this.signString(stringToSign, { signingDate, signingRegion: region, signingService });
77
+ return this.signString(stringToSign, {
78
+ signingDate,
79
+ signingRegion: region,
80
+ signingService,
81
+ eventStreamCredentials,
82
+ });
78
83
  }
79
- async signMessage(signableMessage, { signingDate = new Date(), signingRegion, signingService }) {
84
+ async signMessage(signableMessage, { signingDate = new Date(), signingRegion, signingService, eventStreamCredentials }) {
80
85
  const promise = this.signEvent({
81
86
  headers: this.headerFormatter.format(signableMessage.message.headers),
82
87
  payload: signableMessage.message.body,
@@ -85,13 +90,14 @@ export class SignatureV4 extends SignatureV4Base {
85
90
  signingRegion,
86
91
  signingService,
87
92
  priorSignature: signableMessage.priorSignature,
93
+ eventStreamCredentials,
88
94
  });
89
95
  return promise.then((signature) => {
90
96
  return { message: signableMessage.message, signature };
91
97
  });
92
98
  }
93
- async signString(stringToSign, { signingDate = new Date(), signingRegion, signingService } = {}) {
94
- const credentials = await this.credentialProvider();
99
+ async signString(stringToSign, { signingDate = new Date(), signingRegion, signingService, eventStreamCredentials, } = {}) {
100
+ const credentials = eventStreamCredentials ?? (await this.credentialProvider());
95
101
  this.validateResolvedCredentials(credentials);
96
102
  const region = signingRegion ?? (await this.regionProvider());
97
103
  const { shortDate } = this.formatDate(signingDate);
@@ -1,4 +1,4 @@
1
- import type { EventSigner, EventSigningArguments, FormattedEvent, HttpRequest, MessageSigner, RequestPresigner, RequestPresigningArguments, RequestSigner, RequestSigningArguments, SignableMessage, SignedMessage, SigningArguments, StringSigner } from "@smithy/types";
1
+ import type { EventSigner, EventSigningArguments, FormattedEvent, HttpRequest, MessageSigner, MessageSigningArguments, RequestPresigner, RequestPresigningArguments, RequestSigner, RequestSigningArguments, SignableMessage, SignedMessage, SigningArguments, StringSigner } from "@smithy/types";
2
2
  import type { SignatureV4CryptoInit, SignatureV4Init } from "./SignatureV4Base";
3
3
  import { SignatureV4Base } from "./SignatureV4Base";
4
4
  /**
@@ -10,10 +10,10 @@ export declare class SignatureV4 extends SignatureV4Base implements RequestPresi
10
10
  presign(originalRequest: HttpRequest, options?: RequestPresigningArguments): Promise<HttpRequest>;
11
11
  sign(stringToSign: string, options?: SigningArguments): Promise<string>;
12
12
  sign(event: FormattedEvent, options: EventSigningArguments): Promise<string>;
13
- sign(event: SignableMessage, options: SigningArguments): Promise<SignedMessage>;
13
+ sign(event: SignableMessage, options: MessageSigningArguments): Promise<SignedMessage>;
14
14
  sign(requestToSign: HttpRequest, options?: RequestSigningArguments): Promise<HttpRequest>;
15
15
  private signEvent;
16
- signMessage(signableMessage: SignableMessage, { signingDate, signingRegion, signingService }: SigningArguments): Promise<SignedMessage>;
16
+ signMessage(signableMessage: SignableMessage, { signingDate, signingRegion, signingService, eventStreamCredentials }: MessageSigningArguments): Promise<SignedMessage>;
17
17
  private signString;
18
18
  private signRequest;
19
19
  private getSignature;
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@smithy/signature-v4",
3
- "version": "5.3.13",
3
+ "version": "5.3.14",
4
4
  "description": "A standalone implementation of the AWS Signature V4 request signing algorithm",
5
5
  "main": "./dist-cjs/index.js",
6
6
  "module": "./dist-es/index.js",
@@ -26,10 +26,10 @@
26
26
  "sideEffects": false,
27
27
  "dependencies": {
28
28
  "@smithy/is-array-buffer": "^4.2.2",
29
- "@smithy/protocol-http": "^5.3.13",
30
- "@smithy/types": "^4.14.0",
29
+ "@smithy/protocol-http": "^5.3.14",
30
+ "@smithy/types": "^4.14.1",
31
31
  "@smithy/util-hex-encoding": "^4.2.2",
32
- "@smithy/util-middleware": "^4.2.13",
32
+ "@smithy/util-middleware": "^4.2.14",
33
33
  "@smithy/util-uri-escape": "^4.2.2",
34
34
  "@smithy/util-utf8": "^4.2.2",
35
35
  "tslib": "^2.6.2"
@@ -116,7 +116,14 @@ class Command {
116
116
  ...additionalContext,
117
117
  };
118
118
  const { requestHandler } = configuration;
119
- return stack.resolve((request) => requestHandler.handle(request.request, options || {}), handlerExecutionContext);
119
+ let requestOptions = options ?? {};
120
+ if (smithyContext.eventStream) {
121
+ requestOptions = {
122
+ isEventStream: true,
123
+ ...requestOptions,
124
+ };
125
+ }
126
+ return stack.resolve((request) => requestHandler.handle(request.request, requestOptions), handlerExecutionContext);
120
127
  }
121
128
  }
122
129
  class ClassBuilder {
@@ -26,7 +26,14 @@ export class Command {
26
26
  ...additionalContext,
27
27
  };
28
28
  const { requestHandler } = configuration;
29
- return stack.resolve((request) => requestHandler.handle(request.request, options || {}), handlerExecutionContext);
29
+ let requestOptions = options ?? {};
30
+ if (smithyContext.eventStream) {
31
+ requestOptions = {
32
+ isEventStream: true,
33
+ ...requestOptions,
34
+ };
35
+ }
36
+ return stack.resolve((request) => requestHandler.handle(request.request, requestOptions), handlerExecutionContext);
30
37
  }
31
38
  }
32
39
  class ClassBuilder {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@smithy/smithy-client",
3
- "version": "4.12.9",
3
+ "version": "4.12.12",
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 smithy-client",
@@ -26,12 +26,12 @@
26
26
  "license": "Apache-2.0",
27
27
  "sideEffects": false,
28
28
  "dependencies": {
29
- "@smithy/core": "^3.23.14",
30
- "@smithy/middleware-endpoint": "^4.4.29",
31
- "@smithy/middleware-stack": "^4.2.13",
32
- "@smithy/protocol-http": "^5.3.13",
33
- "@smithy/types": "^4.14.0",
34
- "@smithy/util-stream": "^4.5.22",
29
+ "@smithy/core": "^3.23.16",
30
+ "@smithy/middleware-endpoint": "^4.4.31",
31
+ "@smithy/middleware-stack": "^4.2.14",
32
+ "@smithy/protocol-http": "^5.3.14",
33
+ "@smithy/types": "^4.14.1",
34
+ "@smithy/util-stream": "^4.5.24",
35
35
  "tslib": "^2.6.2"
36
36
  },
37
37
  "engines": {
@@ -7,4 +7,9 @@ export interface ConnectConfiguration {
7
7
  * may take before the connection attempt is abandoned.
8
8
  */
9
9
  requestTimeout?: number;
10
+ /**
11
+ * Signal from the Command class object context,
12
+ * tells the connection manager to use a new connection.
13
+ */
14
+ isEventStream?: boolean;
10
15
  }
@@ -1,5 +1,6 @@
1
1
  import type { Message } from "./eventStream";
2
2
  import type { HttpRequest } from "./http";
3
+ import type { AwsCredentialIdentity } from "./identity/awsCredentialIdentity";
3
4
  /**
4
5
  * @public
5
6
  *
@@ -76,9 +77,25 @@ export interface RequestPresigningArguments extends RequestSigningArguments {
76
77
  /**
77
78
  * @public
78
79
  */
79
- export interface EventSigningArguments extends SigningArguments {
80
+ export interface EventSigningArguments extends SigningArguments, EventStreamRequestScopedCredentials {
80
81
  priorSignature: string;
81
82
  }
83
+ /**
84
+ * @public
85
+ */
86
+ export interface MessageSigningArguments extends SigningArguments, EventStreamRequestScopedCredentials {
87
+ }
88
+ /**
89
+ * @internal
90
+ */
91
+ export interface EventStreamRequestScopedCredentials {
92
+ /**
93
+ * Optional, static credentials used for the duration of the event-stream request.
94
+ * If not provided, the signer's internal credential provider would be used, if
95
+ * the signer is SignatureV4.
96
+ */
97
+ eventStreamCredentials?: AwsCredentialIdentity;
98
+ }
82
99
  /**
83
100
  * @public
84
101
  */
@@ -150,6 +167,6 @@ export interface SignedMessage {
150
167
  * @public
151
168
  */
152
169
  export interface MessageSigner {
153
- signMessage(message: SignableMessage, args: SigningArguments): Promise<SignedMessage>;
154
- sign(event: SignableMessage, options: SigningArguments): Promise<SignedMessage>;
170
+ signMessage(message: SignableMessage, args: MessageSigningArguments): Promise<SignedMessage>;
171
+ sign(event: SignableMessage, options: MessageSigningArguments): Promise<SignedMessage>;
155
172
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@smithy/types",
3
- "version": "4.14.0",
3
+ "version": "4.14.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 types",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@smithy/url-parser",
3
- "version": "4.2.13",
3
+ "version": "4.2.14",
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 url-parser",
@@ -23,8 +23,8 @@
23
23
  "license": "Apache-2.0",
24
24
  "sideEffects": false,
25
25
  "dependencies": {
26
- "@smithy/querystring-parser": "^4.2.13",
27
- "@smithy/types": "^4.14.0",
26
+ "@smithy/querystring-parser": "^4.2.14",
27
+ "@smithy/types": "^4.14.1",
28
28
  "tslib": "^2.6.2"
29
29
  },
30
30
  "typesVersions": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@smithy/util-defaults-mode-browser",
3
- "version": "4.3.45",
3
+ "version": "4.3.48",
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-defaults-mode-browser",
@@ -23,9 +23,9 @@
23
23
  "license": "Apache-2.0",
24
24
  "sideEffects": false,
25
25
  "dependencies": {
26
- "@smithy/property-provider": "^4.2.13",
27
- "@smithy/smithy-client": "^4.12.9",
28
- "@smithy/types": "^4.14.0",
26
+ "@smithy/property-provider": "^4.2.14",
27
+ "@smithy/smithy-client": "^4.12.12",
28
+ "@smithy/types": "^4.14.1",
29
29
  "tslib": "^2.6.2"
30
30
  },
31
31
  "devDependencies": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@smithy/util-defaults-mode-node",
3
- "version": "4.2.50",
3
+ "version": "4.2.53",
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-defaults-mode-node",
@@ -23,12 +23,12 @@
23
23
  "license": "Apache-2.0",
24
24
  "sideEffects": false,
25
25
  "dependencies": {
26
- "@smithy/config-resolver": "^4.4.15",
27
- "@smithy/credential-provider-imds": "^4.2.13",
28
- "@smithy/node-config-provider": "^4.3.13",
29
- "@smithy/property-provider": "^4.2.13",
30
- "@smithy/smithy-client": "^4.12.9",
31
- "@smithy/types": "^4.14.0",
26
+ "@smithy/config-resolver": "^4.4.17",
27
+ "@smithy/credential-provider-imds": "^4.2.14",
28
+ "@smithy/node-config-provider": "^4.3.14",
29
+ "@smithy/property-provider": "^4.2.14",
30
+ "@smithy/smithy-client": "^4.12.12",
31
+ "@smithy/types": "^4.14.1",
32
32
  "tslib": "^2.6.2"
33
33
  },
34
34
  "devDependencies": {
@@ -134,7 +134,8 @@ const getAttr = (value, path) => getAttrPathList(path).reduce((acc, index) => {
134
134
  throw new EndpointError(`Index '${index}' in '${path}' not found in '${JSON.stringify(value)}'`);
135
135
  }
136
136
  else if (Array.isArray(acc)) {
137
- return acc[parseInt(index)];
137
+ const i = parseInt(index);
138
+ return acc[i < 0 ? acc.length + i : i];
138
139
  }
139
140
  return acc[index];
140
141
  }, value);
@@ -317,50 +318,54 @@ const callFunction = ({ fn, argv }, options) => {
317
318
  evaluatedArgs[i] = group$2.evaluateExpression(arg, "arg", options);
318
319
  }
319
320
  }
320
- if (fn.includes(".")) {
321
- const fnSegments = fn.split(".");
322
- if (fnSegments[0] in customEndpointFunctions && fnSegments[1] != null) {
323
- return customEndpointFunctions[fnSegments[0]][fnSegments[1]](...evaluatedArgs);
321
+ const namespaceSeparatorIndex = fn.indexOf(".");
322
+ if (namespaceSeparatorIndex !== -1) {
323
+ const namespaceFunctions = customEndpointFunctions[fn.slice(0, namespaceSeparatorIndex)];
324
+ const customFunction = namespaceFunctions?.[fn.slice(namespaceSeparatorIndex + 1)];
325
+ if (typeof customFunction === "function") {
326
+ return customFunction(...evaluatedArgs);
324
327
  }
325
328
  }
326
- if (typeof endpointFunctions[fn] !== "function") {
327
- throw new Error(`function ${fn} not loaded in endpointFunctions.`);
328
- }
329
329
  const callable = endpointFunctions[fn];
330
- return callable(...evaluatedArgs);
330
+ if (typeof callable === "function") {
331
+ return callable(...evaluatedArgs);
332
+ }
333
+ throw new Error(`function ${fn} not loaded in endpointFunctions.`);
331
334
  };
332
335
  const group$2 = {
333
336
  evaluateExpression,
334
337
  callFunction,
335
338
  };
336
339
 
337
- const evaluateCondition = ({ assign, ...fnArgs }, options) => {
340
+ const evaluateCondition = (condition, options) => {
341
+ const { assign } = condition;
338
342
  if (assign && assign in options.referenceRecord) {
339
343
  throw new EndpointError(`'${assign}' is already defined in Reference Record.`);
340
344
  }
341
- const value = callFunction(fnArgs, options);
342
- options.logger?.debug?.(`${debugId} evaluateCondition: ${toDebugString(fnArgs)} = ${toDebugString(value)}`);
343
- return {
344
- result: value === "" ? true : !!value,
345
- ...(assign != null && { toAssign: { name: assign, value } }),
346
- };
345
+ const value = callFunction(condition, options);
346
+ options.logger?.debug?.(`${debugId} evaluateCondition: ${toDebugString(condition)} = ${toDebugString(value)}`);
347
+ const result = value === "" ? true : !!value;
348
+ if (assign != null) {
349
+ return { result, toAssign: { name: assign, value } };
350
+ }
351
+ return { result };
347
352
  };
348
353
 
349
- const getEndpointHeaders = (headers, options) => Object.entries(headers).reduce((acc, [headerKey, headerVal]) => ({
350
- ...acc,
351
- [headerKey]: headerVal.map((headerValEntry) => {
354
+ const getEndpointHeaders = (headers, options) => Object.entries(headers ?? {}).reduce((acc, [headerKey, headerVal]) => {
355
+ acc[headerKey] = headerVal.map((headerValEntry) => {
352
356
  const processedExpr = evaluateExpression(headerValEntry, "Header value entry", options);
353
357
  if (typeof processedExpr !== "string") {
354
358
  throw new EndpointError(`Header '${headerKey}' value '${processedExpr}' is not a string`);
355
359
  }
356
360
  return processedExpr;
357
- }),
358
- }), {});
361
+ });
362
+ return acc;
363
+ }, {});
359
364
 
360
- const getEndpointProperties = (properties, options) => Object.entries(properties).reduce((acc, [propertyKey, propertyVal]) => ({
361
- ...acc,
362
- [propertyKey]: group$1.getEndpointProperty(propertyVal, options),
363
- }), {});
365
+ const getEndpointProperties = (properties, options) => Object.entries(properties).reduce((acc, [propertyKey, propertyVal]) => {
366
+ acc[propertyKey] = group$1.getEndpointProperty(propertyVal, options);
367
+ return acc;
368
+ }, {});
364
369
  const getEndpointProperty = (property, options) => {
365
370
  if (Array.isArray(property)) {
366
371
  return property.map((propertyEntry) => getEndpointProperty(propertyEntry, options));
@@ -422,14 +427,14 @@ const decideEndpoint = (bdd, options) => {
422
427
  if (ref >= RESULT) {
423
428
  const result = results[ref - RESULT];
424
429
  if (result[0] === -1) {
425
- const [, errorMessage] = result;
426
- throw new EndpointError(errorMessage);
430
+ const [, errorExpression] = result;
431
+ throw new EndpointError(evaluateExpression(errorExpression, "Error", closure));
427
432
  }
428
433
  const [url, properties, headers] = result;
429
434
  return {
430
435
  url: getEndpointUrl(url, closure),
431
436
  properties: getEndpointProperties(properties, closure),
432
- headers: getEndpointHeaders(headers, closure),
437
+ headers: getEndpointHeaders(headers ?? {}, closure),
433
438
  };
434
439
  }
435
440
  throw new EndpointError(`No matching endpoint.`);
@@ -437,23 +442,27 @@ const decideEndpoint = (bdd, options) => {
437
442
 
438
443
  const evaluateConditions = (conditions = [], options) => {
439
444
  const conditionsReferenceRecord = {};
445
+ const conditionOptions = {
446
+ ...options,
447
+ referenceRecord: { ...options.referenceRecord },
448
+ };
449
+ let didAssign = false;
440
450
  for (const condition of conditions) {
441
- const { result, toAssign } = evaluateCondition(condition, {
442
- ...options,
443
- referenceRecord: {
444
- ...options.referenceRecord,
445
- ...conditionsReferenceRecord,
446
- },
447
- });
451
+ const { result, toAssign } = evaluateCondition(condition, conditionOptions);
448
452
  if (!result) {
449
453
  return { result };
450
454
  }
451
455
  if (toAssign) {
456
+ didAssign = true;
452
457
  conditionsReferenceRecord[toAssign.name] = toAssign.value;
458
+ conditionOptions.referenceRecord[toAssign.name] = toAssign.value;
453
459
  options.logger?.debug?.(`${debugId} assign: ${toAssign.name} := ${toDebugString(toAssign.value)}`);
454
460
  }
455
461
  }
456
- return { result: true, referenceRecord: conditionsReferenceRecord };
462
+ if (didAssign) {
463
+ return { result: true, referenceRecord: conditionsReferenceRecord };
464
+ }
465
+ return { result: true };
457
466
  };
458
467
 
459
468
  const evaluateEndpointRule = (endpointRule, options) => {
@@ -462,21 +471,22 @@ const evaluateEndpointRule = (endpointRule, options) => {
462
471
  if (!result) {
463
472
  return;
464
473
  }
465
- const endpointRuleOptions = {
466
- ...options,
467
- referenceRecord: { ...options.referenceRecord, ...referenceRecord },
468
- };
474
+ const endpointRuleOptions = referenceRecord
475
+ ? {
476
+ ...options,
477
+ referenceRecord: { ...options.referenceRecord, ...referenceRecord },
478
+ }
479
+ : options;
469
480
  const { url, properties, headers } = endpoint;
470
481
  options.logger?.debug?.(`${debugId} Resolving endpoint from template: ${toDebugString(endpoint)}`);
471
- return {
472
- ...(headers != undefined && {
473
- headers: getEndpointHeaders(headers, endpointRuleOptions),
474
- }),
475
- ...(properties != undefined && {
476
- properties: getEndpointProperties(properties, endpointRuleOptions),
477
- }),
478
- url: getEndpointUrl(url, endpointRuleOptions),
479
- };
482
+ const endpointToReturn = { url: getEndpointUrl(url, endpointRuleOptions) };
483
+ if (headers != null) {
484
+ endpointToReturn.headers = getEndpointHeaders(headers, endpointRuleOptions);
485
+ }
486
+ if (properties != null) {
487
+ endpointToReturn.properties = getEndpointProperties(properties, endpointRuleOptions);
488
+ }
489
+ return endpointToReturn;
480
490
  };
481
491
 
482
492
  const evaluateErrorRule = (errorRule, options) => {
@@ -485,10 +495,13 @@ const evaluateErrorRule = (errorRule, options) => {
485
495
  if (!result) {
486
496
  return;
487
497
  }
488
- throw new EndpointError(evaluateExpression(error, "Error", {
489
- ...options,
490
- referenceRecord: { ...options.referenceRecord, ...referenceRecord },
491
- }));
498
+ const errorRuleOptions = referenceRecord
499
+ ? {
500
+ ...options,
501
+ referenceRecord: { ...options.referenceRecord, ...referenceRecord },
502
+ }
503
+ : options;
504
+ throw new EndpointError(evaluateExpression(error, "Error", errorRuleOptions));
492
505
  };
493
506
 
494
507
  const evaluateRules = (rules, options) => {
@@ -520,10 +533,10 @@ const evaluateTreeRule = (treeRule, options) => {
520
533
  if (!result) {
521
534
  return;
522
535
  }
523
- return group.evaluateRules(rules, {
524
- ...options,
525
- referenceRecord: { ...options.referenceRecord, ...referenceRecord },
526
- });
536
+ const treeRuleOptions = referenceRecord
537
+ ? { ...options, referenceRecord: { ...options.referenceRecord, ...referenceRecord } }
538
+ : options;
539
+ return group.evaluateRules(rules, treeRuleOptions);
527
540
  };
528
541
  const group = {
529
542
  evaluateRules,
@@ -534,20 +547,15 @@ const resolveEndpoint = (ruleSetObject, options) => {
534
547
  const { endpointParams, logger } = options;
535
548
  const { parameters, rules } = ruleSetObject;
536
549
  options.logger?.debug?.(`${debugId} Initial EndpointParams: ${toDebugString(endpointParams)}`);
537
- const paramsWithDefault = Object.entries(parameters)
538
- .filter(([, v]) => v.default != null)
539
- .map(([k, v]) => [k, v.default]);
540
- if (paramsWithDefault.length > 0) {
541
- for (const [paramKey, paramDefaultValue] of paramsWithDefault) {
542
- endpointParams[paramKey] = endpointParams[paramKey] ?? paramDefaultValue;
543
- }
544
- }
545
- const requiredParams = Object.entries(parameters)
546
- .filter(([, v]) => v.required)
547
- .map(([k]) => k);
548
- for (const requiredParam of requiredParams) {
549
- if (endpointParams[requiredParam] == null) {
550
- throw new EndpointError(`Missing required parameter: '${requiredParam}'`);
550
+ for (const paramKey in parameters) {
551
+ const parameter = parameters[paramKey];
552
+ const endpointParam = endpointParams[paramKey];
553
+ if (endpointParam == null && parameter.default != null) {
554
+ endpointParams[paramKey] = parameter.default;
555
+ continue;
556
+ }
557
+ if (parameter.required && endpointParam == null) {
558
+ throw new EndpointError(`Missing required parameter: '${paramKey}'`);
551
559
  }
552
560
  }
553
561
  const endpoint = evaluateRules(rules, { endpointParams, logger, referenceRecord: {} });