@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
@@ -48,9 +48,9 @@ type InferInstructionResultType<T extends Instruction<any>> =
48
48
  *
49
49
  * @internal
50
50
  */
51
- export const map = <Instructions extends { [key: string]: Instruction<any> }>(
51
+ export const map = <Instructions extends Record<string, Instruction<any>>>(
52
52
  obj: Record<string, any>,
53
- instructions: Instructions
53
+ instructions: Instructions,
54
54
  ): {
55
55
  [K in keyof Instructions]: InferInstructionResultType<Instructions[K]>;
56
56
  } => {
@@ -59,12 +59,13 @@ export const map = <Instructions extends { [key: string]: Instruction<any> }>(
59
59
  const [accessor, deserializer] = Array.isArray(instruction)
60
60
  ? instruction
61
61
  : [instruction];
62
- if (obj.hasOwnProperty(accessor)) {
62
+ if (Object.prototype.hasOwnProperty.call(obj, accessor)) {
63
63
  result[key as keyof Instructions] = deserializer
64
64
  ? deserializer(obj[accessor])
65
65
  : String(obj[accessor]);
66
66
  }
67
67
  }
68
+
68
69
  return result;
69
70
  };
70
71
 
@@ -108,16 +109,17 @@ export const deserializeTimestamp = (value: string): Date | undefined => {
108
109
  *
109
110
  * @internal
110
111
  */
111
- export const emptyArrayGuard = <T extends Array<any>>(
112
+ export const emptyArrayGuard = <T extends any[]>(
112
113
  value: any,
113
- deserializer: (value: any[]) => T
114
+ deserializer: (value: any[]) => T,
114
115
  ): T => {
115
116
  if (value === '') {
116
117
  return [] as any as T;
117
118
  }
118
119
  const valueArray = (Array.isArray(value) ? value : [value]).filter(
119
- e => e != null
120
+ e => e != null,
120
121
  );
122
+
121
123
  return deserializer(valueArray);
122
124
  };
123
125
 
@@ -125,15 +127,17 @@ export const emptyArrayGuard = <T extends Array<any>>(
125
127
  * @internal
126
128
  */
127
129
  export const deserializeMetadata = (
128
- headers: Headers
130
+ headers: Headers,
129
131
  ): Record<string, string> => {
130
132
  const objectMetadataHeaderPrefix = 'x-amz-meta-';
131
133
  const deserialized = Object.keys(headers)
132
134
  .filter(header => header.startsWith(objectMetadataHeaderPrefix))
133
135
  .reduce((acc, header) => {
134
136
  acc[header.replace(objectMetadataHeaderPrefix, '')] = headers[header];
137
+
135
138
  return acc;
136
139
  }, {} as any);
140
+
137
141
  return Object.keys(deserialized).length > 0 ? deserialized : undefined;
138
142
  };
139
143
 
@@ -144,7 +148,7 @@ export const deserializeMetadata = (
144
148
  */
145
149
  export const buildStorageServiceError = (
146
150
  error: Error,
147
- statusCode: number
151
+ statusCode: number,
148
152
  ): ServiceError => {
149
153
  const storageError = new StorageError({
150
154
  name: error.name,
@@ -154,5 +158,6 @@ export const buildStorageServiceError = (
154
158
  storageError.recoverySuggestion =
155
159
  'Please add the object with this key to the bucket as the key is not found.';
156
160
  }
161
+
157
162
  return storageError;
158
163
  };
@@ -15,13 +15,14 @@ export const parseXmlError: ErrorParser = async (response?: HttpResponse) => {
15
15
  }
16
16
  const { statusCode } = response;
17
17
  const body = await parseXmlBody(response);
18
- const code = body?.['Code']
18
+ const code = body?.Code
19
19
  ? (body.Code as string)
20
20
  : statusCode === 404
21
- ? 'NotFound'
22
- : statusCode.toString();
23
- const message = body?.['message'] ?? body?.['Message'] ?? code;
21
+ ? 'NotFound'
22
+ : statusCode.toString();
23
+ const message = body?.message ?? body?.Message ?? code;
24
24
  const error = new Error(message);
25
+
25
26
  return Object.assign(error, {
26
27
  name: code,
27
28
  $metadata: parseMetadata(response),
@@ -41,5 +42,6 @@ export const parseXmlBody = async (response: HttpResponse): Promise<any> => {
41
42
  throw new Error('Failed to parse XML response.');
42
43
  }
43
44
  }
45
+
44
46
  return {};
45
47
  };
@@ -2,13 +2,14 @@
2
2
  // SPDX-License-Identifier: Apache-2.0
3
3
  import { extendedEncodeURIComponent } from '@aws-amplify/core/internals/aws-client-utils';
4
4
  import { AmplifyErrorCode } from '@aws-amplify/core/internals/utils';
5
+
5
6
  import { StorageError } from '../../../../../errors/StorageError';
6
7
 
7
8
  /**
8
9
  * @internal
9
10
  */
10
11
  export const assignStringVariables = (
11
- values: Record<string, { toString: () => string } | undefined>
12
+ values: Record<string, { toString(): string } | undefined>,
12
13
  ): Record<string, string> => {
13
14
  const queryParams: Record<string, string> = {};
14
15
  for (const [key, value] of Object.entries(values)) {
@@ -16,6 +17,7 @@ export const assignStringVariables = (
16
17
  queryParams[key] = value.toString();
17
18
  }
18
19
  }
20
+
19
21
  return queryParams;
20
22
  };
21
23
 
@@ -39,7 +41,7 @@ interface ObjectConfigs {
39
41
  * @internal
40
42
  */
41
43
  export const serializeObjectConfigsToHeaders = async (
42
- input: ObjectConfigs
44
+ input: ObjectConfigs,
43
45
  ) => ({
44
46
  ...assignStringVariables({
45
47
  'x-amz-acl': input.ACL,
@@ -55,10 +57,11 @@ export const serializeObjectConfigsToHeaders = async (
55
57
  });
56
58
 
57
59
  const serializeMetadata = (
58
- metadata: Record<string, string> = {}
60
+ metadata: Record<string, string> = {},
59
61
  ): Record<string, string> =>
60
62
  Object.keys(metadata).reduce((acc: any, suffix: string) => {
61
63
  acc[`x-amz-meta-${suffix.toLowerCase()}`] = metadata[suffix];
64
+
62
65
  return acc;
63
66
  }, {});
64
67
 
@@ -77,14 +80,14 @@ export const serializePathnameObjectKey = (url: URL, key: string) => {
77
80
 
78
81
  export function validateS3RequiredParameter(
79
82
  assertion: boolean,
80
- paramName: string
83
+ paramName: string,
81
84
  ): asserts assertion {
82
85
  if (!assertion) {
83
86
  throw new StorageError({
84
87
  name: AmplifyErrorCode.Unknown,
85
88
  message: 'An unknown error has occurred.',
86
89
  underlyingError: new TypeError(
87
- `Expected a non-null value for S3 parameter ${paramName}`
90
+ `Expected a non-null value for S3 parameter ${paramName}`,
88
91
  ),
89
92
  recoverySuggestion:
90
93
  'This is likely to be a bug. Please reach out to library authors.',
@@ -2,10 +2,11 @@
2
2
  // SPDX-License-Identifier: Apache-2.0
3
3
 
4
4
  import { Md5 } from '@smithy/md5-js';
5
+
5
6
  import { toBase64 } from './client/utils';
6
7
 
7
8
  export const calculateContentMd5 = async (
8
- content: Blob | string | ArrayBuffer | ArrayBufferView
9
+ content: Blob | string | ArrayBuffer | ArrayBufferView,
9
10
  ): Promise<string> => {
10
11
  const hasher = new Md5();
11
12
  if (typeof content === 'string') {
@@ -19,6 +20,7 @@ export const calculateContentMd5 = async (
19
20
  hasher.update(buffer);
20
21
  }
21
22
  const digest = await hasher.digest();
23
+
22
24
  return toBase64(digest);
23
25
  };
24
26
 
@@ -29,8 +31,12 @@ const readFile = (file: Blob): Promise<ArrayBuffer> => {
29
31
  if (reader.result) {
30
32
  resolve(reader.result as ArrayBuffer);
31
33
  }
32
- reader.onabort = () => reject(new Error('Read aborted'));
33
- reader.onerror = () => reject(reader.error);
34
+ reader.onabort = () => {
35
+ reject(new Error('Read aborted'));
36
+ };
37
+ reader.onerror = () => {
38
+ reject(reader.error);
39
+ };
34
40
  };
35
41
  if (file !== undefined) reader.readAsArrayBuffer(file);
36
42
  });
@@ -2,10 +2,11 @@
2
2
  // SPDX-License-Identifier: Apache-2.0
3
3
 
4
4
  import { Md5 } from '@smithy/md5-js';
5
+
5
6
  import { toBase64, utf8Encode } from './client/utils';
6
7
 
7
8
  export const calculateContentMd5 = async (
8
- content: Blob | string | ArrayBuffer | ArrayBufferView
9
+ content: Blob | string | ArrayBuffer | ArrayBufferView,
9
10
  ): Promise<string> => {
10
11
  const hasher = new Md5();
11
12
  if (typeof content === 'string') {
@@ -19,6 +20,7 @@ export const calculateContentMd5 = async (
19
20
  hasher.update(utf8Encode(buffer));
20
21
  }
21
22
  const digest = await hasher.digest();
23
+
22
24
  return toBase64(digest);
23
25
  };
24
26
 
@@ -30,12 +32,18 @@ const readFileToBase64 = (blob: Blob): Promise<string> => {
30
32
  // response from readAsDataURL is always prepended with "data:*/*;base64,"
31
33
  // reference: https://developer.mozilla.org/en-US/docs/Web/API/FileReader/readyState
32
34
  if (reader.readyState !== 2) {
33
- return reject(new Error('Reader aborted too early'));
35
+ reject(new Error('Reader aborted too early'));
36
+
37
+ return;
34
38
  }
35
39
  resolve((reader.result as string).split(',')[1]);
36
40
  };
37
- reader.onabort = () => reject(new Error('Read aborted'));
38
- reader.onerror = () => reject(reader.error);
41
+ reader.onabort = () => {
42
+ reject(new Error('Read aborted'));
43
+ };
44
+ reader.onerror = () => {
45
+ reject(reader.error);
46
+ };
39
47
  // reader.readAsArrayBuffer is not available in RN
40
48
  reader.readAsDataURL(blob);
41
49
  });
@@ -2,25 +2,27 @@
2
2
  // SPDX-License-Identifier: Apache-2.0
3
3
 
4
4
  import { AmplifyClassV6, StorageAccessLevel } from '@aws-amplify/core';
5
+
5
6
  import { assertValidationError } from '../../../errors/utils/assertValidationError';
6
7
  import { StorageValidationErrorCode } from '../../../errors/types/validation';
7
8
  import { StorageError } from '../../../errors/StorageError';
8
- import { DEFAULT_ACCESS_LEVEL, LOCAL_TESTING_S3_ENDPOINT } from './constants';
9
9
  import { resolvePrefix as defaultPrefixResolver } from '../../../utils/resolvePrefix';
10
10
  import { ResolvedS3Config } from '../types/options';
11
11
 
12
- type S3ApiOptions = {
12
+ import { DEFAULT_ACCESS_LEVEL, LOCAL_TESTING_S3_ENDPOINT } from './constants';
13
+
14
+ interface S3ApiOptions {
13
15
  accessLevel?: StorageAccessLevel;
14
16
  targetIdentityId?: string;
15
17
  useAccelerateEndpoint?: boolean;
16
- };
18
+ }
17
19
 
18
- type ResolvedS3ConfigAndInput = {
20
+ interface ResolvedS3ConfigAndInput {
19
21
  s3Config: ResolvedS3Config;
20
22
  bucket: string;
21
23
  keyPrefix: string;
22
24
  isObjectLockEnabled?: boolean;
23
- };
25
+ }
24
26
 
25
27
  /**
26
28
  * resolve the common input options for S3 API handlers from Amplify configuration and library options.
@@ -35,7 +37,7 @@ type ResolvedS3ConfigAndInput = {
35
37
  */
36
38
  export const resolveS3ConfigAndInput = async (
37
39
  amplify: AmplifyClassV6,
38
- apiOptions?: S3ApiOptions
40
+ apiOptions?: S3ApiOptions,
39
41
  ): Promise<ResolvedS3ConfigAndInput> => {
40
42
  // identityId is always cached in memory if forceRefresh is not set. So we can safely make calls here.
41
43
  const { credentials, identityId } = await amplify.Auth.fetchAuthSession({
@@ -43,7 +45,7 @@ export const resolveS3ConfigAndInput = async (
43
45
  });
44
46
  assertValidationError(
45
47
  !!credentials,
46
- StorageValidationErrorCode.NoCredentials
48
+ StorageValidationErrorCode.NoCredentials,
47
49
  );
48
50
  assertValidationError(!!identityId, StorageValidationErrorCode.NoIdentityId);
49
51
 
@@ -77,7 +79,7 @@ export const resolveS3ConfigAndInput = async (
77
79
  ? {
78
80
  customEndpoint: LOCAL_TESTING_S3_ENDPOINT,
79
81
  forcePathStyle: true,
80
- }
82
+ }
81
83
  : {}),
82
84
  },
83
85
  bucket,
@@ -9,10 +9,10 @@ import {
9
9
  } from '../../../types/common';
10
10
  import { logger } from '../../../utils';
11
11
 
12
- type CreateCancellableTaskOptions<Result> = {
13
- job: () => Promise<Result>;
14
- onCancel: (message?: string) => void;
15
- };
12
+ interface CreateCancellableTaskOptions<Result> {
13
+ job(): Promise<Result>;
14
+ onCancel(message?: string): void;
15
+ }
16
16
 
17
17
  type CancellableTask<Result> = DownloadTask<Result>;
18
18
 
@@ -21,12 +21,17 @@ const createCancellableTask = <Result>({
21
21
  onCancel,
22
22
  }: CreateCancellableTaskOptions<Result>): CancellableTask<Result> => {
23
23
  const state = 'IN_PROGRESS' as TransferTaskState;
24
- let canceledErrorMessage: string | undefined = undefined;
24
+ let canceledErrorMessage: string | undefined;
25
25
  const cancelableTask = {
26
26
  cancel: (message?: string) => {
27
- const { state } = cancelableTask;
28
- if (state === 'CANCELED' || state === 'ERROR' || state === 'SUCCESS') {
29
- logger.debug(`This task cannot be canceled. State: ${state}`);
27
+ const { state: taskState } = cancelableTask;
28
+ if (
29
+ taskState === 'CANCELED' ||
30
+ taskState === 'ERROR' ||
31
+ taskState === 'SUCCESS'
32
+ ) {
33
+ logger.debug(`This task cannot be canceled. State: ${taskState}`);
34
+
30
35
  return;
31
36
  }
32
37
  cancelableTask.state = 'CANCELED';
@@ -40,6 +45,7 @@ const createCancellableTask = <Result>({
40
45
  try {
41
46
  const result = await job();
42
47
  cancelableTask.state = 'SUCCESS';
48
+
43
49
  return result;
44
50
  } catch (e) {
45
51
  if (isCancelError(e)) {
@@ -58,13 +64,13 @@ const createCancellableTask = <Result>({
58
64
 
59
65
  export const createDownloadTask = createCancellableTask;
60
66
 
61
- type CreateUploadTaskOptions<Result> = {
62
- job: () => Promise<Result>;
63
- onCancel: (message?: string) => void;
64
- onResume?: () => void;
65
- onPause?: () => void;
67
+ interface CreateUploadTaskOptions<Result> {
68
+ job(): Promise<Result>;
69
+ onCancel(message?: string): void;
70
+ onResume?(): void;
71
+ onPause?(): void;
66
72
  isMultipartUpload?: boolean;
67
- };
73
+ }
68
74
 
69
75
  export const createUploadTask = <Result>({
70
76
  job,
@@ -83,8 +89,11 @@ export const createUploadTask = <Result>({
83
89
  const { state } = uploadTask;
84
90
  if (!isMultipartUpload || state !== 'IN_PROGRESS') {
85
91
  logger.debug(`This task cannot be paused. State: ${state}`);
92
+
86
93
  return;
87
94
  }
95
+ // TODO(eslint): remove this linter suppression.
96
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
88
97
  // @ts-ignore
89
98
  uploadTask.state = 'PAUSED';
90
99
  onPause?.();
@@ -93,8 +102,11 @@ export const createUploadTask = <Result>({
93
102
  const { state } = uploadTask;
94
103
  if (!isMultipartUpload || state !== 'PAUSED') {
95
104
  logger.debug(`This task cannot be resumed. State: ${state}`);
105
+
96
106
  return;
97
107
  }
108
+ // TODO(eslint): remove this linter suppression.
109
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
98
110
  // @ts-ignore
99
111
  uploadTask.state = 'IN_PROGRESS';
100
112
  onResume?.();
@@ -1,8 +1,8 @@
1
1
  // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
2
  // SPDX-License-Identifier: Apache-2.0
3
3
  import {
4
- StorageAction,
5
4
  Category,
5
+ StorageAction,
6
6
  getAmplifyUserAgent,
7
7
  } from '@aws-amplify/core/internals/utils';
8
8
 
@@ -10,12 +10,12 @@ export type TransferTaskState =
10
10
  | 'SUCCESS'
11
11
  | 'ERROR';
12
12
 
13
- export type TransferProgressEvent = {
13
+ export interface TransferProgressEvent {
14
14
  transferredBytes: number;
15
15
  totalBytes?: number;
16
- };
16
+ }
17
17
 
18
- export type TransferTask<Result> = {
18
+ export interface TransferTask<Result> {
19
19
  /**
20
20
  * Cancel an ongoing transfer(upload/download) task. This will reject the `result` promise with an `AbortError` by
21
21
  * default. You can use `isCancelError` to check if the error is caused by cancellation.
@@ -24,19 +24,19 @@ export type TransferTask<Result> = {
24
24
  * canceled. If provided, the `result` promise will be rejected with a {@link CanceledError} with supplied error
25
25
  * message instead.
26
26
  */
27
- cancel: (message?: string) => void;
27
+ cancel(message?: string): void;
28
28
 
29
29
  /**
30
30
  * Pause an ongoing transfer(upload/download) task. This method does not support the following scenarios:
31
31
  * * Downloading data or file from given key.
32
32
  */
33
- pause: () => void;
33
+ pause(): void;
34
34
 
35
35
  /**
36
36
  * Resume a paused transfer(upload/download) task. This method does not support the following scenarios:
37
37
  * * Downloading data or file from given key.
38
38
  */
39
- resume: () => void;
39
+ resume(): void;
40
40
 
41
41
  /**
42
42
  * Current state of the transfer task.
@@ -47,7 +47,7 @@ export type TransferTask<Result> = {
47
47
  * Promise that resolves when the transfer task is completed. The promise will be rejected if the task is canceled.
48
48
  */
49
49
  result: Promise<Result>;
50
- };
50
+ }
51
51
 
52
52
  export type DownloadTask<Result> = Omit<
53
53
  TransferTask<Result>,
@@ -2,30 +2,30 @@
2
2
  // SPDX-License-Identifier: Apache-2.0
3
3
 
4
4
  import {
5
- StorageOptions,
6
5
  StorageListAllOptions,
7
6
  StorageListPaginateOptions,
7
+ StorageOptions,
8
8
  } from './options';
9
9
 
10
- export type StorageOperationInput<Options extends StorageOptions> = {
10
+ export interface StorageOperationInput<Options extends StorageOptions> {
11
11
  key: string;
12
12
  options?: Options;
13
- };
13
+ }
14
14
 
15
15
  export type StorageGetPropertiesInput<Options extends StorageOptions> =
16
16
  StorageOperationInput<Options>;
17
17
 
18
- export type StorageRemoveInput<Options extends StorageOptions> = {
18
+ export interface StorageRemoveInput<Options extends StorageOptions> {
19
19
  key: string;
20
20
  options?: Options;
21
- };
21
+ }
22
22
 
23
- export type StorageListInput<
23
+ export interface StorageListInput<
24
24
  Options extends StorageListAllOptions | StorageListPaginateOptions,
25
- > = {
25
+ > {
26
26
  prefix?: string;
27
27
  options?: Options;
28
- };
28
+ }
29
29
 
30
30
  export type StorageGetUrlInput<Options extends StorageOptions> =
31
31
  StorageOperationInput<Options>;
@@ -38,13 +38,13 @@ export type StorageUploadDataInput<Options extends StorageOptions> =
38
38
  data: StorageUploadDataPayload;
39
39
  };
40
40
 
41
- export type StorageCopyInput<
41
+ export interface StorageCopyInput<
42
42
  SourceOptions extends StorageOptions,
43
43
  DestinationOptions extends StorageOptions,
44
- > = {
44
+ > {
45
45
  source: SourceOptions;
46
46
  destination: DestinationOptions;
47
- };
47
+ }
48
48
 
49
49
  /**
50
50
  * The data payload type for upload operation.
@@ -3,9 +3,9 @@
3
3
 
4
4
  import { StorageAccessLevel } from '@aws-amplify/core';
5
5
 
6
- export type StorageOptions = {
6
+ export interface StorageOptions {
7
7
  accessLevel?: StorageAccessLevel;
8
- };
8
+ }
9
9
 
10
10
  export type StorageListAllOptions = StorageOptions & {
11
11
  listAll: true;
@@ -3,7 +3,7 @@
3
3
 
4
4
  import { ResponseBodyMixin } from '@aws-amplify/core/internals/aws-client-utils';
5
5
 
6
- export type StorageItem = {
6
+ export interface StorageItem {
7
7
  /**
8
8
  * Key of the object
9
9
  */
@@ -26,13 +26,13 @@ export type StorageItem = {
26
26
  * @see https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingMetadata.html#UserMetadata
27
27
  */
28
28
  metadata?: Record<string, string>;
29
- };
29
+ }
30
30
 
31
31
  export type StorageDownloadDataOutput<T extends StorageItem> = T & {
32
32
  body: ResponseBodyMixin;
33
33
  };
34
34
 
35
- export type StorageGetUrlOutput = {
35
+ export interface StorageGetUrlOutput {
36
36
  /**
37
37
  * presigned URL of the given object.
38
38
  */
@@ -41,10 +41,10 @@ export type StorageGetUrlOutput = {
41
41
  * expiresAt is date in which generated URL expires.
42
42
  */
43
43
  expiresAt: Date;
44
- };
44
+ }
45
45
 
46
46
  export type StorageUploadOutput<Item extends StorageItem> = Item;
47
47
 
48
- export type StorageListOutput<Item extends StorageItem> = {
48
+ export interface StorageListOutput<Item extends StorageItem> {
49
49
  items: Item[];
50
- };
50
+ }
@@ -2,13 +2,14 @@
2
2
  // SPDX-License-Identifier: Apache-2.0
3
3
 
4
4
  import { StorageAccessLevel } from '@aws-amplify/core';
5
+
5
6
  import { assertValidationError } from '../errors/utils/assertValidationError';
6
7
  import { StorageValidationErrorCode } from '../errors/types/validation';
7
8
 
8
- type ResolvePrefixOptions = {
9
+ interface ResolvePrefixOptions {
9
10
  accessLevel: StorageAccessLevel;
10
11
  targetIdentityId?: string;
11
- };
12
+ }
12
13
 
13
14
  export const resolvePrefix = ({
14
15
  accessLevel,
@@ -17,14 +18,16 @@ export const resolvePrefix = ({
17
18
  if (accessLevel === 'private') {
18
19
  assertValidationError(
19
20
  !!targetIdentityId,
20
- StorageValidationErrorCode.NoIdentityId
21
+ StorageValidationErrorCode.NoIdentityId,
21
22
  );
23
+
22
24
  return `private/${targetIdentityId}/`;
23
25
  } else if (accessLevel === 'protected') {
24
26
  assertValidationError(
25
27
  !!targetIdentityId,
26
- StorageValidationErrorCode.NoIdentityId
28
+ StorageValidationErrorCode.NoIdentityId,
27
29
  );
30
+
28
31
  return `protected/${targetIdentityId}/`;
29
32
  } else {
30
33
  return 'public/';