@aws-amplify/storage 6.6.10 → 6.6.11-storage-browser-integrity.2a9053f.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 (563) hide show
  1. package/dist/cjs/errors/IntegrityError.js +22 -0
  2. package/dist/cjs/errors/IntegrityError.js.map +1 -0
  3. package/dist/cjs/errors/constants.js +8 -0
  4. package/dist/cjs/errors/constants.js.map +1 -0
  5. package/dist/cjs/errors/types/validation.js +16 -0
  6. package/dist/cjs/errors/types/validation.js.map +1 -1
  7. package/dist/cjs/index.js +3 -1
  8. package/dist/cjs/index.js.map +1 -1
  9. package/dist/cjs/internals/apis/copy.js +33 -0
  10. package/dist/cjs/internals/apis/copy.js.map +1 -0
  11. package/dist/cjs/internals/apis/downloadData.js +25 -0
  12. package/dist/cjs/internals/apis/downloadData.js.map +1 -0
  13. package/dist/cjs/internals/apis/getDataAccess.js +60 -0
  14. package/dist/cjs/internals/apis/getDataAccess.js.map +1 -0
  15. package/dist/cjs/internals/apis/getProperties.js +24 -0
  16. package/dist/cjs/internals/apis/getProperties.js.map +1 -0
  17. package/dist/cjs/internals/apis/getUrl.js +29 -0
  18. package/dist/cjs/internals/apis/getUrl.js.map +1 -0
  19. package/dist/cjs/internals/apis/list.js +32 -0
  20. package/dist/cjs/internals/apis/list.js.map +1 -0
  21. package/dist/cjs/internals/apis/listCallerAccessGrants.js +72 -0
  22. package/dist/cjs/internals/apis/listCallerAccessGrants.js.map +1 -0
  23. package/dist/cjs/internals/apis/remove.js +24 -0
  24. package/dist/cjs/internals/apis/remove.js.map +1 -0
  25. package/dist/cjs/internals/apis/uploadData.js +34 -0
  26. package/dist/cjs/internals/apis/uploadData.js.map +1 -0
  27. package/dist/cjs/internals/index.js +32 -0
  28. package/dist/cjs/internals/index.js.map +1 -0
  29. package/dist/cjs/internals/locationCredentialsStore/constants.js +9 -0
  30. package/dist/cjs/internals/locationCredentialsStore/constants.js.map +1 -0
  31. package/dist/cjs/internals/locationCredentialsStore/create.js +36 -0
  32. package/dist/cjs/internals/locationCredentialsStore/create.js.map +1 -0
  33. package/dist/cjs/internals/locationCredentialsStore/index.js +9 -0
  34. package/dist/cjs/internals/locationCredentialsStore/index.js.map +1 -0
  35. package/dist/cjs/internals/locationCredentialsStore/registry.js +57 -0
  36. package/dist/cjs/internals/locationCredentialsStore/registry.js.map +1 -0
  37. package/dist/cjs/internals/locationCredentialsStore/store.js +100 -0
  38. package/dist/cjs/internals/locationCredentialsStore/store.js.map +1 -0
  39. package/dist/cjs/internals/managedAuthConfigAdapter/createListLocationsHandler.js +15 -0
  40. package/dist/cjs/internals/managedAuthConfigAdapter/createListLocationsHandler.js.map +1 -0
  41. package/dist/cjs/internals/managedAuthConfigAdapter/createLocationCredentialsHandler.js +29 -0
  42. package/dist/cjs/internals/managedAuthConfigAdapter/createLocationCredentialsHandler.js.map +1 -0
  43. package/dist/cjs/internals/managedAuthConfigAdapter/createManagedAuthConfigAdapter.js +32 -0
  44. package/dist/cjs/internals/managedAuthConfigAdapter/createManagedAuthConfigAdapter.js.map +1 -0
  45. package/dist/cjs/internals/managedAuthConfigAdapter/index.js +9 -0
  46. package/dist/cjs/internals/managedAuthConfigAdapter/index.js.map +1 -0
  47. package/dist/cjs/internals/types/common.js +6 -0
  48. package/dist/cjs/internals/types/common.js.map +1 -0
  49. package/dist/cjs/internals/types/credentials.js +6 -0
  50. package/dist/cjs/internals/types/credentials.js.map +1 -0
  51. package/dist/cjs/internals/types/inputs.js +6 -0
  52. package/dist/cjs/internals/types/inputs.js.map +1 -0
  53. package/dist/cjs/internals/types/options.js +3 -0
  54. package/dist/cjs/internals/types/options.js.map +1 -0
  55. package/dist/cjs/internals/types/outputs.js +6 -0
  56. package/dist/cjs/internals/types/outputs.js.map +1 -0
  57. package/dist/cjs/internals/utils/constants.js +9 -0
  58. package/dist/cjs/internals/utils/constants.js.map +1 -0
  59. package/dist/cjs/providers/s3/apis/downloadData.js +2 -47
  60. package/dist/cjs/providers/s3/apis/downloadData.js.map +1 -1
  61. package/dist/cjs/providers/s3/apis/internal/copy.js +56 -8
  62. package/dist/cjs/providers/s3/apis/internal/copy.js.map +1 -1
  63. package/dist/cjs/providers/s3/apis/internal/downloadData.js +59 -0
  64. package/dist/cjs/providers/s3/apis/internal/downloadData.js.map +1 -0
  65. package/dist/cjs/providers/s3/apis/internal/getProperties.js +5 -4
  66. package/dist/cjs/providers/s3/apis/internal/getProperties.js.map +1 -1
  67. package/dist/cjs/providers/s3/apis/internal/getUrl.js +5 -3
  68. package/dist/cjs/providers/s3/apis/internal/getUrl.js.map +1 -1
  69. package/dist/cjs/providers/s3/apis/internal/list.js +20 -4
  70. package/dist/cjs/providers/s3/apis/internal/list.js.map +1 -1
  71. package/dist/cjs/providers/s3/apis/internal/remove.js +5 -4
  72. package/dist/cjs/providers/s3/apis/internal/remove.js.map +1 -1
  73. package/dist/cjs/providers/s3/apis/internal/uploadData/byteLength.js.map +1 -0
  74. package/dist/cjs/providers/s3/apis/{uploadData → internal/uploadData}/index.js +7 -7
  75. package/dist/cjs/providers/s3/apis/internal/uploadData/index.js.map +1 -0
  76. package/dist/cjs/providers/s3/apis/{uploadData → internal/uploadData}/multipart/calculatePartSize.js +1 -1
  77. package/dist/cjs/providers/s3/apis/internal/uploadData/multipart/calculatePartSize.js.map +1 -0
  78. package/dist/cjs/providers/s3/apis/{uploadData → internal/uploadData}/multipart/getDataChunker.js +2 -2
  79. package/dist/cjs/providers/s3/apis/internal/uploadData/multipart/getDataChunker.js.map +1 -0
  80. package/dist/cjs/providers/s3/apis/internal/uploadData/multipart/index.js.map +1 -0
  81. package/dist/cjs/providers/s3/apis/{uploadData → internal/uploadData}/multipart/initialUpload.js +26 -5
  82. package/dist/cjs/providers/s3/apis/internal/uploadData/multipart/initialUpload.js.map +1 -0
  83. package/dist/cjs/providers/s3/apis/internal/uploadData/multipart/progressTracker.js.map +1 -0
  84. package/dist/cjs/providers/s3/apis/{uploadData → internal/uploadData}/multipart/uploadCache.js +5 -4
  85. package/dist/cjs/providers/s3/apis/internal/uploadData/multipart/uploadCache.js.map +1 -0
  86. package/dist/cjs/providers/s3/apis/{uploadData → internal/uploadData}/multipart/uploadHandlers.js +33 -14
  87. package/dist/cjs/providers/s3/apis/internal/uploadData/multipart/uploadHandlers.js.map +1 -0
  88. package/dist/cjs/providers/s3/apis/{uploadData → internal/uploadData}/multipart/uploadPartExecutor.js +21 -11
  89. package/dist/cjs/providers/s3/apis/internal/uploadData/multipart/uploadPartExecutor.js.map +1 -0
  90. package/dist/cjs/providers/s3/apis/{uploadData → internal/uploadData}/putObjectJob.js +26 -11
  91. package/dist/cjs/providers/s3/apis/internal/uploadData/putObjectJob.js.map +1 -0
  92. package/dist/cjs/providers/s3/apis/internal/uploadData/validateObjectNotExists.js +25 -0
  93. package/dist/cjs/providers/s3/apis/internal/uploadData/validateObjectNotExists.js.map +1 -0
  94. package/dist/cjs/providers/s3/apis/uploadData.js +12 -0
  95. package/dist/cjs/providers/s3/apis/uploadData.js.map +1 -0
  96. package/dist/cjs/providers/s3/index.js +3 -1
  97. package/dist/cjs/providers/s3/index.js.map +1 -1
  98. package/dist/cjs/providers/s3/utils/client/s3control/base.js +70 -0
  99. package/dist/cjs/providers/s3/utils/client/s3control/base.js.map +1 -0
  100. package/dist/cjs/providers/s3/utils/client/s3control/getDataAccess.js +58 -0
  101. package/dist/cjs/providers/s3/utils/client/s3control/getDataAccess.js.map +1 -0
  102. package/dist/cjs/providers/s3/utils/client/s3control/index.js +11 -0
  103. package/dist/cjs/providers/s3/utils/client/s3control/index.js.map +1 -0
  104. package/dist/cjs/providers/s3/utils/client/s3control/listCallerAccessGrants.js +63 -0
  105. package/dist/cjs/providers/s3/utils/client/s3control/listCallerAccessGrants.js.map +1 -0
  106. package/dist/cjs/providers/s3/utils/client/s3control/types.js.map +1 -0
  107. package/dist/cjs/providers/s3/utils/client/{abortMultipartUpload.js → s3data/abortMultipartUpload.js} +14 -3
  108. package/dist/cjs/providers/s3/utils/client/s3data/abortMultipartUpload.js.map +1 -0
  109. package/dist/cjs/providers/s3/utils/client/{base.js → s3data/base.js} +25 -3
  110. package/dist/cjs/providers/s3/utils/client/s3data/base.js.map +1 -0
  111. package/dist/cjs/providers/s3/utils/client/{completeMultipartUpload.js → s3data/completeMultipartUpload.js} +29 -13
  112. package/dist/cjs/providers/s3/utils/client/s3data/completeMultipartUpload.js.map +1 -0
  113. package/dist/cjs/providers/s3/utils/client/{copyObject.js → s3data/copyObject.js} +27 -3
  114. package/dist/cjs/providers/s3/utils/client/s3data/copyObject.js.map +1 -0
  115. package/dist/cjs/providers/s3/utils/client/{createMultipartUpload.js → s3data/createMultipartUpload.js} +15 -3
  116. package/dist/cjs/providers/s3/utils/client/s3data/createMultipartUpload.js.map +1 -0
  117. package/dist/cjs/providers/s3/utils/client/{deleteObject.js → s3data/deleteObject.js} +12 -3
  118. package/dist/cjs/providers/s3/utils/client/s3data/deleteObject.js.map +1 -0
  119. package/dist/cjs/providers/s3/utils/client/{getObject.js → s3data/getObject.js} +12 -3
  120. package/dist/cjs/providers/s3/utils/client/s3data/getObject.js.map +1 -0
  121. package/dist/cjs/providers/s3/utils/client/{headObject.js → s3data/headObject.js} +12 -3
  122. package/dist/cjs/providers/s3/utils/client/s3data/headObject.js.map +1 -0
  123. package/dist/cjs/providers/s3/utils/client/s3data/index.js.map +1 -0
  124. package/dist/cjs/providers/s3/utils/client/{listObjectsV2.js → s3data/listObjectsV2.js} +15 -3
  125. package/dist/cjs/providers/s3/utils/client/s3data/listObjectsV2.js.map +1 -0
  126. package/dist/cjs/providers/s3/utils/client/{listParts.js → s3data/listParts.js} +3 -8
  127. package/dist/cjs/providers/s3/utils/client/s3data/listParts.js.map +1 -0
  128. package/dist/cjs/providers/s3/utils/client/{putObject.js → s3data/putObject.js} +13 -3
  129. package/dist/cjs/providers/s3/utils/client/s3data/putObject.js.map +1 -0
  130. package/dist/cjs/providers/s3/utils/client/s3data/types.js +6 -0
  131. package/dist/cjs/providers/s3/utils/client/s3data/types.js.map +1 -0
  132. package/dist/cjs/providers/s3/utils/client/{uploadPart.js → s3data/uploadPart.js} +14 -4
  133. package/dist/cjs/providers/s3/utils/client/s3data/uploadPart.js.map +1 -0
  134. package/dist/cjs/providers/s3/utils/client/utils/createRetryDecider.js +57 -0
  135. package/dist/cjs/providers/s3/utils/client/utils/createRetryDecider.js.map +1 -0
  136. package/dist/cjs/providers/s3/utils/client/utils/deserializeHelpers.js +46 -1
  137. package/dist/cjs/providers/s3/utils/client/utils/deserializeHelpers.js.map +1 -1
  138. package/dist/cjs/providers/s3/utils/client/utils/index.js +7 -2
  139. package/dist/cjs/providers/s3/utils/client/utils/index.js.map +1 -1
  140. package/dist/cjs/providers/s3/utils/client/utils/integrityHelpers.js +60 -0
  141. package/dist/cjs/providers/s3/utils/client/utils/integrityHelpers.js.map +1 -0
  142. package/dist/cjs/providers/s3/utils/client/utils/parsePayload.js +20 -6
  143. package/dist/cjs/providers/s3/utils/client/utils/parsePayload.js.map +1 -1
  144. package/dist/cjs/providers/s3/utils/constants.js +3 -0
  145. package/dist/cjs/providers/s3/utils/constants.js.map +1 -1
  146. package/dist/cjs/providers/s3/utils/crc32.js +37 -0
  147. package/dist/cjs/providers/s3/utils/crc32.js.map +1 -0
  148. package/dist/cjs/providers/s3/utils/crc32.native.js +11 -0
  149. package/dist/cjs/providers/s3/utils/crc32.native.js.map +1 -0
  150. package/dist/cjs/providers/s3/utils/index.js +3 -1
  151. package/dist/cjs/providers/s3/utils/index.js.map +1 -1
  152. package/dist/cjs/providers/s3/utils/resolveIdentityId.js +14 -0
  153. package/dist/cjs/providers/s3/utils/resolveIdentityId.js.map +1 -0
  154. package/dist/cjs/providers/s3/utils/resolveS3ConfigAndInput.js +59 -13
  155. package/dist/cjs/providers/s3/utils/resolveS3ConfigAndInput.js.map +1 -1
  156. package/dist/cjs/providers/s3/utils/validateBucketOwnerID.js +17 -0
  157. package/dist/cjs/providers/s3/utils/validateBucketOwnerID.js.map +1 -0
  158. package/dist/cjs/providers/s3/utils/validateMultipartUploadXML.js +27 -0
  159. package/dist/cjs/providers/s3/utils/validateMultipartUploadXML.js.map +1 -0
  160. package/dist/cjs/providers/s3/utils/validateObjectUrl.js +24 -0
  161. package/dist/cjs/providers/s3/utils/validateObjectUrl.js.map +1 -0
  162. package/dist/cjs/providers/s3/utils/validateStorageOperationInput.js +4 -1
  163. package/dist/cjs/providers/s3/utils/validateStorageOperationInput.js.map +1 -1
  164. package/dist/cjs/providers/s3/utils/validateStorageOperationInputWithPrefix.js +4 -1
  165. package/dist/cjs/providers/s3/utils/validateStorageOperationInputWithPrefix.js.map +1 -1
  166. package/dist/esm/errors/IntegrityError.d.ts +5 -0
  167. package/dist/esm/errors/IntegrityError.mjs +20 -0
  168. package/dist/esm/errors/IntegrityError.mjs.map +1 -0
  169. package/dist/esm/errors/constants.d.ts +1 -0
  170. package/dist/esm/errors/constants.mjs +6 -0
  171. package/dist/esm/errors/constants.mjs.map +1 -0
  172. package/dist/esm/errors/types/validation.d.ts +5 -1
  173. package/dist/esm/errors/types/validation.mjs +16 -0
  174. package/dist/esm/errors/types/validation.mjs.map +1 -1
  175. package/dist/esm/index.d.ts +1 -0
  176. package/dist/esm/index.mjs +2 -1
  177. package/dist/esm/index.mjs.map +1 -1
  178. package/dist/esm/internals/apis/copy.d.ts +5 -0
  179. package/dist/esm/internals/apis/copy.mjs +31 -0
  180. package/dist/esm/internals/apis/copy.mjs.map +1 -0
  181. package/dist/esm/internals/apis/downloadData.d.ts +6 -0
  182. package/dist/esm/internals/apis/downloadData.mjs +23 -0
  183. package/dist/esm/internals/apis/downloadData.mjs.map +1 -0
  184. package/dist/esm/internals/apis/getDataAccess.d.ts +6 -0
  185. package/dist/esm/internals/apis/getDataAccess.mjs +60 -0
  186. package/dist/esm/internals/apis/getDataAccess.mjs.map +1 -0
  187. package/dist/esm/internals/apis/getProperties.d.ts +6 -0
  188. package/dist/esm/internals/apis/getProperties.mjs +22 -0
  189. package/dist/esm/internals/apis/getProperties.mjs.map +1 -0
  190. package/dist/esm/internals/apis/getUrl.d.ts +5 -0
  191. package/dist/esm/internals/apis/getUrl.mjs +27 -0
  192. package/dist/esm/internals/apis/getUrl.mjs.map +1 -0
  193. package/dist/esm/internals/apis/list.d.ts +10 -0
  194. package/dist/esm/internals/apis/list.mjs +30 -0
  195. package/dist/esm/internals/apis/list.mjs.map +1 -0
  196. package/dist/esm/internals/apis/listCallerAccessGrants.d.ts +6 -0
  197. package/dist/esm/internals/apis/listCallerAccessGrants.mjs +72 -0
  198. package/dist/esm/internals/apis/listCallerAccessGrants.mjs.map +1 -0
  199. package/dist/esm/internals/apis/remove.d.ts +6 -0
  200. package/dist/esm/internals/apis/remove.mjs +22 -0
  201. package/dist/esm/internals/apis/remove.mjs.map +1 -0
  202. package/dist/esm/internals/apis/uploadData.d.ts +5 -0
  203. package/dist/esm/internals/apis/uploadData.mjs +32 -0
  204. package/dist/esm/internals/apis/uploadData.mjs.map +1 -0
  205. package/dist/esm/internals/index.d.ts +18 -0
  206. package/dist/esm/internals/index.mjs +12 -0
  207. package/dist/esm/internals/index.mjs.map +1 -0
  208. package/dist/esm/internals/locationCredentialsStore/constants.d.ts +2 -0
  209. package/dist/esm/internals/locationCredentialsStore/constants.mjs +7 -0
  210. package/dist/esm/internals/locationCredentialsStore/constants.mjs.map +1 -0
  211. package/dist/esm/internals/locationCredentialsStore/create.d.ts +2 -0
  212. package/dist/esm/internals/locationCredentialsStore/create.mjs +34 -0
  213. package/dist/esm/internals/locationCredentialsStore/create.mjs.map +1 -0
  214. package/dist/esm/internals/locationCredentialsStore/index.d.ts +1 -0
  215. package/dist/esm/internals/locationCredentialsStore/index.mjs +2 -0
  216. package/dist/esm/internals/locationCredentialsStore/registry.d.ts +23 -0
  217. package/dist/esm/internals/locationCredentialsStore/registry.mjs +53 -0
  218. package/dist/esm/internals/locationCredentialsStore/registry.mjs.map +1 -0
  219. package/dist/esm/internals/locationCredentialsStore/store.d.ts +36 -0
  220. package/dist/esm/internals/locationCredentialsStore/store.mjs +96 -0
  221. package/dist/esm/internals/locationCredentialsStore/store.mjs.map +1 -0
  222. package/dist/esm/internals/managedAuthConfigAdapter/createListLocationsHandler.d.ts +8 -0
  223. package/dist/esm/internals/managedAuthConfigAdapter/createListLocationsHandler.mjs +13 -0
  224. package/dist/esm/internals/managedAuthConfigAdapter/createListLocationsHandler.mjs.map +1 -0
  225. package/dist/esm/internals/managedAuthConfigAdapter/createLocationCredentialsHandler.d.ts +8 -0
  226. package/dist/esm/internals/managedAuthConfigAdapter/createLocationCredentialsHandler.mjs +27 -0
  227. package/dist/esm/internals/managedAuthConfigAdapter/createLocationCredentialsHandler.mjs.map +1 -0
  228. package/dist/esm/internals/managedAuthConfigAdapter/createManagedAuthConfigAdapter.d.ts +19 -0
  229. package/dist/esm/internals/managedAuthConfigAdapter/createManagedAuthConfigAdapter.mjs +30 -0
  230. package/dist/esm/internals/managedAuthConfigAdapter/createManagedAuthConfigAdapter.mjs.map +1 -0
  231. package/dist/esm/internals/managedAuthConfigAdapter/index.d.ts +1 -0
  232. package/dist/esm/internals/managedAuthConfigAdapter/index.mjs +2 -0
  233. package/dist/esm/internals/managedAuthConfigAdapter/index.mjs.map +1 -0
  234. package/dist/esm/internals/types/common.d.ts +16 -0
  235. package/dist/esm/internals/types/common.mjs +2 -0
  236. package/dist/esm/internals/types/common.mjs.map +1 -0
  237. package/dist/esm/internals/types/credentials.d.ts +86 -0
  238. package/dist/esm/internals/types/credentials.mjs +2 -0
  239. package/dist/esm/internals/types/credentials.mjs.map +1 -0
  240. package/dist/esm/internals/types/inputs.d.ts +92 -0
  241. package/dist/esm/internals/types/inputs.mjs +2 -0
  242. package/dist/esm/internals/types/inputs.mjs.map +1 -0
  243. package/dist/esm/internals/types/options.mjs +2 -0
  244. package/dist/esm/internals/types/options.mjs.map +1 -0
  245. package/dist/esm/internals/types/outputs.d.ts +38 -0
  246. package/dist/esm/internals/types/outputs.mjs +2 -0
  247. package/dist/esm/internals/types/outputs.mjs.map +1 -0
  248. package/dist/esm/internals/utils/constants.d.ts +2 -0
  249. package/dist/esm/internals/utils/constants.mjs +7 -0
  250. package/dist/esm/internals/utils/constants.mjs.map +1 -0
  251. package/dist/esm/providers/s3/apis/downloadData.mjs +2 -66
  252. package/dist/esm/providers/s3/apis/downloadData.mjs.map +1 -1
  253. package/dist/esm/providers/s3/apis/index.mjs +1 -1
  254. package/dist/esm/providers/s3/apis/internal/copy.d.ts +3 -2
  255. package/dist/esm/providers/s3/apis/internal/copy.mjs +67 -18
  256. package/dist/esm/providers/s3/apis/internal/copy.mjs.map +1 -1
  257. package/dist/esm/providers/s3/apis/internal/downloadData.d.ts +8 -0
  258. package/dist/esm/providers/s3/apis/internal/downloadData.mjs +77 -0
  259. package/dist/esm/providers/s3/apis/internal/downloadData.mjs.map +1 -0
  260. package/dist/esm/providers/s3/apis/internal/getProperties.d.ts +3 -2
  261. package/dist/esm/providers/s3/apis/internal/getProperties.mjs +16 -14
  262. package/dist/esm/providers/s3/apis/internal/getProperties.mjs.map +1 -1
  263. package/dist/esm/providers/s3/apis/internal/getUrl.d.ts +3 -2
  264. package/dist/esm/providers/s3/apis/internal/getUrl.mjs +16 -13
  265. package/dist/esm/providers/s3/apis/internal/getUrl.mjs.map +1 -1
  266. package/dist/esm/providers/s3/apis/internal/list.d.ts +4 -2
  267. package/dist/esm/providers/s3/apis/internal/list.mjs +31 -14
  268. package/dist/esm/providers/s3/apis/internal/list.mjs.map +1 -1
  269. package/dist/esm/providers/s3/apis/internal/remove.d.ts +3 -2
  270. package/dist/esm/providers/s3/apis/internal/remove.mjs +16 -14
  271. package/dist/esm/providers/s3/apis/internal/remove.mjs.map +1 -1
  272. package/dist/esm/providers/s3/apis/internal/uploadData/byteLength.mjs.map +1 -0
  273. package/dist/esm/providers/s3/apis/internal/uploadData/index.d.ts +3 -0
  274. package/dist/esm/providers/s3/apis/{uploadData → internal/uploadData}/index.mjs +9 -9
  275. package/dist/esm/providers/s3/apis/internal/uploadData/index.mjs.map +1 -0
  276. package/dist/esm/providers/s3/apis/{uploadData → internal/uploadData}/multipart/calculatePartSize.mjs +1 -1
  277. package/dist/esm/providers/s3/apis/internal/uploadData/multipart/calculatePartSize.mjs.map +1 -0
  278. package/dist/esm/providers/s3/apis/{uploadData → internal/uploadData}/multipart/getDataChunker.d.ts +1 -1
  279. package/dist/esm/providers/s3/apis/{uploadData → internal/uploadData}/multipart/getDataChunker.mjs +2 -2
  280. package/dist/esm/providers/s3/apis/internal/uploadData/multipart/getDataChunker.mjs.map +1 -0
  281. package/dist/esm/providers/s3/apis/internal/uploadData/multipart/index.mjs.map +1 -0
  282. package/dist/esm/providers/s3/apis/{uploadData → internal/uploadData}/multipart/initialUpload.d.ts +6 -4
  283. package/dist/esm/providers/s3/apis/{uploadData → internal/uploadData}/multipart/initialUpload.mjs +37 -16
  284. package/dist/esm/providers/s3/apis/internal/uploadData/multipart/initialUpload.mjs.map +1 -0
  285. package/dist/esm/providers/s3/apis/{uploadData → internal/uploadData}/multipart/progressTracker.d.ts +1 -1
  286. package/dist/esm/providers/s3/apis/internal/uploadData/multipart/progressTracker.mjs.map +1 -0
  287. package/dist/esm/providers/s3/apis/{uploadData → internal/uploadData}/multipart/uploadCache.d.ts +4 -2
  288. package/dist/esm/providers/s3/apis/{uploadData → internal/uploadData}/multipart/uploadCache.mjs +16 -15
  289. package/dist/esm/providers/s3/apis/internal/uploadData/multipart/uploadCache.mjs.map +1 -0
  290. package/dist/esm/providers/s3/apis/{uploadData → internal/uploadData}/multipart/uploadHandlers.d.ts +2 -2
  291. package/dist/esm/providers/s3/apis/{uploadData → internal/uploadData}/multipart/uploadHandlers.mjs +45 -26
  292. package/dist/esm/providers/s3/apis/internal/uploadData/multipart/uploadHandlers.mjs.map +1 -0
  293. package/dist/esm/providers/s3/apis/{uploadData → internal/uploadData}/multipart/uploadPartExecutor.d.ts +6 -4
  294. package/dist/esm/providers/s3/apis/internal/uploadData/multipart/uploadPartExecutor.mjs +73 -0
  295. package/dist/esm/providers/s3/apis/internal/uploadData/multipart/uploadPartExecutor.mjs.map +1 -0
  296. package/dist/esm/providers/s3/apis/{uploadData → internal/uploadData}/putObjectJob.d.ts +2 -2
  297. package/dist/esm/providers/s3/apis/internal/uploadData/putObjectJob.mjs +83 -0
  298. package/dist/esm/providers/s3/apis/internal/uploadData/putObjectJob.mjs.map +1 -0
  299. package/dist/esm/providers/s3/apis/internal/uploadData/validateObjectNotExists.d.ts +3 -0
  300. package/dist/esm/providers/s3/apis/internal/uploadData/validateObjectNotExists.mjs +34 -0
  301. package/dist/esm/providers/s3/apis/internal/uploadData/validateObjectNotExists.mjs.map +1 -0
  302. package/dist/esm/providers/s3/apis/{uploadData/index.d.ts → uploadData.d.ts} +1 -1
  303. package/dist/esm/providers/s3/apis/uploadData.mjs +10 -0
  304. package/dist/esm/providers/s3/apis/uploadData.mjs.map +1 -0
  305. package/dist/esm/providers/s3/index.d.ts +1 -0
  306. package/dist/esm/providers/s3/index.mjs +2 -1
  307. package/dist/esm/providers/s3/index.mjs.map +1 -1
  308. package/dist/esm/providers/s3/types/options.d.ts +34 -1
  309. package/dist/esm/providers/s3/utils/client/s3control/base.d.ts +56 -0
  310. package/dist/esm/providers/s3/utils/client/s3control/base.mjs +74 -0
  311. package/dist/esm/providers/s3/utils/client/s3control/base.mjs.map +1 -0
  312. package/dist/esm/providers/s3/utils/client/s3control/getDataAccess.d.ts +26 -0
  313. package/dist/esm/providers/s3/utils/client/s3control/getDataAccess.mjs +63 -0
  314. package/dist/esm/providers/s3/utils/client/s3control/getDataAccess.mjs.map +1 -0
  315. package/dist/esm/providers/s3/utils/client/s3control/index.d.ts +2 -0
  316. package/dist/esm/providers/s3/utils/client/s3control/index.mjs +3 -0
  317. package/dist/esm/providers/s3/utils/client/s3control/index.mjs.map +1 -0
  318. package/dist/esm/providers/s3/utils/client/s3control/listCallerAccessGrants.d.ts +26 -0
  319. package/dist/esm/providers/s3/utils/client/s3control/listCallerAccessGrants.mjs +67 -0
  320. package/dist/esm/providers/s3/utils/client/s3control/listCallerAccessGrants.mjs.map +1 -0
  321. package/dist/esm/providers/s3/utils/client/s3control/types.d.ts +188 -0
  322. package/dist/esm/providers/s3/utils/client/{abortMultipartUpload.d.ts → s3data/abortMultipartUpload.d.ts} +5 -5
  323. package/dist/esm/providers/s3/utils/client/{abortMultipartUpload.mjs → s3data/abortMultipartUpload.mjs} +17 -7
  324. package/dist/esm/providers/s3/utils/client/s3data/abortMultipartUpload.mjs.map +1 -0
  325. package/dist/esm/providers/s3/utils/client/{base.d.ts → s3data/base.d.ts} +23 -1
  326. package/dist/esm/providers/s3/utils/client/{base.mjs → s3data/base.mjs} +29 -6
  327. package/dist/esm/providers/s3/utils/client/s3data/base.mjs.map +1 -0
  328. package/dist/esm/providers/s3/utils/client/{completeMultipartUpload.d.ts → s3data/completeMultipartUpload.d.ts} +6 -6
  329. package/dist/esm/providers/s3/utils/client/{completeMultipartUpload.mjs → s3data/completeMultipartUpload.mjs} +32 -16
  330. package/dist/esm/providers/s3/utils/client/s3data/completeMultipartUpload.mjs.map +1 -0
  331. package/dist/esm/providers/s3/utils/client/{copyObject.d.ts → s3data/copyObject.d.ts} +6 -5
  332. package/dist/esm/providers/s3/utils/client/s3data/copyObject.mjs +71 -0
  333. package/dist/esm/providers/s3/utils/client/s3data/copyObject.mjs.map +1 -0
  334. package/dist/esm/providers/s3/utils/client/{createMultipartUpload.d.ts → s3data/createMultipartUpload.d.ts} +4 -4
  335. package/dist/esm/providers/s3/utils/client/{createMultipartUpload.mjs → s3data/createMultipartUpload.mjs} +19 -7
  336. package/dist/esm/providers/s3/utils/client/s3data/createMultipartUpload.mjs.map +1 -0
  337. package/dist/esm/providers/s3/utils/client/{deleteObject.d.ts → s3data/deleteObject.d.ts} +5 -5
  338. package/dist/esm/providers/s3/utils/client/{deleteObject.mjs → s3data/deleteObject.mjs} +15 -7
  339. package/dist/esm/providers/s3/utils/client/s3data/deleteObject.mjs.map +1 -0
  340. package/dist/esm/providers/s3/utils/client/{getObject.d.ts → s3data/getObject.d.ts} +5 -5
  341. package/dist/esm/providers/s3/utils/client/{getObject.mjs → s3data/getObject.mjs} +16 -8
  342. package/dist/esm/providers/s3/utils/client/s3data/getObject.mjs.map +1 -0
  343. package/dist/esm/providers/s3/utils/client/{headObject.d.ts → s3data/headObject.d.ts} +5 -5
  344. package/dist/esm/providers/s3/utils/client/{headObject.mjs → s3data/headObject.mjs} +15 -7
  345. package/dist/esm/providers/s3/utils/client/s3data/headObject.mjs.map +1 -0
  346. package/dist/esm/providers/s3/utils/client/{listObjectsV2.d.ts → s3data/listObjectsV2.d.ts} +4 -4
  347. package/dist/esm/providers/s3/utils/client/{listObjectsV2.mjs → s3data/listObjectsV2.mjs} +19 -7
  348. package/dist/esm/providers/s3/utils/client/s3data/listObjectsV2.mjs.map +1 -0
  349. package/dist/esm/providers/s3/utils/client/{listParts.d.ts → s3data/listParts.d.ts} +4 -4
  350. package/dist/esm/providers/s3/utils/client/{listParts.mjs → s3data/listParts.mjs} +6 -11
  351. package/dist/esm/providers/s3/utils/client/s3data/listParts.mjs.map +1 -0
  352. package/dist/esm/providers/s3/utils/client/{putObject.d.ts → s3data/putObject.d.ts} +5 -5
  353. package/dist/esm/providers/s3/utils/client/{putObject.mjs → s3data/putObject.mjs} +16 -7
  354. package/dist/esm/providers/s3/utils/client/s3data/putObject.mjs.map +1 -0
  355. package/dist/esm/providers/s3/utils/client/s3data/types.mjs +2 -0
  356. package/dist/esm/providers/s3/utils/client/s3data/types.mjs.map +1 -0
  357. package/dist/esm/providers/s3/utils/client/{uploadPart.d.ts → s3data/uploadPart.d.ts} +5 -5
  358. package/dist/esm/providers/s3/utils/client/{uploadPart.mjs → s3data/uploadPart.mjs} +17 -8
  359. package/dist/esm/providers/s3/utils/client/s3data/uploadPart.mjs.map +1 -0
  360. package/dist/esm/providers/s3/utils/client/utils/createRetryDecider.d.ts +22 -0
  361. package/dist/esm/providers/s3/utils/client/utils/createRetryDecider.mjs +55 -0
  362. package/dist/esm/providers/s3/utils/client/utils/createRetryDecider.mjs.map +1 -0
  363. package/dist/esm/providers/s3/utils/client/utils/deserializeHelpers.d.ts +24 -0
  364. package/dist/esm/providers/s3/utils/client/utils/deserializeHelpers.mjs +44 -1
  365. package/dist/esm/providers/s3/utils/client/utils/deserializeHelpers.mjs.map +1 -1
  366. package/dist/esm/providers/s3/utils/client/utils/index.d.ts +4 -2
  367. package/dist/esm/providers/s3/utils/client/utils/index.mjs +4 -2
  368. package/dist/esm/providers/s3/utils/client/utils/index.mjs.map +1 -1
  369. package/dist/esm/providers/s3/utils/client/utils/integrityHelpers.d.ts +20 -0
  370. package/dist/esm/providers/s3/utils/client/utils/integrityHelpers.mjs +54 -0
  371. package/dist/esm/providers/s3/utils/client/utils/integrityHelpers.mjs.map +1 -0
  372. package/dist/esm/providers/s3/utils/client/utils/parsePayload.d.ts +16 -1
  373. package/dist/esm/providers/s3/utils/client/utils/parsePayload.mjs +19 -5
  374. package/dist/esm/providers/s3/utils/client/utils/parsePayload.mjs.map +1 -1
  375. package/dist/esm/providers/s3/utils/constants.d.ts +3 -0
  376. package/dist/esm/providers/s3/utils/constants.mjs +3 -0
  377. package/dist/esm/providers/s3/utils/constants.mjs.map +1 -1
  378. package/dist/esm/providers/s3/utils/crc32.d.ts +6 -0
  379. package/dist/esm/providers/s3/utils/crc32.mjs +34 -0
  380. package/dist/esm/providers/s3/utils/crc32.mjs.map +1 -0
  381. package/dist/esm/providers/s3/utils/crc32.native.d.ts +2 -0
  382. package/dist/esm/providers/s3/utils/crc32.native.mjs +8 -0
  383. package/dist/esm/providers/s3/utils/crc32.native.mjs.map +1 -0
  384. package/dist/esm/providers/s3/utils/index.d.ts +1 -0
  385. package/dist/esm/providers/s3/utils/index.mjs +1 -0
  386. package/dist/esm/providers/s3/utils/index.mjs.map +1 -1
  387. package/dist/esm/providers/s3/utils/resolveIdentityId.d.ts +1 -0
  388. package/dist/esm/providers/s3/utils/resolveIdentityId.mjs +12 -0
  389. package/dist/esm/providers/s3/utils/resolveIdentityId.mjs.map +1 -0
  390. package/dist/esm/providers/s3/utils/resolveS3ConfigAndInput.d.ts +10 -2
  391. package/dist/esm/providers/s3/utils/resolveS3ConfigAndInput.mjs +57 -11
  392. package/dist/esm/providers/s3/utils/resolveS3ConfigAndInput.mjs.map +1 -1
  393. package/dist/esm/providers/s3/utils/validateBucketOwnerID.d.ts +1 -0
  394. package/dist/esm/providers/s3/utils/validateBucketOwnerID.mjs +15 -0
  395. package/dist/esm/providers/s3/utils/validateBucketOwnerID.mjs.map +1 -0
  396. package/dist/esm/providers/s3/utils/validateMultipartUploadXML.d.ts +2 -0
  397. package/dist/esm/providers/s3/utils/validateMultipartUploadXML.mjs +30 -0
  398. package/dist/esm/providers/s3/utils/validateMultipartUploadXML.mjs.map +1 -0
  399. package/dist/esm/providers/s3/utils/validateObjectUrl.d.ts +5 -0
  400. package/dist/esm/providers/s3/utils/validateObjectUrl.mjs +22 -0
  401. package/dist/esm/providers/s3/utils/validateObjectUrl.mjs.map +1 -0
  402. package/dist/esm/providers/s3/utils/validateStorageOperationInput.mjs +4 -1
  403. package/dist/esm/providers/s3/utils/validateStorageOperationInput.mjs.map +1 -1
  404. package/dist/esm/providers/s3/utils/validateStorageOperationInputWithPrefix.mjs +4 -1
  405. package/dist/esm/providers/s3/utils/validateStorageOperationInputWithPrefix.mjs.map +1 -1
  406. package/dist/esm/types/inputs.d.ts +3 -7
  407. package/internals/package.json +7 -0
  408. package/package.json +118 -107
  409. package/src/errors/IntegrityError.ts +25 -0
  410. package/src/errors/constants.ts +4 -0
  411. package/src/errors/types/validation.ts +16 -0
  412. package/src/index.ts +2 -0
  413. package/src/internals/apis/copy.ts +33 -0
  414. package/src/internals/apis/downloadData.ts +24 -0
  415. package/src/internals/apis/getDataAccess.ts +82 -0
  416. package/src/internals/apis/getProperties.ts +26 -0
  417. package/src/internals/apis/getUrl.ts +30 -0
  418. package/src/internals/apis/list.ts +46 -0
  419. package/src/internals/apis/listCallerAccessGrants.ts +95 -0
  420. package/src/internals/apis/remove.ts +24 -0
  421. package/src/internals/apis/uploadData.ts +34 -0
  422. package/src/internals/index.ts +67 -0
  423. package/src/internals/locationCredentialsStore/constants.ts +5 -0
  424. package/src/internals/locationCredentialsStore/create.ts +54 -0
  425. package/src/internals/locationCredentialsStore/index.ts +4 -0
  426. package/src/internals/locationCredentialsStore/registry.ts +89 -0
  427. package/src/internals/locationCredentialsStore/store.ts +159 -0
  428. package/src/internals/managedAuthConfigAdapter/createListLocationsHandler.ts +21 -0
  429. package/src/internals/managedAuthConfigAdapter/createLocationCredentialsHandler.ts +40 -0
  430. package/src/internals/managedAuthConfigAdapter/createManagedAuthConfigAdapter.ts +53 -0
  431. package/src/internals/managedAuthConfigAdapter/index.ts +8 -0
  432. package/src/internals/types/common.ts +22 -0
  433. package/src/internals/types/credentials.ts +109 -0
  434. package/src/internals/types/inputs.ts +153 -0
  435. package/src/internals/types/options.ts +2 -0
  436. package/src/internals/types/outputs.ts +60 -0
  437. package/src/internals/utils/constants.ts +5 -0
  438. package/src/providers/s3/apis/downloadData.ts +3 -84
  439. package/src/providers/s3/apis/internal/copy.ts +71 -15
  440. package/src/providers/s3/apis/internal/downloadData.ts +96 -0
  441. package/src/providers/s3/apis/internal/getProperties.ts +10 -5
  442. package/src/providers/s3/apis/internal/getUrl.ts +9 -9
  443. package/src/providers/s3/apis/internal/list.ts +38 -17
  444. package/src/providers/s3/apis/internal/remove.ts +9 -10
  445. package/src/providers/s3/apis/internal/uploadData/index.ts +53 -0
  446. package/src/providers/s3/apis/{uploadData → internal/uploadData}/multipart/calculatePartSize.ts +4 -1
  447. package/src/providers/s3/apis/{uploadData → internal/uploadData}/multipart/getDataChunker.ts +3 -3
  448. package/src/providers/s3/apis/{uploadData → internal/uploadData}/multipart/initialUpload.ts +40 -5
  449. package/src/providers/s3/apis/{uploadData → internal/uploadData}/multipart/progressTracker.ts +1 -1
  450. package/src/providers/s3/apis/{uploadData → internal/uploadData}/multipart/uploadCache.ts +7 -4
  451. package/src/providers/s3/apis/{uploadData → internal/uploadData}/multipart/uploadHandlers.ts +53 -26
  452. package/src/providers/s3/apis/{uploadData → internal/uploadData}/multipart/uploadPartExecutor.ts +29 -10
  453. package/src/providers/s3/apis/{uploadData → internal/uploadData}/putObjectJob.ts +32 -11
  454. package/src/providers/s3/apis/internal/uploadData/validateObjectNotExists.ts +25 -0
  455. package/src/providers/s3/apis/{uploadData/index.ts → uploadData.ts} +3 -42
  456. package/src/providers/s3/index.ts +2 -0
  457. package/src/providers/s3/types/options.ts +47 -1
  458. package/src/providers/s3/utils/client/s3control/base.ts +97 -0
  459. package/src/providers/s3/utils/client/s3control/getDataAccess.ts +96 -0
  460. package/src/providers/s3/utils/client/s3control/index.ts +13 -0
  461. package/src/providers/s3/utils/client/s3control/listCallerAccessGrants.ts +107 -0
  462. package/src/providers/s3/utils/client/s3control/types.ts +216 -0
  463. package/src/providers/s3/utils/client/{abortMultipartUpload.ts → s3data/abortMultipartUpload.ts} +18 -6
  464. package/src/providers/s3/utils/client/{base.ts → s3data/base.ts} +26 -3
  465. package/src/providers/s3/utils/client/{completeMultipartUpload.ts → s3data/completeMultipartUpload.ts} +47 -22
  466. package/src/providers/s3/utils/client/{copyObject.ts → s3data/copyObject.ts} +47 -4
  467. package/src/providers/s3/utils/client/{createMultipartUpload.ts → s3data/createMultipartUpload.ts} +22 -9
  468. package/src/providers/s3/utils/client/{deleteObject.ts → s3data/deleteObject.ts} +19 -9
  469. package/src/providers/s3/utils/client/{getObject.ts → s3data/getObject.ts} +24 -9
  470. package/src/providers/s3/utils/client/{headObject.ts → s3data/headObject.ts} +19 -6
  471. package/src/providers/s3/utils/client/{listObjectsV2.ts → s3data/listObjectsV2.ts} +33 -8
  472. package/src/providers/s3/utils/client/{listParts.ts → s3data/listParts.ts} +5 -18
  473. package/src/providers/s3/utils/client/{putObject.ts → s3data/putObject.ts} +17 -5
  474. package/src/providers/s3/utils/client/{uploadPart.ts → s3data/uploadPart.ts} +24 -7
  475. package/src/providers/s3/utils/client/utils/createRetryDecider.ts +96 -0
  476. package/src/providers/s3/utils/client/utils/deserializeHelpers.ts +57 -0
  477. package/src/providers/s3/utils/client/utils/index.ts +4 -1
  478. package/src/providers/s3/utils/client/utils/integrityHelpers.ts +62 -0
  479. package/src/providers/s3/utils/client/utils/parsePayload.ts +36 -18
  480. package/src/providers/s3/utils/constants.ts +3 -0
  481. package/src/providers/s3/utils/crc32.native.ts +11 -0
  482. package/src/providers/s3/utils/crc32.ts +51 -0
  483. package/src/providers/s3/utils/index.ts +1 -0
  484. package/src/providers/s3/utils/resolveIdentityId.ts +11 -0
  485. package/src/providers/s3/utils/resolveS3ConfigAndInput.ts +109 -14
  486. package/src/providers/s3/utils/validateBucketOwnerID.ts +18 -0
  487. package/src/providers/s3/utils/validateMultipartUploadXML.ts +36 -0
  488. package/src/providers/s3/utils/validateObjectUrl.ts +32 -0
  489. package/src/providers/s3/utils/validateStorageOperationInput.ts +5 -1
  490. package/src/providers/s3/utils/validateStorageOperationInputWithPrefix.ts +5 -1
  491. package/src/types/inputs.ts +6 -3
  492. package/dist/cjs/providers/s3/apis/uploadData/byteLength.js.map +0 -1
  493. package/dist/cjs/providers/s3/apis/uploadData/index.js.map +0 -1
  494. package/dist/cjs/providers/s3/apis/uploadData/multipart/calculatePartSize.js.map +0 -1
  495. package/dist/cjs/providers/s3/apis/uploadData/multipart/getDataChunker.js.map +0 -1
  496. package/dist/cjs/providers/s3/apis/uploadData/multipart/index.js.map +0 -1
  497. package/dist/cjs/providers/s3/apis/uploadData/multipart/initialUpload.js.map +0 -1
  498. package/dist/cjs/providers/s3/apis/uploadData/multipart/progressTracker.js.map +0 -1
  499. package/dist/cjs/providers/s3/apis/uploadData/multipart/uploadCache.js.map +0 -1
  500. package/dist/cjs/providers/s3/apis/uploadData/multipart/uploadHandlers.js.map +0 -1
  501. package/dist/cjs/providers/s3/apis/uploadData/multipart/uploadPartExecutor.js.map +0 -1
  502. package/dist/cjs/providers/s3/apis/uploadData/putObjectJob.js.map +0 -1
  503. package/dist/cjs/providers/s3/utils/client/abortMultipartUpload.js.map +0 -1
  504. package/dist/cjs/providers/s3/utils/client/base.js.map +0 -1
  505. package/dist/cjs/providers/s3/utils/client/completeMultipartUpload.js.map +0 -1
  506. package/dist/cjs/providers/s3/utils/client/copyObject.js.map +0 -1
  507. package/dist/cjs/providers/s3/utils/client/createMultipartUpload.js.map +0 -1
  508. package/dist/cjs/providers/s3/utils/client/deleteObject.js.map +0 -1
  509. package/dist/cjs/providers/s3/utils/client/getObject.js.map +0 -1
  510. package/dist/cjs/providers/s3/utils/client/headObject.js.map +0 -1
  511. package/dist/cjs/providers/s3/utils/client/index.js.map +0 -1
  512. package/dist/cjs/providers/s3/utils/client/listObjectsV2.js.map +0 -1
  513. package/dist/cjs/providers/s3/utils/client/listParts.js.map +0 -1
  514. package/dist/cjs/providers/s3/utils/client/putObject.js.map +0 -1
  515. package/dist/cjs/providers/s3/utils/client/types.js.map +0 -1
  516. package/dist/cjs/providers/s3/utils/client/uploadPart.js.map +0 -1
  517. package/dist/esm/providers/s3/apis/uploadData/byteLength.mjs.map +0 -1
  518. package/dist/esm/providers/s3/apis/uploadData/index.mjs.map +0 -1
  519. package/dist/esm/providers/s3/apis/uploadData/multipart/calculatePartSize.mjs.map +0 -1
  520. package/dist/esm/providers/s3/apis/uploadData/multipart/getDataChunker.mjs.map +0 -1
  521. package/dist/esm/providers/s3/apis/uploadData/multipart/initialUpload.mjs.map +0 -1
  522. package/dist/esm/providers/s3/apis/uploadData/multipart/progressTracker.mjs.map +0 -1
  523. package/dist/esm/providers/s3/apis/uploadData/multipart/uploadCache.mjs.map +0 -1
  524. package/dist/esm/providers/s3/apis/uploadData/multipart/uploadHandlers.mjs.map +0 -1
  525. package/dist/esm/providers/s3/apis/uploadData/multipart/uploadPartExecutor.mjs +0 -63
  526. package/dist/esm/providers/s3/apis/uploadData/multipart/uploadPartExecutor.mjs.map +0 -1
  527. package/dist/esm/providers/s3/apis/uploadData/putObjectJob.mjs +0 -67
  528. package/dist/esm/providers/s3/apis/uploadData/putObjectJob.mjs.map +0 -1
  529. package/dist/esm/providers/s3/utils/client/abortMultipartUpload.mjs.map +0 -1
  530. package/dist/esm/providers/s3/utils/client/base.mjs.map +0 -1
  531. package/dist/esm/providers/s3/utils/client/completeMultipartUpload.mjs.map +0 -1
  532. package/dist/esm/providers/s3/utils/client/copyObject.mjs +0 -47
  533. package/dist/esm/providers/s3/utils/client/copyObject.mjs.map +0 -1
  534. package/dist/esm/providers/s3/utils/client/createMultipartUpload.mjs.map +0 -1
  535. package/dist/esm/providers/s3/utils/client/deleteObject.mjs.map +0 -1
  536. package/dist/esm/providers/s3/utils/client/getObject.mjs.map +0 -1
  537. package/dist/esm/providers/s3/utils/client/headObject.mjs.map +0 -1
  538. package/dist/esm/providers/s3/utils/client/listObjectsV2.mjs.map +0 -1
  539. package/dist/esm/providers/s3/utils/client/listParts.mjs.map +0 -1
  540. package/dist/esm/providers/s3/utils/client/putObject.mjs.map +0 -1
  541. package/dist/esm/providers/s3/utils/client/uploadPart.mjs.map +0 -1
  542. /package/dist/cjs/providers/s3/apis/{uploadData → internal/uploadData}/byteLength.js +0 -0
  543. /package/dist/cjs/providers/s3/apis/{uploadData → internal/uploadData}/multipart/index.js +0 -0
  544. /package/dist/cjs/providers/s3/apis/{uploadData → internal/uploadData}/multipart/progressTracker.js +0 -0
  545. /package/dist/cjs/providers/s3/utils/client/{types.js → s3control/types.js} +0 -0
  546. /package/dist/cjs/providers/s3/utils/client/{index.js → s3data/index.js} +0 -0
  547. /package/dist/esm/{providers/s3/apis/uploadData/multipart → internals/locationCredentialsStore}/index.mjs.map +0 -0
  548. /package/dist/esm/providers/s3/apis/{uploadData → internal/uploadData}/byteLength.d.ts +0 -0
  549. /package/dist/esm/providers/s3/apis/{uploadData → internal/uploadData}/byteLength.mjs +0 -0
  550. /package/dist/esm/providers/s3/apis/{uploadData → internal/uploadData}/multipart/calculatePartSize.d.ts +0 -0
  551. /package/dist/esm/providers/s3/apis/{uploadData → internal/uploadData}/multipart/index.d.ts +0 -0
  552. /package/dist/esm/providers/s3/apis/{uploadData → internal/uploadData}/multipart/index.mjs +0 -0
  553. /package/dist/esm/providers/s3/apis/{uploadData → internal/uploadData}/multipart/progressTracker.mjs +0 -0
  554. /package/dist/esm/providers/s3/utils/client/{types.mjs → s3control/types.mjs} +0 -0
  555. /package/dist/esm/providers/s3/utils/client/{types.mjs.map → s3control/types.mjs.map} +0 -0
  556. /package/dist/esm/providers/s3/utils/client/{index.d.ts → s3data/index.d.ts} +0 -0
  557. /package/dist/esm/providers/s3/utils/client/{index.mjs → s3data/index.mjs} +0 -0
  558. /package/dist/esm/providers/s3/utils/client/{index.mjs.map → s3data/index.mjs.map} +0 -0
  559. /package/dist/esm/providers/s3/utils/client/{types.d.ts → s3data/types.d.ts} +0 -0
  560. /package/src/providers/s3/apis/{uploadData → internal/uploadData}/byteLength.ts +0 -0
  561. /package/src/providers/s3/apis/{uploadData → internal/uploadData}/multipart/index.ts +0 -0
  562. /package/src/providers/s3/utils/client/{index.ts → s3data/index.ts} +0 -0
  563. /package/src/providers/s3/utils/client/{types.ts → s3data/types.ts} +0 -0
