@aws-amplify/storage 4.4.5 → 4.4.6-unstable.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/dist/aws-amplify-storage.js +206 -210
  2. package/dist/aws-amplify-storage.js.map +1 -1
  3. package/dist/aws-amplify-storage.min.js +3 -3
  4. package/dist/aws-amplify-storage.min.js.map +1 -1
  5. package/lib/common/S3ClientUtils.d.ts +23 -1
  6. package/lib/common/S3ClientUtils.js +75 -0
  7. package/lib/common/S3ClientUtils.js.map +1 -1
  8. package/lib/providers/AWSS3Provider.d.ts +0 -1
  9. package/lib/providers/AWSS3Provider.js +2 -41
  10. package/lib/providers/AWSS3Provider.js.map +1 -1
  11. package/lib/providers/AWSS3ProviderManagedUpload.d.ts +3 -10
  12. package/lib/providers/AWSS3ProviderManagedUpload.js +40 -94
  13. package/lib/providers/AWSS3ProviderManagedUpload.js.map +1 -1
  14. package/lib/providers/axios-http-handler.d.ts +1 -0
  15. package/lib/providers/axios-http-handler.js +3 -1
  16. package/lib/providers/axios-http-handler.js.map +1 -1
  17. package/lib-esm/common/S3ClientUtils.d.ts +23 -1
  18. package/lib-esm/common/S3ClientUtils.js +76 -1
  19. package/lib-esm/common/S3ClientUtils.js.map +1 -1
  20. package/lib-esm/providers/AWSS3Provider.d.ts +0 -1
  21. package/lib-esm/providers/AWSS3Provider.js +7 -46
  22. package/lib-esm/providers/AWSS3Provider.js.map +1 -1
  23. package/lib-esm/providers/AWSS3ProviderManagedUpload.d.ts +3 -10
  24. package/lib-esm/providers/AWSS3ProviderManagedUpload.js +44 -98
  25. package/lib-esm/providers/AWSS3ProviderManagedUpload.js.map +1 -1
  26. package/lib-esm/providers/axios-http-handler.d.ts +1 -0
  27. package/lib-esm/providers/axios-http-handler.js +3 -1
  28. package/lib-esm/providers/axios-http-handler.js.map +1 -1
  29. package/package.json +3 -3
  30. package/src/common/S3ClientUtils.ts +106 -2
  31. package/src/providers/AWSS3Provider.ts +10 -49
  32. package/src/providers/AWSS3ProviderManagedUpload.ts +26 -74
  33. package/src/providers/axios-http-handler.ts +4 -1
