@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
@@ -10,18 +10,21 @@ import {
10
10
  import { AmplifyUrl } from '@aws-amplify/core/internals/utils';
11
11
  import { composeServiceApi } from '@aws-amplify/core/internals/aws-client-utils/composers';
12
12
 
13
- import type { CopyObjectCommandInput, CopyObjectCommandOutput } from './types';
14
- import { defaultConfig } from './base';
15
13
  import {
16
14
  assignStringVariables,
15
+ bothNilOrEqual,
17
16
  buildStorageServiceError,
18
17
  parseXmlBody,
19
- parseXmlError,
20
18
  s3TransferHandler,
21
19
  serializeObjectConfigsToHeaders,
22
20
  serializePathnameObjectKey,
23
21
  validateS3RequiredParameter,
24
- } from './utils';
22
+ } from '../utils';
23
+ import { IntegrityError } from '../../../../../errors/IntegrityError';
24
+ import { validateObjectUrl } from '../../validateObjectUrl';
25
+
26
+ import type { CopyObjectCommandInput, CopyObjectCommandOutput } from './types';
27
+ import { defaultConfig, parseXmlError } from './base';
25
28
 
26
29
  export type CopyObjectInput = Pick<
27
30
  CopyObjectCommandInput,
@@ -37,6 +40,10 @@ export type CopyObjectInput = Pick<
37
40
  | 'ACL'
38
41
  | 'Tagging'
39
42
  | 'Metadata'
43
+ | 'CopySourceIfUnmodifiedSince'
44
+ | 'CopySourceIfMatch'
45
+ | 'ExpectedSourceBucketOwner'
46
+ | 'ExpectedBucketOwner'
40
47
  >;
41
48
 
42
49
  export type CopyObjectOutput = CopyObjectCommandOutput;
@@ -50,11 +57,22 @@ const copyObjectSerializer = async (
50
57
  ...assignStringVariables({
51
58
  'x-amz-copy-source': input.CopySource,
52
59
  'x-amz-metadata-directive': input.MetadataDirective,
60
+ 'x-amz-copy-source-if-match': input.CopySourceIfMatch,
61
+ 'x-amz-copy-source-if-unmodified-since':
62
+ input.CopySourceIfUnmodifiedSince?.toISOString(),
63
+ 'x-amz-source-expected-bucket-owner': input.ExpectedSourceBucketOwner,
64
+ 'x-amz-expected-bucket-owner': input.ExpectedBucketOwner,
53
65
  }),
54
66
  };
67
+ validateCopyObjectHeaders(input, headers);
55
68
  const url = new AmplifyUrl(endpoint.url.toString());
56
69
  validateS3RequiredParameter(!!input.Key, 'Key');
57
70
  url.pathname = serializePathnameObjectKey(url, input.Key);
71
+ validateObjectUrl({
72
+ bucketName: input.Bucket,
73
+ key: input.Key,
74
+ objectURL: url,
75
+ });
58
76
 
59
77
  return {
60
78
  method: 'PUT',
@@ -63,6 +81,31 @@ const copyObjectSerializer = async (
63
81
  };
64
82
  };
65
83
 
