@aws-amplify/storage 5.6.4-graphql-api-functional-options.1 → 5.6.4-unstable.28bc873.6
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/lib/AwsClients/S3/abortMultipartUpload.d.ts +21 -0
- package/lib/AwsClients/S3/abortMultipartUpload.js +85 -0
- package/lib/AwsClients/S3/base.d.ts +54 -0
- package/lib/AwsClients/S3/base.js +75 -0
- package/lib/AwsClients/S3/completeMultipartUpload.d.ts +20 -0
- package/lib/AwsClients/S3/completeMultipartUpload.js +162 -0
- package/lib/AwsClients/S3/copyObject.d.ts +24 -0
- package/lib/AwsClients/S3/copyObject.js +98 -0
- package/lib/AwsClients/S3/createMultipartUpload.d.ts +21 -0
- package/lib/AwsClients/S3/createMultipartUpload.js +95 -0
- package/lib/AwsClients/S3/deleteObject.d.ts +20 -0
- package/lib/AwsClients/S3/deleteObject.js +86 -0
- package/lib/AwsClients/S3/getObject.d.ts +27 -0
- package/lib/AwsClients/S3/getObject.js +216 -0
- package/lib/AwsClients/S3/headObject.d.ts +20 -0
- package/lib/AwsClients/S3/headObject.js +96 -0
- package/lib/AwsClients/S3/index.d.ts +13 -0
- package/lib/AwsClients/S3/index.js +30 -0
- package/lib/AwsClients/S3/index.native.d.ts +14 -0
- package/lib/AwsClients/S3/index.native.js +31 -0
- package/lib/AwsClients/S3/listObjectsV2.d.ts +20 -0
- package/lib/AwsClients/S3/listObjectsV2.js +146 -0
- package/lib/AwsClients/S3/listParts.d.ts +20 -0
- package/lib/AwsClients/S3/listParts.js +110 -0
- package/lib/AwsClients/S3/putObject.d.ts +23 -0
- package/lib/AwsClients/S3/putObject.js +93 -0
- package/lib/AwsClients/S3/runtime/base64/index.browser.d.ts +2 -0
- package/lib/AwsClients/S3/runtime/base64/index.browser.js +20 -0
- package/lib/AwsClients/S3/runtime/base64/index.native.d.ts +2 -0
- package/lib/AwsClients/S3/runtime/base64/index.native.js +17 -0
- package/lib/AwsClients/S3/runtime/constants.d.ts +9 -0
- package/lib/AwsClients/S3/runtime/constants.js +14 -0
- package/lib/AwsClients/S3/runtime/contentSha256middleware.d.ts +9 -0
- package/lib/AwsClients/S3/runtime/contentSha256middleware.js +70 -0
- package/lib/AwsClients/S3/runtime/index.browser.d.ts +5 -0
- package/lib/AwsClients/S3/runtime/index.browser.js +20 -0
- package/lib/AwsClients/S3/runtime/index.d.ts +5 -0
- package/lib/AwsClients/S3/runtime/index.js +21 -0
- package/lib/AwsClients/S3/runtime/index.native.d.ts +5 -0
- package/lib/AwsClients/S3/runtime/index.native.js +20 -0
- package/lib/AwsClients/S3/runtime/s3TransferHandler/fetch.d.ts +8 -0
- package/lib/AwsClients/S3/runtime/s3TransferHandler/fetch.js +15 -0
- package/lib/AwsClients/S3/runtime/s3TransferHandler/xhr.d.ts +8 -0
- package/lib/AwsClients/S3/runtime/s3TransferHandler/xhr.js +21 -0
- package/lib/AwsClients/S3/runtime/xhrTransferHandler.d.ts +22 -0
- package/lib/AwsClients/S3/runtime/xhrTransferHandler.js +201 -0
- package/lib/AwsClients/S3/runtime/xmlParser/dom.d.ts +8 -0
- package/lib/AwsClients/S3/runtime/xmlParser/dom.js +92 -0
- package/lib/AwsClients/S3/runtime/xmlParser/pureJs.d.ts +10 -0
- package/lib/AwsClients/S3/runtime/xmlParser/pureJs.js +57 -0
- package/lib/AwsClients/S3/types.d.ts +2857 -0
- package/lib/AwsClients/S3/types.js +4 -0
- package/lib/AwsClients/S3/uploadPart.d.ts +20 -0
- package/lib/AwsClients/S3/uploadPart.js +96 -0
- package/lib/AwsClients/S3/utils/deserializeHelpers.d.ts +78 -0
- package/lib/AwsClients/S3/utils/deserializeHelpers.js +153 -0
- package/lib/AwsClients/S3/utils/index.d.ts +5 -0
- package/lib/AwsClients/S3/utils/index.js +30 -0
- package/lib/AwsClients/S3/utils/parsePayload.d.ts +3 -0
- package/lib/AwsClients/S3/utils/parsePayload.js +96 -0
- package/lib/AwsClients/S3/utils/serializeHelpers.d.ts +42 -0
- package/lib/AwsClients/S3/utils/serializeHelpers.js +183 -0
- package/lib/Storage.d.ts +5 -5
- package/lib/Storage.js +60 -31
- package/lib/common/S3ClientUtils.d.ts +24 -15
- package/lib/common/S3ClientUtils.js +83 -95
- package/lib/common/StorageConstants.d.ts +0 -1
- package/lib/common/StorageConstants.js +3 -2
- package/lib/common/StorageErrorStrings.js +3 -1
- package/lib/common/StorageUtils.js +12 -6
- package/lib/index.js +19 -4
- package/lib/providers/AWSS3Provider.d.ts +4 -8
- package/lib/providers/AWSS3Provider.js +210 -139
- package/lib/providers/AWSS3ProviderManagedUpload.d.ts +7 -7
- package/lib/providers/AWSS3ProviderManagedUpload.js +184 -98
- package/lib/providers/AWSS3UploadTask.d.ts +8 -8
- package/lib/providers/AWSS3UploadTask.js +226 -129
- package/lib/providers/index.js +4 -2
- package/lib/tsconfig.tsbuildinfo +1 -0
- package/lib/types/AWSS3Provider.d.ts +62 -62
- package/lib/types/AWSS3Provider.js +0 -1
- package/lib/types/Provider.d.ts +1 -1
- package/lib/types/Provider.js +2 -1
- package/lib/types/Storage.d.ts +23 -23
- package/lib/types/Storage.js +0 -1
- package/lib/types/index.js +17 -1
- package/lib-esm/AwsClients/S3/abortMultipartUpload.d.ts +21 -0
- package/lib-esm/AwsClients/S3/abortMultipartUpload.js +82 -0
- package/lib-esm/AwsClients/S3/base.d.ts +54 -0
- package/lib-esm/AwsClients/S3/base.js +71 -0
- package/lib-esm/AwsClients/S3/completeMultipartUpload.d.ts +20 -0
- package/lib-esm/AwsClients/S3/completeMultipartUpload.js +159 -0
- package/lib-esm/AwsClients/S3/copyObject.d.ts +24 -0
- package/lib-esm/AwsClients/S3/copyObject.js +95 -0
- package/lib-esm/AwsClients/S3/createMultipartUpload.d.ts +21 -0
- package/lib-esm/AwsClients/S3/createMultipartUpload.js +92 -0
- package/lib-esm/AwsClients/S3/deleteObject.d.ts +20 -0
- package/lib-esm/AwsClients/S3/deleteObject.js +83 -0
- package/lib-esm/AwsClients/S3/getObject.d.ts +27 -0
- package/lib-esm/AwsClients/S3/getObject.js +212 -0
- package/lib-esm/AwsClients/S3/headObject.d.ts +20 -0
- package/lib-esm/AwsClients/S3/headObject.js +93 -0
- package/lib-esm/AwsClients/S3/index.d.ts +13 -0
- package/lib-esm/AwsClients/S3/index.js +14 -0
- package/lib-esm/AwsClients/S3/index.native.d.ts +14 -0
- package/lib-esm/AwsClients/S3/index.native.js +15 -0
- package/lib-esm/AwsClients/S3/listObjectsV2.d.ts +20 -0
- package/lib-esm/AwsClients/S3/listObjectsV2.js +143 -0
- package/lib-esm/AwsClients/S3/listParts.d.ts +20 -0
- package/lib-esm/AwsClients/S3/listParts.js +107 -0
- package/lib-esm/AwsClients/S3/putObject.d.ts +23 -0
- package/lib-esm/AwsClients/S3/putObject.js +90 -0
- package/lib-esm/AwsClients/S3/runtime/base64/index.browser.d.ts +2 -0
- package/lib-esm/AwsClients/S3/runtime/base64/index.browser.js +15 -0
- package/lib-esm/AwsClients/S3/runtime/base64/index.native.d.ts +2 -0
- package/lib-esm/AwsClients/S3/runtime/base64/index.native.js +12 -0
- package/lib-esm/AwsClients/S3/runtime/constants.d.ts +9 -0
- package/lib-esm/AwsClients/S3/runtime/constants.js +11 -0
- package/lib-esm/AwsClients/S3/runtime/contentSha256middleware.d.ts +9 -0
- package/lib-esm/AwsClients/S3/runtime/contentSha256middleware.js +66 -0
- package/lib-esm/AwsClients/S3/runtime/index.browser.d.ts +5 -0
- package/lib-esm/AwsClients/S3/runtime/index.browser.js +8 -0
- package/lib-esm/AwsClients/S3/runtime/index.d.ts +5 -0
- package/lib-esm/AwsClients/S3/runtime/index.js +9 -0
- package/lib-esm/AwsClients/S3/runtime/index.native.d.ts +5 -0
- package/lib-esm/AwsClients/S3/runtime/index.native.js +8 -0
- package/lib-esm/AwsClients/S3/runtime/s3TransferHandler/fetch.d.ts +8 -0
- package/lib-esm/AwsClients/S3/runtime/s3TransferHandler/fetch.js +12 -0
- package/lib-esm/AwsClients/S3/runtime/s3TransferHandler/xhr.d.ts +8 -0
- package/lib-esm/AwsClients/S3/runtime/s3TransferHandler/xhr.js +18 -0
- package/lib-esm/AwsClients/S3/runtime/xhrTransferHandler.d.ts +22 -0
- package/lib-esm/AwsClients/S3/runtime/xhrTransferHandler.js +196 -0
- package/lib-esm/AwsClients/S3/runtime/xmlParser/dom.d.ts +8 -0
- package/lib-esm/AwsClients/S3/runtime/xmlParser/dom.js +89 -0
- package/lib-esm/AwsClients/S3/runtime/xmlParser/pureJs.d.ts +10 -0
- package/lib-esm/AwsClients/S3/runtime/xmlParser/pureJs.js +54 -0
- package/lib-esm/AwsClients/S3/types.d.ts +2857 -0
- package/lib-esm/AwsClients/S3/types.js +3 -0
- package/lib-esm/AwsClients/S3/uploadPart.d.ts +20 -0
- package/lib-esm/AwsClients/S3/uploadPart.js +93 -0
- package/lib-esm/AwsClients/S3/utils/deserializeHelpers.d.ts +78 -0
- package/lib-esm/AwsClients/S3/utils/deserializeHelpers.js +144 -0
- package/lib-esm/AwsClients/S3/utils/index.d.ts +5 -0
- package/lib-esm/AwsClients/S3/utils/index.js +7 -0
- package/lib-esm/AwsClients/S3/utils/parsePayload.d.ts +3 -0
- package/lib-esm/AwsClients/S3/utils/parsePayload.js +91 -0
- package/lib-esm/AwsClients/S3/utils/serializeHelpers.d.ts +42 -0
- package/lib-esm/AwsClients/S3/utils/serializeHelpers.js +176 -0
- package/lib-esm/Storage.d.ts +5 -5
- package/lib-esm/Storage.js +53 -25
- package/lib-esm/common/S3ClientUtils.d.ts +24 -15
- package/lib-esm/common/S3ClientUtils.js +76 -93
- package/lib-esm/common/StorageConstants.d.ts +0 -1
- package/lib-esm/common/StorageConstants.js +2 -2
- package/lib-esm/common/StorageErrorStrings.js +2 -1
- package/lib-esm/common/StorageUtils.js +2 -1
- package/lib-esm/index.js +1 -1
- package/lib-esm/providers/AWSS3Provider.d.ts +4 -8
- package/lib-esm/providers/AWSS3Provider.js +162 -115
- package/lib-esm/providers/AWSS3ProviderManagedUpload.d.ts +7 -7
- package/lib-esm/providers/AWSS3ProviderManagedUpload.js +172 -87
- package/lib-esm/providers/AWSS3UploadTask.d.ts +8 -8
- package/lib-esm/providers/AWSS3UploadTask.js +202 -106
- package/lib-esm/providers/index.js +2 -1
- package/lib-esm/tsconfig.tsbuildinfo +1 -0
- package/lib-esm/types/AWSS3Provider.d.ts +62 -62
- package/lib-esm/types/AWSS3Provider.js +1 -1
- package/lib-esm/types/Provider.d.ts +1 -1
- package/lib-esm/types/Provider.js +3 -1
- package/lib-esm/types/Storage.d.ts +23 -23
- package/lib-esm/types/Storage.js +1 -1
- package/lib-esm/types/index.js +3 -1
- package/package.json +21 -26
- package/src/AwsClients/S3/abortMultipartUpload.ts +62 -0
- package/src/AwsClients/S3/base.ts +109 -0
- package/src/AwsClients/S3/completeMultipartUpload.ts +154 -0
- package/src/AwsClients/S3/copyObject.ts +90 -0
- package/src/AwsClients/S3/createMultipartUpload.ts +75 -0
- package/src/AwsClients/S3/deleteObject.ts +69 -0
- package/src/AwsClients/S3/getObject.ts +173 -0
- package/src/AwsClients/S3/headObject.ts +91 -0
- package/src/AwsClients/S3/index.native.ts +42 -0
- package/src/AwsClients/S3/index.ts +41 -0
- package/src/AwsClients/S3/listObjectsV2.ts +130 -0
- package/src/AwsClients/S3/listParts.ts +97 -0
- package/src/AwsClients/S3/putObject.ts +94 -0
- package/src/AwsClients/S3/runtime/base64/index.browser.ts +21 -0
- package/src/AwsClients/S3/runtime/base64/index.native.ts +16 -0
- package/src/AwsClients/S3/runtime/constants.ts +16 -0
- package/src/AwsClients/S3/runtime/contentSha256middleware.ts +29 -0
- package/src/AwsClients/S3/runtime/index.browser.ts +14 -0
- package/src/AwsClients/S3/runtime/index.native.ts +14 -0
- package/src/AwsClients/S3/runtime/index.ts +15 -0
- package/src/AwsClients/S3/runtime/s3TransferHandler/fetch.ts +23 -0
- package/src/AwsClients/S3/runtime/s3TransferHandler/xhr.ts +35 -0
- package/src/AwsClients/S3/runtime/xhrTransferHandler.ts +254 -0
- package/src/AwsClients/S3/runtime/xmlParser/dom.ts +92 -0
- package/src/AwsClients/S3/runtime/xmlParser/pureJs.ts +55 -0
- package/src/AwsClients/S3/types.ts +2877 -0
- package/src/AwsClients/S3/uploadPart.ts +83 -0
- package/src/AwsClients/S3/utils/deserializeHelpers.ts +136 -0
- package/src/AwsClients/S3/utils/index.ts +27 -0
- package/src/AwsClients/S3/utils/parsePayload.ts +45 -0
- package/src/AwsClients/S3/utils/serializeHelpers.ts +112 -0
- package/src/Storage.ts +30 -27
- package/src/common/S3ClientUtils.ts +57 -113
- package/src/common/StorageConstants.ts +2 -2
- package/src/common/StorageErrorStrings.ts +2 -0
- package/src/common/StorageUtils.ts +2 -0
- package/src/providers/AWSS3Provider.ts +80 -100
- package/src/providers/AWSS3ProviderManagedUpload.ts +56 -63
- package/src/providers/AWSS3UploadTask.ts +86 -87
- package/src/providers/index.ts +2 -0
- package/src/types/AWSS3Provider.ts +55 -49
- package/src/types/Provider.ts +7 -2
- package/lib/.tsbuildinfo +0 -3
- package/lib/Storage.js.map +0 -1
- package/lib/common/S3ClientUtils.js.map +0 -1
- package/lib/common/StorageConstants.js.map +0 -1
- package/lib/common/StorageErrorStrings.js.map +0 -1
- package/lib/common/StorageUtils.js.map +0 -1
- package/lib/index.js.map +0 -1
- package/lib/providers/AWSS3Provider.js.map +0 -1
- package/lib/providers/AWSS3ProviderManagedUpload.js.map +0 -1
- package/lib/providers/AWSS3UploadTask.js.map +0 -1
- package/lib/providers/axios-http-handler.d.ts +0 -40
- package/lib/providers/axios-http-handler.js +0 -193
- package/lib/providers/axios-http-handler.js.map +0 -1
- package/lib/providers/index.js.map +0 -1
- package/lib/types/AWSS3Provider.js.map +0 -1
- package/lib/types/Provider.js.map +0 -1
- package/lib/types/Storage.js.map +0 -1
- package/lib/types/index.js.map +0 -1
- package/lib-esm/.tsbuildinfo +0 -3
- package/lib-esm/Storage.js.map +0 -1
- package/lib-esm/common/S3ClientUtils.js.map +0 -1
- package/lib-esm/common/StorageConstants.js.map +0 -1
- package/lib-esm/common/StorageErrorStrings.js.map +0 -1
- package/lib-esm/common/StorageUtils.js.map +0 -1
- package/lib-esm/index.js.map +0 -1
- package/lib-esm/providers/AWSS3Provider.js.map +0 -1
- package/lib-esm/providers/AWSS3ProviderManagedUpload.js.map +0 -1
- package/lib-esm/providers/AWSS3UploadTask.js.map +0 -1
- package/lib-esm/providers/axios-http-handler.d.ts +0 -40
- package/lib-esm/providers/axios-http-handler.js +0 -191
- package/lib-esm/providers/axios-http-handler.js.map +0 -1
- package/lib-esm/providers/index.js.map +0 -1
- package/lib-esm/types/AWSS3Provider.js.map +0 -1
- package/lib-esm/types/Provider.js.map +0 -1
- package/lib-esm/types/Storage.js.map +0 -1
- package/lib-esm/types/index.js.map +0 -1
- package/src/providers/axios-http-handler.ts +0 -242
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
3
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.utf8Encode = exports.toBase64 = exports.isCancelError = exports.parser = exports.s3TransferHandler = exports.CONTENT_SHA256_HEADER = exports.CANCELED_ERROR_MESSAGE = exports.SEND_UPLOAD_PROGRESS_EVENT = exports.SEND_DOWNLOAD_PROGRESS_EVENT = void 0;
|
|
6
|
+
// Entry point for browser-specific S3 client utilities. It's used where DOMParser is available.
|
|
7
|
+
var constants_1 = require("./constants");
|
|
8
|
+
Object.defineProperty(exports, "SEND_DOWNLOAD_PROGRESS_EVENT", { enumerable: true, get: function () { return constants_1.SEND_DOWNLOAD_PROGRESS_EVENT; } });
|
|
9
|
+
Object.defineProperty(exports, "SEND_UPLOAD_PROGRESS_EVENT", { enumerable: true, get: function () { return constants_1.SEND_UPLOAD_PROGRESS_EVENT; } });
|
|
10
|
+
Object.defineProperty(exports, "CANCELED_ERROR_MESSAGE", { enumerable: true, get: function () { return constants_1.CANCELED_ERROR_MESSAGE; } });
|
|
11
|
+
Object.defineProperty(exports, "CONTENT_SHA256_HEADER", { enumerable: true, get: function () { return constants_1.CONTENT_SHA256_HEADER; } });
|
|
12
|
+
var xhr_1 = require("./s3TransferHandler/xhr");
|
|
13
|
+
Object.defineProperty(exports, "s3TransferHandler", { enumerable: true, get: function () { return xhr_1.s3TransferHandler; } });
|
|
14
|
+
var dom_1 = require("./xmlParser/dom");
|
|
15
|
+
Object.defineProperty(exports, "parser", { enumerable: true, get: function () { return dom_1.parser; } });
|
|
16
|
+
var xhrTransferHandler_1 = require("./xhrTransferHandler");
|
|
17
|
+
Object.defineProperty(exports, "isCancelError", { enumerable: true, get: function () { return xhrTransferHandler_1.isCancelError; } });
|
|
18
|
+
var index_browser_1 = require("./base64/index.browser");
|
|
19
|
+
Object.defineProperty(exports, "toBase64", { enumerable: true, get: function () { return index_browser_1.toBase64; } });
|
|
20
|
+
Object.defineProperty(exports, "utf8Encode", { enumerable: true, get: function () { return index_browser_1.utf8Encode; } });
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { SEND_DOWNLOAD_PROGRESS_EVENT, SEND_UPLOAD_PROGRESS_EVENT, CANCELED_ERROR_MESSAGE, CONTENT_SHA256_HEADER, } from './constants';
|
|
2
|
+
export { s3TransferHandler } from './s3TransferHandler/fetch';
|
|
3
|
+
export { parser } from './xmlParser/pureJs';
|
|
4
|
+
export { isCancelError } from './xhrTransferHandler';
|
|
5
|
+
export { toBase64, utf8Encode } from './index.native';
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
3
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.utf8Encode = exports.toBase64 = exports.isCancelError = exports.parser = exports.s3TransferHandler = exports.CONTENT_SHA256_HEADER = exports.CANCELED_ERROR_MESSAGE = exports.SEND_UPLOAD_PROGRESS_EVENT = exports.SEND_DOWNLOAD_PROGRESS_EVENT = void 0;
|
|
6
|
+
// Entry point for Node.js-specific S3 client utilities
|
|
7
|
+
// This behavior is not guaranteed in v5.
|
|
8
|
+
var constants_1 = require("./constants");
|
|
9
|
+
Object.defineProperty(exports, "SEND_DOWNLOAD_PROGRESS_EVENT", { enumerable: true, get: function () { return constants_1.SEND_DOWNLOAD_PROGRESS_EVENT; } });
|
|
10
|
+
Object.defineProperty(exports, "SEND_UPLOAD_PROGRESS_EVENT", { enumerable: true, get: function () { return constants_1.SEND_UPLOAD_PROGRESS_EVENT; } });
|
|
11
|
+
Object.defineProperty(exports, "CANCELED_ERROR_MESSAGE", { enumerable: true, get: function () { return constants_1.CANCELED_ERROR_MESSAGE; } });
|
|
12
|
+
Object.defineProperty(exports, "CONTENT_SHA256_HEADER", { enumerable: true, get: function () { return constants_1.CONTENT_SHA256_HEADER; } });
|
|
13
|
+
var fetch_1 = require("./s3TransferHandler/fetch");
|
|
14
|
+
Object.defineProperty(exports, "s3TransferHandler", { enumerable: true, get: function () { return fetch_1.s3TransferHandler; } });
|
|
15
|
+
var pureJs_1 = require("./xmlParser/pureJs");
|
|
16
|
+
Object.defineProperty(exports, "parser", { enumerable: true, get: function () { return pureJs_1.parser; } });
|
|
17
|
+
var xhrTransferHandler_1 = require("./xhrTransferHandler");
|
|
18
|
+
Object.defineProperty(exports, "isCancelError", { enumerable: true, get: function () { return xhrTransferHandler_1.isCancelError; } });
|
|
19
|
+
var index_native_1 = require("./index.native");
|
|
20
|
+
Object.defineProperty(exports, "toBase64", { enumerable: true, get: function () { return index_native_1.toBase64; } });
|
|
21
|
+
Object.defineProperty(exports, "utf8Encode", { enumerable: true, get: function () { return index_native_1.utf8Encode; } });
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { SEND_DOWNLOAD_PROGRESS_EVENT, SEND_UPLOAD_PROGRESS_EVENT, CANCELED_ERROR_MESSAGE, CONTENT_SHA256_HEADER, } from './constants';
|
|
2
|
+
export { s3TransferHandler } from './s3TransferHandler/xhr';
|
|
3
|
+
export { parser } from './xmlParser/pureJs';
|
|
4
|
+
export { isCancelError } from './xhrTransferHandler';
|
|
5
|
+
export { toBase64, utf8Encode } from './base64/index.native';
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
3
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.utf8Encode = exports.toBase64 = exports.isCancelError = exports.parser = exports.s3TransferHandler = exports.CONTENT_SHA256_HEADER = exports.CANCELED_ERROR_MESSAGE = exports.SEND_UPLOAD_PROGRESS_EVENT = exports.SEND_DOWNLOAD_PROGRESS_EVENT = void 0;
|
|
6
|
+
// Entry point for ReactNative-specific S3 client utilities
|
|
7
|
+
var constants_1 = require("./constants");
|
|
8
|
+
Object.defineProperty(exports, "SEND_DOWNLOAD_PROGRESS_EVENT", { enumerable: true, get: function () { return constants_1.SEND_DOWNLOAD_PROGRESS_EVENT; } });
|
|
9
|
+
Object.defineProperty(exports, "SEND_UPLOAD_PROGRESS_EVENT", { enumerable: true, get: function () { return constants_1.SEND_UPLOAD_PROGRESS_EVENT; } });
|
|
10
|
+
Object.defineProperty(exports, "CANCELED_ERROR_MESSAGE", { enumerable: true, get: function () { return constants_1.CANCELED_ERROR_MESSAGE; } });
|
|
11
|
+
Object.defineProperty(exports, "CONTENT_SHA256_HEADER", { enumerable: true, get: function () { return constants_1.CONTENT_SHA256_HEADER; } });
|
|
12
|
+
var xhr_1 = require("./s3TransferHandler/xhr");
|
|
13
|
+
Object.defineProperty(exports, "s3TransferHandler", { enumerable: true, get: function () { return xhr_1.s3TransferHandler; } });
|
|
14
|
+
var pureJs_1 = require("./xmlParser/pureJs");
|
|
15
|
+
Object.defineProperty(exports, "parser", { enumerable: true, get: function () { return pureJs_1.parser; } });
|
|
16
|
+
var xhrTransferHandler_1 = require("./xhrTransferHandler");
|
|
17
|
+
Object.defineProperty(exports, "isCancelError", { enumerable: true, get: function () { return xhrTransferHandler_1.isCancelError; } });
|
|
18
|
+
var index_native_1 = require("./base64/index.native");
|
|
19
|
+
Object.defineProperty(exports, "toBase64", { enumerable: true, get: function () { return index_native_1.toBase64; } });
|
|
20
|
+
Object.defineProperty(exports, "utf8Encode", { enumerable: true, get: function () { return index_native_1.utf8Encode; } });
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { s3TransferHandler as s3BrowserTransferhandler } from './xhr';
|
|
2
|
+
/**
|
|
3
|
+
* S3 transfer handler for node based on Node-fetch. On top of basic transfer handler, it also supports
|
|
4
|
+
* x-amz-content-sha256 header. However, it does not support request&response process tracking like browser.
|
|
5
|
+
*
|
|
6
|
+
* @internal
|
|
7
|
+
*/
|
|
8
|
+
export declare const s3TransferHandler: typeof s3BrowserTransferhandler;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
3
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.s3TransferHandler = void 0;
|
|
6
|
+
var aws_client_utils_1 = require("@aws-amplify/core/internals/aws-client-utils");
|
|
7
|
+
var composers_1 = require("@aws-amplify/core/internals/aws-client-utils/composers");
|
|
8
|
+
var contentSha256middleware_1 = require("../contentSha256middleware");
|
|
9
|
+
/**
|
|
10
|
+
* S3 transfer handler for node based on Node-fetch. On top of basic transfer handler, it also supports
|
|
11
|
+
* x-amz-content-sha256 header. However, it does not support request&response process tracking like browser.
|
|
12
|
+
*
|
|
13
|
+
* @internal
|
|
14
|
+
*/
|
|
15
|
+
exports.s3TransferHandler = (0, composers_1.composeTransferHandler)(aws_client_utils_1.authenticatedHandler, [contentSha256middleware_1.contentSha256Middleware]);
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { RetryOptions, SigningOptions, UserAgentOptions, HttpRequest, HttpResponse } from '@aws-amplify/core/internals/aws-client-utils';
|
|
2
|
+
/**
|
|
3
|
+
* S3 transfer handler for browser and React Native based on XHR. On top of basic transfer handler, it also supports
|
|
4
|
+
* x-amz-content-sha256 header, and request&response process tracking.
|
|
5
|
+
*
|
|
6
|
+
* @internal
|
|
7
|
+
*/
|
|
8
|
+
export declare const s3TransferHandler: (request: HttpRequest, options: UserAgentOptions & RetryOptions<HttpResponse> & SigningOptions & import("../xhrTransferHandler").XhrTransferHandlerOptions) => Promise<HttpResponse>;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
3
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.s3TransferHandler = void 0;
|
|
6
|
+
var aws_client_utils_1 = require("@aws-amplify/core/internals/aws-client-utils");
|
|
7
|
+
var composers_1 = require("@aws-amplify/core/internals/aws-client-utils/composers");
|
|
8
|
+
var contentSha256middleware_1 = require("../contentSha256middleware");
|
|
9
|
+
var xhrTransferHandler_1 = require("../xhrTransferHandler");
|
|
10
|
+
/**
|
|
11
|
+
* S3 transfer handler for browser and React Native based on XHR. On top of basic transfer handler, it also supports
|
|
12
|
+
* x-amz-content-sha256 header, and request&response process tracking.
|
|
13
|
+
*
|
|
14
|
+
* @internal
|
|
15
|
+
*/
|
|
16
|
+
exports.s3TransferHandler = (0, composers_1.composeTransferHandler)(xhrTransferHandler_1.xhrTransferHandler, [
|
|
17
|
+
contentSha256middleware_1.contentSha256Middleware,
|
|
18
|
+
aws_client_utils_1.userAgentMiddleware,
|
|
19
|
+
aws_client_utils_1.retryMiddleware,
|
|
20
|
+
aws_client_utils_1.signingMiddleware,
|
|
21
|
+
]);
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { HttpRequest, HttpResponse, TransferHandler } from '@aws-amplify/core/internals/aws-client-utils';
|
|
3
|
+
import type { EventEmitter } from 'events';
|
|
4
|
+
/**
|
|
5
|
+
* @internal
|
|
6
|
+
*/
|
|
7
|
+
export interface XhrTransferHandlerOptions {
|
|
8
|
+
responseType: 'text' | 'blob';
|
|
9
|
+
abortSignal?: AbortSignal;
|
|
10
|
+
emitter?: EventEmitter;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Base transfer handler implementation using XMLHttpRequest to support upload and download progress events.
|
|
14
|
+
*
|
|
15
|
+
* @param request - The request object.
|
|
16
|
+
* @param options - The request options.
|
|
17
|
+
* @returns A promise that will be resolved with the response object.
|
|
18
|
+
*
|
|
19
|
+
* @internal
|
|
20
|
+
*/
|
|
21
|
+
export declare const xhrTransferHandler: TransferHandler<HttpRequest, HttpResponse, XhrTransferHandlerOptions>;
|
|
22
|
+
export declare const isCancelError: (error: unknown) => boolean;
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
3
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
var __read = (this && this.__read) || function (o, n) {
|
|
5
|
+
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
6
|
+
if (!m) return o;
|
|
7
|
+
var i = m.call(o), r, ar = [], e;
|
|
8
|
+
try {
|
|
9
|
+
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
10
|
+
}
|
|
11
|
+
catch (error) { e = { error: error }; }
|
|
12
|
+
finally {
|
|
13
|
+
try {
|
|
14
|
+
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
15
|
+
}
|
|
16
|
+
finally { if (e) throw e.error; }
|
|
17
|
+
}
|
|
18
|
+
return ar;
|
|
19
|
+
};
|
|
20
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
21
|
+
exports.isCancelError = exports.xhrTransferHandler = void 0;
|
|
22
|
+
var aws_client_utils_1 = require("@aws-amplify/core/internals/aws-client-utils");
|
|
23
|
+
var core_1 = require("@aws-amplify/core");
|
|
24
|
+
var constants_1 = require("./constants");
|
|
25
|
+
var logger = new core_1.ConsoleLogger('xhr-http-handler');
|
|
26
|
+
/**
|
|
27
|
+
* Base transfer handler implementation using XMLHttpRequest to support upload and download progress events.
|
|
28
|
+
*
|
|
29
|
+
* @param request - The request object.
|
|
30
|
+
* @param options - The request options.
|
|
31
|
+
* @returns A promise that will be resolved with the response object.
|
|
32
|
+
*
|
|
33
|
+
* @internal
|
|
34
|
+
*/
|
|
35
|
+
var xhrTransferHandler = function (request, options) {
|
|
36
|
+
var url = request.url, method = request.method, headers = request.headers, body = request.body;
|
|
37
|
+
var emitter = options.emitter, responseType = options.responseType, abortSignal = options.abortSignal;
|
|
38
|
+
return new Promise(function (resolve, reject) {
|
|
39
|
+
var _a;
|
|
40
|
+
var xhr = new XMLHttpRequest();
|
|
41
|
+
xhr.open(method.toUpperCase(), url.toString());
|
|
42
|
+
Object.entries(headers)
|
|
43
|
+
.filter(function (_a) {
|
|
44
|
+
var _b = __read(_a, 1), header = _b[0];
|
|
45
|
+
return !FORBIDDEN_HEADERS.includes(header);
|
|
46
|
+
})
|
|
47
|
+
.forEach(function (_a) {
|
|
48
|
+
var _b = __read(_a, 2), header = _b[0], value = _b[1];
|
|
49
|
+
xhr.setRequestHeader(header, value);
|
|
50
|
+
});
|
|
51
|
+
xhr.responseType = responseType;
|
|
52
|
+
if (emitter) {
|
|
53
|
+
xhr.upload.addEventListener('progress', function (event) {
|
|
54
|
+
emitter.emit(constants_1.SEND_UPLOAD_PROGRESS_EVENT, event);
|
|
55
|
+
logger.debug(event);
|
|
56
|
+
});
|
|
57
|
+
xhr.addEventListener('progress', function (event) {
|
|
58
|
+
emitter.emit(constants_1.SEND_DOWNLOAD_PROGRESS_EVENT, event);
|
|
59
|
+
logger.debug(event);
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
xhr.addEventListener('error', function () {
|
|
63
|
+
var error = simulateAxiosError(constants_1.NETWORK_ERROR_MESSAGE, constants_1.NETWORK_ERROR_CODE, xhr, options);
|
|
64
|
+
logger.error(constants_1.NETWORK_ERROR_MESSAGE);
|
|
65
|
+
reject(error);
|
|
66
|
+
xhr = null; // clean up request
|
|
67
|
+
});
|
|
68
|
+
// Handle browser request cancellation (as opposed to a manual cancellation)
|
|
69
|
+
xhr.addEventListener('abort', function () {
|
|
70
|
+
// The abort event can be triggered after the error or load event. So we need to check if the xhr is null.
|
|
71
|
+
if (!xhr || (abortSignal === null || abortSignal === void 0 ? void 0 : abortSignal.aborted))
|
|
72
|
+
return;
|
|
73
|
+
var error = simulateAxiosError(constants_1.ABORT_ERROR_MESSAGE, constants_1.ABORT_ERROR_CODE, xhr, options);
|
|
74
|
+
logger.error(constants_1.ABORT_ERROR_MESSAGE);
|
|
75
|
+
reject(error);
|
|
76
|
+
xhr = null; // clean up request
|
|
77
|
+
});
|
|
78
|
+
// Skip handling timeout error since we don't have a timeout
|
|
79
|
+
xhr.addEventListener('readystatechange', function () {
|
|
80
|
+
if (!xhr || xhr.readyState !== xhr.DONE) {
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
var onloadend = function () {
|
|
84
|
+
// The load event is triggered after the error/abort/load event. So we need to check if the xhr is null.
|
|
85
|
+
if (!xhr)
|
|
86
|
+
return;
|
|
87
|
+
var responseHeaders = convertResponseHeaders(xhr.getAllResponseHeaders());
|
|
88
|
+
var responseType = xhr.responseType;
|
|
89
|
+
var responseBlob = xhr.response;
|
|
90
|
+
var responseText = responseType === 'text' ? xhr.responseText : '';
|
|
91
|
+
var bodyMixIn = {
|
|
92
|
+
blob: function () { return Promise.resolve(responseBlob); },
|
|
93
|
+
text: (0, aws_client_utils_1.withMemoization)(function () {
|
|
94
|
+
return responseType === 'blob'
|
|
95
|
+
? readBlobAsText(responseBlob)
|
|
96
|
+
: Promise.resolve(responseText);
|
|
97
|
+
}),
|
|
98
|
+
json: function () {
|
|
99
|
+
return Promise.reject(
|
|
100
|
+
// S3 does not support JSON response. So fail-fast here with nicer error message.
|
|
101
|
+
new Error('Parsing response to JSON is not implemented. Please use response.text() instead.'));
|
|
102
|
+
},
|
|
103
|
+
};
|
|
104
|
+
var response = {
|
|
105
|
+
statusCode: xhr.status,
|
|
106
|
+
headers: responseHeaders,
|
|
107
|
+
// The xhr.responseType is only set to 'blob' for streaming binary S3 object data. The streaming data is
|
|
108
|
+
// exposed via public interface of Storage.get(). So we need to return the response as a Blob object for
|
|
109
|
+
// backward compatibility. In other cases, the response payload is only used internally, we return it is
|
|
110
|
+
// {@link ResponseBodyMixin}
|
|
111
|
+
body: (xhr.responseType === 'blob'
|
|
112
|
+
? Object.assign(responseBlob, bodyMixIn)
|
|
113
|
+
: bodyMixIn),
|
|
114
|
+
};
|
|
115
|
+
resolve(response);
|
|
116
|
+
xhr = null; // clean up request
|
|
117
|
+
};
|
|
118
|
+
// readystate handler is calling before onerror or ontimeout handlers,
|
|
119
|
+
// so we should call onloadend on the next 'tick'
|
|
120
|
+
// @see https://github.com/axios/axios/blob/9588fcdec8aca45c3ba2f7968988a5d03f23168c/lib/adapters/xhr.js#L98-L99
|
|
121
|
+
setTimeout(onloadend);
|
|
122
|
+
});
|
|
123
|
+
if (abortSignal) {
|
|
124
|
+
var onCancelled = function () {
|
|
125
|
+
// The abort event is triggered after the error or load event. So we need to check if the xhr is null.
|
|
126
|
+
if (!xhr) {
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
var canceledError = simulateAxiosCanceledError(constants_1.CANCELED_ERROR_MESSAGE !== null && constants_1.CANCELED_ERROR_MESSAGE !== void 0 ? constants_1.CANCELED_ERROR_MESSAGE : abortSignal.reason, constants_1.CANCELED_ERROR_CODE, xhr, options);
|
|
130
|
+
xhr.abort();
|
|
131
|
+
reject(canceledError);
|
|
132
|
+
xhr = null;
|
|
133
|
+
};
|
|
134
|
+
abortSignal.aborted
|
|
135
|
+
? onCancelled()
|
|
136
|
+
: abortSignal.addEventListener('abort', onCancelled);
|
|
137
|
+
}
|
|
138
|
+
if (typeof ReadableStream === 'function' &&
|
|
139
|
+
body instanceof ReadableStream) {
|
|
140
|
+
// This does not matter as previous implementation uses Axios which does not support ReadableStream anyway.
|
|
141
|
+
throw new Error('ReadableStream request payload is not supported.');
|
|
142
|
+
}
|
|
143
|
+
xhr.send((_a = body) !== null && _a !== void 0 ? _a : null);
|
|
144
|
+
});
|
|
145
|
+
};
|
|
146
|
+
exports.xhrTransferHandler = xhrTransferHandler;
|
|
147
|
+
// TODO: V6 remove this
|
|
148
|
+
var simulateAxiosError = function (message, code, request, config) {
|
|
149
|
+
return Object.assign(new Error(message), {
|
|
150
|
+
code: code,
|
|
151
|
+
config: config,
|
|
152
|
+
request: request,
|
|
153
|
+
});
|
|
154
|
+
};
|
|
155
|
+
var simulateAxiosCanceledError = function (message, code, request, config) {
|
|
156
|
+
var error = simulateAxiosError(message, code, request, config);
|
|
157
|
+
error.name = 'CanceledError';
|
|
158
|
+
error['__CANCEL__'] = true;
|
|
159
|
+
return error;
|
|
160
|
+
};
|
|
161
|
+
var isCancelError = function (error) {
|
|
162
|
+
return !!(error === null || error === void 0 ? void 0 : error['__CANCEL__']);
|
|
163
|
+
};
|
|
164
|
+
exports.isCancelError = isCancelError;
|
|
165
|
+
/**
|
|
166
|
+
* Convert xhr.getAllResponseHeaders() string to a Record<string, string>. Note that modern browser already returns
|
|
167
|
+
* header names in lowercase.
|
|
168
|
+
* @param xhrHeaders - string of headers returned from xhr.getAllResponseHeaders()
|
|
169
|
+
*/
|
|
170
|
+
var convertResponseHeaders = function (xhrHeaders) {
|
|
171
|
+
if (!xhrHeaders) {
|
|
172
|
+
return {};
|
|
173
|
+
}
|
|
174
|
+
return xhrHeaders
|
|
175
|
+
.split('\r\n')
|
|
176
|
+
.reduce(function (headerMap, line) {
|
|
177
|
+
var parts = line.split(': ');
|
|
178
|
+
var header = parts.shift();
|
|
179
|
+
var value = parts.join(': ');
|
|
180
|
+
headerMap[header.toLowerCase()] = value;
|
|
181
|
+
return headerMap;
|
|
182
|
+
}, {});
|
|
183
|
+
};
|
|
184
|
+
var readBlobAsText = function (blob) {
|
|
185
|
+
var reader = new FileReader();
|
|
186
|
+
return new Promise(function (resolve, reject) {
|
|
187
|
+
reader.onloadend = function () {
|
|
188
|
+
if (reader.readyState !== FileReader.DONE) {
|
|
189
|
+
return;
|
|
190
|
+
}
|
|
191
|
+
resolve(reader.result);
|
|
192
|
+
};
|
|
193
|
+
reader.onerror = function () {
|
|
194
|
+
reject(reader.error);
|
|
195
|
+
};
|
|
196
|
+
reader.readAsText(blob);
|
|
197
|
+
});
|
|
198
|
+
};
|
|
199
|
+
// To add more forbidden headers as found set by S3. Intentionally NOT list all of them here to save bundle size.
|
|
200
|
+
// https://developer.mozilla.org/en-US/docs/Glossary/Forbidden_header_name
|
|
201
|
+
var FORBIDDEN_HEADERS = ['host'];
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Drop-in replacement for fast-xml-parser's XmlParser class used in the AWS SDK S3 client XML deserializer. This
|
|
3
|
+
* implementation is not tested against the full xml conformance test suite. It is only tested against the XML responses
|
|
4
|
+
* from S3. This implementation requires the `DOMParser` class in the runtime.
|
|
5
|
+
*/
|
|
6
|
+
export declare const parser: {
|
|
7
|
+
parse: (xmlStr: string) => any;
|
|
8
|
+
};
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
3
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.parser = void 0;
|
|
6
|
+
/**
|
|
7
|
+
* Drop-in replacement for fast-xml-parser's XmlParser class used in the AWS SDK S3 client XML deserializer. This
|
|
8
|
+
* implementation is not tested against the full xml conformance test suite. It is only tested against the XML responses
|
|
9
|
+
* from S3. This implementation requires the `DOMParser` class in the runtime.
|
|
10
|
+
*/
|
|
11
|
+
exports.parser = {
|
|
12
|
+
parse: function (xmlStr) {
|
|
13
|
+
var domParser = new DOMParser();
|
|
14
|
+
var xml = domParser.parseFromString(xmlStr, 'text/xml');
|
|
15
|
+
var parsedObj = parseXmlNode(xml);
|
|
16
|
+
var rootKey = Object.keys(parsedObj)[0];
|
|
17
|
+
return parsedObj[rootKey];
|
|
18
|
+
},
|
|
19
|
+
};
|
|
20
|
+
var parseXmlNode = function (node) {
|
|
21
|
+
var _a;
|
|
22
|
+
var _b, _c;
|
|
23
|
+
if (isDocumentNode(node)) {
|
|
24
|
+
return _a = {},
|
|
25
|
+
_a[node.documentElement.nodeName] = parseXmlNode(node.documentElement),
|
|
26
|
+
_a;
|
|
27
|
+
}
|
|
28
|
+
if (node.nodeType === Node.TEXT_NODE) {
|
|
29
|
+
return (_b = node.nodeValue) === null || _b === void 0 ? void 0 : _b.trim();
|
|
30
|
+
}
|
|
31
|
+
if (isElementNode(node)) {
|
|
32
|
+
// Node like <Location>foo</Location> will be converted to { Location: 'foo' }
|
|
33
|
+
// instead of { Location: { '#text': 'foo' } }.
|
|
34
|
+
if (isTextOnlyElementNode(node)) {
|
|
35
|
+
return (_c = node.childNodes[0]) === null || _c === void 0 ? void 0 : _c.nodeValue;
|
|
36
|
+
}
|
|
37
|
+
var nodeValue = {};
|
|
38
|
+
// convert attributes
|
|
39
|
+
for (var i = 0; i < node.attributes.length; i++) {
|
|
40
|
+
var attr = node.attributes[i];
|
|
41
|
+
if (!isNamespaceAttributeName(attr.nodeName)) {
|
|
42
|
+
nodeValue[attr.nodeName] = attr.nodeValue;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
// convert child nodes
|
|
46
|
+
if (node.children.length > 0) {
|
|
47
|
+
for (var i = 0; i < node.children.length; i++) {
|
|
48
|
+
var child = node.children[i];
|
|
49
|
+
var childValue = parseXmlNode(child);
|
|
50
|
+
if (childValue === undefined) {
|
|
51
|
+
continue;
|
|
52
|
+
}
|
|
53
|
+
var childName = child.nodeName;
|
|
54
|
+
if (nodeValue[childName] === undefined) {
|
|
55
|
+
nodeValue[childName] = childValue;
|
|
56
|
+
}
|
|
57
|
+
else if (Array.isArray(nodeValue[childName])) {
|
|
58
|
+
nodeValue[childName].push(childValue);
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
nodeValue[childName] = [nodeValue[childName], childValue];
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
// Return empty element node as empty string instead of `{}`, which is the default behavior of fast-xml-parser.
|
|
66
|
+
return Object.keys(nodeValue).length === 0 ? '' : nodeValue;
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
var isElementNode = function (node) {
|
|
70
|
+
return node.nodeType === Node.ELEMENT_NODE;
|
|
71
|
+
};
|
|
72
|
+
var isDocumentNode = function (node) {
|
|
73
|
+
return node.nodeType === Node.DOCUMENT_NODE;
|
|
74
|
+
};
|
|
75
|
+
var isTextOnlyElementNode = function (node) {
|
|
76
|
+
var _a;
|
|
77
|
+
return hasOnlyNamespaceAttributes(node) &&
|
|
78
|
+
node.children.length === 0 &&
|
|
79
|
+
((_a = node.firstChild) === null || _a === void 0 ? void 0 : _a.nodeType) === Node.TEXT_NODE;
|
|
80
|
+
};
|
|
81
|
+
var hasOnlyNamespaceAttributes = function (node) {
|
|
82
|
+
for (var i = 0; i < node.attributes.length; i++) {
|
|
83
|
+
var attr = node.attributes[i];
|
|
84
|
+
if (!isNamespaceAttributeName(attr.nodeName)) {
|
|
85
|
+
return false;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
return true;
|
|
89
|
+
};
|
|
90
|
+
var isNamespaceAttributeName = function (name) {
|
|
91
|
+
return name === 'xmlns' || name.startsWith('xmlns:');
|
|
92
|
+
};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure JS XML parser that can be used in Non-browser environments, like React Native and Node.js. This is the same
|
|
3
|
+
* XML parser implementation as used in AWS SDK S3 client. It depends on pure JavaScript XML parser library
|
|
4
|
+
* `fast-xml-parser`.
|
|
5
|
+
*
|
|
6
|
+
* Ref: https://github.com/aws/aws-sdk-js-v3/blob/1e806ba3f4a83c9e3eb0b41a3a7092da93826b8f/clients/client-s3/src/protocols/Aws_restXml.ts#L12938-L12959
|
|
7
|
+
*/
|
|
8
|
+
export declare const parser: {
|
|
9
|
+
parse: (xmlStr: string) => any;
|
|
10
|
+
};
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
3
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.parser = void 0;
|
|
6
|
+
var fast_xml_parser_1 = require("fast-xml-parser");
|
|
7
|
+
/**
|
|
8
|
+
* Pure JS XML parser that can be used in Non-browser environments, like React Native and Node.js. This is the same
|
|
9
|
+
* XML parser implementation as used in AWS SDK S3 client. It depends on pure JavaScript XML parser library
|
|
10
|
+
* `fast-xml-parser`.
|
|
11
|
+
*
|
|
12
|
+
* Ref: https://github.com/aws/aws-sdk-js-v3/blob/1e806ba3f4a83c9e3eb0b41a3a7092da93826b8f/clients/client-s3/src/protocols/Aws_restXml.ts#L12938-L12959
|
|
13
|
+
*/
|
|
14
|
+
exports.parser = {
|
|
15
|
+
parse: function (xmlStr) {
|
|
16
|
+
var parser = new fast_xml_parser_1.XMLParser({
|
|
17
|
+
attributeNamePrefix: '',
|
|
18
|
+
htmlEntities: true,
|
|
19
|
+
ignoreAttributes: false,
|
|
20
|
+
ignoreDeclaration: true,
|
|
21
|
+
parseTagValue: false,
|
|
22
|
+
trimValues: false,
|
|
23
|
+
removeNSPrefix: true,
|
|
24
|
+
tagValueProcessor: function (_, val) {
|
|
25
|
+
return val.trim() === '' && val.includes('\n') ? '' : undefined;
|
|
26
|
+
},
|
|
27
|
+
});
|
|
28
|
+
parser.addEntity('#xD', '\r');
|
|
29
|
+
parser.addEntity('#10', '\n');
|
|
30
|
+
var parsedObj = parser.parse(xmlStr);
|
|
31
|
+
var textNodeName = '#text';
|
|
32
|
+
var key = Object.keys(parsedObj)[0];
|
|
33
|
+
var parsedObjToReturn = parsedObj[key];
|
|
34
|
+
if (parsedObjToReturn[textNodeName]) {
|
|
35
|
+
parsedObjToReturn[key] = parsedObjToReturn[textNodeName];
|
|
36
|
+
delete parsedObjToReturn[textNodeName];
|
|
37
|
+
}
|
|
38
|
+
return getValueFromTextNode(parsedObjToReturn);
|
|
39
|
+
},
|
|
40
|
+
};
|
|
41
|
+
/**
|
|
42
|
+
* Recursively parses object and populates value is node from "#text" key if it's available
|
|
43
|
+
*
|
|
44
|
+
* Ref: https://github.com/aws/aws-sdk-js-v3/blob/6b4bde6f338720abf28b931f8a4506613bd64d3f/packages/smithy-client/src/get-value-from-text-node.ts#L1
|
|
45
|
+
*/
|
|
46
|
+
var getValueFromTextNode = function (obj) {
|
|
47
|
+
var textNodeName = '#text';
|
|
48
|
+
for (var key in obj) {
|
|
49
|
+
if (obj.hasOwnProperty(key) && obj[key][textNodeName] !== undefined) {
|
|
50
|
+
obj[key] = obj[key][textNodeName];
|
|
51
|
+
}
|
|
52
|
+
else if (typeof obj[key] === 'object' && obj[key] !== null) {
|
|
53
|
+
obj[key] = getValueFromTextNode(obj[key]);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return obj;
|
|
57
|
+
};
|