@aws-amplify/storage 6.0.17-unstable.e316a2e.0 → 6.0.17

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 (185) hide show
  1. package/dist/cjs/providers/s3/apis/internal/getProperties.js +1 -1
  2. package/dist/cjs/providers/s3/apis/internal/getProperties.js.map +1 -1
  3. package/dist/cjs/providers/s3/apis/internal/getUrl.js +6 -6
  4. package/dist/cjs/providers/s3/apis/internal/getUrl.js.map +1 -1
  5. package/dist/cjs/providers/s3/apis/internal/list.js +2 -2
  6. package/dist/cjs/providers/s3/apis/internal/list.js.map +1 -1
  7. package/dist/cjs/providers/s3/apis/uploadData/multipart/initialUpload.js +1 -1
  8. package/dist/cjs/providers/s3/apis/uploadData/multipart/initialUpload.js.map +1 -1
  9. package/dist/cjs/providers/s3/apis/uploadData/multipart/uploadHandlers.js +25 -25
  10. package/dist/cjs/providers/s3/apis/uploadData/multipart/uploadHandlers.js.map +1 -1
  11. package/dist/cjs/providers/s3/utils/client/base.js +1 -1
  12. package/dist/cjs/providers/s3/utils/client/base.js.map +1 -1
  13. package/dist/cjs/providers/s3/utils/client/runtime/base64/index.native.js +1 -1
  14. package/dist/cjs/providers/s3/utils/client/runtime/base64/index.native.js.map +1 -1
  15. package/dist/cjs/providers/s3/utils/client/runtime/contentSha256middleware.js +3 -3
  16. package/dist/cjs/providers/s3/utils/client/runtime/contentSha256middleware.js.map +1 -1
  17. package/dist/cjs/providers/s3/utils/client/runtime/s3TransferHandler/fetch.js +1 -1
  18. package/dist/cjs/providers/s3/utils/client/runtime/s3TransferHandler/fetch.js.map +1 -1
  19. package/dist/cjs/providers/s3/utils/client/runtime/s3TransferHandler/xhr.js +4 -4
  20. package/dist/cjs/providers/s3/utils/client/runtime/s3TransferHandler/xhr.js.map +1 -1
  21. package/dist/cjs/providers/s3/utils/client/runtime/xhrTransferHandler.js +4 -4
  22. package/dist/cjs/providers/s3/utils/client/runtime/xhrTransferHandler.js.map +1 -1
  23. package/dist/cjs/providers/s3/utils/client/runtime/xmlParser/dom.js +4 -7
  24. package/dist/cjs/providers/s3/utils/client/runtime/xmlParser/dom.js.map +1 -1
  25. package/dist/cjs/providers/s3/utils/client/runtime/xmlParser/pureJs.js +6 -5
  26. package/dist/cjs/providers/s3/utils/client/runtime/xmlParser/pureJs.js.map +1 -1
  27. package/dist/cjs/providers/s3/utils/client/utils/deserializeHelpers.js +1 -1
  28. package/dist/cjs/providers/s3/utils/client/utils/deserializeHelpers.js.map +1 -1
  29. package/dist/cjs/providers/s3/utils/client/utils/parsePayload.js +2 -2
  30. package/dist/cjs/providers/s3/utils/client/utils/parsePayload.js.map +1 -1
  31. package/dist/cjs/providers/s3/utils/md5.js +8 -3
  32. package/dist/cjs/providers/s3/utils/md5.js.map +1 -1
  33. package/dist/cjs/providers/s3/utils/md5.native.js +6 -2
  34. package/dist/cjs/providers/s3/utils/md5.native.js.map +1 -1
  35. package/dist/cjs/providers/s3/utils/resolveS3ConfigAndInput.js +1 -1
  36. package/dist/cjs/providers/s3/utils/resolveS3ConfigAndInput.js.map +1 -1
  37. package/dist/cjs/providers/s3/utils/transferTask.js +10 -4
  38. package/dist/cjs/providers/s3/utils/transferTask.js.map +1 -1
  39. package/dist/esm/providers/s3/apis/getProperties.d.ts +1 -1
  40. package/dist/esm/providers/s3/apis/internal/getProperties.mjs +1 -1
  41. package/dist/esm/providers/s3/apis/internal/getProperties.mjs.map +1 -1
  42. package/dist/esm/providers/s3/apis/internal/getUrl.mjs +3 -3
  43. package/dist/esm/providers/s3/apis/internal/getUrl.mjs.map +1 -1
  44. package/dist/esm/providers/s3/apis/internal/list.d.ts +1 -1
  45. package/dist/esm/providers/s3/apis/internal/list.mjs +2 -2
  46. package/dist/esm/providers/s3/apis/internal/list.mjs.map +1 -1
  47. package/dist/esm/providers/s3/apis/list.d.ts +3 -3
  48. package/dist/esm/providers/s3/apis/server/list.d.ts +3 -3
  49. package/dist/esm/providers/s3/apis/uploadData/multipart/getDataChunker.d.ts +2 -2
  50. package/dist/esm/providers/s3/apis/uploadData/multipart/initialUpload.d.ts +4 -4
  51. package/dist/esm/providers/s3/apis/uploadData/multipart/initialUpload.mjs +1 -1
  52. package/dist/esm/providers/s3/apis/uploadData/multipart/initialUpload.mjs.map +1 -1
  53. package/dist/esm/providers/s3/apis/uploadData/multipart/progressTracker.d.ts +3 -3
  54. package/dist/esm/providers/s3/apis/uploadData/multipart/uploadCache.d.ts +6 -6
  55. package/dist/esm/providers/s3/apis/uploadData/multipart/uploadHandlers.mjs +25 -25
  56. package/dist/esm/providers/s3/apis/uploadData/multipart/uploadHandlers.mjs.map +1 -1
  57. package/dist/esm/providers/s3/apis/uploadData/multipart/uploadPartExecutor.d.ts +5 -5
  58. package/dist/esm/providers/s3/types/inputs.d.ts +2 -2
  59. package/dist/esm/providers/s3/types/options.d.ts +11 -11
  60. package/dist/esm/providers/s3/types/outputs.d.ts +1 -1
  61. package/dist/esm/providers/s3/utils/client/abortMultipartUpload.d.ts +2 -2
  62. package/dist/esm/providers/s3/utils/client/base.mjs +1 -1
  63. package/dist/esm/providers/s3/utils/client/base.mjs.map +1 -1
  64. package/dist/esm/providers/s3/utils/client/completeMultipartUpload.d.ts +2 -2
  65. package/dist/esm/providers/s3/utils/client/copyObject.d.ts +2 -2
  66. package/dist/esm/providers/s3/utils/client/copyObject.mjs.map +1 -1
  67. package/dist/esm/providers/s3/utils/client/createMultipartUpload.d.ts +3 -3
  68. package/dist/esm/providers/s3/utils/client/createMultipartUpload.mjs.map +1 -1
  69. package/dist/esm/providers/s3/utils/client/deleteObject.d.ts +2 -2
  70. package/dist/esm/providers/s3/utils/client/getObject.d.ts +3 -3
  71. package/dist/esm/providers/s3/utils/client/getObject.mjs.map +1 -1
  72. package/dist/esm/providers/s3/utils/client/headObject.d.ts +2 -2
  73. package/dist/esm/providers/s3/utils/client/listObjectsV2.d.ts +3 -3
  74. package/dist/esm/providers/s3/utils/client/listParts.d.ts +2 -2
  75. package/dist/esm/providers/s3/utils/client/listParts.mjs.map +1 -1
  76. package/dist/esm/providers/s3/utils/client/putObject.d.ts +2 -2
  77. package/dist/esm/providers/s3/utils/client/putObject.mjs.map +1 -1
  78. package/dist/esm/providers/s3/utils/client/runtime/base64/index.native.mjs +1 -1
  79. package/dist/esm/providers/s3/utils/client/runtime/base64/index.native.mjs.map +1 -1
  80. package/dist/esm/providers/s3/utils/client/runtime/contentSha256middleware.d.ts +2 -2
  81. package/dist/esm/providers/s3/utils/client/runtime/contentSha256middleware.mjs +2 -2
  82. package/dist/esm/providers/s3/utils/client/runtime/contentSha256middleware.mjs.map +1 -1
  83. package/dist/esm/providers/s3/utils/client/runtime/s3TransferHandler/fetch.d.ts +2 -2
  84. package/dist/esm/providers/s3/utils/client/runtime/s3TransferHandler/fetch.mjs +2 -2
  85. package/dist/esm/providers/s3/utils/client/runtime/s3TransferHandler/fetch.mjs.map +1 -1
  86. package/dist/esm/providers/s3/utils/client/runtime/s3TransferHandler/xhr.d.ts +2 -2
  87. package/dist/esm/providers/s3/utils/client/runtime/s3TransferHandler/xhr.mjs +6 -6
  88. package/dist/esm/providers/s3/utils/client/runtime/s3TransferHandler/xhr.mjs.map +1 -1
  89. package/dist/esm/providers/s3/utils/client/runtime/xhrTransferHandler.d.ts +2 -2
  90. package/dist/esm/providers/s3/utils/client/runtime/xhrTransferHandler.mjs +4 -4
  91. package/dist/esm/providers/s3/utils/client/runtime/xhrTransferHandler.mjs.map +1 -1
  92. package/dist/esm/providers/s3/utils/client/runtime/xmlParser/dom.mjs +4 -7
  93. package/dist/esm/providers/s3/utils/client/runtime/xmlParser/dom.mjs.map +1 -1
  94. package/dist/esm/providers/s3/utils/client/runtime/xmlParser/pureJs.mjs +6 -5
  95. package/dist/esm/providers/s3/utils/client/runtime/xmlParser/pureJs.mjs.map +1 -1
  96. package/dist/esm/providers/s3/utils/client/types.d.ts +11 -22
  97. package/dist/esm/providers/s3/utils/client/uploadPart.d.ts +2 -2
  98. package/dist/esm/providers/s3/utils/client/uploadPart.mjs.map +1 -1
  99. package/dist/esm/providers/s3/utils/client/utils/deserializeHelpers.d.ts +1 -3
  100. package/dist/esm/providers/s3/utils/client/utils/deserializeHelpers.mjs +1 -1
  101. package/dist/esm/providers/s3/utils/client/utils/deserializeHelpers.mjs.map +1 -1
  102. package/dist/esm/providers/s3/utils/client/utils/parsePayload.mjs +2 -2
  103. package/dist/esm/providers/s3/utils/client/utils/parsePayload.mjs.map +1 -1
  104. package/dist/esm/providers/s3/utils/client/utils/serializeHelpers.d.ts +1 -1
  105. package/dist/esm/providers/s3/utils/md5.mjs +8 -3
  106. package/dist/esm/providers/s3/utils/md5.mjs.map +1 -1
  107. package/dist/esm/providers/s3/utils/md5.native.mjs +6 -2
  108. package/dist/esm/providers/s3/utils/md5.native.mjs.map +1 -1
  109. package/dist/esm/providers/s3/utils/resolveS3ConfigAndInput.d.ts +4 -4
  110. package/dist/esm/providers/s3/utils/resolveS3ConfigAndInput.mjs +1 -1
  111. package/dist/esm/providers/s3/utils/resolveS3ConfigAndInput.mjs.map +1 -1
  112. package/dist/esm/providers/s3/utils/transferTask.d.ts +10 -10
  113. package/dist/esm/providers/s3/utils/transferTask.mjs +10 -4
  114. package/dist/esm/providers/s3/utils/transferTask.mjs.map +1 -1
  115. package/dist/esm/types/common.d.ts +7 -7
  116. package/dist/esm/types/inputs.d.ts +9 -9
  117. package/dist/esm/types/options.d.ts +2 -2
  118. package/dist/esm/types/outputs.d.ts +6 -6
  119. package/dist/esm/utils/resolvePrefix.d.ts +2 -2
  120. package/package.json +107 -106
  121. package/src/errors/CanceledError.ts +1 -0
  122. package/src/errors/utils/assertValidationError.ts +1 -1
  123. package/src/providers/s3/apis/copy.ts +3 -1
  124. package/src/providers/s3/apis/downloadData.ts +5 -3
  125. package/src/providers/s3/apis/getProperties.ts +5 -2
  126. package/src/providers/s3/apis/getUrl.ts +3 -0
  127. package/src/providers/s3/apis/internal/copy.ts +5 -4
  128. package/src/providers/s3/apis/internal/getProperties.ts +8 -6
  129. package/src/providers/s3/apis/internal/getUrl.ts +11 -9
  130. package/src/providers/s3/apis/internal/list.ts +13 -10
  131. package/src/providers/s3/apis/internal/remove.ts +5 -3
  132. package/src/providers/s3/apis/list.ts +8 -4
  133. package/src/providers/s3/apis/remove.ts +4 -1
  134. package/src/providers/s3/apis/server/copy.ts +2 -1
  135. package/src/providers/s3/apis/server/getProperties.ts +3 -2
  136. package/src/providers/s3/apis/server/getUrl.ts +2 -1
  137. package/src/providers/s3/apis/server/list.ts +10 -7
  138. package/src/providers/s3/apis/server/remove.ts +2 -1
  139. package/src/providers/s3/apis/uploadData/byteLength.ts +1 -0
  140. package/src/providers/s3/apis/uploadData/index.ts +5 -2
  141. package/src/providers/s3/apis/uploadData/multipart/calculatePartSize.ts +1 -0
  142. package/src/providers/s3/apis/uploadData/multipart/getDataChunker.ts +6 -4
  143. package/src/providers/s3/apis/uploadData/multipart/initialUpload.ts +12 -9
  144. package/src/providers/s3/apis/uploadData/multipart/progressTracker.ts +5 -4
  145. package/src/providers/s3/apis/uploadData/multipart/uploadCache.ts +15 -12
  146. package/src/providers/s3/apis/uploadData/multipart/uploadHandlers.ts +42 -36
  147. package/src/providers/s3/apis/uploadData/multipart/uploadPartExecutor.ts +7 -6
  148. package/src/providers/s3/apis/uploadData/putObjectJob.ts +2 -2
  149. package/src/providers/s3/types/inputs.ts +4 -4
  150. package/src/providers/s3/types/options.ts +11 -11
  151. package/src/providers/s3/types/outputs.ts +1 -1
  152. package/src/providers/s3/utils/client/abortMultipartUpload.ts +5 -4
  153. package/src/providers/s3/utils/client/base.ts +8 -6
  154. package/src/providers/s3/utils/client/completeMultipartUpload.ts +14 -6
  155. package/src/providers/s3/utils/client/copyObject.ts +7 -4
  156. package/src/providers/s3/utils/client/createMultipartUpload.ts +7 -5
  157. package/src/providers/s3/utils/client/deleteObject.ts +6 -5
  158. package/src/providers/s3/utils/client/getObject.ts +14 -12
  159. package/src/providers/s3/utils/client/headObject.ts +6 -5
  160. package/src/providers/s3/utils/client/listObjectsV2.ts +6 -3
  161. package/src/providers/s3/utils/client/listParts.ts +9 -6
  162. package/src/providers/s3/utils/client/putObject.ts +6 -5
  163. package/src/providers/s3/utils/client/runtime/base64/index.browser.ts +2 -1
  164. package/src/providers/s3/utils/client/runtime/base64/index.native.ts +1 -1
  165. package/src/providers/s3/utils/client/runtime/contentSha256middleware.ts +6 -4
  166. package/src/providers/s3/utils/client/runtime/s3TransferHandler/fetch.ts +7 -5
  167. package/src/providers/s3/utils/client/runtime/s3TransferHandler/xhr.ts +11 -11
  168. package/src/providers/s3/utils/client/runtime/xhrTransferHandler.ts +21 -14
  169. package/src/providers/s3/utils/client/runtime/xmlParser/dom.ts +6 -7
  170. package/src/providers/s3/utils/client/runtime/xmlParser/pureJs.ts +10 -5
  171. package/src/providers/s3/utils/client/types.ts +12 -14
  172. package/src/providers/s3/utils/client/uploadPart.ts +6 -5
  173. package/src/providers/s3/utils/client/utils/deserializeHelpers.ts +13 -8
  174. package/src/providers/s3/utils/client/utils/parsePayload.ts +6 -4
  175. package/src/providers/s3/utils/client/utils/serializeHelpers.ts +8 -5
  176. package/src/providers/s3/utils/md5.native.ts +9 -3
  177. package/src/providers/s3/utils/md5.ts +12 -4
  178. package/src/providers/s3/utils/resolveS3ConfigAndInput.ts +10 -8
  179. package/src/providers/s3/utils/transferTask.ts +26 -14
  180. package/src/providers/s3/utils/userAgent.ts +1 -1
  181. package/src/types/common.ts +7 -7
  182. package/src/types/inputs.ts +11 -11
  183. package/src/types/options.ts +2 -2
  184. package/src/types/outputs.ts +6 -6
  185. package/src/utils/resolvePrefix.ts +7 -4