84
+ export const validateCopyObjectHeaders = (
85
+ input: CopyObjectInput,
86
+ headers: Record<string, string>,
87
+ ) => {
88
+ const validations: boolean[] = [
89
+ headers['x-amz-copy-source'] === input.CopySource,
90
+ bothNilOrEqual(
91
+ input.MetadataDirective,
92
+ headers['x-amz-metadata-directive'],
93
+ ),
94
+ bothNilOrEqual(
95
+ input.CopySourceIfMatch,
96
+ headers['x-amz-copy-source-if-match'],
97
+ ),
98
+ bothNilOrEqual(
99
+ input.CopySourceIfUnmodifiedSince?.toISOString(),
100
+ headers['x-amz-copy-source-if-unmodified-since'],
101
+ ),
102
+ ];
103
+
104
+ if (validations.some(validation => !validation)) {
105
+ throw new IntegrityError();
106
+ }
107
+ };
108
+
66
109
  const copyObjectDeserializer = async (
67
110
  response: HttpResponse,
68
111
  ): Promise<CopyObjectOutput> => {
@@ -10,22 +10,24 @@ import {
10
10
  import { AmplifyUrl } from '@aws-amplify/core/internals/utils';
11
11
  import { composeServiceApi } from '@aws-amplify/core/internals/aws-client-utils/composers';
12
12
 
13
- import type {
14
- CreateMultipartUploadCommandInput,
15
- CreateMultipartUploadCommandOutput,
16
- } from './types';
17
- import type { PutObjectInput } from './putObject';
18
- import { defaultConfig } from './base';
19
13
  import {
14
+ assignStringVariables,
20
15
  buildStorageServiceError,
21
16
  map,
22
17
  parseXmlBody,
23
- parseXmlError,
24
18
  s3TransferHandler,
25
19
  serializeObjectConfigsToHeaders,
26
20
  serializePathnameObjectKey,
27
21
  validateS3RequiredParameter,
28
- } from './utils';
22
+ } from '../utils';
23
+ import { validateObjectUrl } from '../../validateObjectUrl';
24
+
25
+ import type {
26
+ CreateMultipartUploadCommandInput,
27
+ CreateMultipartUploadCommandOutput,
28
+ } from './types';
29
+ import type { PutObjectInput } from './putObject';
30
+ import { defaultConfig, parseXmlError } from './base';
29
31
 
30
32
  export type CreateMultipartUploadInput = Extract<
31
33
  CreateMultipartUploadCommandInput,
@@ -41,11 +43,22 @@ const createMultipartUploadSerializer = async (
41
43
  input: CreateMultipartUploadInput,
42
44
  endpoint: Endpoint,
43
45
  ): Promise<HttpRequest> => {
44
- const headers = await serializeObjectConfigsToHeaders(input);
46
+ const headers = {
47
+ ...(await serializeObjectConfigsToHeaders(input)),
48
+ ...assignStringVariables({
49
+ 'x-amz-checksum-algorithm': input.ChecksumAlgorithm,
50
+ 'x-amz-expected-bucket-owner': input.ExpectedBucketOwner,
51
+ }),
52
+ };
45
53
  const url = new AmplifyUrl(endpoint.url.toString());
46
54
  validateS3RequiredParameter(!!input.Key, 'Key');
47
55
  url.pathname = serializePathnameObjectKey(url, input.Key);
48
56
  url.search = 'uploads';
57
+ validateObjectUrl({
58
+ bucketName: input.Bucket,
59
+ key: input.Key,
60
+ objectURL: url,
61
+ });
49
62
 
50
63
  return {
51
64
  method: 'POST',
@@ -10,24 +10,26 @@ import {
10
10
  import { AmplifyUrl } from '@aws-amplify/core/internals/utils';
11
11
  import { composeServiceApi } from '@aws-amplify/core/internals/aws-client-utils/composers';
12
12
 
13
- import type {
14
- DeleteObjectCommandInput,
15
- DeleteObjectCommandOutput,
16
- } from './types';
17
- import { defaultConfig } from './base';
18
13
  import {
14
+ assignStringVariables,
19
15
  buildStorageServiceError,
20
16
  deserializeBoolean,
21
17
  map,
22
- parseXmlError,
23
18
  s3TransferHandler,
24
19
  serializePathnameObjectKey,
25
20
  validateS3RequiredParameter,
26
- } from './utils';
21
+ } from '../utils';
22
+ import { validateObjectUrl } from '../../validateObjectUrl';
23
+
24
+ import type {
25
+ DeleteObjectCommandInput,
26
+ DeleteObjectCommandOutput,
27
+ } from './types';
28
+ import { defaultConfig, parseXmlError } from './base';
27
29
 
28
30
  export type DeleteObjectInput = Pick<
29
31
  DeleteObjectCommandInput,
30
- 'Bucket' | 'Key'
32
+ 'Bucket' | 'Key' | 'ExpectedBucketOwner'
31
33
  >;
32
34
 
33
35
  export type DeleteObjectOutput = DeleteObjectCommandOutput;
@@ -39,10 +41,18 @@ const deleteObjectSerializer = (
39
41
  const url = new AmplifyUrl(endpoint.url.toString());
40
42
  validateS3RequiredParameter(!!input.Key, 'Key');
41
43
  url.pathname = serializePathnameObjectKey(url, input.Key);
44
+ validateObjectUrl({
45
+ bucketName: input.Bucket,
46
+ key: input.Key,
47
+ objectURL: url,
48
+ });
49
+ const headers = assignStringVariables({
50
+ 'x-amz-expected-bucket-owner': input.ExpectedBucketOwner,
51
+ });
42
52
 
43
53
  return {
44
54
  method: 'DELETE',
45
- headers: {},
55
+ headers,
46
56
  url,
47
57
  };
48
58
  };
@@ -11,28 +11,34 @@ import {
11
11
  parseMetadata,
12
12
  presignUrl,
13
13
  } from '@aws-amplify/core/internals/aws-client-utils';
14
- import { AmplifyUrl } from '@aws-amplify/core/internals/utils';
15
14
  import { composeServiceApi } from '@aws-amplify/core/internals/aws-client-utils/composers';
15
+ import { AmplifyUrl } from '@aws-amplify/core/internals/utils';
16
16
 
17
- import { S3EndpointResolverOptions, defaultConfig } from './base';
18
- import type {
19
- CompatibleHttpResponse,
20
- GetObjectCommandInput,
21
- GetObjectCommandOutput,
22
- } from './types';
23
17
  import {
24
18
  CONTENT_SHA256_HEADER,
19
+ assignStringVariables,
25
20
  buildStorageServiceError,
26
21
  deserializeBoolean,
27
22
  deserializeMetadata,
28
23
  deserializeNumber,
29
24
  deserializeTimestamp,
30
25
  map,
31
- parseXmlError,
32
26
  s3TransferHandler,
33
27
  serializePathnameObjectKey,
34
28
  validateS3RequiredParameter,
35
- } from './utils';
29
+ } from '../utils';
30
+ import { validateObjectUrl } from '../../validateObjectUrl';
31
+
32
+ import {
33
+ S3EndpointResolverOptions,
34
+ defaultConfig,
35
+ parseXmlError,
36
+ } from './base';
37
+ import type {
38
+ CompatibleHttpResponse,
39
+ GetObjectCommandInput,
40
+ GetObjectCommandOutput,
41
+ } from './types';
36
42
 
37
43
  const USER_AGENT_HEADER = 'x-amz-user-agent';
38
44
 
@@ -43,6 +49,7 @@ export type GetObjectInput = Pick<
43
49
  | 'Range'
44
50
  | 'ResponseContentDisposition'
45
51
  | 'ResponseContentType'
52
+ | 'ExpectedBucketOwner'
46
53
  >;
47
54
 
48
55
  export type GetObjectOutput = GetObjectCommandOutput;
@@ -54,11 +61,19 @@ const getObjectSerializer = async (
54
61
  const url = new AmplifyUrl(endpoint.url.toString());
55
62
  validateS3RequiredParameter(!!input.Key, 'Key');
56
63
  url.pathname = serializePathnameObjectKey(url, input.Key);
64
+ validateObjectUrl({
65
+ bucketName: input.Bucket,
66
+ key: input.Key,
67
+ objectURL: url,
68
+ });
57
69
 
58
70
  return {
59
71
  method: 'GET',
60
72
  headers: {
61
73
  ...(input.Range && { Range: input.Range }),
74
+ ...assignStringVariables({
75
+ 'x-amz-expected-bucket-owner': input.ExpectedBucketOwner,
76
+ }),
62
77
  },
63
78
  url,
64
79
  };
@@ -10,21 +10,26 @@ import {
10
10
  import { AmplifyUrl } from '@aws-amplify/core/internals/utils';
11
11
  import { composeServiceApi } from '@aws-amplify/core/internals/aws-client-utils/composers';
12
12
 
13
- import { defaultConfig } from './base';
14
- import type { HeadObjectCommandInput, HeadObjectCommandOutput } from './types';
15
13
  import {
14
+ assignStringVariables,
16
15
  buildStorageServiceError,
17
16
  deserializeMetadata,
18
17
  deserializeNumber,
19
18
  deserializeTimestamp,
20
19
  map,
21
- parseXmlError,
22
20
  s3TransferHandler,
23
21
  serializePathnameObjectKey,
24
22
  validateS3RequiredParameter,
25
- } from './utils';
23
+ } from '../utils';
24
+ import { validateObjectUrl } from '../../validateObjectUrl';
25
+
26
+ import { defaultConfig, parseXmlError } from './base';
27
+ import type { HeadObjectCommandInput, HeadObjectCommandOutput } from './types';
26
28
 
27
- export type HeadObjectInput = Pick<HeadObjectCommandInput, 'Bucket' | 'Key'>;
29
+ export type HeadObjectInput = Pick<
30
+ HeadObjectCommandInput,
31
+ 'Bucket' | 'Key' | 'ExpectedBucketOwner'
32
+ >;
28
33
 
29
34
  export type HeadObjectOutput = Pick<
30
35
  HeadObjectCommandOutput,
@@ -44,10 +49,18 @@ const headObjectSerializer = async (
44
49
  const url = new AmplifyUrl(endpoint.url.toString());
45
50
  validateS3RequiredParameter(!!input.Key, 'Key');
46
51
  url.pathname = serializePathnameObjectKey(url, input.Key);
52
+ validateObjectUrl({
53
+ bucketName: input.Bucket,
54
+ key: input.Key,
55
+ objectURL: url,
56
+ });
57
+ const headers = assignStringVariables({
58
+ 'x-amz-expected-bucket-owner': input.ExpectedBucketOwner,
59
+ });
47
60
 
48
61
  return {
49
62
  method: 'HEAD',
50
- headers: {},
63
+ headers,
51
64
  url,
52
65
  };
53
66
  };
@@ -13,11 +13,6 @@ import {
13
13
  } from '@aws-amplify/core/internals/utils';
14
14
  import { composeServiceApi } from '@aws-amplify/core/internals/aws-client-utils/composers';
15
15
 
16
- import type {
17
- ListObjectsV2CommandInput,
18
- ListObjectsV2CommandOutput,
19
- } from './types';
20
- import { defaultConfig } from './base';
21
16
  import {
22
17
  assignStringVariables,
23
18
  buildStorageServiceError,
@@ -27,9 +22,15 @@ import {
27
22
  emptyArrayGuard,
28
23
  map,
29
24
  parseXmlBody,
30
- parseXmlError,
31
25
  s3TransferHandler,
32
- } from './utils';
26
+ } from '../utils';
27
+ import { IntegrityError } from '../../../../../errors/IntegrityError';
28
+
29
+ import type {
30
+ ListObjectsV2CommandInput,
31
+ ListObjectsV2CommandOutput,
32
+ } from './types';
33
+ import { defaultConfig, parseXmlError } from './base';
33
34
 
34
35
  export type ListObjectsV2Input = ListObjectsV2CommandInput;
35
36
 
@@ -93,10 +94,13 @@ const listObjectsV2Deserializer = async (
93
94
  StartAfter: 'StartAfter',
94
95
  });
95
96
 
96
- return {
97
+ const output = {
97
98
  $metadata: parseMetadata(response),
98
99
  ...contents,
99
100
  };
101
+ validateCorroboratingElements(output);
102
+
103
+ return output;
100
104
  }
101
105
  };
102
106
 
@@ -130,6 +134,27 @@ const deserializeChecksumAlgorithmList = (output: any[]) =>
130
134
  const deserializeOwner = (output: any) =>
131
135
  map(output, { DisplayName: 'DisplayName', ID: 'ID' });
132
136
 
137
+ const validateCorroboratingElements = (response: ListObjectsV2Output) => {
138
+ const {
139
+ IsTruncated,
140
+ KeyCount,
141
+ Contents = [],
142
+ CommonPrefixes = [],
143
+ NextContinuationToken,
144
+ } = response;
145
+
146
+ const validTruncation =
147
+ (IsTruncated && !!NextContinuationToken) ||
148
+ (!IsTruncated && !NextContinuationToken);
149
+
150
+ const validNumberOfKeysReturned =
151
+ KeyCount === Contents.length + CommonPrefixes.length;
152
+
153
+ if (!validTruncation || !validNumberOfKeysReturned) {
154
+ throw new IntegrityError();
155
+ }
156
+ };
157
+
133
158
  export const listObjectsV2 = composeServiceApi(
134
159
  s3TransferHandler,
135
160
  listObjectsV2Serializer,
@@ -13,23 +13,19 @@ import {
13
13
  } from '@aws-amplify/core/internals/utils';
14
14
  import { composeServiceApi } from '@aws-amplify/core/internals/aws-client-utils/composers';
15
15
 
16
- import type {
17
- CompletedPart,
18
- ListPartsCommandInput,
19
- ListPartsCommandOutput,
20
- } from './types';
21
- import { defaultConfig } from './base';
22
16
  import {
23
17
  buildStorageServiceError,
24
- deserializeNumber,
18
+ deserializeCompletedPartList,
25
19
  emptyArrayGuard,
26
20
  map,
27
21
  parseXmlBody,
28
- parseXmlError,
29
22
  s3TransferHandler,
30
23
  serializePathnameObjectKey,
31
24
  validateS3RequiredParameter,
32
- } from './utils';
25
+ } from '../utils';
26
+
27
+ import type { ListPartsCommandInput, ListPartsCommandOutput } from './types';
28
+ import { defaultConfig, parseXmlError } from './base';
33
29
 
34
30
  export type ListPartsInput = Pick<
35
31
  ListPartsCommandInput,
@@ -84,15 +80,6 @@ const listPartsDeserializer = async (
84
80
  }
85
81
  };
