@aws-amplify/storage 6.0.28 → 6.0.29-gen2-storage.e54bfa9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (194) hide show
  1. package/dist/cjs/errors/types/validation.js +22 -2
  2. package/dist/cjs/errors/types/validation.js.map +1 -1
  3. package/dist/cjs/providers/s3/apis/copy.js +2 -12
  4. package/dist/cjs/providers/s3/apis/copy.js.map +1 -1
  5. package/dist/cjs/providers/s3/apis/downloadData.js +13 -38
  6. package/dist/cjs/providers/s3/apis/downloadData.js.map +1 -1
  7. package/dist/cjs/providers/s3/apis/getProperties.js +2 -11
  8. package/dist/cjs/providers/s3/apis/getProperties.js.map +1 -1
  9. package/dist/cjs/providers/s3/apis/getUrl.js +2 -18
  10. package/dist/cjs/providers/s3/apis/getUrl.js.map +1 -1
  11. package/dist/cjs/providers/s3/apis/internal/copy.js +41 -7
  12. package/dist/cjs/providers/s3/apis/internal/copy.js.map +1 -1
  13. package/dist/cjs/providers/s3/apis/internal/getProperties.js +10 -6
  14. package/dist/cjs/providers/s3/apis/internal/getProperties.js.map +1 -1
  15. package/dist/cjs/providers/s3/apis/internal/getUrl.js +8 -6
  16. package/dist/cjs/providers/s3/apis/internal/getUrl.js.map +1 -1
  17. package/dist/cjs/providers/s3/apis/internal/list.js +86 -16
  18. package/dist/cjs/providers/s3/apis/internal/list.js.map +1 -1
  19. package/dist/cjs/providers/s3/apis/internal/remove.js +20 -7
  20. package/dist/cjs/providers/s3/apis/internal/remove.js.map +1 -1
  21. package/dist/cjs/providers/s3/apis/list.js +4 -4
  22. package/dist/cjs/providers/s3/apis/list.js.map +1 -1
  23. package/dist/cjs/providers/s3/apis/remove.js +2 -9
  24. package/dist/cjs/providers/s3/apis/remove.js.map +1 -1
  25. package/dist/cjs/providers/s3/apis/server/copy.js +4 -4
  26. package/dist/cjs/providers/s3/apis/server/copy.js.map +1 -1
  27. package/dist/cjs/providers/s3/apis/server/getProperties.js +2 -2
  28. package/dist/cjs/providers/s3/apis/server/getProperties.js.map +1 -1
  29. package/dist/cjs/providers/s3/apis/server/getUrl.js +2 -2
  30. package/dist/cjs/providers/s3/apis/server/getUrl.js.map +1 -1
  31. package/dist/cjs/providers/s3/apis/server/list.js +4 -4
  32. package/dist/cjs/providers/s3/apis/server/list.js.map +1 -1
  33. package/dist/cjs/providers/s3/apis/server/remove.js +2 -2
  34. package/dist/cjs/providers/s3/apis/server/remove.js.map +1 -1
  35. package/dist/cjs/providers/s3/apis/uploadData/index.js +4 -50
  36. package/dist/cjs/providers/s3/apis/uploadData/index.js.map +1 -1
  37. package/dist/cjs/providers/s3/apis/uploadData/multipart/initialUpload.js +1 -1
  38. package/dist/cjs/providers/s3/apis/uploadData/multipart/initialUpload.js.map +1 -1
  39. package/dist/cjs/providers/s3/apis/uploadData/multipart/uploadCache.js +8 -1
  40. package/dist/cjs/providers/s3/apis/uploadData/multipart/uploadCache.js.map +1 -1
  41. package/dist/cjs/providers/s3/apis/uploadData/multipart/uploadHandlers.js +28 -13
  42. package/dist/cjs/providers/s3/apis/uploadData/multipart/uploadHandlers.js.map +1 -1
  43. package/dist/cjs/providers/s3/apis/uploadData/putObjectJob.js +10 -5
  44. package/dist/cjs/providers/s3/apis/uploadData/putObjectJob.js.map +1 -1
  45. package/dist/cjs/providers/s3/utils/client/utils/parsePayload.js +1 -1
  46. package/dist/cjs/providers/s3/utils/client/utils/parsePayload.js.map +1 -1
  47. package/dist/cjs/providers/s3/utils/constants.js +4 -1
  48. package/dist/cjs/providers/s3/utils/constants.js.map +1 -1
  49. package/dist/cjs/providers/s3/utils/index.js +7 -1
  50. package/dist/cjs/providers/s3/utils/index.js.map +1 -1
  51. package/dist/cjs/providers/s3/utils/isInputWithPath.js +11 -0
  52. package/dist/cjs/providers/s3/utils/isInputWithPath.js.map +1 -0
  53. package/dist/cjs/providers/s3/utils/resolveS3ConfigAndInput.js +2 -1
  54. package/dist/cjs/providers/s3/utils/resolveS3ConfigAndInput.js.map +1 -1
  55. package/dist/cjs/providers/s3/utils/validateStorageOperationInput.js +31 -0
  56. package/dist/cjs/providers/s3/utils/validateStorageOperationInput.js.map +1 -0
  57. package/dist/cjs/providers/s3/utils/validateStorageOperationInputWithPrefix.js +32 -0
  58. package/dist/cjs/providers/s3/utils/validateStorageOperationInputWithPrefix.js.map +1 -0
  59. package/dist/esm/errors/types/validation.d.ts +7 -2
  60. package/dist/esm/errors/types/validation.mjs +22 -2
  61. package/dist/esm/errors/types/validation.mjs.map +1 -1
  62. package/dist/esm/index.d.ts +2 -2
  63. package/dist/esm/providers/s3/apis/copy.d.ts +22 -9
  64. package/dist/esm/providers/s3/apis/copy.mjs +2 -12
  65. package/dist/esm/providers/s3/apis/copy.mjs.map +1 -1
  66. package/dist/esm/providers/s3/apis/downloadData.d.ts +41 -7
  67. package/dist/esm/providers/s3/apis/downloadData.mjs +15 -39
  68. package/dist/esm/providers/s3/apis/downloadData.mjs.map +1 -1
  69. package/dist/esm/providers/s3/apis/getProperties.d.ts +18 -5
  70. package/dist/esm/providers/s3/apis/getProperties.mjs +2 -11
  71. package/dist/esm/providers/s3/apis/getProperties.mjs.map +1 -1
  72. package/dist/esm/providers/s3/apis/getUrl.d.ts +27 -7
  73. package/dist/esm/providers/s3/apis/getUrl.mjs +2 -18
  74. package/dist/esm/providers/s3/apis/getUrl.mjs.map +1 -1
  75. package/dist/esm/providers/s3/apis/internal/copy.d.ts +4 -2
  76. package/dist/esm/providers/s3/apis/internal/copy.mjs +41 -6
  77. package/dist/esm/providers/s3/apis/internal/copy.mjs.map +1 -1
  78. package/dist/esm/providers/s3/apis/internal/getProperties.d.ts +2 -2
  79. package/dist/esm/providers/s3/apis/internal/getProperties.mjs +11 -6
  80. package/dist/esm/providers/s3/apis/internal/getProperties.mjs.map +1 -1
  81. package/dist/esm/providers/s3/apis/internal/getUrl.d.ts +2 -2
  82. package/dist/esm/providers/s3/apis/internal/getUrl.mjs +10 -7
  83. package/dist/esm/providers/s3/apis/internal/getUrl.mjs.map +1 -1
  84. package/dist/esm/providers/s3/apis/internal/list.d.ts +2 -2
  85. package/dist/esm/providers/s3/apis/internal/list.mjs +87 -16
  86. package/dist/esm/providers/s3/apis/internal/list.mjs.map +1 -1
  87. package/dist/esm/providers/s3/apis/internal/remove.d.ts +2 -2
  88. package/dist/esm/providers/s3/apis/internal/remove.mjs +21 -7
  89. package/dist/esm/providers/s3/apis/internal/remove.mjs.map +1 -1
  90. package/dist/esm/providers/s3/apis/list.d.ts +39 -22
  91. package/dist/esm/providers/s3/apis/list.mjs +2 -2
  92. package/dist/esm/providers/s3/apis/list.mjs.map +1 -1
  93. package/dist/esm/providers/s3/apis/remove.d.ts +18 -5
  94. package/dist/esm/providers/s3/apis/remove.mjs +2 -9
  95. package/dist/esm/providers/s3/apis/remove.mjs.map +1 -1
  96. package/dist/esm/providers/s3/apis/server/copy.d.ts +27 -2
  97. package/dist/esm/providers/s3/apis/server/copy.mjs +2 -2
  98. package/dist/esm/providers/s3/apis/server/copy.mjs.map +1 -1
  99. package/dist/esm/providers/s3/apis/server/getProperties.d.ts +26 -2
  100. package/dist/esm/providers/s3/apis/server/getProperties.mjs +2 -2
  101. package/dist/esm/providers/s3/apis/server/getProperties.mjs.map +1 -1
  102. package/dist/esm/providers/s3/apis/server/getUrl.d.ts +40 -2
  103. package/dist/esm/providers/s3/apis/server/getUrl.mjs +2 -2
  104. package/dist/esm/providers/s3/apis/server/getUrl.mjs.map +1 -1
  105. package/dist/esm/providers/s3/apis/server/list.d.ts +41 -22
  106. package/dist/esm/providers/s3/apis/server/list.mjs +2 -2
  107. package/dist/esm/providers/s3/apis/server/list.mjs.map +1 -1
  108. package/dist/esm/providers/s3/apis/server/remove.d.ts +24 -2
  109. package/dist/esm/providers/s3/apis/server/remove.mjs +2 -2
  110. package/dist/esm/providers/s3/apis/server/remove.mjs.map +1 -1
  111. package/dist/esm/providers/s3/apis/uploadData/index.d.ts +64 -7
  112. package/dist/esm/providers/s3/apis/uploadData/index.mjs +4 -50
  113. package/dist/esm/providers/s3/apis/uploadData/index.mjs.map +1 -1
  114. package/dist/esm/providers/s3/apis/uploadData/multipart/initialUpload.d.ts +2 -2
  115. package/dist/esm/providers/s3/apis/uploadData/multipart/initialUpload.mjs +1 -1
  116. package/dist/esm/providers/s3/apis/uploadData/multipart/initialUpload.mjs.map +1 -1
  117. package/dist/esm/providers/s3/apis/uploadData/multipart/uploadCache.d.ts +1 -1
  118. package/dist/esm/providers/s3/apis/uploadData/multipart/uploadCache.mjs +8 -1
  119. package/dist/esm/providers/s3/apis/uploadData/multipart/uploadCache.mjs.map +1 -1
  120. package/dist/esm/providers/s3/apis/uploadData/multipart/uploadHandlers.d.ts +4 -4
  121. package/dist/esm/providers/s3/apis/uploadData/multipart/uploadHandlers.mjs +30 -14
  122. package/dist/esm/providers/s3/apis/uploadData/multipart/uploadHandlers.mjs.map +1 -1
  123. package/dist/esm/providers/s3/apis/uploadData/putObjectJob.d.ts +3 -3
  124. package/dist/esm/providers/s3/apis/uploadData/putObjectJob.mjs +11 -5
  125. package/dist/esm/providers/s3/apis/uploadData/putObjectJob.mjs.map +1 -1
  126. package/dist/esm/providers/s3/index.d.ts +2 -2
  127. package/dist/esm/providers/s3/types/index.d.ts +3 -3
  128. package/dist/esm/providers/s3/types/inputs.d.ts +51 -11
  129. package/dist/esm/providers/s3/types/options.d.ts +41 -10
  130. package/dist/esm/providers/s3/types/outputs.d.ts +68 -13
  131. package/dist/esm/providers/s3/utils/client/utils/parsePayload.mjs +1 -1
  132. package/dist/esm/providers/s3/utils/client/utils/parsePayload.mjs.map +1 -1
  133. package/dist/esm/providers/s3/utils/constants.d.ts +3 -0
  134. package/dist/esm/providers/s3/utils/constants.mjs +4 -1
  135. package/dist/esm/providers/s3/utils/constants.mjs.map +1 -1
  136. package/dist/esm/providers/s3/utils/index.d.ts +3 -0
  137. package/dist/esm/providers/s3/utils/index.mjs +3 -0
  138. package/dist/esm/providers/s3/utils/index.mjs.map +1 -1
  139. package/dist/esm/providers/s3/utils/isInputWithPath.d.ts +2 -0
  140. package/dist/esm/providers/s3/utils/isInputWithPath.mjs +8 -0
  141. package/dist/esm/providers/s3/utils/isInputWithPath.mjs.map +1 -0
  142. package/dist/esm/providers/s3/utils/resolveS3ConfigAndInput.d.ts +2 -1
  143. package/dist/esm/providers/s3/utils/resolveS3ConfigAndInput.mjs +2 -1
  144. package/dist/esm/providers/s3/utils/resolveS3ConfigAndInput.mjs.map +1 -1
  145. package/dist/esm/providers/s3/utils/validateStorageOperationInput.d.ts +5 -0
  146. package/dist/esm/providers/s3/utils/validateStorageOperationInput.mjs +29 -0
  147. package/dist/esm/providers/s3/utils/validateStorageOperationInput.mjs.map +1 -0
  148. package/dist/esm/providers/s3/utils/validateStorageOperationInputWithPrefix.d.ts +5 -0
  149. package/dist/esm/providers/s3/utils/validateStorageOperationInputWithPrefix.mjs +30 -0
  150. package/dist/esm/providers/s3/utils/validateStorageOperationInputWithPrefix.mjs.map +1 -0
  151. package/dist/esm/types/index.d.ts +2 -2
  152. package/dist/esm/types/inputs.d.ts +41 -13
  153. package/dist/esm/types/options.d.ts +1 -0
  154. package/dist/esm/types/outputs.d.ts +26 -6
  155. package/package.json +107 -107
  156. package/src/errors/types/validation.ts +23 -2
  157. package/src/index.ts +16 -0
  158. package/src/providers/s3/apis/copy.ts +30 -11
  159. package/src/providers/s3/apis/downloadData.ts +78 -19
  160. package/src/providers/s3/apis/getProperties.ts +31 -8
  161. package/src/providers/s3/apis/getUrl.ts +37 -10
  162. package/src/providers/s3/apis/internal/copy.ts +89 -8
  163. package/src/providers/s3/apis/internal/getProperties.ts +27 -12
  164. package/src/providers/s3/apis/internal/getUrl.ts +28 -14
  165. package/src/providers/s3/apis/internal/list.ts +135 -29
  166. package/src/providers/s3/apis/internal/remove.ts +36 -13
  167. package/src/providers/s3/apis/list.ts +54 -26
  168. package/src/providers/s3/apis/remove.ts +28 -7
  169. package/src/providers/s3/apis/server/copy.ts +42 -5
  170. package/src/providers/s3/apis/server/getProperties.ts +41 -4
  171. package/src/providers/s3/apis/server/getUrl.ts +55 -4
  172. package/src/providers/s3/apis/server/list.ts +64 -32
  173. package/src/providers/s3/apis/server/remove.ts +39 -4
  174. package/src/providers/s3/apis/uploadData/index.ts +77 -8
  175. package/src/providers/s3/apis/uploadData/multipart/initialUpload.ts +4 -3
  176. package/src/providers/s3/apis/uploadData/multipart/uploadCache.ts +11 -2
  177. package/src/providers/s3/apis/uploadData/multipart/uploadHandlers.ts +50 -20
  178. package/src/providers/s3/apis/uploadData/putObjectJob.ts +23 -9
  179. package/src/providers/s3/index.ts +16 -0
  180. package/src/providers/s3/types/index.ts +37 -14
  181. package/src/providers/s3/types/inputs.ts +95 -26
  182. package/src/providers/s3/types/options.ts +73 -27
  183. package/src/providers/s3/types/outputs.ts +80 -13
  184. package/src/providers/s3/utils/client/utils/parsePayload.ts +1 -1
  185. package/src/providers/s3/utils/constants.ts +4 -0
  186. package/src/providers/s3/utils/index.ts +3 -0
  187. package/src/providers/s3/utils/isInputWithPath.ts +13 -0
  188. package/src/providers/s3/utils/resolveS3ConfigAndInput.ts +3 -2
  189. package/src/providers/s3/utils/validateStorageOperationInput.ts +39 -0
  190. package/src/providers/s3/utils/validateStorageOperationInputWithPrefix.ts +46 -0
  191. package/src/types/index.ts +16 -8
  192. package/src/types/inputs.ts +73 -20
  193. package/src/types/options.ts +1 -0
  194. package/src/types/outputs.ts +29 -6