@@ -44856,6 +44856,8 @@ function Parser(options) {
44856
44856
  this.replaceCDATAstr = replaceCDATAstr;
44857
44857
  this.replaceCDATAarr = replaceCDATAarr;
44858
44858
 
44859
+ this.processTextOrObjNode = processTextOrObjNode
44860
+
44859
44861
  if (this.options.format) {
44860
44862
  this.indentate = indentate;
44861
44863
  this.tagEndChar = '>\n';
@@ -44892,10 +44894,7 @@ Parser.prototype.parse = function(jObj) {
44892
44894
  Parser.prototype.j2x = function(jObj, level) {
44893
44895
  let attrStr = '';
44894
44896
  let val = '';
44895
- const keys = Object.keys(jObj);
44896
- const len = keys.length;
44897
- for (let i = 0; i < len; i++) {
44898
- const key = keys[i];
44897
+ for (let key in jObj) {
44899
44898
  if (typeof jObj[key] === 'undefined') {
44900
44899
  // supress undefined node
44901
44900
  } else if (jObj[key] === null) {
@@ -44944,8 +44943,7 @@ Parser.prototype.j2x = function(jObj, level) {
44944
44943
  } else if (item === null) {
44945
44944
  val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;
44946
44945
  } else if (typeof item === 'object') {
44947
- const result = this.j2x(item, level + 1);
44948
- val += this.buildObjNode(result.val, key, result.attrStr, level);
44946
+ val += this.processTextOrObjNode(item, key, level)
44949
44947
  } else {
44950
44948
  val += this.buildTextNode(item, key, '', level);
44951
44949
  }
@@ -44960,14 +44958,22 @@ Parser.prototype.j2x = function(jObj, level) {
44960
44958
  attrStr += ' ' + Ks[j] + '="' + this.options.attrValueProcessor('' + jObj[key][Ks[j]]) + '"';
44961
44959
  }
44962
44960
  } else {
44963
- const result = this.j2x(jObj[key], level + 1);
44964
- val += this.buildObjNode(result.val, key, result.attrStr, level);
44961
+ val += this.processTextOrObjNode(jObj[key], key, level)
44965
44962
  }
44966
44963
  }
44967
44964
  }
44968
44965
  return {attrStr: attrStr, val: val};
44969
44966
  };
44970
44967
 
44968
+ function processTextOrObjNode (object, key, level) {
44969
+ const result = this.j2x(object, level + 1);
44970
+ if (object[this.options.textNodeName] !== undefined && Object.keys(object).length === 1) {
44971
+ return this.buildTextNode(result.val, key, result.attrStr, level);
44972
+ } else {
44973
+ return this.buildObjNode(result.val, key, result.attrStr, level);
44974
+ }
44975
+ }
44976
+
44971
44977
  function replaceCDATAstr(str, cdata) {
44972
44978
  str = this.options.tagValueProcessor('' + str);
44973
44979
  if (this.options.cdataPositionChar === '' || str === '') {
@@ -44990,7 +44996,7 @@ function replaceCDATAarr(str, cdata) {
44990
44996
  }
44991
44997
 
44992
44998
  function buildObjectNode(val, key, attrStr, level) {
44993
- if (attrStr && !val.includes('<')) {
44999
+ if (attrStr && val.indexOf('<') === -1) {
44994
45000
  return (
44995
45001
  this.indentate(level) +
44996
45002
  '<' +
@@ -47649,16 +47655,23 @@ function () {
47649
47655
  /*!*****************************************!*\
47650
47656
  !*** ./lib-esm/common/S3ClientUtils.js ***!
47651
47657
  \*****************************************/
47652
- /*! exports provided: getPrefix, createPrefixMiddleware, prefixMiddlewareOptions */
47658
+ /*! exports provided: getPrefix, createPrefixMiddleware, autoAdjustClockskewMiddleware, autoAdjustClockskewMiddlewareOptions, prefixMiddlewareOptions, credentialsProvider, createS3Client */
47653
47659
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
47654
47660
 
47655
47661
  "use strict";
47656
47662
  __webpack_require__.r(__webpack_exports__);
47657
47663
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getPrefix", function() { return getPrefix; });
47658
47664
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "createPrefixMiddleware", function() { return createPrefixMiddleware; });
47665
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "autoAdjustClockskewMiddleware", function() { return autoAdjustClockskewMiddleware; });
47666
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "autoAdjustClockskewMiddlewareOptions", function() { return autoAdjustClockskewMiddlewareOptions; });
47659
47667
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "prefixMiddlewareOptions", function() { return prefixMiddlewareOptions; });
47668
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "credentialsProvider", function() { return credentialsProvider; });
47669
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "createS3Client", function() { return createS3Client; });
47660
47670
  /* harmony import */ var _aws_amplify_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @aws-amplify/core */ "@aws-amplify/core");
47661
47671
  /* harmony import */ var _aws_amplify_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_aws_amplify_core__WEBPACK_IMPORTED_MODULE_0__);
47672
+ /* harmony import */ var _aws_sdk_client_s3__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @aws-sdk/client-s3 */ "../../node_modules/@aws-sdk/client-s3/dist/es/index.js");
47673
+ /* harmony import */ var _providers_axios_http_handler__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../providers/axios-http-handler */ "./lib-esm/providers/axios-http-handler.js");
47674
+ /* harmony import */ var _StorageConstants__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./StorageConstants */ "./lib-esm/common/StorageConstants.js");
47662
47675
  var __assign = undefined && undefined.__assign || function () {
47663
47676
  __assign = Object.assign || function (t) {
47664
47677
  for (var s, i = 1, n = arguments.length; i < n; i++) {
@@ -47819,6 +47832,15 @@ var __generator = undefined && undefined.__generator || function (thisArg, body)
47819
47832
  };
47820
47833
 
47821
47834
 
47835
+
47836
+
47837
+
47838
+ var logger = new _aws_amplify_core__WEBPACK_IMPORTED_MODULE_0__["Logger"]('S3ClientUtils'); // placeholder credentials in order to satisfy type requirement, always results in 403 when used
47839
+
47840
+ var INVALID_CRED = {
47841
+ accessKeyId: '',
47842
+ secretAccessKey: ''
47843
+ };
47822
47844
  var getPrefix = function getPrefix(config) {
47823
47845
  var credentials = config.credentials,
47824
47846
  level = config.level,
@@ -47879,10 +47901,126 @@ var createPrefixMiddleware = function createPrefixMiddleware(opt, key) {
47879
47901
  };
47880
47902
  };
47881
47903
  };
47904
+
47905
+ var isTimeSkewedError = function isTimeSkewedError(err) {
47906
+ return err.ServerTime && typeof err.Code === 'string' && err.Code === 'RequestTimeTooSkewed';
47907
+ }; // we want to take the S3Client config in parameter so we can modify it's systemClockOffset
47908
+
47909
+
47910
+ var autoAdjustClockskewMiddleware = function autoAdjustClockskewMiddleware(config) {
47911
+ return function (next, _context) {
47912
+ return function (args) {
47913
+ return __awaiter(void 0, void 0, void 0, function () {
47914
+ var err_1, serverDate;
47915
+ return __generator(this, function (_a) {
47916
+ switch (_a.label) {
47917
+ case 0:
47918
+ _a.trys.push([0, 2,, 3]);
47919
+
47920
+ return [4
47921
+ /*yield*/
47922
+ , next(args)];
47923
+
47924
+ case 1:
47925
+ return [2
47926
+ /*return*/
47927
+ , _a.sent()];
47928
+
47929
+ case 2:
47930
+ err_1 = _a.sent();
47931
+
47932
+ if (isTimeSkewedError(err_1)) {
47933
+ serverDate = new Date(err_1.ServerTime);
47934
+ config.systemClockOffset = serverDate.getTime() - Date.now();
47935
+ }
47936
+
47937
+ throw err_1;
47938
+
47939
+ case 3:
47940
+ return [2
47941
+ /*return*/
47942
+ ];
47943
+ }
47944
+ });
47945
+ });
47946
+ };
47947
+ };
47948
+ };
47949
+ var autoAdjustClockskewMiddlewareOptions = {
47950
+ step: 'finalizeRequest',
47951
+ name: 'autoAdjustClockskewMiddleware'
47952
+ };
47882
47953
  var prefixMiddlewareOptions = {
47883
47954
  step: 'initialize',
47884
47955
  name: 'addPrefixMiddleware'
47885
47956
  };
47957
+ var credentialsProvider = function credentialsProvider() {
47958
+ return __awaiter(void 0, void 0, void 0, function () {
47959
+ var credentials, cred, error_1;
47960
+ return __generator(this, function (_a) {
47961
+ switch (_a.label) {
47962
+ case 0:
47963
+ _a.trys.push([0, 2,, 3]);
47964
+
47965
+ return [4
47966
+ /*yield*/
47967
+ , _aws_amplify_core__WEBPACK_IMPORTED_MODULE_0__["Credentials"].get()];
47968
+
47969
+ case 1:
47970
+ credentials = _a.sent();
47971
+ if (!credentials) return [2
47972
+ /*return*/
47973
+ , INVALID_CRED];
47974
+ cred = _aws_amplify_core__WEBPACK_IMPORTED_MODULE_0__["Credentials"].shear(credentials);
47975
+ logger.debug('credentials provider get credentials', cred);
47976
+ return [2
47977
+ /*return*/
47978
+ , cred];
47979
+
47980
+ case 2:
47981
+ error_1 = _a.sent();
47982
+ logger.warn('credentials provider error', error_1);
47983
+ return [2
47984
+ /*return*/
47985
+ , INVALID_CRED];
47986
+
47987
+ case 3:
47988
+ return [2
47989
+ /*return*/
47990
+ ];
47991
+ }
47992
+ });
47993
+ });
47994
+ };
47995
+ var createS3Client = function createS3Client(config, emitter) {
47996
+ var region = config.region,
47997
+ cancelTokenSource = config.cancelTokenSource,
47998
+ dangerouslyConnectToHttpEndpointForTesting = config.dangerouslyConnectToHttpEndpointForTesting,
47999
+ useAccelerateEndpoint = config.useAccelerateEndpoint;
48000
+ var localTestingConfig = {};
48001
+
48002
+ if (dangerouslyConnectToHttpEndpointForTesting) {
48003
+ localTestingConfig = {
48004
+ endpoint: _StorageConstants__WEBPACK_IMPORTED_MODULE_3__["localTestingStorageEndpoint"],
48005
+ tls: false,
48006
+ bucketEndpoint: false,
48007
+ forcePathStyle: true
48008
+ };
48009
+ }
48010
+
48011
+ var s3client = new _aws_sdk_client_s3__WEBPACK_IMPORTED_MODULE_1__["S3Client"](__assign(__assign({
48012
+ region: region,
48013
+ // Using provider instead of a static credentials, so that if an upload task was in progress, but credentials gets
48014
+ // changed or invalidated (e.g user signed out), the subsequent requests will fail.
48015
+ credentials: credentialsProvider,
48016
+ customUserAgent: Object(_aws_amplify_core__WEBPACK_IMPORTED_MODULE_0__["getAmplifyUserAgent"])()
48017
+ }, localTestingConfig), {
48018
+ requestHandler: new _providers_axios_http_handler__WEBPACK_IMPORTED_MODULE_2__["AxiosHttpHandler"]({}, emitter, cancelTokenSource),
48019
+ useAccelerateEndpoint: useAccelerateEndpoint
48020
+ }));
48021
+ s3client.middlewareStack.remove(_StorageConstants__WEBPACK_IMPORTED_MODULE_3__["SET_CONTENT_LENGTH_HEADER"]);
48022
+ return s3client;
48023
+ };
47886
48024
 
47887
48025
  /***/ }),