86
82
 
87
- const deserializeCompletedPartList = (input: any[]): CompletedPart[] =>
88
- input.map(item =>
89
- map(item, {
90
- PartNumber: ['PartNumber', deserializeNumber],
91
- ETag: 'ETag',
92
- Size: ['Size', deserializeNumber],
93
- }),
94
- );
95
-
96
83
  export const listParts = composeServiceApi(
97
84
  s3TransferHandler,
98
85
  listPartsSerializer,
@@ -10,18 +10,19 @@ import {
10
10
  import { AmplifyUrl } from '@aws-amplify/core/internals/utils';
11
11
  import { composeServiceApi } from '@aws-amplify/core/internals/aws-client-utils/composers';
12
12
 
13
- import { defaultConfig } from './base';
14
- import type { PutObjectCommandInput, PutObjectCommandOutput } from './types';
15
13
  import {
16
14
  assignStringVariables,
17
15
  buildStorageServiceError,
18
16
  map,
19
- parseXmlError,
20
17
  s3TransferHandler,
21
18
  serializeObjectConfigsToHeaders,
22
19
  serializePathnameObjectKey,
23
20
  validateS3RequiredParameter,
24
- } from './utils';
21
+ } from '../utils';
22
+ import { validateObjectUrl } from '../../validateObjectUrl';
23
+
24
+ import { defaultConfig, parseXmlError } from './base';
25
+ import type { PutObjectCommandInput, PutObjectCommandOutput } from './types';
25
26
 
26
27
  export type PutObjectInput = Pick<
27
28
  PutObjectCommandInput,
@@ -37,6 +38,8 @@ export type PutObjectInput = Pick<
37
38
  | 'Expires'
38
39
  | 'Metadata'
39
40
  | 'Tagging'
41
+ | 'ChecksumCRC32'
42
+ | 'ExpectedBucketOwner'
40
43
  >;
41
44
 
42
45
  export type PutObjectOutput = Pick<
@@ -55,11 +58,20 @@ const putObjectSerializer = async (
55
58
  ...input,
56
59
  ContentType: input.ContentType ?? 'application/octet-stream',
57
60
  })),
