@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.
- package/.jsii +3 -3
- package/lib/api-canary/index.js +1 -1
- package/lib/ecs-appspec/index.js +1 -1
- package/lib/ecs-deployment/index.js +1 -1
- package/lib/ecs-patterns/application-load-balanced-codedeployed-fargate-service.js +1 -1
- package/node_modules/@aws-sdk/client-codedeploy/package.json +34 -34
- package/node_modules/@aws-sdk/core/dist-cjs/index.js +52 -50
- package/node_modules/@aws-sdk/core/dist-cjs/submodules/protocols/index.js +52 -50
- package/node_modules/@aws-sdk/core/dist-es/submodules/protocols/ProtocolLib.js +11 -10
- package/node_modules/@aws-sdk/core/dist-es/submodules/protocols/UnionSerde.js +4 -1
- package/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/AwsJsonRpcProtocol.js +4 -5
- package/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/AwsRestJsonProtocol.js +2 -1
- package/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/JsonShapeSerializer.js +9 -7
- package/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/parseJsonBody.js +17 -17
- package/node_modules/@aws-sdk/core/dist-es/submodules/protocols/query/AwsQueryProtocol.js +3 -8
- package/node_modules/@aws-sdk/core/dist-es/submodules/protocols/xml/AwsRestXmlProtocol.js +2 -1
- package/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/JsonShapeSerializer.d.ts +2 -2
- package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/JsonShapeSerializer.d.ts +1 -1
- package/node_modules/@aws-sdk/core/package.json +11 -11
- package/node_modules/@aws-sdk/credential-provider-env/package.json +5 -5
- package/node_modules/@aws-sdk/credential-provider-http/package.json +10 -10
- package/node_modules/@aws-sdk/credential-provider-ini/package.json +14 -14
- package/node_modules/@aws-sdk/credential-provider-login/package.json +8 -8
- package/node_modules/@aws-sdk/credential-provider-node/package.json +12 -12
- package/node_modules/@aws-sdk/credential-provider-process/package.json +6 -6
- package/node_modules/@aws-sdk/credential-provider-sso/package.json +8 -8
- package/node_modules/@aws-sdk/credential-provider-web-identity/package.json +7 -7
- package/node_modules/@aws-sdk/middleware-host-header/package.json +4 -4
- package/node_modules/@aws-sdk/middleware-logger/package.json +3 -3
- package/node_modules/@aws-sdk/middleware-recursion-detection/package.json +4 -4
- package/node_modules/@aws-sdk/middleware-user-agent/package.json +8 -8
- package/node_modules/@aws-sdk/nested-clients/package.json +32 -32
- package/node_modules/@aws-sdk/region-config-resolver/package.json +5 -5
- package/node_modules/@aws-sdk/token-providers/package.json +7 -7
- package/node_modules/@aws-sdk/types/package.json +2 -2
- package/node_modules/@aws-sdk/util-endpoints/package.json +5 -5
- package/node_modules/@aws-sdk/util-user-agent-browser/package.json +3 -3
- package/node_modules/@aws-sdk/util-user-agent-node/package.json +5 -5
- package/node_modules/@aws-sdk/xml-builder/package.json +2 -2
- package/node_modules/@smithy/config-resolver/package.json +5 -5
- package/node_modules/@smithy/core/dist-cjs/index.js +2 -1
- package/node_modules/@smithy/core/dist-cjs/submodules/cbor/index.js +32 -14
- package/node_modules/@smithy/core/dist-cjs/submodules/endpoints/index.js +2 -2
- package/node_modules/@smithy/core/dist-cjs/submodules/event-streams/index.js +16 -8
- package/node_modules/@smithy/core/dist-cjs/submodules/protocols/index.js +17 -10
- package/node_modules/@smithy/core/dist-cjs/submodules/schema/index.js +6 -1
- package/node_modules/@smithy/core/dist-cjs/submodules/serde/index.js +6 -3
- package/node_modules/@smithy/core/dist-cjs/util-identity-and-auth/DefaultIdentityProviderConfig.js +2 -1
- package/node_modules/@smithy/core/dist-es/submodules/cbor/CborCodec.js +23 -11
- package/node_modules/@smithy/core/dist-es/submodules/cbor/parseCborBody.js +9 -3
- package/node_modules/@smithy/core/dist-es/submodules/endpoints/toEndpointV1.js +2 -2
- package/node_modules/@smithy/core/dist-es/submodules/event-streams/EventStreamSerde.js +16 -8
- package/node_modules/@smithy/core/dist-es/submodules/protocols/HttpBindingProtocol.js +9 -4
- package/node_modules/@smithy/core/dist-es/submodules/protocols/HttpProtocol.js +8 -6
- package/node_modules/@smithy/core/dist-es/submodules/schema/TypeRegistry.js +6 -1
- package/node_modules/@smithy/core/dist-es/submodules/serde/parse-utils.js +6 -3
- package/node_modules/@smithy/core/dist-es/util-identity-and-auth/DefaultIdentityProviderConfig.js +2 -1
- package/node_modules/@smithy/core/dist-types/submodules/schema/TypeRegistry.d.ts +1 -1
- package/node_modules/@smithy/core/package.json +7 -7
- package/node_modules/@smithy/credential-provider-imds/package.json +5 -5
- package/node_modules/@smithy/fetch-http-handler/package.json +5 -5
- package/node_modules/@smithy/hash-node/package.json +2 -2
- package/node_modules/@smithy/invalid-dependency/package.json +2 -2
- package/node_modules/@smithy/middleware-content-length/package.json +3 -3
- package/node_modules/@smithy/middleware-endpoint/package.json +8 -8
- package/node_modules/@smithy/middleware-retry/package.json +9 -9
- package/node_modules/@smithy/middleware-serde/package.json +4 -4
- package/node_modules/@smithy/middleware-stack/package.json +2 -2
- package/node_modules/@smithy/node-config-provider/package.json +4 -4
- package/node_modules/@smithy/node-http-handler/dist-cjs/index.js +191 -96
- package/node_modules/@smithy/node-http-handler/dist-es/http2/ClientHttp2SessionRef.js +45 -0
- package/node_modules/@smithy/node-http-handler/dist-es/node-http2-connection-manager.js +71 -35
- package/node_modules/@smithy/node-http-handler/dist-es/node-http2-connection-pool.js +32 -18
- package/node_modules/@smithy/node-http-handler/dist-es/node-http2-handler.js +44 -43
- package/node_modules/@smithy/node-http-handler/dist-types/http2/ClientHttp2SessionRef.d.ts +42 -0
- package/node_modules/@smithy/node-http-handler/dist-types/node-http2-connection-manager.d.ts +34 -14
- package/node_modules/@smithy/node-http-handler/dist-types/node-http2-connection-pool.d.ts +32 -8
- package/node_modules/@smithy/node-http-handler/dist-types/node-http2-handler.d.ts +14 -6
- package/node_modules/@smithy/node-http-handler/package.json +5 -5
- package/node_modules/@smithy/property-provider/package.json +2 -2
- package/node_modules/@smithy/protocol-http/package.json +2 -2
- package/node_modules/@smithy/querystring-builder/package.json +2 -2
- package/node_modules/@smithy/querystring-parser/package.json +2 -2
- package/node_modules/@smithy/service-error-classification/dist-cjs/index.js +5 -0
- package/node_modules/@smithy/service-error-classification/dist-es/index.js +4 -0
- package/node_modules/@smithy/service-error-classification/dist-types/index.d.ts +6 -0
- package/node_modules/@smithy/service-error-classification/package.json +2 -2
- package/node_modules/@smithy/shared-ini-file-loader/package.json +2 -2
- package/node_modules/@smithy/signature-v4/dist-cjs/index.js +11 -5
- package/node_modules/@smithy/signature-v4/dist-es/SignatureV4.js +11 -5
- package/node_modules/@smithy/signature-v4/dist-types/SignatureV4.d.ts +3 -3
- package/node_modules/@smithy/signature-v4/package.json +4 -4
- package/node_modules/@smithy/smithy-client/dist-cjs/index.js +8 -1
- package/node_modules/@smithy/smithy-client/dist-es/command.js +8 -1
- package/node_modules/@smithy/smithy-client/package.json +7 -7
- package/node_modules/@smithy/types/dist-types/connection/config.d.ts +5 -0
- package/node_modules/@smithy/types/dist-types/signature.d.ts +20 -3
- package/node_modules/@smithy/types/package.json +1 -1
- package/node_modules/@smithy/url-parser/package.json +3 -3
- package/node_modules/@smithy/util-defaults-mode-browser/package.json +4 -4
- package/node_modules/@smithy/util-defaults-mode-node/package.json +7 -7
- package/node_modules/@smithy/util-endpoints/dist-cjs/index.js +79 -71
- package/node_modules/@smithy/util-endpoints/dist-es/decideEndpoint.js +4 -3
- package/node_modules/@smithy/util-endpoints/dist-es/lib/getAttr.js +2 -1
- package/node_modules/@smithy/util-endpoints/dist-es/resolveEndpoint.js +8 -13
- package/node_modules/@smithy/util-endpoints/dist-es/utils/evaluateCondition.js +9 -7
- package/node_modules/@smithy/util-endpoints/dist-es/utils/evaluateConditions.js +12 -8
- package/node_modules/@smithy/util-endpoints/dist-es/utils/evaluateEndpointRule.js +14 -13
- package/node_modules/@smithy/util-endpoints/dist-es/utils/evaluateErrorRule.js +7 -4
- package/node_modules/@smithy/util-endpoints/dist-es/utils/evaluateExpression.js +10 -8
- package/node_modules/@smithy/util-endpoints/dist-es/utils/evaluateRules.js +4 -4
- package/node_modules/@smithy/util-endpoints/dist-es/utils/getEndpointHeaders.js +5 -5
- package/node_modules/@smithy/util-endpoints/dist-es/utils/getEndpointProperties.js +4 -4
- package/node_modules/@smithy/util-endpoints/dist-types/bdd/BinaryDecisionDiagram.d.ts +2 -2
- package/node_modules/@smithy/util-endpoints/dist-types/types/shared.d.ts +3 -3
- package/node_modules/@smithy/util-endpoints/dist-types/utils/endpointFunctions.d.ts +2 -15
- package/node_modules/@smithy/util-endpoints/dist-types/utils/evaluateCondition.d.ts +6 -3
- package/node_modules/@smithy/util-endpoints/dist-types/utils/evaluateConditions.d.ts +3 -3
- package/node_modules/@smithy/util-endpoints/dist-types/utils/getEndpointHeaders.d.ts +1 -1
- package/node_modules/@smithy/util-endpoints/dist-types/utils/getEndpointProperties.d.ts +2 -2
- package/node_modules/@smithy/util-endpoints/dist-types/utils/getReferenceValue.d.ts +2 -2
- package/node_modules/@smithy/util-endpoints/package.json +3 -3
- package/node_modules/@smithy/util-middleware/package.json +2 -2
- package/node_modules/@smithy/util-retry/package.json +3 -3
- package/node_modules/@smithy/util-stream/package.json +4 -4
- package/node_modules/@smithy/util-waiter/package.json +3 -3
- package/node_modules/fast-xml-builder/package.json +1 -1
- package/node_modules/fast-xml-builder/src/fxb.js +6 -2
- package/node_modules/fast-xml-builder/src/orderedJs2Xml.js +16 -2
- package/package.json +4 -4
- /package/node_modules/{@aws-sdk/xml-builder/node_modules/strnum → strnum}/CHANGELOG.md +0 -0
- /package/node_modules/{@aws-sdk/xml-builder/node_modules/strnum → strnum}/LICENSE +0 -0
- /package/node_modules/{@aws-sdk/xml-builder/node_modules/strnum → strnum}/README.md +0 -0
- /package/node_modules/{@aws-sdk/xml-builder/node_modules/strnum → strnum}/package.json +0 -0
- /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.
|
|
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.
|
|
57
|
+
"@smithy/types": "^4.14.1"
|
|
58
58
|
}
|
|
59
59
|
}
|
|
@@ -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, {
|
|
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, {
|
|
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:
|
|
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 }:
|
|
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.
|
|
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.
|
|
30
|
-
"@smithy/types": "^4.14.
|
|
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.
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
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.
|
|
30
|
-
"@smithy/middleware-endpoint": "^4.4.
|
|
31
|
-
"@smithy/middleware-stack": "^4.2.
|
|
32
|
-
"@smithy/protocol-http": "^5.3.
|
|
33
|
-
"@smithy/types": "^4.14.
|
|
34
|
-
"@smithy/util-stream": "^4.5.
|
|
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:
|
|
154
|
-
sign(event: SignableMessage, options:
|
|
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/url-parser",
|
|
3
|
-
"version": "4.2.
|
|
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.
|
|
27
|
-
"@smithy/types": "^4.14.
|
|
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.
|
|
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.
|
|
27
|
-
"@smithy/smithy-client": "^4.12.
|
|
28
|
-
"@smithy/types": "^4.14.
|
|
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.
|
|
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.
|
|
27
|
-
"@smithy/credential-provider-imds": "^4.2.
|
|
28
|
-
"@smithy/node-config-provider": "^4.3.
|
|
29
|
-
"@smithy/property-provider": "^4.2.
|
|
30
|
-
"@smithy/smithy-client": "^4.12.
|
|
31
|
-
"@smithy/types": "^4.14.
|
|
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
|
-
|
|
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
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
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
|
-
|
|
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 = (
|
|
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(
|
|
342
|
-
options.logger?.debug?.(`${debugId} evaluateCondition: ${toDebugString(
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
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
|
-
|
|
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
|
-
|
|
362
|
-
|
|
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 [,
|
|
426
|
-
throw new EndpointError(
|
|
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
|
-
|
|
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
|
-
|
|
467
|
-
|
|
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
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
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
|
-
|
|
489
|
-
|
|
490
|
-
|
|
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
|
-
|
|
524
|
-
...options,
|
|
525
|
-
|
|
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
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
}
|
|
544
|
-
|
|
545
|
-
|
|
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: {} });
|