@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
@@ -2,35 +2,58 @@
2
2
  // SPDX-License-Identifier: Apache-2.0
3
3
 
4
4
  export {
5
- GetUrlOptions,
6
- UploadDataOptions,
7
- GetPropertiesOptions,
8
- ListAllOptions,
9
- ListPaginateOptions,
5
+ GetUrlOptionsWithKey,
6
+ GetUrlOptionsWithPath,
7
+ UploadDataOptionsWithPath,
8
+ UploadDataOptionsWithKey,
9
+ GetPropertiesOptionsWithKey,
10
+ GetPropertiesOptionsWithPath,
11
+ ListAllOptionsWithPrefix,
12
+ ListPaginateOptionsWithPrefix,
13
+ ListAllOptionsWithPath,
14
+ ListPaginateOptionsWithPath,
10
15
  RemoveOptions,
11
- DownloadDataOptions,
12
- CopyDestinationOptions,
13
- CopySourceOptions,
16
+ DownloadDataOptionsWithPath,
17
+ DownloadDataOptionsWithKey,
18
+ CopyDestinationOptionsWithKey,
19
+ CopySourceOptionsWithKey,
14
20
  } from './options';
15
21
  export {
16
- DownloadDataOutput,
17
- GetUrlOutput,
18
22
  UploadDataOutput,
19
- ListOutputItem,
23
+ UploadDataWithPathOutput,
24
+ DownloadDataOutput,
25
+ DownloadDataWithPathOutput,
26
+ RemoveOutput,
27
+ RemoveWithPathOutput,
20
28
  ListAllOutput,
29
+ ListAllWithPathOutput,
21
30
  ListPaginateOutput,
31
+ ListPaginateWithPathOutput,
22
32
  GetPropertiesOutput,
33
+ GetPropertiesWithPathOutput,
23
34
  CopyOutput,
24
- RemoveOutput,
35
+ CopyWithPathOutput,
36
+ GetUrlOutput,
37
+ GetUrlWithPathOutput,
38
+ ListOutputItem,
39
+ ListOutputItemWithPath,
25
40
  } from './outputs';
26
41
  export {
27
42
  CopyInput,
43
+ CopyWithPathInput,
28
44
  GetPropertiesInput,
45
+ GetPropertiesWithPathInput,
29
46
  GetUrlInput,
30
- ListAllInput,
31
- ListPaginateInput,
47
+ GetUrlWithPathInput,
48
+ RemoveWithPathInput,
32
49
  RemoveInput,
33
50
  DownloadDataInput,
51
+ DownloadDataWithPathInput,
34
52
  UploadDataInput,
53
+ UploadDataWithPathInput,
54
+ ListAllInput,
55
+ ListPaginateInput,
56
+ ListAllWithPathInput,
57
+ ListPaginateWithPathInput,
35
58
  } from './inputs';
36
59
  export { S3Exception } from './errors';
@@ -2,67 +2,136 @@
2
2
  // SPDX-License-Identifier: Apache-2.0
3
3
 
4
4
  import {
5
- StorageCopyInput,
6
- StorageDownloadDataInput,
7
- StorageGetPropertiesInput,
8
- StorageGetUrlInput,
9
- StorageListInput,
10
- StorageRemoveInput,
11
- StorageUploadDataInput,
5
+ StorageCopyInputWithKey,
6
+ StorageCopyInputWithPath,
7
+ StorageDownloadDataInputWithKey,
8
+ StorageDownloadDataInputWithPath,
9
+ StorageGetPropertiesInputWithKey,
10
+ StorageGetPropertiesInputWithPath,
11
+ StorageGetUrlInputWithKey,
12
+ StorageGetUrlInputWithPath,
13
+ StorageListInputWithPath,
14
+ StorageListInputWithPrefix,
15
+ StorageRemoveInputWithKey,
16
+ StorageRemoveInputWithPath,
17
+ StorageUploadDataInputWithKey,
18
+ StorageUploadDataInputWithPath,
12
19
  } from '../../../types';