@@ -12,20 +12,21 @@ import {
12
12
  AmplifyUrlSearchParams,
13
13
  } from '@aws-amplify/core/internals/utils';
14
14
  import { composeServiceApi } from '@aws-amplify/core/internals/aws-client-utils/composers';
15
+
15
16
  import type {
17
+ CompletedPart,
16
18
  ListPartsCommandInput,
17
19
  ListPartsCommandOutput,
18
- CompletedPart,
19
20
  } from './types';
20
21
  import { defaultConfig } from './base';
21
22
  import {
22
23
  buildStorageServiceError,
24
+ deserializeNumber,
23
25
  emptyArrayGuard,
24
26
  map,
25
27
  parseXmlBody,
26
28
  parseXmlError,
27
29
  s3TransferHandler,
28
- deserializeNumber,
29
30
  serializePathnameObjectKey,
30
31
  validateS3RequiredParameter,
31
32
  } from './utils';
@@ -42,7 +43,7 @@ export type ListPartsOutput = Pick<
42
43
 
43
44
  const listPartsSerializer = async (
44
45
  input: ListPartsInput,
45
- endpoint: Endpoint
46
+ endpoint: Endpoint,
46
47
  ): Promise<HttpRequest> => {
47
48
  const headers = {};
48
49
  const url = new AmplifyUrl(endpoint.url.toString());
@@ -52,6 +53,7 @@ const listPartsSerializer = async (
52
53
  url.search = new AmplifyUrlSearchParams({
53
54
  uploadId: input.UploadId,
54
55
  }).toString();
56
+
55
57
  return {
56
58
  method: 'GET',
57
59
  headers,
@@ -60,7 +62,7 @@ const listPartsSerializer = async (
60
62
  };
61
63
 
62
64
  const listPartsDeserializer = async (
63
- response: HttpResponse
65
+ response: HttpResponse,
64
66
  ): Promise<ListPartsOutput> => {
65
67
  if (response.statusCode >= 300) {
66
68
  const error = (await parseXmlError(response)) as Error;
@@ -74,6 +76,7 @@ const listPartsDeserializer = async (
74
76
  value => emptyArrayGuard(value, deserializeCompletedPartList),
75
77
  ],
76
78
  });
79
+
77
80
  return {
78
81
  $metadata: parseMetadata(response),
79
82
  ...contents,
@@ -87,12 +90,12 @@ const deserializeCompletedPartList = (input: any[]): CompletedPart[] =>
87
90
  PartNumber: ['PartNumber', deserializeNumber],
88
91
  ETag: 'ETag',
89
92
  Size: ['Size', deserializeNumber],
90
- })
93
+ }),
91
94
  );