@@ -4,31 +4,32 @@
4
4
  import { Amplify, StorageAccessLevel } from '@aws-amplify/core';
5
5
  import { StorageAction } from '@aws-amplify/core/internals/utils';
6
6
 
7
- import { UploadDataInput, UploadDataWithPathInput } from '../../../types';
7
+ import { UploadDataInput, UploadDataWithPathInput } from '../../../../types';
8
8
  import {
9
9
  resolveS3ConfigAndInput,
10
10
  validateStorageOperationInput,
11
- } from '../../../utils';
12
- import { ItemWithKey, ItemWithPath } from '../../../types/outputs';
11
+ } from '../../../../utils';
12
+ import { ItemWithKey, ItemWithPath } from '../../../../types/outputs';
13
13
  import {
14
14
  DEFAULT_ACCESS_LEVEL,
15
15
  DEFAULT_QUEUE_SIZE,
16
16
  STORAGE_INPUT_KEY,
17
- } from '../../../utils/constants';
17
+ } from '../../../../utils/constants';
18
18
  import {
19
19
  ResolvedS3Config,
20
20
  UploadDataWithKeyOptions,
21
- } from '../../../types/options';
22
- import { StorageError } from '../../../../../errors/StorageError';
23
- import { CanceledError } from '../../../../../errors/CanceledError';
21
+ } from '../../../../types/options';
22
+ import { StorageError } from '../../../../../../errors/StorageError';
23
+ import { CanceledError } from '../../../../../../errors/CanceledError';
24
24
  import {
25
25
  Part,
26
26
  abortMultipartUpload,
27
27
  completeMultipartUpload,
28
28
  headObject,
29
- } from '../../../utils/client';
30
- import { getStorageUserAgentValue } from '../../../utils/userAgent';
31
- import { logger } from '../../../../../utils';
29
+ } from '../../../../utils/client/s3data';
30
+ import { getStorageUserAgentValue } from '../../../../utils/userAgent';
31
+ import { logger } from '../../../../../../utils';
32
+ import { validateObjectNotExists } from '../validateObjectNotExists';
32
33
 