13
20
  import {
14
- CopyDestinationOptions,
15
- CopySourceOptions,
16
- DownloadDataOptions,
17
- GetPropertiesOptions,
18
- GetUrlOptions,
19
- ListAllOptions,
20
- ListPaginateOptions,
21
+ CopyDestinationOptionsWithKey,
22
+ CopySourceOptionsWithKey,
23
+ DownloadDataOptionsWithKey,
24
+ DownloadDataOptionsWithPath,
25
+ GetPropertiesOptionsWithKey,
26
+ GetPropertiesOptionsWithPath,
27
+ GetUrlOptionsWithKey,
28
+ GetUrlOptionsWithPath,
29
+ ListAllOptionsWithPath,
30
+ ListAllOptionsWithPrefix,
31
+ ListPaginateOptionsWithPath,
32
+ ListPaginateOptionsWithPrefix,
21
33
  RemoveOptions,
22
- UploadDataOptions,
34
+ UploadDataOptionsWithKey,
35
+ UploadDataOptionsWithPath,
23
36
  } from '../types';
24
37
 
25
38
  // TODO: support use accelerate endpoint option
26
39
  /**
40
+ * @deprecated Use {@link CopyWithPathInput} instead.
27
41
  * Input type for S3 copy API.
28
42
  */
29
- export type CopyInput = StorageCopyInput<
30
- CopySourceOptions,
31
- CopyDestinationOptions
43
+ export type CopyInput = StorageCopyInputWithKey<
44
+ CopySourceOptionsWithKey,
45
+ CopyDestinationOptionsWithKey
32
46
  >;
47
+ /**
48
+ * Input type with path for S3 copy API.
49
+ */
50
+ export type CopyWithPathInput = StorageCopyInputWithPath;
33
51
 
34
52
  /**
53
+ * @deprecated Use {@link GetPropertiesWithPathInput} instead.
35
54
  * Input type for S3 getProperties API.
36
55
  */
37
56
  export type GetPropertiesInput =
38
- StorageGetPropertiesInput<GetPropertiesOptions>;
57
+ StorageGetPropertiesInputWithKey<GetPropertiesOptionsWithKey>;
58
+ /**
59
+ * Input type with for S3 getProperties API.
60
+ */
61
+ export type GetPropertiesWithPathInput =
62
+ StorageGetPropertiesInputWithPath<GetPropertiesOptionsWithPath>;
39
63
 
40
64
  /**
65
+ * @deprecated Use {@link GetUrlWithPathInput} instead.
41
66
  * Input type for S3 getUrl API.
42
67
  */
43
- export type GetUrlInput = StorageGetUrlInput<GetUrlOptions>;
68
+ export type GetUrlInput = StorageGetUrlInputWithKey<GetUrlOptionsWithKey>;
69
+ /**
70
+ * Input type with path for S3 getUrl API.
71
+ */
72
+ export type GetUrlWithPathInput =
73
+ StorageGetUrlInputWithPath<GetUrlOptionsWithPath>;
74
+
75
+ /**
76
+ * Input type with path for S3 list API. Lists all bucket objects.
77
+ */
78
+ export type ListAllWithPathInput =
79
+ StorageListInputWithPath<ListAllOptionsWithPath>;
80
+
81
+ /**
82
+ * Input type with path for S3 list API. Lists bucket objects with pagination.
83
+ */
84
+ export type ListPaginateWithPathInput =
85
+ StorageListInputWithPath<ListPaginateOptionsWithPath>;
44
86
 
45
87
  /**
88
+ * @deprecated Use {@link ListAllWithPathInput} instead.
46
89
  * Input type for S3 list API. Lists all bucket objects.
47
90
  */
48
- export type ListAllInput = StorageListInput<ListAllOptions>;
91
+ export type ListAllInput = StorageListInputWithPrefix<ListAllOptionsWithPrefix>;
49
92
 