58
- ...assignStringVariables({ 'content-md5': input.ContentMD5 }),
61
+ ...assignStringVariables({
62
+ 'content-md5': input.ContentMD5,
63
+ 'x-amz-checksum-crc32': input.ChecksumCRC32,
64
+ 'x-amz-expected-bucket-owner': input.ExpectedBucketOwner,
65
+ }),
59
66
  };
60
67
  const url = new AmplifyUrl(endpoint.url.toString());
61
68
  validateS3RequiredParameter(!!input.Key, 'Key');
62
69
  url.pathname = serializePathnameObjectKey(url, input.Key);
70
+ validateObjectUrl({
71
+ bucketName: input.Bucket,
72
+ key: input.Key,
73
+ objectURL: url,
74
+ });
63
75
 
64
76
  return {
65
77
  method: 'PUT',
@@ -13,23 +13,31 @@ import {
13
13
  } from '@aws-amplify/core/internals/utils';
14
14
  import { composeServiceApi } from '@aws-amplify/core/internals/aws-client-utils/composers';
15
15
 
16
- import { defaultConfig } from './base';
17
- import type { UploadPartCommandInput, UploadPartCommandOutput } from './types';
18
16
  import {
19
17
  assignStringVariables,
20
18
  buildStorageServiceError,
21
19
  map,
22
- parseXmlError,
23
20
  s3TransferHandler,
24
21
  serializePathnameObjectKey,
25
22
  validateS3RequiredParameter,
26
- } from './utils';
23
+ } from '../utils';
24
+ import { validateObjectUrl } from '../../validateObjectUrl';
25
+
26
+ import { defaultConfig, parseXmlError } from './base';
27
+ import type { UploadPartCommandInput, UploadPartCommandOutput } from './types';
27
28
 