47888
48026
 
@@ -48326,12 +48464,7 @@ var __generator = undefined && undefined.__generator || function (thisArg, body)
48326
48464
 
48327
48465
  var logger = new _aws_amplify_core__WEBPACK_IMPORTED_MODULE_0__["ConsoleLogger"]('AWSS3Provider');
48328
48466
  var DEFAULT_STORAGE_LEVEL = 'public';
48329
- var DEFAULT_PRESIGN_EXPIRATION = 900; // placeholder credentials in order to satisfy type requirement, always results in 403 when used
48330
-
48331
- var INVALID_CRED = {
48332
- accessKeyId: '',
48333
- secretAccessKey: ''
48334
- };
48467
+ var DEFAULT_PRESIGN_EXPIRATION = 900;
48335
48468
  /**
48336
48469
  * Provide storage methods to use AWS S3
48337
48470
  */
@@ -48551,7 +48684,6 @@ function () {
48551
48684
 
48552
48685
  if (acl) params.ACL = acl;
48553
48686
  s3 = this._createNewS3Client(opt);
48554
- s3.middlewareStack.remove(_common_StorageConstants__WEBPACK_IMPORTED_MODULE_11__["SET_CONTENT_LENGTH_HEADER"]);
48555
48687
  _c.label = 2;
48556
48688
 
48557
48689
  case 2:
@@ -49089,74 +49221,14 @@ function () {
49089
49221
  return publicPath;
49090
49222
  }
49091
49223
  };