50
93
  /**
94
+ * @deprecated Use {@link ListPaginateWithPathInput} instead.
51
95
  * Input type for S3 list API. Lists bucket objects with pagination.
52
96
  */
53
- export type ListPaginateInput = StorageListInput<ListPaginateOptions>;
97
+ export type ListPaginateInput =
98
+ StorageListInputWithPrefix<ListPaginateOptionsWithPrefix>;
99
+
100
+ /**
101
+ * @deprecated Use {@link RemoveWithPathInput} instead.
102
+ * Input type with key for S3 remove API.
103
+ */
104
+ export type RemoveInput = StorageRemoveInputWithKey<RemoveOptions>;
54
105
 
55
106
  /**
56
- * Input type for S3 remove API.
107
+ * Input type with path for S3 remove API.
57
108
  */
58
- export type RemoveInput = StorageRemoveInput<RemoveOptions>;
109
+ export type RemoveWithPathInput = StorageRemoveInputWithPath<
110
+ Omit<RemoveOptions, 'accessLevel'>
111
+ >;
59
112
 
60
113
  /**
114
+ * @deprecated Use {@link DownloadDataWithPathInput} instead.
61
115
  * Input type for S3 downloadData API.
62
116
  */
63
- export type DownloadDataInput = StorageDownloadDataInput<DownloadDataOptions>;
117
+ export type DownloadDataInput =
118
+ StorageDownloadDataInputWithKey<DownloadDataOptionsWithKey>;
64
119
 
65
120
  /**
121
+ * Input type with path for S3 downloadData API.
122
+ */
123
+ export type DownloadDataWithPathInput =
124
+ StorageDownloadDataInputWithPath<DownloadDataOptionsWithPath>;
125
+
126
+ /**
127
+ * @deprecated Use {@link UploadDataWithPathInput} instead.
66
128
  * Input type for S3 uploadData API.
67
129
  */
68
- export type UploadDataInput = StorageUploadDataInput<UploadDataOptions>;
130
+ export type UploadDataInput =
131
+ StorageUploadDataInputWithKey<UploadDataOptionsWithKey>;
132
+
133
+ /**
134
+ * Input type with path for S3 uploadData API.
135
+ */
136
+ export type UploadDataWithPathInput =
137
+ StorageUploadDataInputWithPath<UploadDataOptionsWithPath>;
@@ -18,11 +18,22 @@ interface CommonOptions {
18
18
  useAccelerateEndpoint?: boolean;
19
19
  }
20
20
 
21
+ /** @deprecated This may be removed in the next major version. */
21
22
  type ReadOptions =
22
- | { accessLevel?: 'guest' | 'private' }
23
- | { accessLevel: 'protected'; targetIdentityId?: string };
24
-
23
+ | {
24
+ /** @deprecated This may be removed in the next major version. */
25
+ accessLevel?: 'guest' | 'private';
26
+ }
27
+ | {
28
+ /** @deprecated This may be removed in the next major version. */
29
+ accessLevel: 'protected';
30
+ /** @deprecated This may be removed in the next major version. */
31
+ targetIdentityId?: string;
32
+ };
33
+
34
+ /** @deprecated This may be removed in the next major version. */
25
35
  interface WriteOptions {
36
+ /** @deprecated This may be removed in the next major version. */
26
37
  accessLevel?: StorageAccessLevel;
27
38
  }
28
39
 
