@aws-sdk/middleware-flexible-checksums 3.489.0 → 3.496.0
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/dist-cjs/configuration.js +1 -2
- package/dist-cjs/constants.js +1 -18
- package/dist-cjs/flexibleChecksumsMiddleware.js +1 -73
- package/dist-cjs/flexibleChecksumsResponseMiddleware.js +1 -54
- package/dist-cjs/getChecksum.js +1 -10
- package/dist-cjs/getChecksumAlgorithmForRequest.js +1 -18
- package/dist-cjs/getChecksumAlgorithmListForResponse.js +1 -15
- package/dist-cjs/getChecksumLocationName.js +1 -6
- package/dist-cjs/getFlexibleChecksumsPlugin.js +1 -12
- package/dist-cjs/hasHeader.js +1 -13
- package/dist-cjs/index.js +308 -6
- package/dist-cjs/isChecksumWithPartNumber.js +1 -17
- package/dist-cjs/isStreaming.js +1 -6
- package/dist-cjs/selectChecksumAlgorithmFunction.js +1 -14
- package/dist-cjs/stringHasher.js +1 -10
- package/dist-cjs/types.js +1 -16
- package/dist-cjs/validateChecksumFromResponse.js +1 -26
- package/package.json +8 -8
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
1
|
+
module.exports = require("./index.js");
|
package/dist-cjs/constants.js
CHANGED
|
@@ -1,18 +1 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.S3_EXPRESS_DEFAULT_CHECKSUM_ALGORITHM = exports.DEFAULT_CHECKSUM_ALGORITHM = exports.ChecksumLocation = exports.ChecksumAlgorithm = void 0;
|
|
4
|
-
var ChecksumAlgorithm;
|
|
5
|
-
(function (ChecksumAlgorithm) {
|
|
6
|
-
ChecksumAlgorithm["MD5"] = "MD5";
|
|
7
|
-
ChecksumAlgorithm["CRC32"] = "CRC32";
|
|
8
|
-
ChecksumAlgorithm["CRC32C"] = "CRC32C";
|
|
9
|
-
ChecksumAlgorithm["SHA1"] = "SHA1";
|
|
10
|
-
ChecksumAlgorithm["SHA256"] = "SHA256";
|
|
11
|
-
})(ChecksumAlgorithm = exports.ChecksumAlgorithm || (exports.ChecksumAlgorithm = {}));
|
|
12
|
-
var ChecksumLocation;
|
|
13
|
-
(function (ChecksumLocation) {
|
|
14
|
-
ChecksumLocation["HEADER"] = "header";
|
|
15
|
-
ChecksumLocation["TRAILER"] = "trailer";
|
|
16
|
-
})(ChecksumLocation = exports.ChecksumLocation || (exports.ChecksumLocation = {}));
|
|
17
|
-
exports.DEFAULT_CHECKSUM_ALGORITHM = ChecksumAlgorithm.MD5;
|
|
18
|
-
exports.S3_EXPRESS_DEFAULT_CHECKSUM_ALGORITHM = ChecksumAlgorithm.CRC32;
|
|
1
|
+
module.exports = require("./index.js");
|
|
@@ -1,73 +1 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.flexibleChecksumsMiddleware = exports.flexibleChecksumsMiddlewareOptions = void 0;
|
|
4
|
-
const protocol_http_1 = require("@smithy/protocol-http");
|
|
5
|
-
const getChecksumAlgorithmForRequest_1 = require("./getChecksumAlgorithmForRequest");
|
|
6
|
-
const getChecksumLocationName_1 = require("./getChecksumLocationName");
|
|
7
|
-
const hasHeader_1 = require("./hasHeader");
|
|
8
|
-
const isStreaming_1 = require("./isStreaming");
|
|
9
|
-
const selectChecksumAlgorithmFunction_1 = require("./selectChecksumAlgorithmFunction");
|
|
10
|
-
const stringHasher_1 = require("./stringHasher");
|
|
11
|
-
exports.flexibleChecksumsMiddlewareOptions = {
|
|
12
|
-
name: "flexibleChecksumsMiddleware",
|
|
13
|
-
step: "build",
|
|
14
|
-
tags: ["BODY_CHECKSUM"],
|
|
15
|
-
override: true,
|
|
16
|
-
};
|
|
17
|
-
const flexibleChecksumsMiddleware = (config, middlewareConfig) => (next, context) => async (args) => {
|
|
18
|
-
if (!protocol_http_1.HttpRequest.isInstance(args.request)) {
|
|
19
|
-
return next(args);
|
|
20
|
-
}
|
|
21
|
-
const { request } = args;
|
|
22
|
-
const { body: requestBody, headers } = request;
|
|
23
|
-
const { base64Encoder, streamHasher } = config;
|
|
24
|
-
const { input, requestChecksumRequired, requestAlgorithmMember } = middlewareConfig;
|
|
25
|
-
const checksumAlgorithm = (0, getChecksumAlgorithmForRequest_1.getChecksumAlgorithmForRequest)(input, {
|
|
26
|
-
requestChecksumRequired,
|
|
27
|
-
requestAlgorithmMember,
|
|
28
|
-
}, !!context.isS3ExpressBucket);
|
|
29
|
-
let updatedBody = requestBody;
|
|
30
|
-
let updatedHeaders = headers;
|
|
31
|
-
if (checksumAlgorithm) {
|
|
32
|
-
const checksumLocationName = (0, getChecksumLocationName_1.getChecksumLocationName)(checksumAlgorithm);
|
|
33
|
-
const checksumAlgorithmFn = (0, selectChecksumAlgorithmFunction_1.selectChecksumAlgorithmFunction)(checksumAlgorithm, config);
|
|
34
|
-
if ((0, isStreaming_1.isStreaming)(requestBody)) {
|
|
35
|
-
const { getAwsChunkedEncodingStream, bodyLengthChecker } = config;
|
|
36
|
-
updatedBody = getAwsChunkedEncodingStream(requestBody, {
|
|
37
|
-
base64Encoder,
|
|
38
|
-
bodyLengthChecker,
|
|
39
|
-
checksumLocationName,
|
|
40
|
-
checksumAlgorithmFn,
|
|
41
|
-
streamHasher,
|
|
42
|
-
});
|
|
43
|
-
updatedHeaders = {
|
|
44
|
-
...headers,
|
|
45
|
-
"content-encoding": headers["content-encoding"]
|
|
46
|
-
? `${headers["content-encoding"]},aws-chunked`
|
|
47
|
-
: "aws-chunked",
|
|
48
|
-
"transfer-encoding": "chunked",
|
|
49
|
-
"x-amz-decoded-content-length": headers["content-length"],
|
|
50
|
-
"x-amz-content-sha256": "STREAMING-UNSIGNED-PAYLOAD-TRAILER",
|
|
51
|
-
"x-amz-trailer": checksumLocationName,
|
|
52
|
-
};
|
|
53
|
-
delete updatedHeaders["content-length"];
|
|
54
|
-
}
|
|
55
|
-
else if (!(0, hasHeader_1.hasHeader)(checksumLocationName, headers)) {
|
|
56
|
-
const rawChecksum = await (0, stringHasher_1.stringHasher)(checksumAlgorithmFn, requestBody);
|
|
57
|
-
updatedHeaders = {
|
|
58
|
-
...headers,
|
|
59
|
-
[checksumLocationName]: base64Encoder(rawChecksum),
|
|
60
|
-
};
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
const result = await next({
|
|
64
|
-
...args,
|
|
65
|
-
request: {
|
|
66
|
-
...request,
|
|
67
|
-
headers: updatedHeaders,
|
|
68
|
-
body: updatedBody,
|
|
69
|
-
},
|
|
70
|
-
});
|
|
71
|
-
return result;
|
|
72
|
-
};
|
|
73
|
-
exports.flexibleChecksumsMiddleware = flexibleChecksumsMiddleware;
|
|
1
|
+
module.exports = require("./index.js");
|
|
@@ -1,54 +1 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.flexibleChecksumsResponseMiddleware = exports.flexibleChecksumsResponseMiddlewareOptions = void 0;
|
|
4
|
-
const protocol_http_1 = require("@smithy/protocol-http");
|
|
5
|
-
const getChecksumAlgorithmListForResponse_1 = require("./getChecksumAlgorithmListForResponse");
|
|
6
|
-
const getChecksumLocationName_1 = require("./getChecksumLocationName");
|
|
7
|
-
const isChecksumWithPartNumber_1 = require("./isChecksumWithPartNumber");
|
|
8
|
-
const isStreaming_1 = require("./isStreaming");
|
|
9
|
-
const create_read_stream_on_buffer_1 = require("./streams/create-read-stream-on-buffer");
|
|
10
|
-
const validateChecksumFromResponse_1 = require("./validateChecksumFromResponse");
|
|
11
|
-
exports.flexibleChecksumsResponseMiddlewareOptions = {
|
|
12
|
-
name: "flexibleChecksumsResponseMiddleware",
|
|
13
|
-
toMiddleware: "deserializerMiddleware",
|
|
14
|
-
relation: "after",
|
|
15
|
-
tags: ["BODY_CHECKSUM"],
|
|
16
|
-
override: true,
|
|
17
|
-
};
|
|
18
|
-
const flexibleChecksumsResponseMiddleware = (config, middlewareConfig) => (next, context) => async (args) => {
|
|
19
|
-
if (!protocol_http_1.HttpRequest.isInstance(args.request)) {
|
|
20
|
-
return next(args);
|
|
21
|
-
}
|
|
22
|
-
const input = args.input;
|
|
23
|
-
const result = await next(args);
|
|
24
|
-
const response = result.response;
|
|
25
|
-
let collectedStream = undefined;
|
|
26
|
-
const { requestValidationModeMember, responseAlgorithms } = middlewareConfig;
|
|
27
|
-
if (requestValidationModeMember && input[requestValidationModeMember] === "ENABLED") {
|
|
28
|
-
const { clientName, commandName } = context;
|
|
29
|
-
const isS3WholeObjectMultipartGetResponseChecksum = clientName === "S3Client" &&
|
|
30
|
-
commandName === "GetObjectCommand" &&
|
|
31
|
-
(0, getChecksumAlgorithmListForResponse_1.getChecksumAlgorithmListForResponse)(responseAlgorithms).every((algorithm) => {
|
|
32
|
-
const responseHeader = (0, getChecksumLocationName_1.getChecksumLocationName)(algorithm);
|
|
33
|
-
const checksumFromResponse = response.headers[responseHeader];
|
|
34
|
-
return !checksumFromResponse || (0, isChecksumWithPartNumber_1.isChecksumWithPartNumber)(checksumFromResponse);
|
|
35
|
-
});
|
|
36
|
-
if (isS3WholeObjectMultipartGetResponseChecksum) {
|
|
37
|
-
return result;
|
|
38
|
-
}
|
|
39
|
-
const isStreamingBody = (0, isStreaming_1.isStreaming)(response.body);
|
|
40
|
-
if (isStreamingBody) {
|
|
41
|
-
collectedStream = await config.streamCollector(response.body);
|
|
42
|
-
response.body = (0, create_read_stream_on_buffer_1.createReadStreamOnBuffer)(collectedStream);
|
|
43
|
-
}
|
|
44
|
-
await (0, validateChecksumFromResponse_1.validateChecksumFromResponse)(result.response, {
|
|
45
|
-
config,
|
|
46
|
-
responseAlgorithms,
|
|
47
|
-
});
|
|
48
|
-
if (isStreamingBody && collectedStream) {
|
|
49
|
-
response.body = (0, create_read_stream_on_buffer_1.createReadStreamOnBuffer)(collectedStream);
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
return result;
|
|
53
|
-
};
|
|
54
|
-
exports.flexibleChecksumsResponseMiddleware = flexibleChecksumsResponseMiddleware;
|
|
1
|
+
module.exports = require("./index.js");
|
package/dist-cjs/getChecksum.js
CHANGED
|
@@ -1,10 +1 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getChecksum = void 0;
|
|
4
|
-
const isStreaming_1 = require("./isStreaming");
|
|
5
|
-
const stringHasher_1 = require("./stringHasher");
|
|
6
|
-
const getChecksum = async (body, { streamHasher, checksumAlgorithmFn, base64Encoder }) => {
|
|
7
|
-
const digest = (0, isStreaming_1.isStreaming)(body) ? streamHasher(checksumAlgorithmFn, body) : (0, stringHasher_1.stringHasher)(checksumAlgorithmFn, body);
|
|
8
|
-
return base64Encoder(await digest);
|
|
9
|
-
};
|
|
10
|
-
exports.getChecksum = getChecksum;
|
|
1
|
+
module.exports = require("./index.js");
|
|
@@ -1,18 +1 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getChecksumAlgorithmForRequest = void 0;
|
|
4
|
-
const constants_1 = require("./constants");
|
|
5
|
-
const types_1 = require("./types");
|
|
6
|
-
const getChecksumAlgorithmForRequest = (input, { requestChecksumRequired, requestAlgorithmMember }, isS3Express) => {
|
|
7
|
-
const defaultAlgorithm = isS3Express ? constants_1.S3_EXPRESS_DEFAULT_CHECKSUM_ALGORITHM : constants_1.DEFAULT_CHECKSUM_ALGORITHM;
|
|
8
|
-
if (!requestAlgorithmMember || !input[requestAlgorithmMember]) {
|
|
9
|
-
return requestChecksumRequired ? defaultAlgorithm : undefined;
|
|
10
|
-
}
|
|
11
|
-
const checksumAlgorithm = input[requestAlgorithmMember];
|
|
12
|
-
if (!types_1.CLIENT_SUPPORTED_ALGORITHMS.includes(checksumAlgorithm)) {
|
|
13
|
-
throw new Error(`The checksum algorithm "${checksumAlgorithm}" is not supported by the client.` +
|
|
14
|
-
` Select one of ${types_1.CLIENT_SUPPORTED_ALGORITHMS}.`);
|
|
15
|
-
}
|
|
16
|
-
return checksumAlgorithm;
|
|
17
|
-
};
|
|
18
|
-
exports.getChecksumAlgorithmForRequest = getChecksumAlgorithmForRequest;
|
|
1
|
+
module.exports = require("./index.js");
|
|
@@ -1,15 +1 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getChecksumAlgorithmListForResponse = void 0;
|
|
4
|
-
const types_1 = require("./types");
|
|
5
|
-
const getChecksumAlgorithmListForResponse = (responseAlgorithms = []) => {
|
|
6
|
-
const validChecksumAlgorithms = [];
|
|
7
|
-
for (const algorithm of types_1.PRIORITY_ORDER_ALGORITHMS) {
|
|
8
|
-
if (!responseAlgorithms.includes(algorithm) || !types_1.CLIENT_SUPPORTED_ALGORITHMS.includes(algorithm)) {
|
|
9
|
-
continue;
|
|
10
|
-
}
|
|
11
|
-
validChecksumAlgorithms.push(algorithm);
|
|
12
|
-
}
|
|
13
|
-
return validChecksumAlgorithms;
|
|
14
|
-
};
|
|
15
|
-
exports.getChecksumAlgorithmListForResponse = getChecksumAlgorithmListForResponse;
|
|
1
|
+
module.exports = require("./index.js");
|
|
@@ -1,6 +1 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getChecksumLocationName = void 0;
|
|
4
|
-
const constants_1 = require("./constants");
|
|
5
|
-
const getChecksumLocationName = (algorithm) => algorithm === constants_1.ChecksumAlgorithm.MD5 ? "content-md5" : `x-amz-checksum-${algorithm.toLowerCase()}`;
|
|
6
|
-
exports.getChecksumLocationName = getChecksumLocationName;
|
|
1
|
+
module.exports = require("./index.js");
|
|
@@ -1,12 +1 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getFlexibleChecksumsPlugin = void 0;
|
|
4
|
-
const flexibleChecksumsMiddleware_1 = require("./flexibleChecksumsMiddleware");
|
|
5
|
-
const flexibleChecksumsResponseMiddleware_1 = require("./flexibleChecksumsResponseMiddleware");
|
|
6
|
-
const getFlexibleChecksumsPlugin = (config, middlewareConfig) => ({
|
|
7
|
-
applyToStack: (clientStack) => {
|
|
8
|
-
clientStack.add((0, flexibleChecksumsMiddleware_1.flexibleChecksumsMiddleware)(config, middlewareConfig), flexibleChecksumsMiddleware_1.flexibleChecksumsMiddlewareOptions);
|
|
9
|
-
clientStack.addRelativeTo((0, flexibleChecksumsResponseMiddleware_1.flexibleChecksumsResponseMiddleware)(config, middlewareConfig), flexibleChecksumsResponseMiddleware_1.flexibleChecksumsResponseMiddlewareOptions);
|
|
10
|
-
},
|
|
11
|
-
});
|
|
12
|
-
exports.getFlexibleChecksumsPlugin = getFlexibleChecksumsPlugin;
|
|
1
|
+
module.exports = require("./index.js");
|
package/dist-cjs/hasHeader.js
CHANGED
|
@@ -1,13 +1 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.hasHeader = void 0;
|
|
4
|
-
const hasHeader = (header, headers) => {
|
|
5
|
-
const soughtHeader = header.toLowerCase();
|
|
6
|
-
for (const headerName of Object.keys(headers)) {
|
|
7
|
-
if (soughtHeader === headerName.toLowerCase()) {
|
|
8
|
-
return true;
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
return false;
|
|
12
|
-
};
|
|
13
|
-
exports.hasHeader = hasHeader;
|
|
1
|
+
module.exports = require("./index.js");
|
package/dist-cjs/index.js
CHANGED
|
@@ -1,6 +1,308 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
|
|
20
|
+
// src/index.ts
|
|
21
|
+
var src_exports = {};
|
|
22
|
+
__export(src_exports, {
|
|
23
|
+
ChecksumAlgorithm: () => ChecksumAlgorithm,
|
|
24
|
+
ChecksumLocation: () => ChecksumLocation,
|
|
25
|
+
DEFAULT_CHECKSUM_ALGORITHM: () => DEFAULT_CHECKSUM_ALGORITHM,
|
|
26
|
+
S3_EXPRESS_DEFAULT_CHECKSUM_ALGORITHM: () => S3_EXPRESS_DEFAULT_CHECKSUM_ALGORITHM,
|
|
27
|
+
flexibleChecksumsMiddleware: () => flexibleChecksumsMiddleware,
|
|
28
|
+
flexibleChecksumsMiddlewareOptions: () => flexibleChecksumsMiddlewareOptions,
|
|
29
|
+
getFlexibleChecksumsPlugin: () => getFlexibleChecksumsPlugin
|
|
30
|
+
});
|
|
31
|
+
module.exports = __toCommonJS(src_exports);
|
|
32
|
+
|
|
33
|
+
// src/constants.ts
|
|
34
|
+
var ChecksumAlgorithm = /* @__PURE__ */ ((ChecksumAlgorithm3) => {
|
|
35
|
+
ChecksumAlgorithm3["MD5"] = "MD5";
|
|
36
|
+
ChecksumAlgorithm3["CRC32"] = "CRC32";
|
|
37
|
+
ChecksumAlgorithm3["CRC32C"] = "CRC32C";
|
|
38
|
+
ChecksumAlgorithm3["SHA1"] = "SHA1";
|
|
39
|
+
ChecksumAlgorithm3["SHA256"] = "SHA256";
|
|
40
|
+
return ChecksumAlgorithm3;
|
|
41
|
+
})(ChecksumAlgorithm || {});
|
|
42
|
+
var ChecksumLocation = /* @__PURE__ */ ((ChecksumLocation2) => {
|
|
43
|
+
ChecksumLocation2["HEADER"] = "header";
|
|
44
|
+
ChecksumLocation2["TRAILER"] = "trailer";
|
|
45
|
+
return ChecksumLocation2;
|
|
46
|
+
})(ChecksumLocation || {});
|
|
47
|
+
var DEFAULT_CHECKSUM_ALGORITHM = "MD5" /* MD5 */;
|
|
48
|
+
var S3_EXPRESS_DEFAULT_CHECKSUM_ALGORITHM = "CRC32" /* CRC32 */;
|
|
49
|
+
|
|
50
|
+
// src/flexibleChecksumsMiddleware.ts
|
|
51
|
+
var import_protocol_http = require("@smithy/protocol-http");
|
|
52
|
+
|
|
53
|
+
// src/types.ts
|
|
54
|
+
var CLIENT_SUPPORTED_ALGORITHMS = [
|
|
55
|
+
"CRC32" /* CRC32 */,
|
|
56
|
+
"CRC32C" /* CRC32C */,
|
|
57
|
+
"SHA1" /* SHA1 */,
|
|
58
|
+
"SHA256" /* SHA256 */
|
|
59
|
+
];
|
|
60
|
+
var PRIORITY_ORDER_ALGORITHMS = [
|
|
61
|
+
"CRC32" /* CRC32 */,
|
|
62
|
+
"CRC32C" /* CRC32C */,
|
|
63
|
+
"SHA1" /* SHA1 */,
|
|
64
|
+
"SHA256" /* SHA256 */
|
|
65
|
+
];
|
|
66
|
+
|
|
67
|
+
// src/getChecksumAlgorithmForRequest.ts
|
|
68
|
+
var getChecksumAlgorithmForRequest = /* @__PURE__ */ __name((input, { requestChecksumRequired, requestAlgorithmMember }, isS3Express) => {
|
|
69
|
+
const defaultAlgorithm = isS3Express ? S3_EXPRESS_DEFAULT_CHECKSUM_ALGORITHM : DEFAULT_CHECKSUM_ALGORITHM;
|
|
70
|
+
if (!requestAlgorithmMember || !input[requestAlgorithmMember]) {
|
|
71
|
+
return requestChecksumRequired ? defaultAlgorithm : void 0;
|
|
72
|
+
}
|
|
73
|
+
const checksumAlgorithm = input[requestAlgorithmMember];
|
|
74
|
+
if (!CLIENT_SUPPORTED_ALGORITHMS.includes(checksumAlgorithm)) {
|
|
75
|
+
throw new Error(
|
|
76
|
+
`The checksum algorithm "${checksumAlgorithm}" is not supported by the client. Select one of ${CLIENT_SUPPORTED_ALGORITHMS}.`
|
|
77
|
+
);
|
|
78
|
+
}
|
|
79
|
+
return checksumAlgorithm;
|
|
80
|
+
}, "getChecksumAlgorithmForRequest");
|
|
81
|
+
|
|
82
|
+
// src/getChecksumLocationName.ts
|
|
83
|
+
var getChecksumLocationName = /* @__PURE__ */ __name((algorithm) => algorithm === "MD5" /* MD5 */ ? "content-md5" : `x-amz-checksum-${algorithm.toLowerCase()}`, "getChecksumLocationName");
|
|
84
|
+
|
|
85
|
+
// src/hasHeader.ts
|
|
86
|
+
var hasHeader = /* @__PURE__ */ __name((header, headers) => {
|
|
87
|
+
const soughtHeader = header.toLowerCase();
|
|
88
|
+
for (const headerName of Object.keys(headers)) {
|
|
89
|
+
if (soughtHeader === headerName.toLowerCase()) {
|
|
90
|
+
return true;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
return false;
|
|
94
|
+
}, "hasHeader");
|
|
95
|
+
|
|
96
|
+
// src/isStreaming.ts
|
|
97
|
+
var import_is_array_buffer = require("@smithy/is-array-buffer");
|
|
98
|
+
var isStreaming = /* @__PURE__ */ __name((body) => body !== void 0 && typeof body !== "string" && !ArrayBuffer.isView(body) && !(0, import_is_array_buffer.isArrayBuffer)(body), "isStreaming");
|
|
99
|
+
|
|
100
|
+
// src/selectChecksumAlgorithmFunction.ts
|
|
101
|
+
var import_crc32 = require("@aws-crypto/crc32");
|
|
102
|
+
var import_crc32c = require("@aws-crypto/crc32c");
|
|
103
|
+
var selectChecksumAlgorithmFunction = /* @__PURE__ */ __name((checksumAlgorithm, config) => ({
|
|
104
|
+
["MD5" /* MD5 */]: config.md5,
|
|
105
|
+
["CRC32" /* CRC32 */]: import_crc32.AwsCrc32,
|
|
106
|
+
["CRC32C" /* CRC32C */]: import_crc32c.AwsCrc32c,
|
|
107
|
+
["SHA1" /* SHA1 */]: config.sha1,
|
|
108
|
+
["SHA256" /* SHA256 */]: config.sha256
|
|
109
|
+
})[checksumAlgorithm], "selectChecksumAlgorithmFunction");
|
|
110
|
+
|
|
111
|
+
// src/stringHasher.ts
|
|
112
|
+
var import_util_utf8 = require("@smithy/util-utf8");
|
|
113
|
+
var stringHasher = /* @__PURE__ */ __name((checksumAlgorithmFn, body) => {
|
|
114
|
+
const hash = new checksumAlgorithmFn();
|
|
115
|
+
hash.update((0, import_util_utf8.toUint8Array)(body || ""));
|
|
116
|
+
return hash.digest();
|
|
117
|
+
}, "stringHasher");
|
|
118
|
+
|
|
119
|
+
// src/flexibleChecksumsMiddleware.ts
|
|
120
|
+
var flexibleChecksumsMiddlewareOptions = {
|
|
121
|
+
name: "flexibleChecksumsMiddleware",
|
|
122
|
+
step: "build",
|
|
123
|
+
tags: ["BODY_CHECKSUM"],
|
|
124
|
+
override: true
|
|
125
|
+
};
|
|
126
|
+
var flexibleChecksumsMiddleware = /* @__PURE__ */ __name((config, middlewareConfig) => (next, context) => async (args) => {
|
|
127
|
+
if (!import_protocol_http.HttpRequest.isInstance(args.request)) {
|
|
128
|
+
return next(args);
|
|
129
|
+
}
|
|
130
|
+
const { request } = args;
|
|
131
|
+
const { body: requestBody, headers } = request;
|
|
132
|
+
const { base64Encoder, streamHasher } = config;
|
|
133
|
+
const { input, requestChecksumRequired, requestAlgorithmMember } = middlewareConfig;
|
|
134
|
+
const checksumAlgorithm = getChecksumAlgorithmForRequest(
|
|
135
|
+
input,
|
|
136
|
+
{
|
|
137
|
+
requestChecksumRequired,
|
|
138
|
+
requestAlgorithmMember
|
|
139
|
+
},
|
|
140
|
+
!!context.isS3ExpressBucket
|
|
141
|
+
);
|
|
142
|
+
let updatedBody = requestBody;
|
|
143
|
+
let updatedHeaders = headers;
|
|
144
|
+
if (checksumAlgorithm) {
|
|
145
|
+
const checksumLocationName = getChecksumLocationName(checksumAlgorithm);
|
|
146
|
+
const checksumAlgorithmFn = selectChecksumAlgorithmFunction(checksumAlgorithm, config);
|
|
147
|
+
if (isStreaming(requestBody)) {
|
|
148
|
+
const { getAwsChunkedEncodingStream, bodyLengthChecker } = config;
|
|
149
|
+
updatedBody = getAwsChunkedEncodingStream(requestBody, {
|
|
150
|
+
base64Encoder,
|
|
151
|
+
bodyLengthChecker,
|
|
152
|
+
checksumLocationName,
|
|
153
|
+
checksumAlgorithmFn,
|
|
154
|
+
streamHasher
|
|
155
|
+
});
|
|
156
|
+
updatedHeaders = {
|
|
157
|
+
...headers,
|
|
158
|
+
"content-encoding": headers["content-encoding"] ? `${headers["content-encoding"]},aws-chunked` : "aws-chunked",
|
|
159
|
+
"transfer-encoding": "chunked",
|
|
160
|
+
"x-amz-decoded-content-length": headers["content-length"],
|
|
161
|
+
"x-amz-content-sha256": "STREAMING-UNSIGNED-PAYLOAD-TRAILER",
|
|
162
|
+
"x-amz-trailer": checksumLocationName
|
|
163
|
+
};
|
|
164
|
+
delete updatedHeaders["content-length"];
|
|
165
|
+
} else if (!hasHeader(checksumLocationName, headers)) {
|
|
166
|
+
const rawChecksum = await stringHasher(checksumAlgorithmFn, requestBody);
|
|
167
|
+
updatedHeaders = {
|
|
168
|
+
...headers,
|
|
169
|
+
[checksumLocationName]: base64Encoder(rawChecksum)
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
const result = await next({
|
|
174
|
+
...args,
|
|
175
|
+
request: {
|
|
176
|
+
...request,
|
|
177
|
+
headers: updatedHeaders,
|
|
178
|
+
body: updatedBody
|
|
179
|
+
}
|
|
180
|
+
});
|
|
181
|
+
return result;
|
|
182
|
+
}, "flexibleChecksumsMiddleware");
|
|
183
|
+
|
|
184
|
+
// src/flexibleChecksumsResponseMiddleware.ts
|
|
185
|
+
|
|
186
|
+
|
|
187
|
+
// src/getChecksumAlgorithmListForResponse.ts
|
|
188
|
+
var getChecksumAlgorithmListForResponse = /* @__PURE__ */ __name((responseAlgorithms = []) => {
|
|
189
|
+
const validChecksumAlgorithms = [];
|
|
190
|
+
for (const algorithm of PRIORITY_ORDER_ALGORITHMS) {
|
|
191
|
+
if (!responseAlgorithms.includes(algorithm) || !CLIENT_SUPPORTED_ALGORITHMS.includes(algorithm)) {
|
|
192
|
+
continue;
|
|
193
|
+
}
|
|
194
|
+
validChecksumAlgorithms.push(algorithm);
|
|
195
|
+
}
|
|
196
|
+
return validChecksumAlgorithms;
|
|
197
|
+
}, "getChecksumAlgorithmListForResponse");
|
|
198
|
+
|
|
199
|
+
// src/isChecksumWithPartNumber.ts
|
|
200
|
+
var isChecksumWithPartNumber = /* @__PURE__ */ __name((checksum) => {
|
|
201
|
+
const lastHyphenIndex = checksum.lastIndexOf("-");
|
|
202
|
+
if (lastHyphenIndex !== -1) {
|
|
203
|
+
const numberPart = checksum.slice(lastHyphenIndex + 1);
|
|
204
|
+
if (!numberPart.startsWith("0")) {
|
|
205
|
+
const number = parseInt(numberPart, 10);
|
|
206
|
+
if (!isNaN(number) && number >= 1 && number <= 1e4) {
|
|
207
|
+
return true;
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
return false;
|
|
212
|
+
}, "isChecksumWithPartNumber");
|
|
213
|
+
|
|
214
|
+
// src/flexibleChecksumsResponseMiddleware.ts
|
|
215
|
+
var import_create_read_stream_on_buffer = require("./streams/create-read-stream-on-buffer");
|
|
216
|
+
|
|
217
|
+
// src/getChecksum.ts
|
|
218
|
+
var getChecksum = /* @__PURE__ */ __name(async (body, { streamHasher, checksumAlgorithmFn, base64Encoder }) => {
|
|
219
|
+
const digest = isStreaming(body) ? streamHasher(checksumAlgorithmFn, body) : stringHasher(checksumAlgorithmFn, body);
|
|
220
|
+
return base64Encoder(await digest);
|
|
221
|
+
}, "getChecksum");
|
|
222
|
+
|
|
223
|
+
// src/validateChecksumFromResponse.ts
|
|
224
|
+
var validateChecksumFromResponse = /* @__PURE__ */ __name(async (response, { config, responseAlgorithms }) => {
|
|
225
|
+
const checksumAlgorithms = getChecksumAlgorithmListForResponse(responseAlgorithms);
|
|
226
|
+
const { body: responseBody, headers: responseHeaders } = response;
|
|
227
|
+
for (const algorithm of checksumAlgorithms) {
|
|
228
|
+
const responseHeader = getChecksumLocationName(algorithm);
|
|
229
|
+
const checksumFromResponse = responseHeaders[responseHeader];
|
|
230
|
+
if (checksumFromResponse) {
|
|
231
|
+
const checksumAlgorithmFn = selectChecksumAlgorithmFunction(algorithm, config);
|
|
232
|
+
const { streamHasher, base64Encoder } = config;
|
|
233
|
+
const checksum = await getChecksum(responseBody, { streamHasher, checksumAlgorithmFn, base64Encoder });
|
|
234
|
+
if (checksum === checksumFromResponse) {
|
|
235
|
+
break;
|
|
236
|
+
}
|
|
237
|
+
throw new Error(
|
|
238
|
+
`Checksum mismatch: expected "${checksum}" but received "${checksumFromResponse}" in response header "${responseHeader}".`
|
|
239
|
+
);
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
}, "validateChecksumFromResponse");
|
|
243
|
+
|
|
244
|
+
// src/flexibleChecksumsResponseMiddleware.ts
|
|
245
|
+
var flexibleChecksumsResponseMiddlewareOptions = {
|
|
246
|
+
name: "flexibleChecksumsResponseMiddleware",
|
|
247
|
+
toMiddleware: "deserializerMiddleware",
|
|
248
|
+
relation: "after",
|
|
249
|
+
tags: ["BODY_CHECKSUM"],
|
|
250
|
+
override: true
|
|
251
|
+
};
|
|
252
|
+
var flexibleChecksumsResponseMiddleware = /* @__PURE__ */ __name((config, middlewareConfig) => (next, context) => async (args) => {
|
|
253
|
+
if (!import_protocol_http.HttpRequest.isInstance(args.request)) {
|
|
254
|
+
return next(args);
|
|
255
|
+
}
|
|
256
|
+
const input = args.input;
|
|
257
|
+
const result = await next(args);
|
|
258
|
+
const response = result.response;
|
|
259
|
+
let collectedStream = void 0;
|
|
260
|
+
const { requestValidationModeMember, responseAlgorithms } = middlewareConfig;
|
|
261
|
+
if (requestValidationModeMember && input[requestValidationModeMember] === "ENABLED") {
|
|
262
|
+
const { clientName, commandName } = context;
|
|
263
|
+
const isS3WholeObjectMultipartGetResponseChecksum = clientName === "S3Client" && commandName === "GetObjectCommand" && getChecksumAlgorithmListForResponse(responseAlgorithms).every((algorithm) => {
|
|
264
|
+
const responseHeader = getChecksumLocationName(algorithm);
|
|
265
|
+
const checksumFromResponse = response.headers[responseHeader];
|
|
266
|
+
return !checksumFromResponse || isChecksumWithPartNumber(checksumFromResponse);
|
|
267
|
+
});
|
|
268
|
+
if (isS3WholeObjectMultipartGetResponseChecksum) {
|
|
269
|
+
return result;
|
|
270
|
+
}
|
|
271
|
+
const isStreamingBody = isStreaming(response.body);
|
|
272
|
+
if (isStreamingBody) {
|
|
273
|
+
collectedStream = await config.streamCollector(response.body);
|
|
274
|
+
response.body = (0, import_create_read_stream_on_buffer.createReadStreamOnBuffer)(collectedStream);
|
|
275
|
+
}
|
|
276
|
+
await validateChecksumFromResponse(result.response, {
|
|
277
|
+
config,
|
|
278
|
+
responseAlgorithms
|
|
279
|
+
});
|
|
280
|
+
if (isStreamingBody && collectedStream) {
|
|
281
|
+
response.body = (0, import_create_read_stream_on_buffer.createReadStreamOnBuffer)(collectedStream);
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
return result;
|
|
285
|
+
}, "flexibleChecksumsResponseMiddleware");
|
|
286
|
+
|
|
287
|
+
// src/getFlexibleChecksumsPlugin.ts
|
|
288
|
+
var getFlexibleChecksumsPlugin = /* @__PURE__ */ __name((config, middlewareConfig) => ({
|
|
289
|
+
applyToStack: (clientStack) => {
|
|
290
|
+
clientStack.add(flexibleChecksumsMiddleware(config, middlewareConfig), flexibleChecksumsMiddlewareOptions);
|
|
291
|
+
clientStack.addRelativeTo(
|
|
292
|
+
flexibleChecksumsResponseMiddleware(config, middlewareConfig),
|
|
293
|
+
flexibleChecksumsResponseMiddlewareOptions
|
|
294
|
+
);
|
|
295
|
+
}
|
|
296
|
+
}), "getFlexibleChecksumsPlugin");
|
|
297
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
298
|
+
|
|
299
|
+
0 && (module.exports = {
|
|
300
|
+
ChecksumAlgorithm,
|
|
301
|
+
ChecksumLocation,
|
|
302
|
+
DEFAULT_CHECKSUM_ALGORITHM,
|
|
303
|
+
S3_EXPRESS_DEFAULT_CHECKSUM_ALGORITHM,
|
|
304
|
+
flexibleChecksumsMiddleware,
|
|
305
|
+
flexibleChecksumsMiddlewareOptions,
|
|
306
|
+
getFlexibleChecksumsPlugin
|
|
307
|
+
});
|
|
308
|
+
|
|
@@ -1,17 +1 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.isChecksumWithPartNumber = void 0;
|
|
4
|
-
const isChecksumWithPartNumber = (checksum) => {
|
|
5
|
-
const lastHyphenIndex = checksum.lastIndexOf("-");
|
|
6
|
-
if (lastHyphenIndex !== -1) {
|
|
7
|
-
const numberPart = checksum.slice(lastHyphenIndex + 1);
|
|
8
|
-
if (!numberPart.startsWith("0")) {
|
|
9
|
-
const number = parseInt(numberPart, 10);
|
|
10
|
-
if (!isNaN(number) && number >= 1 && number <= 10000) {
|
|
11
|
-
return true;
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
return false;
|
|
16
|
-
};
|
|
17
|
-
exports.isChecksumWithPartNumber = isChecksumWithPartNumber;
|
|
1
|
+
module.exports = require("./index.js");
|
package/dist-cjs/isStreaming.js
CHANGED
|
@@ -1,6 +1 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.isStreaming = void 0;
|
|
4
|
-
const is_array_buffer_1 = require("@smithy/is-array-buffer");
|
|
5
|
-
const isStreaming = (body) => body !== undefined && typeof body !== "string" && !ArrayBuffer.isView(body) && !(0, is_array_buffer_1.isArrayBuffer)(body);
|
|
6
|
-
exports.isStreaming = isStreaming;
|
|
1
|
+
module.exports = require("./index.js");
|
|
@@ -1,14 +1 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.selectChecksumAlgorithmFunction = void 0;
|
|
4
|
-
const crc32_1 = require("@aws-crypto/crc32");
|
|
5
|
-
const crc32c_1 = require("@aws-crypto/crc32c");
|
|
6
|
-
const constants_1 = require("./constants");
|
|
7
|
-
const selectChecksumAlgorithmFunction = (checksumAlgorithm, config) => ({
|
|
8
|
-
[constants_1.ChecksumAlgorithm.MD5]: config.md5,
|
|
9
|
-
[constants_1.ChecksumAlgorithm.CRC32]: crc32_1.AwsCrc32,
|
|
10
|
-
[constants_1.ChecksumAlgorithm.CRC32C]: crc32c_1.AwsCrc32c,
|
|
11
|
-
[constants_1.ChecksumAlgorithm.SHA1]: config.sha1,
|
|
12
|
-
[constants_1.ChecksumAlgorithm.SHA256]: config.sha256,
|
|
13
|
-
}[checksumAlgorithm]);
|
|
14
|
-
exports.selectChecksumAlgorithmFunction = selectChecksumAlgorithmFunction;
|
|
1
|
+
module.exports = require("./index.js");
|
package/dist-cjs/stringHasher.js
CHANGED
|
@@ -1,10 +1 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.stringHasher = void 0;
|
|
4
|
-
const util_utf8_1 = require("@smithy/util-utf8");
|
|
5
|
-
const stringHasher = (checksumAlgorithmFn, body) => {
|
|
6
|
-
const hash = new checksumAlgorithmFn();
|
|
7
|
-
hash.update((0, util_utf8_1.toUint8Array)(body || ""));
|
|
8
|
-
return hash.digest();
|
|
9
|
-
};
|
|
10
|
-
exports.stringHasher = stringHasher;
|
|
1
|
+
module.exports = require("./index.js");
|
package/dist-cjs/types.js
CHANGED
|
@@ -1,16 +1 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.PRIORITY_ORDER_ALGORITHMS = exports.CLIENT_SUPPORTED_ALGORITHMS = void 0;
|
|
4
|
-
const constants_1 = require("./constants");
|
|
5
|
-
exports.CLIENT_SUPPORTED_ALGORITHMS = [
|
|
6
|
-
constants_1.ChecksumAlgorithm.CRC32,
|
|
7
|
-
constants_1.ChecksumAlgorithm.CRC32C,
|
|
8
|
-
constants_1.ChecksumAlgorithm.SHA1,
|
|
9
|
-
constants_1.ChecksumAlgorithm.SHA256,
|
|
10
|
-
];
|
|
11
|
-
exports.PRIORITY_ORDER_ALGORITHMS = [
|
|
12
|
-
constants_1.ChecksumAlgorithm.CRC32,
|
|
13
|
-
constants_1.ChecksumAlgorithm.CRC32C,
|
|
14
|
-
constants_1.ChecksumAlgorithm.SHA1,
|
|
15
|
-
constants_1.ChecksumAlgorithm.SHA256,
|
|
16
|
-
];
|
|
1
|
+
module.exports = require("./index.js");
|
|
@@ -1,26 +1 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.validateChecksumFromResponse = void 0;
|
|
4
|
-
const getChecksum_1 = require("./getChecksum");
|
|
5
|
-
const getChecksumAlgorithmListForResponse_1 = require("./getChecksumAlgorithmListForResponse");
|
|
6
|
-
const getChecksumLocationName_1 = require("./getChecksumLocationName");
|
|
7
|
-
const selectChecksumAlgorithmFunction_1 = require("./selectChecksumAlgorithmFunction");
|
|
8
|
-
const validateChecksumFromResponse = async (response, { config, responseAlgorithms }) => {
|
|
9
|
-
const checksumAlgorithms = (0, getChecksumAlgorithmListForResponse_1.getChecksumAlgorithmListForResponse)(responseAlgorithms);
|
|
10
|
-
const { body: responseBody, headers: responseHeaders } = response;
|
|
11
|
-
for (const algorithm of checksumAlgorithms) {
|
|
12
|
-
const responseHeader = (0, getChecksumLocationName_1.getChecksumLocationName)(algorithm);
|
|
13
|
-
const checksumFromResponse = responseHeaders[responseHeader];
|
|
14
|
-
if (checksumFromResponse) {
|
|
15
|
-
const checksumAlgorithmFn = (0, selectChecksumAlgorithmFunction_1.selectChecksumAlgorithmFunction)(algorithm, config);
|
|
16
|
-
const { streamHasher, base64Encoder } = config;
|
|
17
|
-
const checksum = await (0, getChecksum_1.getChecksum)(responseBody, { streamHasher, checksumAlgorithmFn, base64Encoder });
|
|
18
|
-
if (checksum === checksumFromResponse) {
|
|
19
|
-
break;
|
|
20
|
-
}
|
|
21
|
-
throw new Error(`Checksum mismatch: expected "${checksum}" but received "${checksumFromResponse}"` +
|
|
22
|
-
` in response header "${responseHeader}".`);
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
};
|
|
26
|
-
exports.validateChecksumFromResponse = validateChecksumFromResponse;
|
|
1
|
+
module.exports = require("./index.js");
|
package/package.json
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aws-sdk/middleware-flexible-checksums",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.496.0",
|
|
4
4
|
"scripts": {
|
|
5
5
|
"build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types'",
|
|
6
|
-
"build:cjs": "
|
|
6
|
+
"build:cjs": "node ../../scripts/compilation/inline middleware-flexible-checksums",
|
|
7
7
|
"build:es": "tsc -p tsconfig.es.json",
|
|
8
8
|
"build:include:deps": "lerna run --scope $npm_package_name --include-dependencies build",
|
|
9
9
|
"build:types": "tsc -p tsconfig.types.json",
|
|
@@ -30,15 +30,15 @@
|
|
|
30
30
|
"dependencies": {
|
|
31
31
|
"@aws-crypto/crc32": "3.0.0",
|
|
32
32
|
"@aws-crypto/crc32c": "3.0.0",
|
|
33
|
-
"@aws-sdk/types": "3.
|
|
34
|
-
"@smithy/is-array-buffer": "^2.
|
|
35
|
-
"@smithy/protocol-http": "^3.
|
|
36
|
-
"@smithy/types": "^2.
|
|
37
|
-
"@smithy/util-utf8": "^2.
|
|
33
|
+
"@aws-sdk/types": "3.496.0",
|
|
34
|
+
"@smithy/is-array-buffer": "^2.1.1",
|
|
35
|
+
"@smithy/protocol-http": "^3.1.1",
|
|
36
|
+
"@smithy/types": "^2.9.1",
|
|
37
|
+
"@smithy/util-utf8": "^2.1.1",
|
|
38
38
|
"tslib": "^2.5.0"
|
|
39
39
|
},
|
|
40
40
|
"devDependencies": {
|
|
41
|
-
"@smithy/node-http-handler": "^2.
|
|
41
|
+
"@smithy/node-http-handler": "^2.3.1",
|
|
42
42
|
"concurrently": "7.0.0",
|
|
43
43
|
"downlevel-dts": "0.10.1",
|
|
44
44
|
"rimraf": "3.0.2",
|