49092
-
49093
- AWSS3Provider.prototype._credentialsProvider = function () {
49094
- return __awaiter(this, void 0, void 0, function () {
49095
- var credentials, cred, error_7;
49096
- return __generator(this, function (_a) {
49097
- switch (_a.label) {
49098
- case 0:
49099
- _a.trys.push([0, 2,, 3]);
49100
-
49101
- return [4
49102
- /*yield*/
49103
- , _aws_amplify_core__WEBPACK_IMPORTED_MODULE_0__["Credentials"].get()];
49104
-
49105
- case 1:
49106
- credentials = _a.sent();
49107
- if (!credentials) return [2
49108
- /*return*/
49109
- , INVALID_CRED];
49110
- cred = _aws_amplify_core__WEBPACK_IMPORTED_MODULE_0__["Credentials"].shear(credentials);
49111
- logger.debug('credentials provider get credentials', cred);
49112
- return [2
49113
- /*return*/
49114
- , cred];
49115
-
49116
- case 2:
49117
- error_7 = _a.sent();
49118
- logger.warn('credentials provider error', error_7);
49119
- return [2
49120
- /*return*/
49121
- , INVALID_CRED];
49122
-
49123
- case 3:
49124
- return [2
49125
- /*return*/
49126
- ];
49127
- }
49128
- });
49129
- });
49130
- };
49131
49224
  /**
49132
49225
  * Creates an S3 client with new V3 aws sdk
49133
49226
  */
49134
49227
 
49135
49228
 
49136
49229
  AWSS3Provider.prototype._createNewS3Client = function (config, emitter) {
49137
- var region = config.region,
49138
- cancelTokenSource = config.cancelTokenSource,
49139
- dangerouslyConnectToHttpEndpointForTesting = config.dangerouslyConnectToHttpEndpointForTesting;
49140
- var localTestingConfig = {};
49141
-
49142
- if (dangerouslyConnectToHttpEndpointForTesting) {
49143
- localTestingConfig = {
49144
- endpoint: _common_StorageConstants__WEBPACK_IMPORTED_MODULE_11__["localTestingStorageEndpoint"],
49145
- tls: false,
49146
- bucketEndpoint: false,
49147
- forcePathStyle: true
49148
- };
49149
- }
49150
-
49151
- var s3client = new _aws_sdk_client_s3__WEBPACK_IMPORTED_MODULE_1__["S3Client"](__assign(__assign({
49152
- region: region,
49153
- // Using provider instead of a static credentials, so that if an upload task was in progress, but credentials gets
49154
- // changed or invalidated (e.g user signed out), the subsequent requests will fail.
49155
- credentials: this._credentialsProvider,
49156
- customUserAgent: Object(_aws_amplify_core__WEBPACK_IMPORTED_MODULE_0__["getAmplifyUserAgent"])()
49157
- }, localTestingConfig), {
49158
- requestHandler: new _axios_http_handler__WEBPACK_IMPORTED_MODULE_5__["AxiosHttpHandler"]({}, emitter, cancelTokenSource)
49159
- }));
49230
+ var s3client = Object(_common_S3ClientUtils__WEBPACK_IMPORTED_MODULE_8__["createS3Client"])(config, emitter);
49231
+ s3client.middlewareStack.add(Object(_common_S3ClientUtils__WEBPACK_IMPORTED_MODULE_8__["autoAdjustClockskewMiddleware"])(s3client.config), _common_S3ClientUtils__WEBPACK_IMPORTED_MODULE_8__["autoAdjustClockskewMiddlewareOptions"]);
49160
49232
  return s3client;
49161
49233
  };
49162
49234
 
@@ -49188,10 +49260,9 @@ __webpack_require__.r(__webpack_exports__);
49188
49260
  /* harmony import */ var _aws_amplify_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_aws_amplify_core__WEBPACK_IMPORTED_MODULE_0__);
49189
49261
  /* harmony import */ var _aws_sdk_client_s3__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @aws-sdk/client-s3 */ "../../node_modules/@aws-sdk/client-s3/dist/es/index.js");