@@ -1,3 +1,41 @@
1
1
  import { AmplifyServer } from '@aws-amplify/core/internals/adapter-core';
2
- import { GetUrlInput, GetUrlOutput } from '../../types';
3
- export declare const getUrl: (contextSpec: AmplifyServer.ContextSpec, input: GetUrlInput) => Promise<GetUrlOutput>;
2
+ import { GetUrlInput, GetUrlOutput, GetUrlWithPathInput, GetUrlWithPathOutput } from '../../types';
3
+ /**
4
+ * Get a temporary presigned URL to download the specified S3 object.
5
+ * The presigned URL expires when the associated role used to sign the request expires or
6
+ * the option `expiresIn` is reached. The `expiresAt` property in the output object indicates when the URL MAY expire.
7
+ *
8
+ * By default, it will not validate the object that exists in S3. If you set the `options.validateObjectExistence`
9
+ * to true, this method will verify the given object already exists in S3 before returning a presigned
10
+ * URL, and will throw `StorageError` if the object does not exist.
11
+ *
12
+ * @param contextSpec - The isolated server context.
13
+ * @param input - The `GetUrlWithPathInput` object.
14
+ * @returns Presigned URL and timestamp when the URL may expire.
15
+ * @throws service: `S3Exception` - thrown when checking for existence of the object
16
+ * @throws validation: `StorageValidationErrorCode` - Validation errors
17
+ * thrown either username or key are not defined.
18
+ *
19
+ */
20
+ export declare function getUrl(contextSpec: AmplifyServer.ContextSpec, input: GetUrlWithPathInput): Promise<GetUrlWithPathOutput>;
21
+ /**
22
+ * @deprecated The `key` and `accessLevel` parameters are deprecated and may be removed in the next major version.
23
+ * Please use {@link https://docs.amplify.aws/javascript/build-a-backend/storage/download/#generate-a-download-url | path} instead.
24
+ *
25
+ * Get a temporary presigned URL to download the specified S3 object.
26
+ * The presigned URL expires when the associated role used to sign the request expires or
27
+ * the option `expiresIn` is reached. The `expiresAt` property in the output object indicates when the URL MAY expire.
28
+ *
29
+ * By default, it will not validate the object that exists in S3. If you set the `options.validateObjectExistence`
30
+ * to true, this method will verify the given object already exists in S3 before returning a presigned
31
+ * URL, and will throw `StorageError` if the object does not exist.
32
+ *
33
+ * @param contextSpec - The isolated server context.
34
+ * @param input - The `GetUrlInput` object.
35
+ * @returns Presigned URL and timestamp when the URL may expire.
36
+ * @throws service: `S3Exception` - thrown when checking for existence of the object
37
+ * @throws validation: `StorageValidationErrorCode` - Validation errors
38
+ * thrown either username or key are not defined.
39
+ *
40
+ */
41
+ export declare function getUrl(contextSpec: AmplifyServer.ContextSpec, input: GetUrlInput): Promise<GetUrlOutput>;
@@ -3,9 +3,9 @@ import { getUrl as getUrl$1 } from '../internal/getUrl.mjs';
3
3
 