28
29
  // Content-length is ignored here because it's forbidden header
29
30
  // and will be set by browser or fetch polyfill.
30
31
  export type UploadPartInput = Pick<
31
32
  UploadPartCommandInput,
32
- 'PartNumber' | 'Body' | 'UploadId' | 'Bucket' | 'Key' | 'ContentMD5'
33
+ | 'PartNumber'
34
+ | 'Body'
35
+ | 'UploadId'
36
+ | 'Bucket'
37
+ | 'Key'
38
+ | 'ContentMD5'
39
+ | 'ChecksumCRC32'
40
+ | 'ExpectedBucketOwner'
33
41
  >;
34
42
 
35
43
  export type UploadPartOutput = Pick<
@@ -42,9 +50,13 @@ const uploadPartSerializer = async (
42
50
  endpoint: Endpoint,
43
51
  ): Promise<HttpRequest> => {
44
52
  const headers = {
45
- ...assignStringVariables({ 'content-md5': input.ContentMD5 }),
53
+ ...assignStringVariables({
54
+ 'x-amz-checksum-crc32': input.ChecksumCRC32,
55
+ 'content-md5': input.ContentMD5,
56
+ 'x-amz-expected-bucket-owner': input.ExpectedBucketOwner,
57
+ }),
58
+ 'content-type': 'application/octet-stream',
46
59
  };
47
- headers['content-type'] = 'application/octet-stream';
48
60
  const url = new AmplifyUrl(endpoint.url.toString());
49
61
  validateS3RequiredParameter(!!input.Key, 'Key');
50
62
  url.pathname = serializePathnameObjectKey(url, input.Key);
@@ -54,6 +66,11 @@ const uploadPartSerializer = async (
54
66
  partNumber: input.PartNumber + '',
55
67
  uploadId: input.UploadId,
56
68
  }).toString();