49190
49262
  /* harmony import */ var _axios_http_handler__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./axios-http-handler */ "./lib-esm/providers/axios-http-handler.js");
49191
- /* harmony import */ var _common_StorageConstants__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../common/StorageConstants */ "./lib-esm/common/StorageConstants.js");
49192
- /* harmony import */ var events__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! events */ "../../node_modules/events/events.js");
49193
- /* harmony import */ var events__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(events__WEBPACK_IMPORTED_MODULE_4__);
49194
- /* harmony import */ var _common_S3ClientUtils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../common/S3ClientUtils */ "./lib-esm/common/S3ClientUtils.js");
49263
+ /* harmony import */ var events__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! events */ "../../node_modules/events/events.js");
49264
+ /* harmony import */ var events__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(events__WEBPACK_IMPORTED_MODULE_3__);
49265
+ /* harmony import */ var _common_S3ClientUtils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../common/S3ClientUtils */ "./lib-esm/common/S3ClientUtils.js");
49195
49266
  function _typeof(obj) {
49196
49267
  "@babel/helpers - typeof";
49197
49268
 
@@ -49385,7 +49456,6 @@ var __generator = undefined && undefined.__generator || function (thisArg, body)
49385
49456
 
49386
49457
 
49387
49458
 
49388
-
49389
49459
  var logger = new _aws_amplify_core__WEBPACK_IMPORTED_MODULE_0__["ConsoleLogger"]('AWSS3ProviderManagedUpload');
49390
49460
 
49391
49461
  var AWSS3ProviderManagedUpload =
@@ -49409,11 +49479,12 @@ function () {
49409
49479
  this.params = params;
49410
49480
  this.opts = opts;
49411
49481
  this.emitter = emitter;
49482
+ this.s3client = this._createNewS3Client(opts, emitter);
49412
49483
  }
49413
49484
 
49414
49485
  AWSS3ProviderManagedUpload.prototype.upload = function () {
49415
49486
  return __awaiter(this, void 0, void 0, function () {
49416
- var _a, putObjectCommand, s3, uploadId, numberOfPartsToUpload, parts, start;
49487
+ var _a, putObjectCommand, uploadId, numberOfPartsToUpload, parts, start;
49417
49488
 
49418
49489
  var _this = this;
49419
49490
 
@@ -49430,36 +49501,30 @@ function () {
49430
49501
  this.totalBytesToUpload = this.byteLength(this.body);
49431
49502
  if (!(this.totalBytesToUpload <= this.minPartSize)) return [3
49432
49503
  /*break*/
49433
- , 3]; // Multipart upload is not required. Upload the sanitized body as is
49504
+ , 2]; // Multipart upload is not required. Upload the sanitized body as is
49434
49505
 
49435
49506
  this.params.Body = this.body;
49436
49507
  putObjectCommand = new _aws_sdk_client_s3__WEBPACK_IMPORTED_MODULE_1__["PutObjectCommand"](this.params);
49437
- return [4
49438
- /*yield*/
49439
- , this._createNewS3Client(this.opts, this.emitter)];
49440
-
49441
- case 2:
49442
- s3 = _b.sent();
49443
49508
  return [2
49444
49509
  /*return*/
49445
- , s3.send(putObjectCommand)];
49510
+ , this.s3client.send(putObjectCommand)];
49446
49511
 
49447
- case 3:
49512
+ case 2:
49448
49513
  return [4
49449
49514
  /*yield*/
49450
49515
  , this.createMultiPartUpload()];
49451
49516
 
49452
- case 4:
49517
+ case 3:
49453
49518
  uploadId = _b.sent();
49454
49519
  numberOfPartsToUpload = Math.ceil(this.totalBytesToUpload / this.minPartSize);
49455
49520
  parts = this.createParts();
49456
49521
  start = 0;
49457
- _b.label = 5;
49522
+ _b.label = 4;
49458
49523
 
49459
- case 5:
49524
+ case 4:
49460
49525
  if (!(start < numberOfPartsToUpload)) return [3
49461
49526
  /*break*/
49462
- , 10];
49527
+ , 9];
49463
49528
  /** This first block will try to cancel the upload if the cancel
49464
49529
  * request came before any parts uploads have started.
49465
49530
  **/
@@ -49468,7 +49533,7 @@ function () {
49468
49533
  /*yield*/
49469
49534
  , this.checkIfUploadCancelled(uploadId)];
49470
49535
 
49471
- case 6:
49536
+ case 5:
49472
49537
  /** This first block will try to cancel the upload if the cancel
49473
49538
  * request came before any parts uploads have started.
49474
49539
  **/
@@ -49479,7 +49544,7 @@ function () {
49479
49544
  /*yield*/
49480
49545
  , this.uploadParts(uploadId, parts.slice(start, start + this.queueSize))];
49481
49546
 
49482
- case 7:
49547
+ case 6:
49483
49548
  // Upload as many as `queueSize` parts simultaneously
49484
49549
  _b.sent();
49485
49550
  /** Call cleanup a second time in case there were part upload requests
@@ -49491,21 +49556,21 @@ function () {
49491
49556
  /*yield*/
49492
49557
  , this.checkIfUploadCancelled(uploadId)];
49493
49558
 
49494
- case 8:
49559
+ case 7:
49495
49560
  /** Call cleanup a second time in case there were part upload requests
49496
49561
  * in flight. This is to ensure that all parts are cleaned up.
49497
49562
  */
49498
49563
  _b.sent();
49499
49564
 
49500
- _b.label = 9;
49565
+ _b.label = 8;
49501
49566
 
49502
- case 9:
49567
+ case 8:
49503
49568
  start += this.queueSize;
49504
49569
  return [3
49505
49570
  /*break*/
49506
- , 5];
49571
+ , 4];
49507
49572
 