4
4
  // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
5
5
  // SPDX-License-Identifier: Apache-2.0
6
- const getUrl = async (contextSpec, input) => {
6
+ function getUrl(contextSpec, input) {
7
7
  return getUrl$1(getAmplifyServerContext(contextSpec).amplify, input);
8
- };
8
+ }
9
9
 
10
10
  export { getUrl };
11
11
  //# sourceMappingURL=getUrl.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"getUrl.mjs","sources":["../../../../../../src/providers/s3/apis/server/getUrl.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { getAmplifyServerContext, } from '@aws-amplify/core/internals/adapter-core';\nimport { getUrl as getUrlInternal } from '../internal/getUrl';\nexport const getUrl = async (contextSpec, input) => {\n return getUrlInternal(getAmplifyServerContext(contextSpec).amplify, input);\n};\n"],"names":["getUrlInternal"],"mappings":";;;AAAA;AACA;AAGY,MAAC,MAAM,GAAG,OAAO,WAAW,EAAE,KAAK,KAAK;AACpD,IAAI,OAAOA,QAAc,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AAC/E;;;;"}
1
+ {"version":3,"file":"getUrl.mjs","sources":["../../../../../../src/providers/s3/apis/server/getUrl.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { getAmplifyServerContext, } from '@aws-amplify/core/internals/adapter-core';\nimport { getUrl as getUrlInternal } from '../internal/getUrl';\nexport function getUrl(contextSpec, input) {\n return getUrlInternal(getAmplifyServerContext(contextSpec).amplify, input);\n}\n"],"names":["getUrlInternal"],"mappings":";;;AAAA;AACA;AAGO,SAAS,MAAM,CAAC,WAAW,EAAE,KAAK,EAAE;AAC3C,IAAI,OAAOA,QAAc,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AAC/E;;;;"}
@@ -1,23 +1,42 @@
1
1
  import { AmplifyServer } from '@aws-amplify/core/internals/adapter-core';
2
- import { ListAllInput, ListAllOutput, ListPaginateInput, ListPaginateOutput } from '../../types';
3
- interface ListApi {
4
- /**
5
- * Lists bucket objects with pagination.
6
- * @param {ListPaginateInput} input The input object
7
- * @return {Promise<ListPaginateOutput>} - Promise resolves to list of keys and metadata with
8
- * pageSize defaulting to 1000. Additionally the result will include a nextToken if there are more items to retrieve
9
- * @throws service: {@link S3Exception} - S3 service errors thrown when checking for existence of bucket
10
- * @throws validation: {@link StorageValidationErrorCode } - thrown when there are issues with credentials
11
- */
12
- (contextSpec: AmplifyServer.ContextSpec, input?: ListPaginateInput): Promise<ListPaginateOutput>;
13
- /**
14
- * Lists all bucket objects.
15
- * @param {ListAllInput} input The input object
16
- * @return {Promise<ListAllOutput>} - Promise resolves to list of keys and metadata for all objects in path
17
- * @throws service: {@link S3Exception} - S3 service errors thrown when checking for existence of bucket
18
- * @throws validation: {@link StorageValidationErrorCode } - thrown when there are issues with credentials
19
- */
20
- (contextSpec: AmplifyServer.ContextSpec, input?: ListAllInput): Promise<ListAllOutput>;
21
- }
22
- export declare const list: ListApi;
23
- export {};
2
+ import { ListAllInput, ListAllOutput, ListAllWithPathInput, ListAllWithPathOutput, ListPaginateInput, ListPaginateOutput, ListPaginateWithPathInput, ListPaginateWithPathOutput } from '../../types';
3
+ /**
4
+ * List files in pages with the given `path`.
5
+ * `pageSize` is defaulted to 1000. Additionally, the result will include a `nextToken` if there are more items to retrieve.
6
+ * @param input - The `ListPaginateWithPathInput` object.
7
+ * @param contextSpec - The context spec used to get the Amplify server context.
8
+ * @returns A list of objects with path and metadata
9
+ * @throws service: `S3Exception` - S3 service errors thrown when checking for existence of bucket
10
+ * @throws validation: `StorageValidationErrorCode` - thrown when there are issues with credentials
11
+ */
12
+ export declare function list(contextSpec: AmplifyServer.ContextSpec, input: ListPaginateWithPathInput): Promise<ListPaginateWithPathOutput>;
13
+ /**
14
+ * List all files from S3 for a given `path`. You can set `listAll` to true in `options` to get all the files from S3.
15
+ * @param input - The `ListAllWithPathInput` object.
16
+ * @param contextSpec - The context spec used to get the Amplify server context.
17
+ * @returns A list of all objects with path and metadata
18
+ * @throws service: `S3Exception` - S3 service errors thrown when checking for existence of bucket
19
+ * @throws validation: `StorageValidationErrorCode` - thrown when there are issues with credentials
20
+ */
21
+ export declare function list(contextSpec: AmplifyServer.ContextSpec, input: ListAllWithPathInput): Promise<ListAllWithPathOutput>;
22
+ /**
23
+ * @deprecated The `prefix` and `accessLevel` parameters are deprecated and may be removed in the next major version.
24
+ * Please use {@link https://docs.amplify.aws/react/build-a-backend/storage/list | path} instead.
25
+ * List files in pages with the given `prefix`.
26
+ * `pageSize` is defaulted to 1000. Additionally, the result will include a `nextToken` if there are more items to retrieve.
27
+ * @param input - The `ListPaginateInput` object.
28
+ * @returns A list of objects with key and metadata
29
+ * @throws service: `S3Exception` - S3 service errors thrown when checking for existence of bucket
30
+ * @throws validation: `StorageValidationErrorCode` - thrown when there are issues with credentials
31
+ */
32
+ export declare function list(contextSpec: AmplifyServer.ContextSpec, input?: ListPaginateInput): Promise<ListPaginateOutput>;
33
+ /**
34
+ * @deprecated The `prefix` and `accessLevel` parameters are deprecated and may be removed in the next major version.
35
+ * Please use {@link https://docs.amplify.aws/react/build-a-backend/storage/list | path} instead.
36
+ * List all files from S3 for a given `prefix`. You can set `listAll` to true in `options` to get all the files from S3.
37
+ * @param input - The `ListAllInput` object.
38
+ * @returns A list of all objects with key and metadata
39
+ * @throws service: `S3Exception` - S3 service errors thrown when checking for existence of bucket
40
+ * @throws validation: `StorageValidationErrorCode` - thrown when there are issues with credentials
41
+ */
42
+ export declare function list(contextSpec: AmplifyServer.ContextSpec, input?: ListAllInput): Promise<ListAllOutput>;
@@ -3,9 +3,9 @@ import { list as list$1 } from '../internal/list.mjs';
3
3
 
4
4
  // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
5
5
  // SPDX-License-Identifier: Apache-2.0