33
34
  import { uploadPartExecutor } from './uploadPartExecutor';
34
35
  import { getUploadsCacheKey, removeCachedUpload } from './uploadCache';
@@ -54,6 +55,7 @@ export const getMultipartUploadHandlers = (
54
55
  | {
55
56
  uploadId: string;
56
57
  completedParts: Part[];
58
+ finalCrc32?: string;
57
59
  }
58
60
  | undefined;
59
61
  let resolvedS3Config: ResolvedS3Config | undefined;
@@ -64,6 +66,7 @@ export const getMultipartUploadHandlers = (
64
66
  let resolvedIdentityId: string | undefined;
65
67
  let uploadCacheKey: string | undefined;
66
68
  let finalKey: string;
69
+ let expectedBucketOwner: string | undefined;
67
70
  // Special flag that differentiates HTTP requests abort error caused by pause() from ones caused by cancel().
68
71
  // The former one should NOT cause the upload job to throw, but cancels any pending HTTP requests.
69
72
  // This should be replaced by a special abort reason. However,the support of this API is lagged behind.
@@ -73,7 +76,7 @@ export const getMultipartUploadHandlers = (
73
76
  const { options: uploadDataOptions, data } = uploadDataInput;
74
77
  const resolvedS3Options = await resolveS3ConfigAndInput(
75
78
  Amplify,
76
- uploadDataOptions,
79
+ uploadDataInput,
77
80
  );
78
81
 
79
82
  abortController = new AbortController();
@@ -81,6 +84,7 @@ export const getMultipartUploadHandlers = (
81
84
  resolvedS3Config = resolvedS3Options.s3Config;
82
85
  resolvedBucket = resolvedS3Options.bucket;
83
86
  resolvedIdentityId = resolvedS3Options.identityId;
87
+ expectedBucketOwner = uploadDataOptions?.expectedBucketOwner;
84
88
 
85
89
  const { inputType, objectKey } = validateStorageOperationInput(
86
90
  uploadDataInput,
@@ -92,6 +96,7 @@ export const getMultipartUploadHandlers = (
92
96
  contentEncoding,
93
97
  contentType = 'application/octet-stream',
94
98
  metadata,
99
+ preventOverwrite,
95
100
  onProgress,
96
101
  } = uploadDataOptions ?? {};
97
102
 
@@ -108,23 +113,26 @@ export const getMultipartUploadHandlers = (
108
113
  }
109
114
 
110
115
  if (!inProgressUpload) {
111
- const { uploadId, cachedParts } = await loadOrCreateMultipartUpload({
112
- s3Config: resolvedS3Config,
113
- accessLevel: resolvedAccessLevel,
114
- bucket: resolvedBucket,
115
- keyPrefix: resolvedKeyPrefix,
116
- key: objectKey,
117
- contentType,
118
- contentDisposition,
119
- contentEncoding,
120
- metadata,
121
- data,
122
- size,
123
- abortSignal: abortController.signal,
124
- });
116
+ const { uploadId, cachedParts, finalCrc32 } =
117
+ await loadOrCreateMultipartUpload({
118
+ s3Config: resolvedS3Config,
119
+ accessLevel: resolvedAccessLevel,
120
+ bucket: resolvedBucket,
121
+ keyPrefix: resolvedKeyPrefix,
122
+ key: objectKey,
123
+ contentType,
124
+ contentDisposition,
125
+ contentEncoding,
126
+ metadata,
127
+ data,
128
+ size,
129
+ abortSignal: abortController.signal,
130
+ expectedBucketOwner,
131
+ });
125
132
  inProgressUpload = {
126
133
  uploadId,
127
134
  completedParts: cachedParts,
135
+ finalCrc32,
128
136
  };
129
137
  }
130
138
 
@@ -143,10 +151,16 @@ export const getMultipartUploadHandlers = (
143
151
  const completedPartNumberSet = new Set<number>(
144
152
  inProgressUpload.completedParts.map(({ PartNumber }) => PartNumber!),
145
153
  );
146
- const onPartUploadCompletion = (partNumber: number, eTag: string) => {
154
+ const onPartUploadCompletion = (
155
+ partNumber: number,
156
+ eTag: string,
157
+ crc32: string | undefined,
158
+ ) => {
147
159
  inProgressUpload?.completedParts.push({
148
160
  PartNumber: partNumber,
149
161
  ETag: eTag,
162
+ // TODO: crc32 can always be added once RN also has an implementation
163
+ ...(crc32 ? { ChecksumCRC32: crc32 } : {}),
150
164
  });
151
165
  };
152
166
  const concurrentUploadsProgressTracker =
@@ -169,12 +183,21 @@ export const getMultipartUploadHandlers = (
169
183
  onPartUploadCompletion,
170
184
  onProgress: concurrentUploadsProgressTracker.getOnProgressListener(),
171
185
  isObjectLockEnabled: resolvedS3Options.isObjectLockEnabled,
186
+ useCRC32Checksum: Boolean(inProgressUpload.finalCrc32),
187
+ expectedBucketOwner,
172
188
  }),
173
189
  );
174
190
  }
175
191
 
176
192
  await Promise.all(concurrentUploadPartExecutors);
177
193
 
194
+ if (preventOverwrite) {
195
+ await validateObjectNotExists(resolvedS3Config, {
196
+ Bucket: resolvedBucket,
197
+ Key: finalKey,
198
+ });
199
+ }
200
+
178
201
  const { ETag: eTag } = await completeMultipartUpload(
179
202
  {
180
203
  ...resolvedS3Config,
@@ -185,11 +208,13 @@ export const getMultipartUploadHandlers = (
185
208
  Bucket: resolvedBucket,
186
209
  Key: finalKey,
187
210
  UploadId: inProgressUpload.uploadId,
211
+ ChecksumCRC32: inProgressUpload.finalCrc32,
188
212
  MultipartUpload: {
189
213
  Parts: inProgressUpload.completedParts.sort(
190
214
  (partA, partB) => partA.PartNumber! - partB.PartNumber!,
191
215
  ),
192
216
  },
217
+ ExpectedBucketOwner: expectedBucketOwner,
193
218
  },
194
219
  );
195
220
 
@@ -199,6 +224,7 @@ export const getMultipartUploadHandlers = (
199
224
  {
200
225
  Bucket: resolvedBucket,
201
226
  Key: finalKey,
227
+ ExpectedBucketOwner: expectedBucketOwner,
202
228
  },
203
229
  );
204
230
  if (uploadedObjectSize && uploadedObjectSize !== size) {
@@ -264,6 +290,7 @@ export const getMultipartUploadHandlers = (
264
290
  Bucket: resolvedBucket,
265
291
  Key: finalKey,
266
292
  UploadId: inProgressUpload?.uploadId,
293
+ ExpectedBucketOwner: expectedBucketOwner,
267
294
  });
268
295
  };
269
296
  cancelUpload().catch(e => {
@@ -1,11 +1,12 @@
1
1
  // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
2
  // SPDX-License-Identifier: Apache-2.0
3
3
 
4
- import { TransferProgressEvent } from '../../../../../types';
5
- import { ResolvedS3Config } from '../../../types/options';
6
- import { calculateContentMd5 } from '../../../utils';
7
- import { uploadPart } from '../../../utils/client';
8
- import { logger } from '../../../../../utils';
4
+ import { TransferProgressEvent } from '../../../../../../types';
5
+ import { ResolvedS3Config } from '../../../../types/options';
6
+ import { uploadPart } from '../../../../utils/client/s3data';
7
+ import { logger } from '../../../../../../utils';
8
+ import { CRC32Checksum, calculateContentCRC32 } from '../../../../utils/crc32';
9
+ import { calculateContentMd5 } from '../../../../utils';
9
10
 
10
11
  import { PartToUpload } from './getDataChunker';
11
12
 
@@ -18,8 +19,14 @@ interface UploadPartExecutorOptions {
18
19
  finalKey: string;
19
20
  uploadId: string;
20
21
  isObjectLockEnabled?: boolean;
21
- onPartUploadCompletion(partNumber: number, eTag: string): void;
22
+ useCRC32Checksum?: boolean;
23
+ onPartUploadCompletion(
24
+ partNumber: number,
25
+ eTag: string,
26
+ crc32: string | undefined,
27
+ ): void;
22
28
  onProgress?(event: TransferProgressEvent): void;
29
+ expectedBucketOwner?: string;
23
30
  }
24
31
 
25
32
  export const uploadPartExecutor = async ({
@@ -33,6 +40,8 @@ export const uploadPartExecutor = async ({
33
40
  onPartUploadCompletion,
34
41
  onProgress,
35
42
  isObjectLockEnabled,
43
+ useCRC32Checksum,
44
+ expectedBucketOwner,
36
45
  }: UploadPartExecutorOptions) => {
37
46
  let transferredBytes = 0;
38
47
  for (const { data, partNumber, size } of dataChunkerGenerator) {
@@ -49,6 +58,16 @@ export const uploadPartExecutor = async ({
49
58
  });
50
59
  } else {
51
60
  // handle cancel error
61
+ let checksumCRC32: CRC32Checksum | undefined;
62
+ if (useCRC32Checksum) {
63
+ checksumCRC32 = await calculateContentCRC32(data);
64
+ }
65
+ const contentMD5 =
66
+ // check if checksum exists. ex: should not exist in react native
67
+ !checksumCRC32 && isObjectLockEnabled
68
+ ? await calculateContentMd5(data)
69
+ : undefined;
70
+
52
71
  const { ETag: eTag } = await uploadPart(
53
72
  {
54
73
  ...s3Config,
@@ -66,14 +85,14 @@ export const uploadPartExecutor = async ({
66
85
  UploadId: uploadId,
67
86
  Body: data,
68
87
  PartNumber: partNumber,
69
- ContentMD5: isObjectLockEnabled
70
- ? await calculateContentMd5(data)
71
- : undefined,
88
+ ChecksumCRC32: checksumCRC32?.checksum,
89
+ ContentMD5: contentMD5,
90
+ ExpectedBucketOwner: expectedBucketOwner,
72
91
  },
73
92
  );
74
93
  transferredBytes += size;
75
94
  // eTag will always be set even the S3 model interface marks it as optional.
76
- onPartUploadCompletion(partNumber, eTag!);
95
+ onPartUploadCompletion(partNumber, eTag!, checksumCRC32?.checksum);
77
96
  }
78
97
  }
79
98
  };
@@ -4,17 +4,21 @@
4
4
  import { Amplify } from '@aws-amplify/core';
5
5
  import { StorageAction } from '@aws-amplify/core/internals/utils';
6
6
 
7
- import { UploadDataInput, UploadDataWithPathInput } from '../../types';
7
+ import { UploadDataInput, UploadDataWithPathInput } from '../../../types';
8
8
  import {
9
9
  calculateContentMd5,
10
10
  resolveS3ConfigAndInput,
11
+ validateBucketOwnerID,
11
12
  validateStorageOperationInput,
12
- } from '../../utils';
13
- import { ItemWithKey, ItemWithPath } from '../../types/outputs';
14
- import { putObject } from '../../utils/client';
15
- import { getStorageUserAgentValue } from '../../utils/userAgent';
16
- import { STORAGE_INPUT_KEY } from '../../utils/constants';
17
- import { constructContentDisposition } from '../../utils/constructContentDisposition';
13
+ } from '../../../utils';
14
+ import { ItemWithKey, ItemWithPath } from '../../../types/outputs';
15
+ import { putObject } from '../../../utils/client/s3data';
16
+ import { getStorageUserAgentValue } from '../../../utils/userAgent';
17
+ import { STORAGE_INPUT_KEY } from '../../../utils/constants';
18
+ import { calculateContentCRC32 } from '../../../utils/crc32';
19
+ import { constructContentDisposition } from '../../../utils/constructContentDisposition';
20
+
21
+ import { validateObjectNotExists } from './validateObjectNotExists';
18
22
 
19
23
  /**
20
24
  * Get a function the returns a promise to call putObject API to S3.
@@ -30,11 +34,12 @@ export const putObjectJob =
30
34
  async (): Promise<ItemWithKey | ItemWithPath> => {
31
35
  const { options: uploadDataOptions, data } = uploadDataInput;
32
36
  const { bucket, keyPrefix, s3Config, isObjectLockEnabled, identityId } =
33
- await resolveS3ConfigAndInput(Amplify, uploadDataOptions);
37
+ await resolveS3ConfigAndInput(Amplify, uploadDataInput);
34
38
  const { inputType, objectKey } = validateStorageOperationInput(
35
39
  uploadDataInput,
36
40
  identityId,
37
41
  );
42
+ validateBucketOwnerID(uploadDataOptions?.expectedBucketOwner);
38
43
 
39
44
  const finalKey =
40
45
  inputType === STORAGE_INPUT_KEY ? keyPrefix + objectKey : objectKey;
@@ -42,10 +47,26 @@ export const putObjectJob =
42
47
  contentDisposition,
43
48
  contentEncoding,
44
49
  contentType = 'application/octet-stream',
50
+ preventOverwrite,
45
51
  metadata,
46
52
  onProgress,
53
+ expectedBucketOwner,
47
54
  } = uploadDataOptions ?? {};
48
55
 
56
+ const checksumCRC32 = await calculateContentCRC32(data);
57
+ const contentMD5 =
58
+ // check if checksum exists. ex: should not exist in react native
59
+ !checksumCRC32 && isObjectLockEnabled
60
+ ? await calculateContentMd5(data)
61
+ : undefined;
62
+
63
+ if (preventOverwrite) {
64
+ await validateObjectNotExists(s3Config, {
65
+ Bucket: bucket,
66
+ Key: finalKey,
67
+ });
68
+ }
69
+
49
70
  const { ETag: eTag, VersionId: versionId } = await putObject(
50
71
  {
51
72
  ...s3Config,
@@ -61,9 +82,9 @@ export const putObjectJob =
61
82
  ContentDisposition: constructContentDisposition(contentDisposition),
62
83
  ContentEncoding: contentEncoding,
63
84
  Metadata: metadata,
64
- ContentMD5: isObjectLockEnabled
65
- ? await calculateContentMd5(data)
66
- : undefined,
85
+ ContentMD5: contentMD5,
86
+ ChecksumCRC32: checksumCRC32?.checksum,
87
+ ExpectedBucketOwner: expectedBucketOwner,
67
88
  },
68
89
  );
69
90
 
@@ -0,0 +1,25 @@
1
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ import { StorageError } from '../../../../../errors/StorageError';
5
+ import { ResolvedS3Config } from '../../../types/options';
6
+ import { HeadObjectInput, headObject } from '../../../utils/client/s3data';
7
+
8
+ export const validateObjectNotExists = async (
9
+ s3Config: ResolvedS3Config,
10
+ input: HeadObjectInput,
11
+ ): Promise<void> => {
12
+ try {
13
+ await headObject(s3Config, input);
14
+
15
+ throw new StorageError({
16
+ name: 'PreconditionFailed',
17
+ message: 'At least one of the pre-conditions you specified did not hold',
18
+ });
19
+ } catch (error) {
20
+ const serviceError = error as StorageError;
21
+ if (serviceError.name !== 'NotFound') {
22
+ throw error;
23
+ }
24
+ }
25
+ };
@@ -6,15 +6,9 @@ import {
6
6
  UploadDataOutput,
7
7
  UploadDataWithPathInput,
8
8
  UploadDataWithPathOutput,
9
- } from '../../types';
10
- import { createUploadTask } from '../../utils';
11
- import { assertValidationError } from '../../../../errors/utils/assertValidationError';
12
- import { StorageValidationErrorCode } from '../../../../errors/types/validation';
13
- import { DEFAULT_PART_SIZE, MAX_OBJECT_SIZE } from '../../utils/constants';
9
+ } from '../types';
14
10
 
15
- import { byteLength } from './byteLength';
16
- import { putObjectJob } from './putObjectJob';
17
- import { getMultipartUploadHandlers } from './multipart';
11
+ import { uploadData as uploadDataInternal } from './internal/uploadData';
18
12
 
19
13
  /**
20
14
  * Upload data to the specified S3 object path. By default uses single PUT operation to upload if the payload is less than 5MB.
@@ -127,38 +121,5 @@ export function uploadData(
127
121
  export function uploadData(input: UploadDataInput): UploadDataOutput;
128
122
 
129
123
  export function uploadData(input: UploadDataInput | UploadDataWithPathInput) {
130
- const { data } = input;
131
-
132
- const dataByteLength = byteLength(data);
133
- assertValidationError(
134
- dataByteLength === undefined || dataByteLength <= MAX_OBJECT_SIZE,
135
- StorageValidationErrorCode.ObjectIsTooLarge,
136
- );
137
-
138
- if (dataByteLength && dataByteLength <= DEFAULT_PART_SIZE) {
139
- // Single part upload
140
- const abortController = new AbortController();
141
-
142
- return createUploadTask({
143
- isMultipartUpload: false,
144
- job: putObjectJob(input, abortController.signal, dataByteLength),
145
- onCancel: (message?: string) => {
146
- abortController.abort(message);
147
- },
148
- });
149
- } else {
150
- // Multipart upload
151
- const { multipartUploadJob, onPause, onResume, onCancel } =
152
- getMultipartUploadHandlers(input, dataByteLength);
153
-
154
- return createUploadTask({
155
- isMultipartUpload: true,
156
- job: multipartUploadJob,
157
- onCancel: (message?: string) => {
158
- onCancel(message);
159
- },
160
- onPause,
161
- onResume,
162
- });
163
- }
124
+ return uploadDataInternal(input);
164
125
  }
@@ -48,3 +48,5 @@ export {
48
48
  GetUrlOutput,
49
49
  GetUrlWithPathOutput,
50
50
  } from './types/outputs';
51
+
52
+ export { DEFAULT_PART_SIZE } from './utils/constants';
@@ -2,7 +2,11 @@
2
2
  // SPDX-License-Identifier: Apache-2.0
3
3
 
4
4
  import { StorageAccessLevel } from '@aws-amplify/core';
5
- import { SigningOptions } from '@aws-amplify/core/internals/aws-client-utils';
5
+ import {
6
+ CredentialsProviderOptions,
7
+ SigningOptions,
8
+ } from '@aws-amplify/core/internals/aws-client-utils';
9
+ import { AWSCredentials } from '@aws-amplify/core/internals/utils';
6
10
 
7
11
  import { TransferProgressEvent } from '../../../types';
8
12
  import {
@@ -11,6 +15,28 @@ import {
11
15
  StorageSubpathStrategy,
12
16
  } from '../../../types/options';
13
17
 
18
+ /**
19
+ * @internal
20
+ */
21
+ export type AWSTemporaryCredentials = Required<
22
+ Pick<
23
+ AWSCredentials,
24
+ 'accessKeyId' | 'secretAccessKey' | 'sessionToken' | 'expiration'
25
+ >
26
+ >;
27
+
28
+ /**
29
+ * Async function returning AWS credentials for an API call. This function
30
+ * is invoked with S3 locations(bucket and path).
31
+ * If omitted, the global credentials configured in Amplify Auth
32
+ * would be used.
33
+ *
34
+ * @internal
35
+ */
36
+ export type LocationCredentialsProvider = (
37
+ options?: CredentialsProviderOptions,
38
+ ) => Promise<{ credentials: AWSTemporaryCredentials }>;
39
+
14
40
  export interface BucketInfo {
15
41
  bucketName: string;
16
42
  region: string;
@@ -23,7 +49,13 @@ interface CommonOptions {
23
49
  * @default false
24
50
  */
25
51
  useAccelerateEndpoint?: boolean;
52
+
26
53
  bucket?: StorageBucket;
54
+
55
+ /**
56
+ * The expected owner of the target bucket.
57
+ */
58
+ expectedBucketOwner?: string;
27
59
  }
28
60
 
29
61
  /**
@@ -190,6 +222,11 @@ export type UploadDataOptions = CommonOptions &
190
222
  * @see https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingMetadata.html#UserMetadata
191
223
  */
192
224
  metadata?: Record<string, string>;
225
+ /**
226
+ * Enforces target key does not already exist in S3 before committing upload.
227
+ * @default false
228
+ */
229
+ preventOverwrite?: boolean;
193
230
  };
194
231
 
195
232
  /** @deprecated Use {@link UploadDataWithPathOptions} instead. */
@@ -201,6 +238,9 @@ export type CopySourceWithKeyOptions = ReadOptions & {
201
238
  /** @deprecated This may be removed in the next major version. */
202
239
  key: string;
203
240
  bucket?: StorageBucket;
241
+ notModifiedSince?: Date;
242
+ eTag?: string;
243
+ expectedBucketOwner?: string;
204
244
  };
205
245
 
206
246
  /** @deprecated This may be removed in the next major version. */
@@ -208,13 +248,19 @@ export type CopyDestinationWithKeyOptions = WriteOptions & {
208
248
  /** @deprecated This may be removed in the next major version. */
209
249
  key: string;
210
250
  bucket?: StorageBucket;
251
+ expectedBucketOwner?: string;
211
252
  };
212
253
 
213
254
  export interface CopyWithPathSourceOptions {
214
255
  bucket?: StorageBucket;
256
+ notModifiedSince?: Date;
257
+ eTag?: string;
258
+ expectedBucketOwner?: string;
215
259
  }
260
+
216
261
  export interface CopyWithPathDestinationOptions {
217
262
  bucket?: StorageBucket;
263
+ expectedBucketOwner?: string;
218
264
  }
219
265
 
220
266
  /**
@@ -0,0 +1,97 @@
1
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ import {
5
+ AmplifyUrl,
6
+ getAmplifyUserAgent,
7
+ } from '@aws-amplify/core/internals/utils';
8
+ import {
9
+ EndpointResolverOptions,
10
+ getDnsSuffix,
11
+ jitteredBackoff,
12
+ } from '@aws-amplify/core/internals/aws-client-utils';
13
+
14
+ import { createRetryDecider, createXmlErrorParser } from '../utils';
15
+
16
+ /**
17
+ * The service name used to sign requests if the API requires authentication.
18
+ */
19
+ export const SERVICE_NAME = 's3';
20
+
21
+ /**
22
+ * Options for endpoint resolver.
23
+ *
24
+ * @internal
25
+ */
26
+ export type S3EndpointResolverOptions = EndpointResolverOptions & {
27
+ /**
28
+ * Fully qualified custom endpoint for S3. If this is set, this endpoint will be used regardless of region.
29
+ */
30
+ customEndpoint?: string;
31
+ };
32
+
33
+ /**
34
+ * The endpoint resolver function that returns the endpoint URL for a given region, and input parameters.
35
+ */
36
+ const endpointResolver = (
37
+ options: S3EndpointResolverOptions,
38
+ apiInput?: { AccountId?: string },
39
+ ) => {
40
+ const { region, customEndpoint } = options;
41
+ const { AccountId: accountId } = apiInput || {};
42
+ let endpoint: URL;
43
+ // 1. get base endpoint
44
+ if (customEndpoint) {
45
+ endpoint = new AmplifyUrl(customEndpoint);
46
+ } else if (accountId) {
47
+ // Control plane operations
48
+ endpoint = new AmplifyUrl(
49
+ `https://${accountId}.s3-control.${region}.${getDnsSuffix(region)}`,
50
+ );
51
+ } else {
52
+ endpoint = new AmplifyUrl(
53
+ `https://s3-control.${region}.${getDnsSuffix(region)}`,
54
+ );
55
+ }
56
+
57
+ return { url: endpoint };
58
+ };
59
+
60
+ /**
61
+ * Error parser for the XML payload of S3 control plane error response. The
62
+ * error's `Code` and `Message` locates at the nested `Error` element instead of
63
+ * the XML root element.
64
+ *
65
+ * @example
66
+ * ```
67
+ * <?xml version="1.0" encoding="UTF-8"?>
68
+ * <ErrorResponse>
69
+ * <Error>
70
+ * <Code>AccessDenied</Code>
71
+ * <Message>Access Denied</Message>
72
+ * </Error>
73
+ * <RequestId>656c76696e6727732072657175657374</RequestId>
74
+ * <HostId>Uuag1LuByRx9e6j5Onimru9pO4ZVKnJ2Qz7/C1NPcfTWAtRPfTaOFg==</HostId>
75
+ * </ErrorResponse>
76
+ * ```
77
+ *
78
+ * @internal
79
+ */
80
+ export const parseXmlError = createXmlErrorParser();
81
+
82
+ /**
83
+ * @internal
84
+ */
85
+ export const retryDecider = createRetryDecider(parseXmlError);
86
+
87
+ /**
88
+ * @internal
89
+ */
90
+ export const defaultConfig = {
91
+ service: SERVICE_NAME,
92
+ endpointResolver,
93
+ retryDecider,
94
+ computeDelay: jitteredBackoff,
95
+ userAgentValue: getAmplifyUserAgent(),
96
+ uriEscapePath: false, // Required by S3. See https://github.com/aws/aws-sdk-js-v3/blob/9ba012dfa3a3429aa2db0f90b3b0b3a7a31f9bc3/packages/signature-v4/src/SignatureV4.ts#L76-L83
97
+ };