49508
- case 10:
49573
+ case 9:
49509
49574
  parts.map(function (part) {
49510
49575
  _this.removeEventListener(part);
49511
49576
  });
@@ -49513,7 +49578,7 @@ function () {
49513
49578
  /*yield*/
49514
49579
  , this.finishMultiPartUpload(uploadId)];
49515
49580
 
49516
- case 11:
49581
+ case 10:
49517
49582
  // Step 3: Finalize the upload such that S3 can recreate the file
49518
49583
  return [2
49519
49584
  /*return*/
@@ -49531,7 +49596,7 @@ function () {
49531
49596
  parts.push({
49532
49597
  bodyPart: this.body.slice(bodyStart, bodyEnd),
49533
49598
  partNumber: parts.length + 1,
49534
- emitter: new events__WEBPACK_IMPORTED_MODULE_4__["EventEmitter"](),
49599
+ emitter: new events__WEBPACK_IMPORTED_MODULE_3__["EventEmitter"](),
49535
49600
  _lastUploadedBytes: 0
49536
49601
  });
49537
49602
  bodyStart += this.minPartSize;
@@ -49542,22 +49607,16 @@ function () {
49542
49607
 
49543
49608
  AWSS3ProviderManagedUpload.prototype.createMultiPartUpload = function () {
49544
49609
  return __awaiter(this, void 0, void 0, function () {
49545
- var createMultiPartUploadCommand, s3, response;
49610
+ var createMultiPartUploadCommand, response;
49546
49611
  return __generator(this, function (_a) {
49547
49612
  switch (_a.label) {
49548
49613
  case 0:
49549
49614
  createMultiPartUploadCommand = new _aws_sdk_client_s3__WEBPACK_IMPORTED_MODULE_1__["CreateMultipartUploadCommand"](this.params);
49550
49615
  return [4
49551
49616
  /*yield*/
49552
- , this._createNewS3Client(this.opts)];
49617
+ , this.s3client.send(createMultiPartUploadCommand)];
49553
49618
 
49554
49619
  case 1:
49555
- s3 = _a.sent();
49556
- return [4
49557
- /*yield*/
49558
- , s3.send(createMultiPartUploadCommand)];
49559
-
49560
- case 2:
49561
49620
  response = _a.sent();
49562
49621
  logger.debug(response.UploadId);
49563
49622
  return [2
@@ -49588,22 +49647,19 @@ function () {
49588
49647
  /*yield*/
49589
49648
  , Promise.all(parts.map(function (part) {
49590
49649
  return __awaiter(_this, void 0, void 0, function () {
49591
- var s3, _a, Key, Bucket, SSECustomerAlgorithm, SSECustomerKey, SSECustomerKeyMD5;
49650
+ var options, _a, Key, Bucket, SSECustomerAlgorithm, SSECustomerKey, SSECustomerKeyMD5, res;
49592
49651
 
49593
49652
  return __generator(this, function (_b) {
49594
49653
  switch (_b.label) {
49595
49654
  case 0:
49596
49655
  this.setupEventListener(part);
49656
+ options = {
49657
+ emitter: part.emitter
49658
+ };
49659
+ _a = this.params, Key = _a.Key, Bucket = _a.Bucket, SSECustomerAlgorithm = _a.SSECustomerAlgorithm, SSECustomerKey = _a.SSECustomerKey, SSECustomerKeyMD5 = _a.SSECustomerKeyMD5;
49597
49660
  return [4
49598
49661
  /*yield*/
49599
- , this._createNewS3Client(this.opts, part.emitter)];
49600
-
49601
- case 1:
49602
- s3 = _b.sent();
49603
- _a = this.params, Key = _a.Key, Bucket = _a.Bucket, SSECustomerAlgorithm = _a.SSECustomerAlgorithm, SSECustomerKey = _a.SSECustomerKey, SSECustomerKeyMD5 = _a.SSECustomerKeyMD5;
49604
- return [2
49605
- /*return*/
49606
- , s3.send(new _aws_sdk_client_s3__WEBPACK_IMPORTED_MODULE_1__["UploadPartCommand"](__assign(__assign(__assign({
49662
+ , this.s3client.send(new _aws_sdk_client_s3__WEBPACK_IMPORTED_MODULE_1__["UploadPartCommand"](__assign(__assign(__assign({
49607
49663
  PartNumber: part.partNumber,
49608
49664
  Body: part.bodyPart,
49609
49665
  UploadId: uploadId,
@@ -49615,7 +49671,13 @@ function () {
49615
49671
  SSECustomerKey: SSECustomerKey
49616
49672
  }), SSECustomerKeyMD5 && {
49617
49673
  SSECustomerKeyMD5: SSECustomerKeyMD5
49618
- })))];
49674
+ })), options)];
49675
+
49676
+ case 1:
49677
+ res = _b.sent();
49678
+ return [2
49679
+ /*return*/
49680
+ , res];
49619
49681
  }
49620
49682
  });
49621
49683
  });
@@ -49654,7 +49716,7 @@ function () {
49654
49716
 
49655
49717
  AWSS3ProviderManagedUpload.prototype.finishMultiPartUpload = function (uploadId) {
49656
49718
  return __awaiter(this, void 0, void 0, function () {
49657
- var input, completeUploadCommand, s3, data, error_2;
49719
+ var input, completeUploadCommand, data, error_2;
49658
49720
  return __generator(this, function (_a) {
49659
49721
  switch (_a.label) {
49660
49722
  case 0:
@@ -49667,28 +49729,22 @@ function () {
49667
49729
  }
49668
49730
  };
49669
49731
  completeUploadCommand = new _aws_sdk_client_s3__WEBPACK_IMPORTED_MODULE_1__["CompleteMultipartUploadCommand"](input);
49670
- return [4
49671
- /*yield*/
49672
- , this._createNewS3Client(this.opts)];
49732
+ _a.label = 1;
49673
49733
 
49674
49734
  case 1:
49675
- s3 = _a.sent();
49676
- _a.label = 2;
49677
-
49678
- case 2:
49679
- _a.trys.push([2, 4,, 5]);
49735
+ _a.trys.push([1, 3,, 4]);
49680
49736
 
49681
49737
  return [4
49682
49738
  /*yield*/
49683
- , s3.send(completeUploadCommand)];
49739
+ , this.s3client.send(completeUploadCommand)];
49684
49740
 
49685
- case 3:
49741
+ case 2:
49686
49742
  data = _a.sent();
49687
49743
  return [2
49688
49744
  /*return*/
49689
49745
  , data.Key];
49690
49746
 
49691
- case 4:
49747
+ case 3:
49692
49748
  error_2 = _a.sent();
49693
49749
  logger.error('error happened while finishing the upload. Cancelling the multipart upload', error_2);
49694
49750
  this.cancelUpload();
@@ -49696,7 +49752,7 @@ function () {
49696
49752
  /*return*/
49697
49753
  ];
49698
49754
 
49699
- case 5:
49755
+ case 4:
49700
49756
  return [2
49701
49757
  /*return*/
49702
49758
  ];
@@ -49756,7 +49812,7 @@ function () {
49756
49812
 
49757
49813
  AWSS3ProviderManagedUpload.prototype.cleanup = function (uploadId) {
49758
49814
  return __awaiter(this, void 0, void 0, function () {
49759
- var input, s3, data;
49815
+ var input, data;
49760
49816
  return __generator(this, function (_a) {
49761
49817
  switch (_a.label) {
49762
49818
  case 0:
@@ -49772,22 +49828,16 @@ function () {
49772
49828
  };
49773
49829
  return [4
49774
49830
  /*yield*/
49775
- , this._createNewS3Client(this.opts)];
49831
+ , this.s3client.send(new _aws_sdk_client_s3__WEBPACK_IMPORTED_MODULE_1__["AbortMultipartUploadCommand"](input))];
49776
49832
 
49777
49833
  case 1:
49778
- s3 = _a.sent();
49779
- return [4
49780
- /*yield*/
49781
- , s3.send(new _aws_sdk_client_s3__WEBPACK_IMPORTED_MODULE_1__["AbortMultipartUploadCommand"](input))];
49782
-
49783
- case 2:
49784
49834
  _a.sent();
49785
49835
 
49786
49836
  return [4
49787
49837
  /*yield*/
49788
- , s3.send(new _aws_sdk_client_s3__WEBPACK_IMPORTED_MODULE_1__["ListPartsCommand"](input))];
49838
+ , this.s3client.send(new _aws_sdk_client_s3__WEBPACK_IMPORTED_MODULE_1__["ListPartsCommand"](input))];
49789
49839
 
49790
- case 3:
49840
+ case 2:
49791
49841
  data = _a.sent();
49792
49842
 
49793
49843
  if (data && data.Parts && data.Parts.length > 0) {
@@ -49880,68 +49930,12 @@ function () {
49880
49930
 
49881
49931
  return false;
49882
49932
  };
49883
- /**
49884
- * @private
49885
- * creates an S3 client with new V3 aws sdk
49886
- */
49887
-
49888
49933
 
49889
49934
  AWSS3ProviderManagedUpload.prototype._createNewS3Client = function (config, emitter) {
49890
- return __awaiter(this, void 0, void 0, function () {
49891
- var credentials, region, dangerouslyConnectToHttpEndpointForTesting, cancelTokenSource, useAccelerateEndpoint, localTestingConfig, client;
49892
- return __generator(this, function (_a) {
49893
- switch (_a.label) {
49894
- case 0:
49895
- return [4
49896
- /*yield*/
49897
- , this._getCredentials()];
49898
-
49899
- case 1:
49900
- credentials = _a.sent();
49901
- region = config.region, dangerouslyConnectToHttpEndpointForTesting = config.dangerouslyConnectToHttpEndpointForTesting, cancelTokenSource = config.cancelTokenSource, useAccelerateEndpoint = config.useAccelerateEndpoint;
49902
- localTestingConfig = {};
49903
-
49904
- if (dangerouslyConnectToHttpEndpointForTesting) {
49905
- localTestingConfig = {
49906
- endpoint: _common_StorageConstants__WEBPACK_IMPORTED_MODULE_3__["localTestingStorageEndpoint"],
49907
- tls: false,
49908
- bucketEndpoint: false,
49909
- forcePathStyle: true
49910
- };
49911
- }
49912
-
49913
- client = new _aws_sdk_client_s3__WEBPACK_IMPORTED_MODULE_1__["S3Client"](__assign(__assign({
49914
- region: region,
49915
- credentials: credentials,
49916
- useAccelerateEndpoint: useAccelerateEndpoint
49917
- }, localTestingConfig), {
49918
- requestHandler: new _axios_http_handler__WEBPACK_IMPORTED_MODULE_2__["AxiosHttpHandler"]({}, emitter, cancelTokenSource),
49919
- customUserAgent: Object(_aws_amplify_core__WEBPACK_IMPORTED_MODULE_0__["getAmplifyUserAgent"])()
49920
- }));
49921
- client.middlewareStack.remove(_common_StorageConstants__WEBPACK_IMPORTED_MODULE_3__["SET_CONTENT_LENGTH_HEADER"]);
49922
- client.middlewareStack.add(Object(_common_S3ClientUtils__WEBPACK_IMPORTED_MODULE_5__["createPrefixMiddleware"])(this.opts, this.params.Key), _common_S3ClientUtils__WEBPACK_IMPORTED_MODULE_5__["prefixMiddlewareOptions"]);
49923
- return [2
49924
- /*return*/
49925
- , client];
49926
- }
49927
- });
49928
- });
49929
- };
49930
- /**
49931
- * @private
49932
- */
49933
-
49934
-
49935
- AWSS3ProviderManagedUpload.prototype._getCredentials = function () {
49936
- return _aws_amplify_core__WEBPACK_IMPORTED_MODULE_0__["Credentials"].get().then(function (credentials) {
49937
- if (!credentials) return false;
49938
- var cred = _aws_amplify_core__WEBPACK_IMPORTED_MODULE_0__["Credentials"].shear(credentials);
49939
- logger.debug('set credentials for storage', cred);
49940
- return cred;
49941
- })["catch"](function (error) {
49942
- logger.warn('ensure credentials error', error);
49943
- return false;
49944
- });
49935
+ var s3client = Object(_common_S3ClientUtils__WEBPACK_IMPORTED_MODULE_4__["createS3Client"])(config, emitter);
49936
+ s3client.middlewareStack.add(Object(_common_S3ClientUtils__WEBPACK_IMPORTED_MODULE_4__["createPrefixMiddleware"])(this.opts, this.params.Key), _common_S3ClientUtils__WEBPACK_IMPORTED_MODULE_4__["prefixMiddlewareOptions"]);
49937
+ s3client.middlewareStack.add(Object(_common_S3ClientUtils__WEBPACK_IMPORTED_MODULE_4__["autoAdjustClockskewMiddleware"])(s3client.config), _common_S3ClientUtils__WEBPACK_IMPORTED_MODULE_4__["autoAdjustClockskewMiddlewareOptions"]);
49938
+ return s3client;
49945
49939
  };
49946
49940
 
49947
49941
  return AWSS3ProviderManagedUpload;
@@ -51060,8 +51054,10 @@ function () {
51060
51054
  };
51061
51055
 
51062
51056
  AxiosHttpHandler.prototype.handle = function (request, options) {
51063
- var requestTimeoutInMs = this.httpOptions.requestTimeout;
51064
- var emitter = this.emitter;
51057
+ var requestTimeoutInMs = this.httpOptions.requestTimeout; // prioritize the call specific event emitter, this is useful for multipart upload as each individual parts has
51058
+ // their own event emitter, without having to create s3client for every individual calls.
51059
+
51060
+ var emitter = options.emitter || this.emitter;
51065
51061
  var path = request.path;
51066
51062
 
51067
51063
  if (request.query) {