6
- const list = (contextSpec, input) => {
6
+ function list(contextSpec, input) {
7
7
  return list$1(getAmplifyServerContext(contextSpec).amplify, input ?? {});
8
- };
8
+ }
9
9
 
10
10
  export { list };
11
11
  //# sourceMappingURL=list.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"list.mjs","sources":["../../../../../../src/providers/s3/apis/server/list.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { getAmplifyServerContext, } from '@aws-amplify/core/internals/adapter-core';\nimport { list as listInternal } from '../internal/list';\nexport const list = (contextSpec, input) => {\n return listInternal(getAmplifyServerContext(contextSpec).amplify, input ?? {});\n};\n"],"names":["listInternal"],"mappings":";;;AAAA;AACA;AAGY,MAAC,IAAI,GAAG,CAAC,WAAW,EAAE,KAAK,KAAK;AAC5C,IAAI,OAAOA,MAAY,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;AACnF;;;;"}
1
+ {"version":3,"file":"list.mjs","sources":["../../../../../../src/providers/s3/apis/server/list.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { getAmplifyServerContext, } from '@aws-amplify/core/internals/adapter-core';\nimport { list as listInternal } from '../internal/list';\nexport function list(contextSpec, input) {\n return listInternal(getAmplifyServerContext(contextSpec).amplify, input ?? {});\n}\n"],"names":["listInternal"],"mappings":";;;AAAA;AACA;AAGO,SAAS,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE;AACzC,IAAI,OAAOA,MAAY,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;AACnF;;;;"}
@@ -1,3 +1,25 @@
1
1
  import { AmplifyServer } from '@aws-amplify/core/internals/adapter-core';
2
- import { RemoveInput, RemoveOutput } from '../../types';
3
- export declare const remove: (contextSpec: AmplifyServer.ContextSpec, input: RemoveInput) => Promise<RemoveOutput>;
2
+ import { RemoveInput, RemoveOutput, RemoveWithPathInput, RemoveWithPathOutput } from '../../types';
3
+ /**
4
+ * Remove a file from your S3 bucket.
5
+ * @param input - The `RemoveWithPathInput` object.
6
+ * @param contextSpec - The context spec used to get the Amplify server context.
7
+ * @return Output containing the removed object path.
8
+ * @throws service: `S3Exception` - S3 service errors thrown while while removing the object.
9
+ * @throws validation: `StorageValidationErrorCode` - Validation errors thrown
10
+ * when there is no path or path is empty or path has a leading slash.
11
+ */
12
+ export declare function remove(contextSpec: AmplifyServer.ContextSpec, input: RemoveWithPathInput): Promise<RemoveWithPathOutput>;
13
+ /**
14
+ * @deprecated The `key` and `accessLevel` parameters are deprecated and may be removed in the next major version.
15
+ * Please use {@link https://docs.amplify.aws/react/build-a-backend/storage/remove | path} instead.
16
+ *
17
+ * Remove a file from your S3 bucket.
18
+ * @param input - The `RemoveInput` object.
19
+ * @param contextSpec - The context spec used to get the Amplify server context.
20
+ * @return Output containing the removed object key
21
+ * @throws service: `S3Exception` - S3 service errors thrown while while removing the object
22
+ * @throws validation: `StorageValidationErrorCode` - Validation errors thrown
23
+ * when there is no key or its empty.
24
+ */
25
+ export declare function remove(contextSpec: AmplifyServer.ContextSpec, input: RemoveInput): Promise<RemoveOutput>;
@@ -3,9 +3,9 @@ import { remove as remove$1 } from '../internal/remove.mjs';
3
3
 
4
4
  // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
5
5
  // SPDX-License-Identifier: Apache-2.0
6
- const remove = (contextSpec, input) => {
6
+ function remove(contextSpec, input) {
7
7
  return remove$1(getAmplifyServerContext(contextSpec).amplify, input);
8
- };
8
+ }
9
9
 
10
10
  export { remove };
11
11
  //# sourceMappingURL=remove.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"remove.mjs","sources":["../../../../../../src/providers/s3/apis/server/remove.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { getAmplifyServerContext, } from '@aws-amplify/core/internals/adapter-core';\nimport { remove as removeInternal } from '../internal/remove';\nexport const remove = (contextSpec, input) => {\n return removeInternal(getAmplifyServerContext(contextSpec).amplify, input);\n};\n"],"names":["removeInternal"],"mappings":";;;AAAA;AACA;AAGY,MAAC,MAAM,GAAG,CAAC,WAAW,EAAE,KAAK,KAAK;AAC9C,IAAI,OAAOA,QAAc,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AAC/E;;;;"}
1
+ {"version":3,"file":"remove.mjs","sources":["../../../../../../src/providers/s3/apis/server/remove.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { getAmplifyServerContext, } from '@aws-amplify/core/internals/adapter-core';\nimport { remove as removeInternal } from '../internal/remove';\nexport function remove(contextSpec, input) {\n return removeInternal(getAmplifyServerContext(contextSpec).amplify, input);\n}\n"],"names":["removeInternal"],"mappings":";;;AAAA;AACA;AAGO,SAAS,MAAM,CAAC,WAAW,EAAE,KAAK,EAAE;AAC3C,IAAI,OAAOA,QAAc,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AAC/E;;;;"}
@@ -1,17 +1,73 @@
1
- import { UploadDataInput, UploadDataOutput } from '../../types';
1
+ import { UploadDataInput, UploadDataOutput, UploadDataWithPathInput, UploadDataWithPathOutput } from '../../types';
2
2
  /**
3
- * Upload data to specified S3 object. By default, it uses single PUT operation to upload if the data is less than 5MB.
4
- * Otherwise, it uses multipart upload to upload the data. If the data length is unknown, it uses multipart upload.
3
+ * Upload data to the specified S3 object path. By default uses single PUT operation to upload if the payload is less than 5MB.
4
+ * Otherwise, uses multipart upload to upload the payload. If the payload length cannot be determined, uses multipart upload.
5
5
  *
6
6
  * Limitations:
7
7
  * * Maximum object size is 5TB.
8
8
  * * Maximum object size if the size cannot be determined before upload is 50GB.
9
9
  *
10
- * @param input - The UploadDataInput object.
10
+ * @throws Service: `S3Exception` thrown when checking for existence of the object.
11
+ * @throws Validation: `StorageValidationErrorCode` thrown when a validation error occurs.
12
+ *
13
+ * @param input - A `UploadDataWithPathInput` object.
14
+ *
11
15
  * @returns A cancelable and resumable task exposing result promise from `result`
12
16
  * property.
13
- * @throws service: {@link S3Exception} - thrown when checking for existence of the object
14
- * @throws validation: {@link StorageValidationErrorCode } - Validation errors.
17
+ *
18
+ * @example
19
+ * ```ts
20
+ * // Upload a file to s3 bucket
21
+ * await uploadData({ path, data: file, options: {
22
+ * onProgress, // Optional progress callback.
23
+ * } }).result;
24
+ * ```
25
+ *
26
+ * @example
27
+ * ```ts
28
+ * // Cancel a task
29
+ * const uploadTask = uploadData({ path, data: file });
30
+ * //...
31
+ * uploadTask.cancel();
32
+ * try {
33
+ * await uploadTask.result;
34
+ * } catch (error) {
35
+ * if(isCancelError(error)) {
36
+ * // Handle error thrown by task cancelation.
37
+ * }
38
+ * }
39
+ *```
40
+ *
41
+ * @example
42
+ * ```ts
43
+ * // Pause and resume a task
44
+ * const uploadTask = uploadData({ path, data: file });
45
+ * //...
46
+ * uploadTask.pause();
47
+ * //...
48
+ * uploadTask.resume();
49
+ * //...
50
+ * await uploadTask.result;
51
+ * ```
52
+ */
53
+ export declare function uploadData(input: UploadDataWithPathInput): UploadDataWithPathOutput;
54
+ /**
55
+ * Upload data to the specified S3 object key. By default uses single PUT operation to upload if the payload is less than 5MB.
56
+ * Otherwise, uses multipart upload to upload the payload. If the payload length cannot be determined, uses multipart upload.
57
+ *
58
+ * Limitations:
59
+ * * Maximum object size is 5TB.
60
+ * * Maximum object size if the size cannot be determined before upload is 50GB.
61
+ *
62
+ * @deprecated The `key` and `accessLevel` parameters are deprecated and will be removed in next major version.
63
+ * Please use {@link https://docs.amplify.aws/javascript/build-a-backend/storage/upload/#uploaddata | path} instead.
64
+ *
65
+ * @throws Service: `S3Exception` thrown when checking for existence of the object.
66
+ * @throws Validation: `StorageValidationErrorCode` thrown when a validation error occurs.
67
+ *
68
+ * @param input - A `UploadDataInput` object.
69
+ *
70
+ * @returns A cancelable and resumable task exposing result promise from the `result` property.
15
71
  *
16
72
  * @example
17
73
  * ```ts
@@ -20,6 +76,7 @@ import { UploadDataInput, UploadDataOutput } from '../../types';
20
76
  * onProgress, // Optional progress callback.
21
77
  * } }).result;
22
78
  * ```
79
+ *
23
80
  * @example
24
81
  * ```ts
25
82
  * // Cancel a task
@@ -47,4 +104,4 @@ import { UploadDataInput, UploadDataOutput } from '../../types';
47
104
  * await uploadTask.result;
48
105
  * ```
49
106
  */