69
+ validateObjectUrl({
70
+ bucketName: input.Bucket,
71
+ key: input.Key,
72
+ objectURL: url,
73
+ });
57
74
 
58
75
  return {
59
76
  method: 'PUT',
@@ -0,0 +1,96 @@
1
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ import {
4
+ ErrorParser,
5
+ HttpResponse,
6
+ MiddlewareContext,
7
+ RetryDeciderOutput,
8
+ getRetryDecider,
9
+ } from '@aws-amplify/core/internals/aws-client-utils';
10
+
11
+ import { LocationCredentialsProvider } from '../../../types/options';
12
+
13
+ /**
14
+ * Function to decide if the S3 request should be retried. For S3 APIs, we support forceRefresh option
15
+ * for {@link LocationCredentialsProvider | LocationCredentialsProvider } option. It's set when S3 returns
16
+ * credentials expired error. In the retry decider, we detect this response and set flag to signify a retry
17
+ * attempt. The retry attempt would invoke the LocationCredentialsProvider with forceRefresh option set.
18
+ *
19
+ * @param response Optional response of the request.
20
+ * @param error Optional error thrown from previous attempts.
21
+ * @param middlewareContext Optional context object to store data between retries.
22
+ * @returns True if the request should be retried.
23
+ */
24
+ export type RetryDecider = (
25
+ response?: HttpResponse,
26
+ error?: unknown,
27
+ middlewareContext?: MiddlewareContext,
28
+ ) => Promise<RetryDeciderOutput>;
29
+
30
+ /**
31
+ * Factory of a {@link RetryDecider} function.
32
+ *
33
+ * @param errorParser function to parse HTTP response wth XML payload to JS
34
+ * Error instance.
35
+ * @returns A structure indicating if the response is retryable; And if it is a
36
+ * CredentialsExpiredError
37
+ */
38
+ export const createRetryDecider =
39
+ (errorParser: ErrorParser): RetryDecider =>
40
+ async (
41
+ response?: HttpResponse,
42
+ error?: unknown,
43
+ middlewareContext?: MiddlewareContext,
44
+ ): Promise<RetryDeciderOutput> => {
45
+ const defaultRetryDecider = getRetryDecider(errorParser);
46
+ const defaultRetryDecision = await defaultRetryDecider(response, error);
47
+ if (!response || response.statusCode < 300) {
48
+ return { retryable: false };
49
+ }
50
+ const parsedError = await errorParser(response);
51
+ const errorCode = parsedError?.name;
52
+ const errorMessage = parsedError?.message;
53
+ const isCredentialsExpired = isCredentialsExpiredError(
54
+ errorCode,
55
+ errorMessage,
56
+ );
57
+
58
+ return {
59
+ retryable:
60
+ defaultRetryDecision.retryable ||
61
+ // If we know the previous retry attempt sets isCredentialsExpired in the
62
+ // middleware context, we don't want to retry anymore.
63
+ !!(isCredentialsExpired && !middlewareContext?.isCredentialsExpired),
64
+ isCredentialsExpiredError: isCredentialsExpired,
65
+ };
66
+ };
67
+
68
+ // Ref: https://github.com/aws/aws-sdk-js/blob/54829e341181b41573c419bd870dd0e0f8f10632/lib/event_listeners.js#L522-L541
69
+ const INVALID_TOKEN_ERROR_CODES = [
70
+ 'RequestExpired',
71
+ 'ExpiredTokenException',
72
+ 'ExpiredToken',
73
+ ];
74
+
75
+ /**
76
+ * Given an error code, returns true if it is related to invalid credentials.
77
+ *
78
+ * @param errorCode String representation of some error.
79
+ * @returns True if given error indicates the credentials used to authorize request
80
+ * are invalid.
81
+ */
82
+ const isCredentialsExpiredError = (
83
+ errorCode?: string,
84
+ errorMessage?: string,
85
+ ) => {
86
+ const isExpiredTokenError =
87
+ !!errorCode && INVALID_TOKEN_ERROR_CODES.includes(errorCode);
88
+ // Ref: https://github.com/aws/aws-sdk-js/blob/54829e341181b41573c419bd870dd0e0f8f10632/lib/event_listeners.js#L536-L539
89
+ const isExpiredSignatureError =
90
+ !!errorCode &&
91
+ !!errorMessage &&
92
+ errorCode.includes('Signature') &&
93
+ errorMessage.includes('expired');
94
+
95
+ return isExpiredTokenError || isExpiredSignatureError;
96
+ };