@@ -46,7 +57,9 @@ interface TransferOptions {
46
57
  /**
47
58
  * Input options type for S3 getProperties API.
48
59
  */
49
- export type GetPropertiesOptions = ReadOptions & CommonOptions;
60
+ /** @deprecated Use {@link GetPropertiesOptionsWithPath} instead. */
61
+ export type GetPropertiesOptionsWithKey = ReadOptions & CommonOptions;
62
+ export type GetPropertiesOptionsWithPath = CommonOptions;
50
63
 
51
64
  /**
52
65
  * Input options type for S3 getProperties API.
@@ -54,46 +67,71 @@ export type GetPropertiesOptions = ReadOptions & CommonOptions;
54
67
  export type RemoveOptions = WriteOptions & CommonOptions;
55
68
 
56
69
  /**
57
- * Input options type for S3 list API.
70
+ * @deprecated Use {@link ListAllOptionsWithPath} instead.
71
+ * Input options type with prefix for S3 list all API.
58
72
  */
59
- export type ListAllOptions = StorageListAllOptions &
73
+ export type ListAllOptionsWithPrefix = StorageListAllOptions &
60
74
  ReadOptions &
61
75
  CommonOptions;
62
76
 
63
77
  /**
64
- * Input options type for S3 list API.
78
+ * @deprecated Use {@link ListPaginateOptionsWithPath} instead.
79
+ * Input options type with prefix for S3 list API to paginate items.
65
80
  */
66
- export type ListPaginateOptions = StorageListPaginateOptions &
81
+ export type ListPaginateOptionsWithPrefix = StorageListPaginateOptions &
67
82
  ReadOptions &
68
83
  CommonOptions;
69
84
 
85
+ /**
86
+ * Input options type with path for S3 list all API.
87
+ */
88
+ export type ListAllOptionsWithPath = Omit<
89
+ StorageListAllOptions,
90
+ 'accessLevel'
91
+ > &
92
+ CommonOptions;
93
+
94
+ /**
95
+ * Input options type with path for S3 list API to paginate items.
96
+ */
97
+ export type ListPaginateOptionsWithPath = Omit<
98
+ StorageListPaginateOptions,
99
+ 'accessLevel'
100
+ > &
101
+ CommonOptions;
102
+
70
103
  /**
71
104
  * Input options type for S3 getUrl API.
72
105
  */
73
- export type GetUrlOptions = ReadOptions &
74
- CommonOptions & {
75
- /**
76
- * Whether to head object to make sure the object existence before downloading.
77
- * @default false
78
- */
79
- validateObjectExistence?: boolean;
80
- /**
81
- * Number of seconds till the URL expires.
82
- * @default 900 (15 minutes)
83
- */
84
- expiresIn?: number;
85
- };
106
+ export type GetUrlOptions = CommonOptions & {
107
+ /**
108
+ * Whether to head object to make sure the object existence before downloading.
109
+ * @default false
110
+ */
111
+ validateObjectExistence?: boolean;
112
+ /**
113
+ * Number of seconds till the URL expires.
114
+ * @default 900 (15 minutes)
115
+ */
116
+ expiresIn?: number;
117
+ };
118
+
119
+ /** @deprecated Use {@link GetUrlOptionsWithPath} instead. */
120
+ export type GetUrlOptionsWithKey = ReadOptions & GetUrlOptions;
121
+ export type GetUrlOptionsWithPath = GetUrlOptions;
86
122
 
87
123
  /**
88
124
  * Input options type for S3 downloadData API.
89
125
  */
90
- export type DownloadDataOptions = ReadOptions &
91
- CommonOptions &
126
+ export type DownloadDataOptions = CommonOptions &
92
127
  TransferOptions &
93
128
  BytesRangeOptions;
94
129
 
95
- export type UploadDataOptions = WriteOptions &
96
- CommonOptions &
130
+ /** @deprecated Use {@link DownloadDataOptionsWithPath} instead. */
131
+ export type DownloadDataOptionsWithKey = ReadOptions & DownloadDataOptions;
132
+ export type DownloadDataOptionsWithPath = DownloadDataOptions;
133
+
134
+ export type UploadDataOptions = CommonOptions &
97
135
  TransferOptions & {
98
136
  /**
99
137
  * The default content-disposition header value of the file when downloading it.
@@ -117,11 +155,19 @@ export type UploadDataOptions = WriteOptions &
117
155
  metadata?: Record<string, string>;
118
156
  };
119
157
 
120
- export type CopySourceOptions = ReadOptions & {
158
+ /** @deprecated Use {@link UploadDataOptionsWithPath} instead. */
159
+ export type UploadDataOptionsWithKey = WriteOptions & UploadDataOptions;
160
+ export type UploadDataOptionsWithPath = UploadDataOptions;
161
+
162
+ /** @deprecated This may be removed in the next major version. */
163
+ export type CopySourceOptionsWithKey = ReadOptions & {
164
+ /** @deprecated This may be removed in the next major version. */
121
165
  key: string;
122
166
  };
123
167
 
124
- export type CopyDestinationOptions = WriteOptions & {
168
+ /** @deprecated This may be removed in the next major version. */
169
+ export type CopyDestinationOptionsWithKey = WriteOptions & {
170
+ /** @deprecated This may be removed in the next major version. */
125
171
  key: string;
126
172
  };
127
173
 
@@ -5,15 +5,16 @@ import {
5
5
  DownloadTask,
6
6
  StorageDownloadDataOutput,
7
7
  StorageGetUrlOutput,
8
- StorageItem,
8
+ StorageItemWithKey,
9
+ StorageItemWithPath,
9
10
  StorageListOutput,
10
11
  UploadTask,
11
12
  } from '../../../types';
12
13
 
13
14
  /**
14
- * type for S3 item.
15
+ * Base type for an S3 item.
15
16
  */
16
- export interface Item extends StorageItem {
17
+ export interface ItemBase {
17
18
  /**
18
19
  * VersionId used to reference a specific version of the object.
19
20
  */
@@ -25,36 +26,83 @@ export interface Item extends StorageItem {
25
26
  }
26
27
 
27
28
  /**
28
- * type for S3 list item.
29
+ * @deprecated Use {@link ListOutputItemWithPath} instead.
30
+ * type for S3 list item with key.
29
31
  */
30
- export type ListOutputItem = Omit<StorageItem, 'metadata'>;
32
+ export type ListOutputItem = Omit<ItemWithKey, 'metadata'>;
33
+
34
+ /**
35
+ * type for S3 list item with path.
36
+ */
37
+ export type ListOutputItemWithPath = Omit<ItemWithPath, 'metadata'>;
38
+
39
+ /**
40
+ * @deprecated Use {@link ItemWithPath} instead.
41
+ */
42
+ export type ItemWithKey = ItemBase & StorageItemWithKey;
43
+
44
+ /**
45
+ * type for S3 list item with path.
46
+ */
47
+ export type ItemWithPath = ItemBase & StorageItemWithPath;
31
48
 
32
49
  /**
33
50
  * Output type for S3 downloadData API.
51
+ * @deprecated Use {@link DownloadDataWithPathOutput} instead.
52
+ */
53
+ export type DownloadDataOutput = DownloadTask<
54
+ StorageDownloadDataOutput<ItemWithKey>
55
+ >;
56
+ /**
57
+ * Output type with path for S3 downloadData API.
34
58
  */
35
- export type DownloadDataOutput = DownloadTask<StorageDownloadDataOutput<Item>>;
59
+ export type DownloadDataWithPathOutput = DownloadTask<
60
+ StorageDownloadDataOutput<ItemWithPath>
61
+ >;
36
62
 
37
63
  /**
38
64
  * Output type for S3 getUrl API.
65
+ * @deprecated Use {@link GetUrlWithPathOutput} instead.
39
66
  */
40
67
  export type GetUrlOutput = StorageGetUrlOutput;
68
+ /**
69
+ * Output type with path for S3 getUrl API.
70
+ * */
71
+ export type GetUrlWithPathOutput = StorageGetUrlOutput;
41
72
 
42
73
  /**
43
74
  * Output type for S3 uploadData API.
75
+ * @deprecated Use {@link UploadDataWithPathOutput} instead.
44
76
  */
45
- export type UploadDataOutput = UploadTask<Item>;
77
+ export type UploadDataOutput = UploadTask<ItemWithKey>;
78
+ /**
79
+ * Output type with path for S3 uploadData API.
80
+ * */
81
+ export type UploadDataWithPathOutput = UploadTask<ItemWithPath>;
46
82
 
47
83
  /**
48
84
  * Output type for S3 getProperties API.
49
- */
50
- export type GetPropertiesOutput = Item;
85
+ * @deprecated Use {@link GetPropertiesWithPathOutput} instead.
86
+ * */
87
+ export type GetPropertiesOutput = ItemBase & StorageItemWithKey;
88
+ /**
89
+ * Output type with path for S3 getProperties API.
90
+ * */
91
+ export type GetPropertiesWithPathOutput = ItemBase & StorageItemWithPath;
51
92
 
52
93
  /**
94
+ * @deprecated Use {@link ListAllWithPathOutput} instead.
53
95
  * Output type for S3 list API. Lists all bucket objects.
54
96
  */
55
97
  export type ListAllOutput = StorageListOutput<ListOutputItem>;
56
98
 
57
99
  /**
100
+ * Output type with path for S3 list API. Lists all bucket objects.
101
+ */
102
+ export type ListAllWithPathOutput = StorageListOutput<ListOutputItemWithPath>;
103
+
104
+ /**
105
+ * @deprecated Use {@link ListPaginateWithPathOutput} instead.
58
106
  * Output type for S3 list API. Lists bucket objects with pagination.
59
107
  */
60
108
  export type ListPaginateOutput = StorageListOutput<ListOutputItem> & {
@@ -62,11 +110,30 @@ export type ListPaginateOutput = StorageListOutput<ListOutputItem> & {
62
110
  };
63
111
 
64
112
  /**
65
- * Output type for S3 copy API.
113
+ * Output type with path for S3 list API. Lists bucket objects with pagination.
114
+ */
115
+ export type ListPaginateWithPathOutput =
116
+ StorageListOutput<ListOutputItemWithPath> & {
117
+ nextToken?: string;
118
+ };
119
+
120
+ /**
121
+ * Output type with path for S3 copy API.
122
+ * @deprecated Use {@link CopyWithPathOutput} instead.
123
+ */
124
+ export type CopyOutput = Pick<ItemWithKey, 'key'>;
125
+ /**
126
+ * Output type with path for S3 copy API.
127
+ */
128
+ export type CopyWithPathOutput = Pick<ItemWithPath, 'path'>;
129
+
130
+ /**
131
+ * @deprecated Use {@link RemoveWithPathOutput} instead.
132
+ * Output type with key for S3 remove API.
66
133
  */
67
- export type CopyOutput = Pick<Item, 'key'>;
134
+ export type RemoveOutput = Pick<ItemWithKey, 'key'>;
68
135
 
69
136
  /**
70
- * Output type for S3 remove API.
137
+ * Output type with path for S3 remove API.
71
138
  */
72
- export type RemoveOutput = Pick<Item, 'key'>;
139
+ export type RemoveWithPathOutput = Pick<ItemWithPath, 'path'>;
@@ -39,7 +39,7 @@ export const parseXmlBody = async (response: HttpResponse): Promise<any> => {
39
39
  try {
40
40
  return parser.parse(data);
41
41
  } catch (error) {
42
- throw new Error('Failed to parse XML response.');
42
+ throw new Error(`Failed to parse XML response: ${error}`);
43
43
  }
44
44
  }
45
45
 
@@ -19,3 +19,7 @@ export const MAX_PARTS_COUNT = 10000;
19
19
  export const DEFAULT_QUEUE_SIZE = 4;
20
20
 
21
21
  export const UPLOADS_STORAGE_KEY = '__uploadInProgress';
22
+
23
+ export const STORAGE_INPUT_PREFIX = 'prefix';
24
+ export const STORAGE_INPUT_KEY = 'key';
25
+ export const STORAGE_INPUT_PATH = 'path';
@@ -4,3 +4,6 @@
4
4
  export { calculateContentMd5 } from './md5';
5
5
  export { resolveS3ConfigAndInput } from './resolveS3ConfigAndInput';
6
6
  export { createDownloadTask, createUploadTask } from './transferTask';
7
+ export { validateStorageOperationInput } from './validateStorageOperationInput';
8
+ export { validateStorageOperationInputWithPrefix } from './validateStorageOperationInputWithPrefix';
9
+ export { isInputWithPath } from './isInputWithPath';
@@ -0,0 +1,13 @@
1
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ import {
5
+ StorageOperationInput,
6
+ StorageOperationInputWithPath,
7
+ } from '../../../types/inputs';
8
+
9
+ export const isInputWithPath = (
10
+ input: StorageOperationInput,
11
+ ): input is StorageOperationInputWithPath => {
12
+ return input.path !== undefined;
13
+ };
@@ -5,7 +5,6 @@ import { AmplifyClassV6, StorageAccessLevel } from '@aws-amplify/core';
5
5
 
6
6
  import { assertValidationError } from '../../../errors/utils/assertValidationError';
7
7
  import { StorageValidationErrorCode } from '../../../errors/types/validation';
8
- import { StorageError } from '../../../errors/StorageError';
9
8
  import { resolvePrefix as defaultPrefixResolver } from '../../../utils/resolvePrefix';
10
9
  import { ResolvedS3Config } from '../types/options';
11
10
 
@@ -22,6 +21,7 @@ interface ResolvedS3ConfigAndInput {
22
21
  bucket: string;
23
22
  keyPrefix: string;
24
23
  isObjectLockEnabled?: boolean;
24
+ identityId?: string;
25
25
  }
26
26
 
27
27
  /**
@@ -30,7 +30,7 @@ interface ResolvedS3ConfigAndInput {
30
30
  * @param {AmplifyClassV6} amplify The Amplify instance.
31
31
  * @param {S3ApiOptions} apiOptions The input options for S3 provider.
32
32
  * @returns {Promise<ResolvedS3ConfigAndInput>} The resolved common input options for S3 API handlers.
33
- * @throws A {@link StorageError} with `error.name` from {@link StorageValidationErrorCode} indicating invalid
33
+ * @throws A `StorageError` with `error.name` from `StorageValidationErrorCode` indicating invalid
34
34
  * configurations or Amplify library options.
35
35
  *
36
36
  * @internal
@@ -84,6 +84,7 @@ export const resolveS3ConfigAndInput = async (
84
84
  },
85
85
  bucket,
86
86
  keyPrefix,
87
+ identityId,
87
88
  isObjectLockEnabled,
88
89
  };
89
90
  };
@@ -0,0 +1,39 @@
1
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ import { StorageOperationInput as Input } from '../../../types/inputs';
5
+ import { assertValidationError } from '../../../errors/utils/assertValidationError';
6
+ import { StorageValidationErrorCode } from '../../../errors/types/validation';
7
+
8
+ import { isInputWithPath } from './isInputWithPath';
9
+ import { STORAGE_INPUT_KEY, STORAGE_INPUT_PATH } from './constants';
10
+
11
+ export const validateStorageOperationInput = (
12
+ input: Input,
13
+ identityId?: string,
14
+ ) => {
15
+ assertValidationError(
16
+ // Key present without a path
17
+ (!!(input as Input).key && !(input as Input).path) ||
18
+ // Path present without a key
19
+ (!(input as Input).key && !!(input as Input).path),
20
+ StorageValidationErrorCode.InvalidStorageOperationInput,
21
+ );
22
+
23
+ if (isInputWithPath(input)) {
24
+ const { path } = input;
25
+ const objectKey = typeof path === 'string' ? path : path({ identityId });
26
+
27
+ assertValidationError(
28
+ !objectKey.startsWith('/'),
29
+ StorageValidationErrorCode.InvalidStoragePathInput,
30
+ );
31
+
32
+ return {
33
+ inputType: STORAGE_INPUT_PATH,
34
+ objectKey,
35
+ };
36
+ } else {
37
+ return { inputType: STORAGE_INPUT_KEY, objectKey: input.key };
38
+ }
39
+ };