50
- export declare const uploadData: (input: UploadDataInput) => UploadDataOutput;
107
+ export declare function uploadData(input: UploadDataInput): UploadDataOutput;
@@ -15,59 +15,12 @@ import { getMultipartUploadHandlers } from './multipart/uploadHandlers.mjs';
15
15
 
16
16
  // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
17
17
  // SPDX-License-Identifier: Apache-2.0
18
- /**
19
- * Upload data to specified S3 object. By default, it uses single PUT operation to upload if the data is less than 5MB.
20
- * Otherwise, it uses multipart upload to upload the data. If the data length is unknown, it uses multipart upload.
21
- *
22
- * Limitations:
23
- * * Maximum object size is 5TB.
24
- * * Maximum object size if the size cannot be determined before upload is 50GB.
25
- *
26
- * @param input - The UploadDataInput object.
27
- * @returns A cancelable and resumable task exposing result promise from `result`
28
- * property.
29
- * @throws service: {@link S3Exception} - thrown when checking for existence of the object
30
- * @throws validation: {@link StorageValidationErrorCode } - Validation errors.
31
- *
32
- * @example
33
- * ```ts
34
- * // Upload a file to s3 bucket
35
- * await uploadData({ key, data: file, options: {
36
- * onProgress, // Optional progress callback.
37
- * } }).result;
38
- * ```
39
- * @example
40
- * ```ts
41
- * // Cancel a task
42
- * const uploadTask = uploadData({ key, data: file });
43
- * //...
44
- * uploadTask.cancel();
45
- * try {
46
- * await uploadTask.result;
47
- * } catch (error) {
48
- * if(isCancelError(error)) {
49
- * // Handle error thrown by task cancelation.
50
- * }
51
- * }
52
- *```
53
- *
54
- * @example
55
- * ```ts
56
- * // Pause and resume a task
57
- * const uploadTask = uploadData({ key, data: file });
58
- * //...
59
- * uploadTask.pause();
60
- * //...
61
- * uploadTask.resume();
62
- * //...
63
- * await uploadTask.result;
64
- * ```
65
- */
66
- const uploadData = (input) => {
18
+ function uploadData(input) {
67
19
  const { data } = input;
68
20
  const dataByteLength = byteLength(data);
69
21
  assertValidationError(dataByteLength === undefined || dataByteLength <= MAX_OBJECT_SIZE, StorageValidationErrorCode.ObjectIsTooLarge);
70
22
  if (dataByteLength && dataByteLength <= DEFAULT_PART_SIZE) {
23
+ // Single part upload
71
24
  const abortController = new AbortController();
72
25
  return createUploadTask({
73
26
  isMultipartUpload: false,
@@ -78,6 +31,7 @@ const uploadData = (input) => {
78
31
  });
79
32
  }
80
33
  else {
34
+ // Multipart upload
81
35
  const { multipartUploadJob, onPause, onResume, onCancel } = getMultipartUploadHandlers(input, dataByteLength);
82
36
  return createUploadTask({
83
37
  isMultipartUpload: true,
@@ -89,7 +43,7 @@ const uploadData = (input) => {
89
43
  onResume,
90
44
  });
91
45
  }
92
- };
46
+ }
93
47
 
94
48
  export { uploadData };
95
49
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../../../../src/providers/s3/apis/uploadData/index.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { createUploadTask } from '../../utils';\nimport { assertValidationError } from '../../../../errors/utils/assertValidationError';\nimport { StorageValidationErrorCode } from '../../../../errors/types/validation';\nimport { DEFAULT_PART_SIZE, MAX_OBJECT_SIZE } from '../../utils/constants';\nimport { byteLength } from './byteLength';\nimport { putObjectJob } from './putObjectJob';\nimport { getMultipartUploadHandlers } from './multipart';\n/**\n * Upload data to specified S3 object. By default, it uses single PUT operation to upload if the data is less than 5MB.\n * Otherwise, it uses multipart upload to upload the data. If the data length is unknown, it uses multipart upload.\n *\n * Limitations:\n * * Maximum object size is 5TB.\n * * Maximum object size if the size cannot be determined before upload is 50GB.\n *\n * @param input - The UploadDataInput object.\n * @returns A cancelable and resumable task exposing result promise from `result`\n * \tproperty.\n * @throws service: {@link S3Exception} - thrown when checking for existence of the object\n * @throws validation: {@link StorageValidationErrorCode } - Validation errors.\n *\n * @example\n * ```ts\n * // Upload a file to s3 bucket\n * await uploadData({ key, data: file, options: {\n * onProgress, // Optional progress callback.\n * } }).result;\n * ```\n * @example\n * ```ts\n * // Cancel a task\n * const uploadTask = uploadData({ key, data: file });\n * //...\n * uploadTask.cancel();\n * try {\n * await uploadTask.result;\n * } catch (error) {\n * if(isCancelError(error)) {\n * // Handle error thrown by task cancelation.\n * }\n * }\n *```\n *\n * @example\n * ```ts\n * // Pause and resume a task\n * const uploadTask = uploadData({ key, data: file });\n * //...\n * uploadTask.pause();\n * //...\n * uploadTask.resume();\n * //...\n * await uploadTask.result;\n * ```\n */\nexport const uploadData = (input) => {\n const { data } = input;\n const dataByteLength = byteLength(data);\n assertValidationError(dataByteLength === undefined || dataByteLength <= MAX_OBJECT_SIZE, StorageValidationErrorCode.ObjectIsTooLarge);\n if (dataByteLength && dataByteLength <= DEFAULT_PART_SIZE) {\n const abortController = new AbortController();\n return createUploadTask({\n isMultipartUpload: false,\n job: putObjectJob(input, abortController.signal, dataByteLength),\n onCancel: (message) => {\n abortController.abort(message);\n },\n });\n }\n else {\n const { multipartUploadJob, onPause, onResume, onCancel } = getMultipartUploadHandlers(input, dataByteLength);\n return createUploadTask({\n isMultipartUpload: true,\n job: multipartUploadJob,\n onCancel: (message) => {\n onCancel(message);\n },\n onPause,\n onResume,\n });\n }\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA;AACA;AAQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,UAAU,GAAG,CAAC,KAAK,KAAK;AACrC,IAAI,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;AAC3B,IAAI,MAAM,cAAc,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;AAC5C,IAAI,qBAAqB,CAAC,cAAc,KAAK,SAAS,IAAI,cAAc,IAAI,eAAe,EAAE,0BAA0B,CAAC,gBAAgB,CAAC,CAAC;AAC1I,IAAI,IAAI,cAAc,IAAI,cAAc,IAAI,iBAAiB,EAAE;AAC/D,QAAQ,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;AACtD,QAAQ,OAAO,gBAAgB,CAAC;AAChC,YAAY,iBAAiB,EAAE,KAAK;AACpC,YAAY,GAAG,EAAE,YAAY,CAAC,KAAK,EAAE,eAAe,CAAC,MAAM,EAAE,cAAc,CAAC;AAC5E,YAAY,QAAQ,EAAE,CAAC,OAAO,KAAK;AACnC,gBAAgB,eAAe,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAC/C,aAAa;AACb,SAAS,CAAC,CAAC;AACX,KAAK;AACL,SAAS;AACT,QAAQ,MAAM,EAAE,kBAAkB,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,0BAA0B,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;AACtH,QAAQ,OAAO,gBAAgB,CAAC;AAChC,YAAY,iBAAiB,EAAE,IAAI;AACnC,YAAY,GAAG,EAAE,kBAAkB;AACnC,YAAY,QAAQ,EAAE,CAAC,OAAO,KAAK;AACnC,gBAAgB,QAAQ,CAAC,OAAO,CAAC,CAAC;AAClC,aAAa;AACb,YAAY,OAAO;AACnB,YAAY,QAAQ;AACpB,SAAS,CAAC,CAAC;AACX,KAAK;AACL;;;;"}
1
+ {"version":3,"file":"index.mjs","sources":["../../../../../../src/providers/s3/apis/uploadData/index.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { createUploadTask } from '../../utils';\nimport { assertValidationError } from '../../../../errors/utils/assertValidationError';\nimport { StorageValidationErrorCode } from '../../../../errors/types/validation';\nimport { DEFAULT_PART_SIZE, MAX_OBJECT_SIZE } from '../../utils/constants';\nimport { byteLength } from './byteLength';\nimport { putObjectJob } from './putObjectJob';\nimport { getMultipartUploadHandlers } from './multipart';\nexport function uploadData(input) {\n const { data } = input;\n const dataByteLength = byteLength(data);\n assertValidationError(dataByteLength === undefined || dataByteLength <= MAX_OBJECT_SIZE, StorageValidationErrorCode.ObjectIsTooLarge);\n if (dataByteLength && dataByteLength <= DEFAULT_PART_SIZE) {\n // Single part upload\n const abortController = new AbortController();\n return createUploadTask({\n isMultipartUpload: false,\n job: putObjectJob(input, abortController.signal, dataByteLength),\n onCancel: (message) => {\n abortController.abort(message);\n },\n });\n }\n else {\n // Multipart upload\n const { multipartUploadJob, onPause, onResume, onCancel } = getMultipartUploadHandlers(input, dataByteLength);\n return createUploadTask({\n isMultipartUpload: true,\n job: multipartUploadJob,\n onCancel: (message) => {\n onCancel(message);\n },\n onPause,\n onResume,\n });\n }\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA;AACA;AAQO,SAAS,UAAU,CAAC,KAAK,EAAE;AAClC,IAAI,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;AAC3B,IAAI,MAAM,cAAc,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;AAC5C,IAAI,qBAAqB,CAAC,cAAc,KAAK,SAAS,IAAI,cAAc,IAAI,eAAe,EAAE,0BAA0B,CAAC,gBAAgB,CAAC,CAAC;AAC1I,IAAI,IAAI,cAAc,IAAI,cAAc,IAAI,iBAAiB,EAAE;AAC/D;AACA,QAAQ,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;AACtD,QAAQ,OAAO,gBAAgB,CAAC;AAChC,YAAY,iBAAiB,EAAE,KAAK;AACpC,YAAY,GAAG,EAAE,YAAY,CAAC,KAAK,EAAE,eAAe,CAAC,MAAM,EAAE,cAAc,CAAC;AAC5E,YAAY,QAAQ,EAAE,CAAC,OAAO,KAAK;AACnC,gBAAgB,eAAe,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAC/C,aAAa;AACb,SAAS,CAAC,CAAC;AACX,KAAK;AACL,SAAS;AACT;AACA,QAAQ,MAAM,EAAE,kBAAkB,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,0BAA0B,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;AACtH,QAAQ,OAAO,gBAAgB,CAAC;AAChC,YAAY,iBAAiB,EAAE,IAAI;AACnC,YAAY,GAAG,EAAE,kBAAkB;AACnC,YAAY,QAAQ,EAAE,CAAC,OAAO,KAAK;AACnC,gBAAgB,QAAQ,CAAC,OAAO,CAAC,CAAC;AAClC,aAAa;AACb,YAAY,OAAO;AACnB,YAAY,QAAQ;AACpB,SAAS,CAAC,CAAC;AACX,KAAK;AACL;;;;"}
@@ -6,8 +6,8 @@ interface LoadOrCreateMultipartUploadOptions {
6
6
  s3Config: ResolvedS3Config;
7
7
  data: StorageUploadDataPayload;
8
8
  bucket: string;
9
- accessLevel: StorageAccessLevel;
10
- keyPrefix: string;
9
+ accessLevel?: StorageAccessLevel;
10
+ keyPrefix?: string;
11
11
  key: string;
12
12
  contentType?: string;
13
13
  contentDisposition?: string;
@@ -24,7 +24,7 @@ import { getUploadsCacheKey, findCachedUploadParts, cacheMultipartUpload } from
24
24
  * @internal
25
25
  */
26
26
  const loadOrCreateMultipartUpload = async ({ s3Config, data, size, contentType, bucket, accessLevel, keyPrefix, key, contentDisposition, contentEncoding, metadata, abortSignal, }) => {
27
- const finalKey = keyPrefix + key;
27
+ const finalKey = keyPrefix !== undefined ? keyPrefix + key : key;
28
28
  let cachedUpload;
29
29
  if (size === undefined) {
30
30
  logger.debug('uploaded data size cannot be determined, skipping cache.');
@@ -1 +1 @@
1
- {"version":3,"file":"initialUpload.mjs","sources":["../../../../../../../src/providers/s3/apis/uploadData/multipart/initialUpload.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { createMultipartUpload } from '../../../utils/client';\nimport { logger } from '../../../../../utils';\nimport { cacheMultipartUpload, findCachedUploadParts, getUploadsCacheKey, } from './uploadCache';\n/**\n * Load the in-progress multipart upload from local storage or async storage(RN) if it exists, or create a new multipart\n * upload.\n *\n * @internal\n */\nexport const loadOrCreateMultipartUpload = async ({ s3Config, data, size, contentType, bucket, accessLevel, keyPrefix, key, contentDisposition, contentEncoding, metadata, abortSignal, }) => {\n const finalKey = keyPrefix + key;\n let cachedUpload;\n if (size === undefined) {\n logger.debug('uploaded data size cannot be determined, skipping cache.');\n cachedUpload = undefined;\n }\n else {\n const uploadCacheKey = getUploadsCacheKey({\n size,\n contentType,\n file: data instanceof File ? data : undefined,\n bucket,\n accessLevel,\n key,\n });\n const cachedUploadParts = await findCachedUploadParts({\n s3Config,\n cacheKey: uploadCacheKey,\n bucket,\n finalKey,\n });\n cachedUpload = cachedUploadParts\n ? { ...cachedUploadParts, uploadCacheKey }\n : undefined;\n }\n if (cachedUpload) {\n return {\n uploadId: cachedUpload.uploadId,\n cachedParts: cachedUpload.parts,\n };\n }\n else {\n const { UploadId } = await createMultipartUpload({\n ...s3Config,\n abortSignal,\n }, {\n Bucket: bucket,\n Key: finalKey,\n ContentType: contentType,\n ContentDisposition: contentDisposition,\n ContentEncoding: contentEncoding,\n Metadata: metadata,\n });\n if (size === undefined) {\n logger.debug('uploaded data size cannot be determined, skipping cache.');\n return {\n uploadId: UploadId,\n cachedParts: [],\n };\n }\n const uploadCacheKey = getUploadsCacheKey({\n size,\n contentType,\n file: data instanceof File ? data : undefined,\n bucket,\n accessLevel,\n key,\n });\n await cacheMultipartUpload(uploadCacheKey, {\n uploadId: UploadId,\n bucket,\n key,\n fileName: data instanceof File ? data.name : '',\n });\n return {\n uploadId: UploadId,\n cachedParts: [],\n };\n }\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,2BAA2B,GAAG,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,EAAE,kBAAkB,EAAE,eAAe,EAAE,QAAQ,EAAE,WAAW,GAAG,KAAK;AAC9L,IAAI,MAAM,QAAQ,GAAG,SAAS,GAAG,GAAG,CAAC;AACrC,IAAI,IAAI,YAAY,CAAC;AACrB,IAAI,IAAI,IAAI,KAAK,SAAS,EAAE;AAC5B,QAAQ,MAAM,CAAC,KAAK,CAAC,0DAA0D,CAAC,CAAC;AACjF,QAAQ,YAAY,GAAG,SAAS,CAAC;AACjC,KAAK;AACL,SAAS;AACT,QAAQ,MAAM,cAAc,GAAG,kBAAkB,CAAC;AAClD,YAAY,IAAI;AAChB,YAAY,WAAW;AACvB,YAAY,IAAI,EAAE,IAAI,YAAY,IAAI,GAAG,IAAI,GAAG,SAAS;AACzD,YAAY,MAAM;AAClB,YAAY,WAAW;AACvB,YAAY,GAAG;AACf,SAAS,CAAC,CAAC;AACX,QAAQ,MAAM,iBAAiB,GAAG,MAAM,qBAAqB,CAAC;AAC9D,YAAY,QAAQ;AACpB,YAAY,QAAQ,EAAE,cAAc;AACpC,YAAY,MAAM;AAClB,YAAY,QAAQ;AACpB,SAAS,CAAC,CAAC;AACX,QAAQ,YAAY,GAAG,iBAAiB;AACxC,cAAc,EAAE,GAAG,iBAAiB,EAAE,cAAc,EAAE;AACtD,cAAc,SAAS,CAAC;AACxB,KAAK;AACL,IAAI,IAAI,YAAY,EAAE;AACtB,QAAQ,OAAO;AACf,YAAY,QAAQ,EAAE,YAAY,CAAC,QAAQ;AAC3C,YAAY,WAAW,EAAE,YAAY,CAAC,KAAK;AAC3C,SAAS,CAAC;AACV,KAAK;AACL,SAAS;AACT,QAAQ,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,qBAAqB,CAAC;AACzD,YAAY,GAAG,QAAQ;AACvB,YAAY,WAAW;AACvB,SAAS,EAAE;AACX,YAAY,MAAM,EAAE,MAAM;AAC1B,YAAY,GAAG,EAAE,QAAQ;AACzB,YAAY,WAAW,EAAE,WAAW;AACpC,YAAY,kBAAkB,EAAE,kBAAkB;AAClD,YAAY,eAAe,EAAE,eAAe;AAC5C,YAAY,QAAQ,EAAE,QAAQ;AAC9B,SAAS,CAAC,CAAC;AACX,QAAQ,IAAI,IAAI,KAAK,SAAS,EAAE;AAChC,YAAY,MAAM,CAAC,KAAK,CAAC,0DAA0D,CAAC,CAAC;AACrF,YAAY,OAAO;AACnB,gBAAgB,QAAQ,EAAE,QAAQ;AAClC,gBAAgB,WAAW,EAAE,EAAE;AAC/B,aAAa,CAAC;AACd,SAAS;AACT,QAAQ,MAAM,cAAc,GAAG,kBAAkB,CAAC;AAClD,YAAY,IAAI;AAChB,YAAY,WAAW;AACvB,YAAY,IAAI,EAAE,IAAI,YAAY,IAAI,GAAG,IAAI,GAAG,SAAS;AACzD,YAAY,MAAM;AAClB,YAAY,WAAW;AACvB,YAAY,GAAG;AACf,SAAS,CAAC,CAAC;AACX,QAAQ,MAAM,oBAAoB,CAAC,cAAc,EAAE;AACnD,YAAY,QAAQ,EAAE,QAAQ;AAC9B,YAAY,MAAM;AAClB,YAAY,GAAG;AACf,YAAY,QAAQ,EAAE,IAAI,YAAY,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,EAAE;AAC3D,SAAS,CAAC,CAAC;AACX,QAAQ,OAAO;AACf,YAAY,QAAQ,EAAE,QAAQ;AAC9B,YAAY,WAAW,EAAE,EAAE;AAC3B,SAAS,CAAC;AACV,KAAK;AACL;;;;"}
1
+ {"version":3,"file":"initialUpload.mjs","sources":["../../../../../../../src/providers/s3/apis/uploadData/multipart/initialUpload.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { createMultipartUpload } from '../../../utils/client';\nimport { logger } from '../../../../../utils';\nimport { cacheMultipartUpload, findCachedUploadParts, getUploadsCacheKey, } from './uploadCache';\n/**\n * Load the in-progress multipart upload from local storage or async storage(RN) if it exists, or create a new multipart\n * upload.\n *\n * @internal\n */\nexport const loadOrCreateMultipartUpload = async ({ s3Config, data, size, contentType, bucket, accessLevel, keyPrefix, key, contentDisposition, contentEncoding, metadata, abortSignal, }) => {\n const finalKey = keyPrefix !== undefined ? keyPrefix + key : key;\n let cachedUpload;\n if (size === undefined) {\n logger.debug('uploaded data size cannot be determined, skipping cache.');\n cachedUpload = undefined;\n }\n else {\n const uploadCacheKey = getUploadsCacheKey({\n size,\n contentType,\n file: data instanceof File ? data : undefined,\n bucket,\n accessLevel,\n key,\n });\n const cachedUploadParts = await findCachedUploadParts({\n s3Config,\n cacheKey: uploadCacheKey,\n bucket,\n finalKey,\n });\n cachedUpload = cachedUploadParts\n ? { ...cachedUploadParts, uploadCacheKey }\n : undefined;\n }\n if (cachedUpload) {\n return {\n uploadId: cachedUpload.uploadId,\n cachedParts: cachedUpload.parts,\n };\n }\n else {\n const { UploadId } = await createMultipartUpload({\n ...s3Config,\n abortSignal,\n }, {\n Bucket: bucket,\n Key: finalKey,\n ContentType: contentType,\n ContentDisposition: contentDisposition,\n ContentEncoding: contentEncoding,\n Metadata: metadata,\n });\n if (size === undefined) {\n logger.debug('uploaded data size cannot be determined, skipping cache.');\n return {\n uploadId: UploadId,\n cachedParts: [],\n };\n }\n const uploadCacheKey = getUploadsCacheKey({\n size,\n contentType,\n file: data instanceof File ? data : undefined,\n bucket,\n accessLevel,\n key,\n });\n await cacheMultipartUpload(uploadCacheKey, {\n uploadId: UploadId,\n bucket,\n key,\n fileName: data instanceof File ? data.name : '',\n });\n return {\n uploadId: UploadId,\n cachedParts: [],\n };\n }\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,2BAA2B,GAAG,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,EAAE,kBAAkB,EAAE,eAAe,EAAE,QAAQ,EAAE,WAAW,GAAG,KAAK;AAC9L,IAAI,MAAM,QAAQ,GAAG,SAAS,KAAK,SAAS,GAAG,SAAS,GAAG,GAAG,GAAG,GAAG,CAAC;AACrE,IAAI,IAAI,YAAY,CAAC;AACrB,IAAI,IAAI,IAAI,KAAK,SAAS,EAAE;AAC5B,QAAQ,MAAM,CAAC,KAAK,CAAC,0DAA0D,CAAC,CAAC;AACjF,QAAQ,YAAY,GAAG,SAAS,CAAC;AACjC,KAAK;AACL,SAAS;AACT,QAAQ,MAAM,cAAc,GAAG,kBAAkB,CAAC;AAClD,YAAY,IAAI;AAChB,YAAY,WAAW;AACvB,YAAY,IAAI,EAAE,IAAI,YAAY,IAAI,GAAG,IAAI,GAAG,SAAS;AACzD,YAAY,MAAM;AAClB,YAAY,WAAW;AACvB,YAAY,GAAG;AACf,SAAS,CAAC,CAAC;AACX,QAAQ,MAAM,iBAAiB,GAAG,MAAM,qBAAqB,CAAC;AAC9D,YAAY,QAAQ;AACpB,YAAY,QAAQ,EAAE,cAAc;AACpC,YAAY,MAAM;AAClB,YAAY,QAAQ;AACpB,SAAS,CAAC,CAAC;AACX,QAAQ,YAAY,GAAG,iBAAiB;AACxC,cAAc,EAAE,GAAG,iBAAiB,EAAE,cAAc,EAAE;AACtD,cAAc,SAAS,CAAC;AACxB,KAAK;AACL,IAAI,IAAI,YAAY,EAAE;AACtB,QAAQ,OAAO;AACf,YAAY,QAAQ,EAAE,YAAY,CAAC,QAAQ;AAC3C,YAAY,WAAW,EAAE,YAAY,CAAC,KAAK;AAC3C,SAAS,CAAC;AACV,KAAK;AACL,SAAS;AACT,QAAQ,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,qBAAqB,CAAC;AACzD,YAAY,GAAG,QAAQ;AACvB,YAAY,WAAW;AACvB,SAAS,EAAE;AACX,YAAY,MAAM,EAAE,MAAM;AAC1B,YAAY,GAAG,EAAE,QAAQ;AACzB,YAAY,WAAW,EAAE,WAAW;AACpC,YAAY,kBAAkB,EAAE,kBAAkB;AAClD,YAAY,eAAe,EAAE,eAAe;AAC5C,YAAY,QAAQ,EAAE,QAAQ;AAC9B,SAAS,CAAC,CAAC;AACX,QAAQ,IAAI,IAAI,KAAK,SAAS,EAAE;AAChC,YAAY,MAAM,CAAC,KAAK,CAAC,0DAA0D,CAAC,CAAC;AACrF,YAAY,OAAO;AACnB,gBAAgB,QAAQ,EAAE,QAAQ;AAClC,gBAAgB,WAAW,EAAE,EAAE;AAC/B,aAAa,CAAC;AACd,SAAS;AACT,QAAQ,MAAM,cAAc,GAAG,kBAAkB,CAAC;AAClD,YAAY,IAAI;AAChB,YAAY,WAAW;AACvB,YAAY,IAAI,EAAE,IAAI,YAAY,IAAI,GAAG,IAAI,GAAG,SAAS;AACzD,YAAY,MAAM;AAClB,YAAY,WAAW;AACvB,YAAY,GAAG;AACf,SAAS,CAAC,CAAC;AACX,QAAQ,MAAM,oBAAoB,CAAC,cAAc,EAAE;AACnD,YAAY,QAAQ,EAAE,QAAQ;AAC9B,YAAY,MAAM;AAClB,YAAY,GAAG;AACf,YAAY,QAAQ,EAAE,IAAI,YAAY,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,EAAE;AAC3D,SAAS,CAAC,CAAC;AACX,QAAQ,OAAO;AACf,YAAY,QAAQ,EAAE,QAAQ;AAC9B,YAAY,WAAW,EAAE,EAAE;AAC3B,SAAS,CAAC;AACV,KAAK;AACL;;;;"}
@@ -26,7 +26,7 @@ interface UploadsCacheKeyOptions {
26
26
  size: number;
27
27
  contentType?: string;
28
28
  bucket: string;
29
- accessLevel: StorageAccessLevel;
29
+ accessLevel?: StorageAccessLevel;
30
30
  key: string;
31
31
  file?: File;
32
32
  }
@@ -65,8 +65,15 @@ const listCachedUploadTasks = async (kvStorage) => {
65
65
  * So the library always created a new multipart upload if the file is modified.
66
66
  */
67
67
  const getUploadsCacheKey = ({ file, size, contentType, bucket, accessLevel, key, }) => {
68
+ let levelStr;
68
69
  const resolvedContentType = contentType ?? file?.type ?? 'application/octet-stream';
69
- const levelStr = accessLevel === 'guest' ? 'public' : accessLevel;
70
+ // If no access level is defined, we're using custom gen2 access rules
71
+ if (accessLevel === undefined) {
72
+ levelStr = 'custom';
73
+ }
74
+ else {
75
+ levelStr = accessLevel === 'guest' ? 'public' : accessLevel;
76
+ }
70
77
  const baseId = `${size}_${resolvedContentType}_${bucket}_${levelStr}_${key}`;
71
78
  if (file) {
72
79
  return `${file.name}_${file.lastModified}_${baseId}`;
@@ -1 +1 @@
1
- {"version":3,"file":"uploadCache.mjs","sources":["../../../../../../../src/providers/s3/apis/uploadData/multipart/uploadCache.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { defaultStorage, } from '@aws-amplify/core';\nimport { UPLOADS_STORAGE_KEY } from '../../../utils/constants';\nimport { listParts } from '../../../utils/client';\nimport { logger } from '../../../../../utils';\nconst ONE_HOUR = 1000 * 60 * 60;\n/**\n * Find the cached multipart upload id and get the parts that have been uploaded\n * with ListParts API. If the cached upload is expired(1 hour), return null.\n */\nexport const findCachedUploadParts = async ({ cacheKey, s3Config, bucket, finalKey, }) => {\n const cachedUploads = await listCachedUploadTasks(defaultStorage);\n if (!cachedUploads[cacheKey] ||\n cachedUploads[cacheKey].lastTouched < Date.now() - ONE_HOUR // Uploads are cached for 1 hour\n ) {\n return null;\n }\n const cachedUpload = cachedUploads[cacheKey];\n cachedUpload.lastTouched = Date.now();\n await defaultStorage.setItem(UPLOADS_STORAGE_KEY, JSON.stringify(cachedUploads));\n try {\n const { Parts = [] } = await listParts(s3Config, {\n Bucket: bucket,\n Key: finalKey,\n UploadId: cachedUpload.uploadId,\n });\n return {\n parts: Parts,\n uploadId: cachedUpload.uploadId,\n };\n }\n catch (e) {\n logger.debug('failed to list cached parts, removing cached upload.');\n await removeCachedUpload(cacheKey);\n return null;\n }\n};\nconst listCachedUploadTasks = async (kvStorage) => {\n try {\n return JSON.parse((await kvStorage.getItem(UPLOADS_STORAGE_KEY)) ?? '{}');\n }\n catch (e) {\n logger.debug('failed to parse cached uploads record.');\n return {};\n }\n};\n/**\n * Get the cache key of a multipart upload. Data source cached by different: size, content type, bucket, access level,\n * key. If the data source is a File instance, the upload is additionally indexed by file name and last modified time.\n * So the library always created a new multipart upload if the file is modified.\n */\nexport const getUploadsCacheKey = ({ file, size, contentType, bucket, accessLevel, key, }) => {\n const resolvedContentType = contentType ?? file?.type ?? 'application/octet-stream';\n const levelStr = accessLevel === 'guest' ? 'public' : accessLevel;\n const baseId = `${size}_${resolvedContentType}_${bucket}_${levelStr}_${key}`;\n if (file) {\n return `${file.name}_${file.lastModified}_${baseId}`;\n }\n else {\n return baseId;\n }\n};\nexport const cacheMultipartUpload = async (cacheKey, fileMetadata) => {\n const cachedUploads = await listCachedUploadTasks(defaultStorage);\n cachedUploads[cacheKey] = {\n ...fileMetadata,\n lastTouched: Date.now(),\n };\n await defaultStorage.setItem(UPLOADS_STORAGE_KEY, JSON.stringify(cachedUploads));\n};\nexport const removeCachedUpload = async (cacheKey) => {\n const cachedUploads = await listCachedUploadTasks(defaultStorage);\n delete cachedUploads[cacheKey];\n await defaultStorage.setItem(UPLOADS_STORAGE_KEY, JSON.stringify(cachedUploads));\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"uploadCache.mjs","sources":["../../../../../../../src/providers/s3/apis/uploadData/multipart/uploadCache.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { defaultStorage, } from '@aws-amplify/core';\nimport { UPLOADS_STORAGE_KEY } from '../../../utils/constants';\nimport { listParts } from '../../../utils/client';\nimport { logger } from '../../../../../utils';\nconst ONE_HOUR = 1000 * 60 * 60;\n/**\n * Find the cached multipart upload id and get the parts that have been uploaded\n * with ListParts API. If the cached upload is expired(1 hour), return null.\n */\nexport const findCachedUploadParts = async ({ cacheKey, s3Config, bucket, finalKey, }) => {\n const cachedUploads = await listCachedUploadTasks(defaultStorage);\n if (!cachedUploads[cacheKey] ||\n cachedUploads[cacheKey].lastTouched < Date.now() - ONE_HOUR // Uploads are cached for 1 hour\n ) {\n return null;\n }\n const cachedUpload = cachedUploads[cacheKey];\n cachedUpload.lastTouched = Date.now();\n await defaultStorage.setItem(UPLOADS_STORAGE_KEY, JSON.stringify(cachedUploads));\n try {\n const { Parts = [] } = await listParts(s3Config, {\n Bucket: bucket,\n Key: finalKey,\n UploadId: cachedUpload.uploadId,\n });\n return {\n parts: Parts,\n uploadId: cachedUpload.uploadId,\n };\n }\n catch (e) {\n logger.debug('failed to list cached parts, removing cached upload.');\n await removeCachedUpload(cacheKey);\n return null;\n }\n};\nconst listCachedUploadTasks = async (kvStorage) => {\n try {\n return JSON.parse((await kvStorage.getItem(UPLOADS_STORAGE_KEY)) ?? '{}');\n }\n catch (e) {\n logger.debug('failed to parse cached uploads record.');\n return {};\n }\n};\n/**\n * Get the cache key of a multipart upload. Data source cached by different: size, content type, bucket, access level,\n * key. If the data source is a File instance, the upload is additionally indexed by file name and last modified time.\n * So the library always created a new multipart upload if the file is modified.\n */\nexport const getUploadsCacheKey = ({ file, size, contentType, bucket, accessLevel, key, }) => {\n let levelStr;\n const resolvedContentType = contentType ?? file?.type ?? 'application/octet-stream';\n // If no access level is defined, we're using custom gen2 access rules\n if (accessLevel === undefined) {\n levelStr = 'custom';\n }\n else {\n levelStr = accessLevel === 'guest' ? 'public' : accessLevel;\n }\n const baseId = `${size}_${resolvedContentType}_${bucket}_${levelStr}_${key}`;\n if (file) {\n return `${file.name}_${file.lastModified}_${baseId}`;\n }\n else {\n return baseId;\n }\n};\nexport const cacheMultipartUpload = async (cacheKey, fileMetadata) => {\n const cachedUploads = await listCachedUploadTasks(defaultStorage);\n cachedUploads[cacheKey] = {\n ...fileMetadata,\n lastTouched: Date.now(),\n };\n await defaultStorage.setItem(UPLOADS_STORAGE_KEY, JSON.stringify(cachedUploads));\n};\nexport const removeCachedUpload = async (cacheKey) => {\n const cachedUploads = await listCachedUploadTasks(defaultStorage);\n delete cachedUploads[cacheKey];\n await defaultStorage.setItem(UPLOADS_STORAGE_KEY, JSON.stringify(cachedUploads));\n};\n"],"names":[],"mappings":"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"}
@@ -1,13 +1,13 @@
1
- import { UploadDataInput } from '../../../types';
2
- import { Item as S3Item } from '../../../types/outputs';
1
+ import { UploadDataInput, UploadDataWithPathInput } from '../../../types';
2
+ import { ItemWithKey, ItemWithPath } from '../../../types/outputs';
3
3
  /**
4
4
  * Create closure hiding the multipart upload implementation details and expose the upload job and control functions(
5
5
  * onPause, onResume, onCancel).
6
6
  *
7
7
  * @internal
8
8
  */
9
- export declare const getMultipartUploadHandlers: ({ options: uploadDataOptions, key, data }: UploadDataInput, size?: number) => {
10
- multipartUploadJob: () => Promise<S3Item>;
9
+ export declare const getMultipartUploadHandlers: (uploadDataInput: UploadDataInput | UploadDataWithPathInput, size?: number) => {
10
+ multipartUploadJob: () => Promise<ItemWithKey | ItemWithPath>;
11
11
  onPause: () => void;
12
12
  onResume: () => void;
13
13
  onCancel: (message?: string) => void;