92
95
 
93
96
  export const listParts = composeServiceApi(
94
97
  s3TransferHandler,
95
98
  listPartsSerializer,
96
99
  listPartsDeserializer,
97
- { ...defaultConfig, responseType: 'text' }
100
+ { ...defaultConfig, responseType: 'text' },
98
101
  );
@@ -13,14 +13,14 @@ import { composeServiceApi } from '@aws-amplify/core/internals/aws-client-utils/
13
13
  import { defaultConfig } from './base';
14
14
  import type { PutObjectCommandInput, PutObjectCommandOutput } from './types';
15
15
  import {
16
- buildStorageServiceError,
17
- validateS3RequiredParameter,
18
16
  assignStringVariables,
17
+ buildStorageServiceError,
19
18
  map,
20
19
  parseXmlError,
21
20
  s3TransferHandler,
22
21
  serializeObjectConfigsToHeaders,
23
22
  serializePathnameObjectKey,
23
+ validateS3RequiredParameter,
24
24
  } from './utils';
25
25
 
26
26
  export type PutObjectInput = Pick<
@@ -48,7 +48,7 @@ export type PutObjectOutput = Pick<
48
48
 
49
49
  const putObjectSerializer = async (
50
50
  input: PutObjectInput,
51
- endpoint: Endpoint
51
+ endpoint: Endpoint,
52
52
  ): Promise<HttpRequest> => {
53
53
  const headers = {
54
54
  ...(await serializeObjectConfigsToHeaders({
@@ -60,6 +60,7 @@ const putObjectSerializer = async (
60
60
  const url = new AmplifyUrl(endpoint.url.toString());
61
61
  validateS3RequiredParameter(!!input.Key, 'Key');
62
62
  url.pathname = serializePathnameObjectKey(url, input.Key);
63
+
63
64
  return {
64
65
  method: 'PUT',
65
66
  headers,
@@ -69,7 +70,7 @@ const putObjectSerializer = async (
69
70
  };
70
71
 
71
72
  const putObjectDeserializer = async (
72
- response: HttpResponse
73
+ response: HttpResponse,
73
74
  ): Promise<PutObjectOutput> => {
74
75
  if (response.statusCode >= 300) {
75
76
  const error = (await parseXmlError(response)) as Error;
@@ -89,5 +90,5 @@ export const putObject = composeServiceApi(
89
90
  s3TransferHandler,
90
91
  putObjectSerializer,
91
92
  putObjectDeserializer,
92
- { ...defaultConfig, responseType: 'text' }
93
+ { ...defaultConfig, responseType: 'text' },
93
94
  );
@@ -3,6 +3,7 @@
3
3
 
4
4
  function bytesToBase64(bytes: Uint8Array): string {
5
5
  const base64Str = Array.from(bytes, x => String.fromCodePoint(x)).join('');
6
+
6
7
  return btoa(base64Str);
7
8
  }
8
9
 
@@ -16,6 +17,6 @@ export function toBase64(input: string | ArrayBufferView): string {
16
17
  }
17
18
 
18
19
  return bytesToBase64(
19
- new Uint8Array(input.buffer, input.byteOffset, input.byteLength)
20
+ new Uint8Array(input.buffer, input.byteOffset, input.byteLength),
20
21
  );
21
22
  }
@@ -12,5 +12,5 @@ export function toBase64(input: string | ArrayBufferView): string {
12
12
  return Buffer.from(input, 'utf-8').toString('base64');
13
13
  }
14
14
 
15
- return new Buffer(input.buffer).toString('base64');
15
+ return Buffer.from(input.buffer).toString('base64');
16
16
  }
@@ -3,10 +3,11 @@
3
3
 
4
4
  import {
5
5
  HttpRequest,
6
- getHashedPayload,
7
- MiddlewareHandler,
8
6
  HttpResponse,
7
+ MiddlewareHandler,
8
+ getHashedPayload,
9
9
  } from '@aws-amplify/core/internals/aws-client-utils';
10
+
10
11
  import { CONTENT_SHA256_HEADER } from './constants';
11
12
 
12
13
  /**
@@ -16,14 +17,15 @@ import { CONTENT_SHA256_HEADER } from './constants';
16
17
  *
17
18
  * @internal
18
19
  */
19
- export const contentSha256Middleware =
20
- (options: {}) => (next: MiddlewareHandler<HttpRequest, HttpResponse>) =>
20
+ export const contentSha256MiddlewareFactory =
21
+ () => (next: MiddlewareHandler<HttpRequest, HttpResponse>) =>
21
22
  async function contentSha256Middleware(request: HttpRequest) {
22
23
  if (request.headers[CONTENT_SHA256_HEADER]) {
23
24
  return next(request);
24
25
  } else {
25
26
  const hash = await getHashedPayload(request.body);
26
27
  request.headers[CONTENT_SHA256_HEADER] = hash;
28
+
27
29
  return next(request);
28
30
  }
29
31
  };
@@ -6,9 +6,11 @@ import {
6
6
  HttpResponse,
7
7
  authenticatedHandler,
8
8
  } from '@aws-amplify/core/internals/aws-client-utils';
9
- import type { s3TransferHandler as s3BrowserTransferhandler } from './xhr';
10
9
  import { composeTransferHandler } from '@aws-amplify/core/internals/aws-client-utils/composers';
11
- import { contentSha256Middleware } from '../contentSha256middleware';
10
+
11
+ import { contentSha256MiddlewareFactory } from '../contentSha256middleware';
12
+
13
+ import type { s3TransferHandler as s3BrowserTransferHandler } from './xhr';
12
14
 
13
15
  /**
14
16
  * S3 transfer handler for node based on Node-fetch. On top of basic transfer handler, it also supports
@@ -16,10 +18,10 @@ import { contentSha256Middleware } from '../contentSha256middleware';
16
18
  *
17
19
  * @internal
18
20
  */
19
- export const s3TransferHandler: typeof s3BrowserTransferhandler =
21
+ export const s3TransferHandler: typeof s3BrowserTransferHandler =
20
22
  composeTransferHandler<
21
- [{}],
23
+ [object],
22
24
  HttpRequest,
23
25
  HttpResponse,
24
26
  typeof authenticatedHandler
25
- >(authenticatedHandler, [contentSha256Middleware]);
27
+ >(authenticatedHandler, [contentSha256MiddlewareFactory]);
@@ -2,18 +2,18 @@
2
2
  // SPDX-License-Identifier: Apache-2.0
3
3
 
4
4
  import {
5
- retryMiddleware,
5
+ HttpRequest,
6
+ HttpResponse,
6
7
  RetryOptions,
7
- signingMiddleware,
8
8
  SigningOptions,
9
- userAgentMiddleware,
10
9
  UserAgentOptions,
11
- HttpRequest,
12
- HttpResponse,
10
+ retryMiddlewareFactory,
11
+ signingMiddlewareFactory,
12
+ userAgentMiddlewareFactory,
13
13
  } from '@aws-amplify/core/internals/aws-client-utils';
14
14
  import { composeTransferHandler } from '@aws-amplify/core/internals/aws-client-utils/composers';
15
15
 
16
- import { contentSha256Middleware } from '../contentSha256middleware';
16
+ import { contentSha256MiddlewareFactory } from '../contentSha256middleware';
17
17
  import { xhrTransferHandler } from '../xhrTransferHandler';
18
18
 
19
19
  /**
@@ -23,13 +23,13 @@ import { xhrTransferHandler } from '../xhrTransferHandler';
23
23
  * @internal
24
24
  */
25
25
  export const s3TransferHandler = composeTransferHandler<
26
- [{}, UserAgentOptions, RetryOptions<HttpResponse>, SigningOptions],
26
+ [object, UserAgentOptions, RetryOptions<HttpResponse>, SigningOptions],
27
27
  HttpRequest,
28
28
  HttpResponse,
29
29
  typeof xhrTransferHandler
30
30
  >(xhrTransferHandler, [
31
- contentSha256Middleware,
32
- userAgentMiddleware,
33
- retryMiddleware,
34
- signingMiddleware,
31
+ contentSha256MiddlewareFactory,
32
+ userAgentMiddlewareFactory,
33
+ retryMiddlewareFactory,
34
+ signingMiddlewareFactory,
35
35
  ]);
@@ -4,11 +4,15 @@
4
4
  import {
5
5
  HttpRequest,
6
6
  HttpResponse,
7
- TransferHandler,
8
7
  ResponseBodyMixin,
8
+ TransferHandler,
9
9
  withMemoization,
10
10
  } from '@aws-amplify/core/internals/aws-client-utils';
11
11
  import { ConsoleLogger } from '@aws-amplify/core';
12
+
13
+ import { TransferProgressEvent } from '../../../../../types/common';
14
+ import { CanceledError } from '../../../../../errors/CanceledError';
15
+
12
16
  import {
13
17
  ABORT_ERROR_CODE,
14
18
  ABORT_ERROR_MESSAGE,
@@ -17,8 +21,6 @@ import {
17
21
  NETWORK_ERROR_CODE,
18
22
  NETWORK_ERROR_MESSAGE,
19
23
  } from './constants';
20
- import { TransferProgressEvent } from '../../../../../types/common';
21
- import { CanceledError } from '../../../../../errors/CanceledError';
22
24
 
23
25
  const logger = new ConsoleLogger('xhr-http-handler');
24
26
 
@@ -30,8 +32,8 @@ export interface XhrTransferHandlerOptions {
30
32
  // download binary data. Otherwise, use `text` to return the response as a string.
31
33
  responseType: 'text' | 'blob';
32
34
  abortSignal?: AbortSignal;
33
- onDownloadProgress?: (event: TransferProgressEvent) => void;
34
- onUploadProgress?: (event: TransferProgressEvent) => void;
35
+ onDownloadProgress?(event: TransferProgressEvent): void;
36
+ onUploadProgress?(event: TransferProgressEvent): void;
35
37
  }
36
38
 
37
39
  /**
@@ -80,7 +82,7 @@ export const xhrTransferHandler: TransferHandler<
80
82
  xhr.addEventListener('error', () => {
81
83
  const networkError = buildHandlerError(
82
84
  NETWORK_ERROR_MESSAGE,
83
- NETWORK_ERROR_CODE
85
+ NETWORK_ERROR_CODE,
84
86
  );
85
87
  logger.error(NETWORK_ERROR_MESSAGE);
86
88
  reject(networkError);
@@ -111,24 +113,25 @@ export const xhrTransferHandler: TransferHandler<
111
113
  // The load event is triggered after the error/abort/load event. So we need to check if the xhr is null.
112
114
  if (!xhr) return;
113
115
  const responseHeaders = convertResponseHeaders(
114
- xhr.getAllResponseHeaders()
116
+ xhr.getAllResponseHeaders(),
115
117
  );
116
- const responseType = xhr.responseType;
118
+ const { responseType: loadEndResponseType } = xhr;
117
119
  const responseBlob = xhr.response as Blob;
118
- const responseText = responseType === 'text' ? xhr.responseText : '';
120
+ const responseText =
121
+ loadEndResponseType === 'text' ? xhr.responseText : '';
119
122
  const bodyMixIn: ResponseBodyMixin = {
120
123
  blob: () => Promise.resolve(responseBlob),
121
124
  text: withMemoization(() =>
122
- responseType === 'blob'
125
+ loadEndResponseType === 'blob'
123
126
  ? readBlobAsText(responseBlob)
124
- : Promise.resolve(responseText)
127
+ : Promise.resolve(responseText),
125
128
  ),
126
129
  json: () =>
127
130
  Promise.reject(
128
131
  // S3 does not support JSON response. So fail-fast here with nicer error message.
129
132
  new Error(
130
- 'Parsing response to JSON is not implemented. Please use response.text() instead.'
131
- )
133
+ 'Parsing response to JSON is not implemented. Please use response.text() instead.',
134
+ ),
132
135
  ),
133
136
  };
134
137
  const response: HttpResponse = {
@@ -184,7 +187,7 @@ export const xhrTransferHandler: TransferHandler<
184
187
  };
185
188
 
186
189
  const convertToTransferProgressEvent = (
187
- event: ProgressEvent
190
+ event: ProgressEvent,
188
191
  ): TransferProgressEvent => ({
189
192
  transferredBytes: event.loaded,
190
193
  totalBytes: event.lengthComputable ? event.total : undefined,
@@ -193,6 +196,7 @@ const convertToTransferProgressEvent = (
193
196
  const buildHandlerError = (message: string, name: string): Error => {
194
197
  const error = new Error(message);
195
198
  error.name = name;
199
+
196
200
  return error;
197
201
  };
198
202
 
@@ -205,6 +209,7 @@ const convertResponseHeaders = (xhrHeaders: string): Record<string, string> => {
205
209
  if (!xhrHeaders) {
206
210
  return {};
207
211
  }
212
+
208
213
  return xhrHeaders
209
214
  .split('\r\n')
210
215
  .reduce((headerMap: Record<string, string>, line: string) => {
@@ -212,12 +217,14 @@ const convertResponseHeaders = (xhrHeaders: string): Record<string, string> => {
212
217
  const header = parts.shift()!;
213
218
  const value = parts.join(': ');
214
219
  headerMap[header.toLowerCase()] = value;
220
+
215
221
  return headerMap;
216
222
  }, {});
217
223
  };
218
224
 
219
225
  const readBlobAsText = (blob: Blob) => {
220
226
  const reader = new FileReader();
227
+
221
228
  return new Promise<string>((resolve, reject) => {
222
229
  reader.onloadend = () => {
223
230
  if (reader.readyState !== FileReader.DONE) {
@@ -12,6 +12,7 @@ export const parser = {
12
12
  const xml = domParser.parseFromString(xmlStr, 'text/xml');
13
13
  const parsedObj = parseXmlNode(xml);
14
14
  const rootKey = Object.keys(parsedObj)[0];
15
+
15
16
  return parsedObj[rootKey];
16
17
  },
17
18
  };
@@ -31,13 +32,12 @@ const parseXmlNode = (node: Node): any => {
31
32
  // Node like <Location>foo</Location> will be converted to { Location: 'foo' }
32
33
  // instead of { Location: { '#text': 'foo' } }.
33
34
  if (isTextOnlyElementNode(node)) {
34
- return node.childNodes[0]?.nodeValue!;
35
+ return node.childNodes[0].nodeValue!;
35
36
  }
36
37
 
37
38
  const nodeValue: Record<string, any> = {};
38
39
  // convert attributes
39
- for (let i = 0; i < node.attributes.length; i++) {
40
- const attr = node.attributes[i];
40
+ for (const attr of node.attributes) {
41
41
  if (!isNamespaceAttributeName(attr.nodeName)) {
42
42
  nodeValue[attr.nodeName] = attr.nodeValue!;
43
43
  }
@@ -45,8 +45,7 @@ const parseXmlNode = (node: Node): any => {
45
45
 
46
46
  // convert child nodes
47
47
  if (node.children.length > 0) {
48
- for (let i = 0; i < node.children.length; i++) {
49
- const child = node.children[i];
48
+ for (const child of node.children) {
50
49
  const childValue = parseXmlNode(child);
51
50
  if (childValue === undefined) {
52
51
  continue;
@@ -79,12 +78,12 @@ const isTextOnlyElementNode = (node: Element): boolean =>
79
78
  node.firstChild?.nodeType === Node.TEXT_NODE;
80
79
 
81
80
  const hasOnlyNamespaceAttributes = (node: Element): boolean => {
82
- for (let i = 0; i < node.attributes.length; i++) {
83
- const attr = node.attributes[i];
81
+ for (const attr of node.attributes) {
84
82
  if (!isNamespaceAttributeName(attr.nodeName)) {
85
83
  return false;
86
84
  }
87
85
  }
86
+
88
87
  return true;
89
88
  };
90
89
 
@@ -12,7 +12,7 @@ import { XMLParser } from 'fast-xml-parser';
12
12
  */
13
13
  export const parser = {
14
14
  parse: (xmlStr: string): any => {
15
- const parser = new XMLParser({
15
+ const xmlParser = new XMLParser({
16
16
  attributeNamePrefix: '',
17
17
  htmlEntities: true,
18
18
  ignoreAttributes: false,
@@ -23,9 +23,9 @@ export const parser = {
23
23
  tagValueProcessor: (_, val) =>
24
24
  val.trim() === '' && val.includes('\n') ? '' : undefined,
25
25
  });
26
- parser.addEntity('#xD', '\r');
27
- parser.addEntity('#10', '\n');
28
- const parsedObj: any = parser.parse(xmlStr);
26
+ xmlParser.addEntity('#xD', '\r');
27
+ xmlParser.addEntity('#10', '\n');
28
+ const parsedObj: any = xmlParser.parse(xmlStr);
29
29
  const textNodeName = '#text';
30
30
  const key = Object.keys(parsedObj)[0];
31
31
  const parsedObjToReturn = parsedObj[key];
@@ -33,6 +33,7 @@ export const parser = {
33
33
  parsedObjToReturn[key] = parsedObjToReturn[textNodeName];
34
34
  delete parsedObjToReturn[textNodeName];
35
35
  }
36
+
36
37
  return getValueFromTextNode(parsedObjToReturn);
37
38
  },
38
39
  };
@@ -45,11 +46,15 @@ export const parser = {
45
46
  const getValueFromTextNode = (obj: any) => {
46
47
  const textNodeName = '#text';
47
48
  for (const key in obj) {
48
- if (obj.hasOwnProperty(key) && obj[key][textNodeName] !== undefined) {
49
+ if (
50
+ Object.prototype.hasOwnProperty.call(obj, key) &&
51
+ obj[key][textNodeName] !== undefined
52
+ ) {
49
53
  obj[key] = obj[key][textNodeName];
50
54
  } else if (typeof obj[key] === 'object' && obj[key] !== null) {
51
55
  obj[key] = getValueFromTextNode(obj[key]);
52
56
  }
53
57
  }
58
+
54
59
  return obj;
55
60
  };
@@ -112,8 +112,7 @@ declare const TaggingDirective: {
112
112
  *
113
113
  * The input for {@link AbortMultipartUploadCommand}.
114
114
  */
115
- export interface AbortMultipartUploadCommandInput
116
- extends AbortMultipartUploadRequest {}
115
+ export type AbortMultipartUploadCommandInput = AbortMultipartUploadRequest;
117
116
  /**
118
117
  * @public
119
118
  *
@@ -183,8 +182,8 @@ export interface CommonPrefix {
183
182
  *
184
183
  * The input for {@link CompleteMultipartUploadCommand}.
185
184
  */
186
- export interface CompleteMultipartUploadCommandInput
187
- extends CompleteMultipartUploadRequest {}
185
+ export type CompleteMultipartUploadCommandInput =
186
+ CompleteMultipartUploadRequest;
188
187
  /**
189
188
  * @public
190
189
  *
@@ -429,7 +428,7 @@ export interface CompletedPart {
429
428
  *
430
429
  * The input for {@link CopyObjectCommand}.
431
430
  */
432
- export interface CopyObjectCommandInput extends CopyObjectRequest {}
431
+ export type CopyObjectCommandInput = CopyObjectRequest;
433
432
  /**
434
433
  * @public
435
434
  *
@@ -787,8 +786,7 @@ export interface CopyObjectResult {
787
786
  *
788
787
  * The input for {@link CreateMultipartUploadCommand}.
789
788
  */
790
- export interface CreateMultipartUploadCommandInput
791
- extends CreateMultipartUploadRequest {}
789
+ export type CreateMultipartUploadCommandInput = CreateMultipartUploadRequest;
792
790
  /**
793
791
  * @public
794
792
  *
@@ -1045,7 +1043,7 @@ export interface CreateMultipartUploadRequest {
1045
1043
  *
1046
1044
  * The input for {@link DeleteObjectCommand}.
1047
1045
  */
1048
- export interface DeleteObjectCommandInput extends DeleteObjectRequest {}
1046
+ export type DeleteObjectCommandInput = DeleteObjectRequest;
1049
1047
  /**
1050
1048
  * @public
1051
1049
  *
@@ -1124,7 +1122,7 @@ export interface DeleteObjectRequest {
1124
1122
  *
1125
1123
  * The input for {@link GetObjectCommand}.
1126
1124
  */
1127
- export interface GetObjectCommandInput extends GetObjectRequest {}
1125
+ export type GetObjectCommandInput = GetObjectRequest;
1128
1126
  /**
1129
1127
  * @public
1130
1128
  *
@@ -1441,7 +1439,7 @@ export interface GetObjectRequest {
1441
1439
  *
1442
1440
  * The input for {@link HeadObjectCommand}.
1443
1441
  */
1444
- export interface HeadObjectCommandInput extends HeadObjectRequest {}
1442
+ export type HeadObjectCommandInput = HeadObjectRequest;
1445
1443
  /**
1446
1444
  * @public
1447
1445
  *
@@ -1790,7 +1788,7 @@ export interface Initiator {
1790
1788
  *
1791
1789
  * The input for {@link ListObjectsV2Command}.
1792
1790
  */
1793
- export interface ListObjectsV2CommandInput extends ListObjectsV2Request {}
1791
+ export type ListObjectsV2CommandInput = ListObjectsV2Request;
1794
1792
  /**
1795
1793
  * @public
1796
1794
  *
@@ -1948,7 +1946,7 @@ export interface ListObjectsV2Request {
1948
1946
  *
1949
1947
  * The input for {@link ListPartsCommand}.
1950
1948
  */
1951
- export interface ListPartsCommandInput extends ListPartsRequest {}
1949
+ export type ListPartsCommandInput = ListPartsRequest;
1952
1950
  /**
1953
1951
  * @public
1954
1952
  *
@@ -2202,7 +2200,7 @@ export interface Part {
2202
2200
  /**
2203
2201
  * This interface extends from `PutObjectRequest` interface. There are more parameters than `Body` defined in {@link PutObjectRequest}
2204
2202
  */
2205
- export interface PutObjectCommandInput extends PutObjectCommandInputType {}
2203
+ export type PutObjectCommandInput = PutObjectCommandInputType;
2206
2204
  /**
2207
2205
  * @public
2208
2206
  *
@@ -2540,7 +2538,7 @@ export interface PutObjectRequest {
2540
2538
  /**
2541
2539
  * This interface extends from `UploadPartRequest` interface. There are more parameters than `Body` defined in {@link UploadPartRequest}
2542
2540
  */
2543
- export interface UploadPartCommandInput extends UploadPartCommandInputType {}
2541
+ export type UploadPartCommandInput = UploadPartCommandInputType;
2544
2542
  /**
2545
2543
  * @public
2546
2544
  *
@@ -16,13 +16,13 @@ import { composeServiceApi } from '@aws-amplify/core/internals/aws-client-utils/
16
16
  import { defaultConfig } from './base';
17
17
  import type { UploadPartCommandInput, UploadPartCommandOutput } from './types';
18
18
  import {
19
- buildStorageServiceError,
20
- validateS3RequiredParameter,
21
19
  assignStringVariables,
20
+ buildStorageServiceError,
22
21
  map,
23
22
  parseXmlError,
24
23
  s3TransferHandler,
25
24
  serializePathnameObjectKey,
25
+ validateS3RequiredParameter,
26
26
  } from './utils';
27
27
 
28
28
  // Content-length is ignored here because it's forbidden header
@@ -39,7 +39,7 @@ export type UploadPartOutput = Pick<
39
39
 
40
40
  const uploadPartSerializer = async (
41
41
  input: UploadPartInput,
42
- endpoint: Endpoint
42
+ endpoint: Endpoint,
43
43
  ): Promise<HttpRequest> => {
44
44
  const headers = {
45
45
  ...assignStringVariables({ 'content-md5': input.ContentMD5 }),
@@ -54,6 +54,7 @@ const uploadPartSerializer = async (
54
54
  partNumber: input.PartNumber + '',
55
55
  uploadId: input.UploadId,
56
56
  }).toString();
57
+
57
58
  return {
58
59
  method: 'PUT',
59
60
  headers,
@@ -63,7 +64,7 @@ const uploadPartSerializer = async (
63
64
  };
64
65
 
65
66
  const uploadPartDeserializer = async (
66
- response: HttpResponse
67
+ response: HttpResponse,
67
68
  ): Promise<UploadPartOutput> => {
68
69
  if (response.statusCode >= 300) {
69
70
  const error = (await parseXmlError(response)) as Error;
@@ -82,5 +83,5 @@ export const uploadPart = composeServiceApi(
82
83
  s3TransferHandler,
83
84
  uploadPartSerializer,
84
85
  uploadPartDeserializer,
85
- { ...defaultConfig, responseType: 'text' }
86
+ { ...defaultConfig, responseType: 'text' },
86
87
  );