@aws-amplify/storage 6.6.5 → 6.6.6-storage-browser.4949269.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 (369) hide show
  1. package/dist/cjs/errors/constants.js +8 -0
  2. package/dist/cjs/errors/constants.js.map +1 -0
  3. package/dist/cjs/errors/types/validation.js +12 -0
  4. package/dist/cjs/errors/types/validation.js.map +1 -1
  5. package/dist/cjs/providers/s3/apis/downloadData.js +3 -3
  6. package/dist/cjs/providers/s3/apis/downloadData.js.map +1 -1
  7. package/dist/cjs/providers/s3/apis/internal/copy.js +38 -6
  8. package/dist/cjs/providers/s3/apis/internal/copy.js.map +1 -1
  9. package/dist/cjs/providers/s3/apis/internal/getProperties.js +3 -4
  10. package/dist/cjs/providers/s3/apis/internal/getProperties.js.map +1 -1
  11. package/dist/cjs/providers/s3/apis/internal/getUrl.js +3 -3
  12. package/dist/cjs/providers/s3/apis/internal/getUrl.js.map +1 -1
  13. package/dist/cjs/providers/s3/apis/internal/list.js +4 -4
  14. package/dist/cjs/providers/s3/apis/internal/list.js.map +1 -1
  15. package/dist/cjs/providers/s3/apis/internal/remove.js +3 -4
  16. package/dist/cjs/providers/s3/apis/internal/remove.js.map +1 -1
  17. package/dist/cjs/providers/s3/apis/uploadData/multipart/initialUpload.js +22 -2
  18. package/dist/cjs/providers/s3/apis/uploadData/multipart/initialUpload.js.map +1 -1
  19. package/dist/cjs/providers/s3/apis/uploadData/multipart/uploadCache.js +3 -2
  20. package/dist/cjs/providers/s3/apis/uploadData/multipart/uploadCache.js.map +1 -1
  21. package/dist/cjs/providers/s3/apis/uploadData/multipart/uploadHandlers.js +19 -8
  22. package/dist/cjs/providers/s3/apis/uploadData/multipart/uploadHandlers.js.map +1 -1
  23. package/dist/cjs/providers/s3/apis/uploadData/multipart/uploadPartExecutor.js +20 -11
  24. package/dist/cjs/providers/s3/apis/uploadData/multipart/uploadPartExecutor.js.map +1 -1
  25. package/dist/cjs/providers/s3/apis/uploadData/putObjectJob.js +20 -7
  26. package/dist/cjs/providers/s3/apis/uploadData/putObjectJob.js.map +1 -1
  27. package/dist/cjs/providers/s3/apis/uploadData/validateObjectNotExists.js +25 -0
  28. package/dist/cjs/providers/s3/apis/uploadData/validateObjectNotExists.js.map +1 -0
  29. package/dist/cjs/providers/s3/utils/client/s3control/base.js +70 -0
  30. package/dist/cjs/providers/s3/utils/client/s3control/base.js.map +1 -0
  31. package/dist/cjs/providers/s3/utils/client/s3control/getDataAccess.js +58 -0
  32. package/dist/cjs/providers/s3/utils/client/s3control/getDataAccess.js.map +1 -0
  33. package/dist/cjs/providers/s3/utils/client/s3control/index.js +11 -0
  34. package/dist/cjs/providers/s3/utils/client/s3control/index.js.map +1 -0
  35. package/dist/cjs/providers/s3/utils/client/s3control/listCallerAccessGrants.js +63 -0
  36. package/dist/cjs/providers/s3/utils/client/s3control/listCallerAccessGrants.js.map +1 -0
  37. package/dist/cjs/providers/s3/utils/client/s3control/types.js.map +1 -0
  38. package/dist/cjs/providers/s3/utils/client/{abortMultipartUpload.js → s3data/abortMultipartUpload.js} +2 -2
  39. package/dist/cjs/providers/s3/utils/client/s3data/abortMultipartUpload.js.map +1 -0
  40. package/dist/cjs/providers/s3/utils/client/{base.js → s3data/base.js} +25 -3
  41. package/dist/cjs/providers/s3/utils/client/s3data/base.js.map +1 -0
  42. package/dist/cjs/providers/s3/utils/client/{completeMultipartUpload.js → s3data/completeMultipartUpload.js} +16 -11
  43. package/dist/cjs/providers/s3/utils/client/s3data/completeMultipartUpload.js.map +1 -0
  44. package/dist/cjs/providers/s3/utils/client/{copyObject.js → s3data/copyObject.js} +2 -2
  45. package/dist/cjs/providers/s3/utils/client/s3data/copyObject.js.map +1 -0
  46. package/dist/cjs/providers/s3/utils/client/{createMultipartUpload.js → s3data/createMultipartUpload.js} +8 -3
  47. package/dist/cjs/providers/s3/utils/client/s3data/createMultipartUpload.js.map +1 -0
  48. package/dist/cjs/providers/s3/utils/client/{deleteObject.js → s3data/deleteObject.js} +2 -2
  49. package/dist/cjs/providers/s3/utils/client/s3data/deleteObject.js.map +1 -0
  50. package/dist/cjs/providers/s3/utils/client/{getObject.js → s3data/getObject.js} +3 -3
  51. package/dist/cjs/providers/s3/utils/client/s3data/getObject.js.map +1 -0
  52. package/dist/cjs/providers/s3/utils/client/{headObject.js → s3data/headObject.js} +2 -2
  53. package/dist/cjs/providers/s3/utils/client/s3data/headObject.js.map +1 -0
  54. package/dist/cjs/providers/s3/utils/client/s3data/index.js.map +1 -0
  55. package/dist/cjs/providers/s3/utils/client/{listObjectsV2.js → s3data/listObjectsV2.js} +2 -2
  56. package/dist/cjs/providers/s3/utils/client/s3data/listObjectsV2.js.map +1 -0
  57. package/dist/cjs/providers/s3/utils/client/{listParts.js → s3data/listParts.js} +3 -2
  58. package/dist/cjs/providers/s3/utils/client/s3data/listParts.js.map +1 -0
  59. package/dist/cjs/providers/s3/utils/client/{putObject.js → s3data/putObject.js} +3 -2
  60. package/dist/cjs/providers/s3/utils/client/s3data/putObject.js.map +1 -0
  61. package/dist/cjs/providers/s3/utils/client/s3data/types.js +6 -0
  62. package/dist/cjs/providers/s3/utils/client/s3data/types.js.map +1 -0
  63. package/dist/cjs/providers/s3/utils/client/{uploadPart.js → s3data/uploadPart.js} +4 -3
  64. package/dist/cjs/providers/s3/utils/client/s3data/uploadPart.js.map +1 -0
  65. package/dist/cjs/providers/s3/utils/client/utils/createRetryDecider.js +57 -0
  66. package/dist/cjs/providers/s3/utils/client/utils/createRetryDecider.js.map +1 -0
  67. package/dist/cjs/providers/s3/utils/client/utils/deserializeHelpers.js +34 -1
  68. package/dist/cjs/providers/s3/utils/client/utils/deserializeHelpers.js.map +1 -1
  69. package/dist/cjs/providers/s3/utils/client/utils/index.js +4 -2
  70. package/dist/cjs/providers/s3/utils/client/utils/index.js.map +1 -1
  71. package/dist/cjs/providers/s3/utils/client/utils/parsePayload.js +20 -6
  72. package/dist/cjs/providers/s3/utils/client/utils/parsePayload.js.map +1 -1
  73. package/dist/cjs/providers/s3/utils/crc32.js +37 -0
  74. package/dist/cjs/providers/s3/utils/crc32.js.map +1 -0
  75. package/dist/cjs/providers/s3/utils/crc32.native.js +11 -0
  76. package/dist/cjs/providers/s3/utils/crc32.native.js.map +1 -0
  77. package/dist/cjs/providers/s3/utils/resolveIdentityId.js +14 -0
  78. package/dist/cjs/providers/s3/utils/resolveIdentityId.js.map +1 -0
  79. package/dist/cjs/providers/s3/utils/resolveS3ConfigAndInput.js +59 -13
  80. package/dist/cjs/providers/s3/utils/resolveS3ConfigAndInput.js.map +1 -1
  81. package/dist/cjs/providers/s3/utils/validateStorageOperationInput.js +4 -1
  82. package/dist/cjs/providers/s3/utils/validateStorageOperationInput.js.map +1 -1
  83. package/dist/cjs/providers/s3/utils/validateStorageOperationInputWithPrefix.js +4 -1
  84. package/dist/cjs/providers/s3/utils/validateStorageOperationInputWithPrefix.js.map +1 -1
  85. package/dist/cjs/storageBrowser/apis/constants.js +9 -0
  86. package/dist/cjs/storageBrowser/apis/constants.js.map +1 -0
  87. package/dist/cjs/storageBrowser/apis/getDataAccess.js +57 -0
  88. package/dist/cjs/storageBrowser/apis/getDataAccess.js.map +1 -0
  89. package/dist/cjs/storageBrowser/apis/listCallerAccessGrants.js +69 -0
  90. package/dist/cjs/storageBrowser/apis/listCallerAccessGrants.js.map +1 -0
  91. package/dist/cjs/storageBrowser/apis/types.js +6 -0
  92. package/dist/cjs/storageBrowser/apis/types.js.map +1 -0
  93. package/dist/cjs/storageBrowser/index.js +11 -0
  94. package/dist/cjs/storageBrowser/index.js.map +1 -0
  95. package/dist/cjs/storageBrowser/locationCredentialsStore/constants.js +9 -0
  96. package/dist/cjs/storageBrowser/locationCredentialsStore/constants.js.map +1 -0
  97. package/dist/cjs/storageBrowser/locationCredentialsStore/create.js +36 -0
  98. package/dist/cjs/storageBrowser/locationCredentialsStore/create.js.map +1 -0
  99. package/dist/cjs/storageBrowser/locationCredentialsStore/index.js +9 -0
  100. package/dist/cjs/storageBrowser/locationCredentialsStore/index.js.map +1 -0
  101. package/dist/cjs/storageBrowser/locationCredentialsStore/registry.js +58 -0
  102. package/dist/cjs/storageBrowser/locationCredentialsStore/registry.js.map +1 -0
  103. package/dist/cjs/storageBrowser/locationCredentialsStore/store.js +99 -0
  104. package/dist/cjs/storageBrowser/locationCredentialsStore/store.js.map +1 -0
  105. package/dist/cjs/storageBrowser/managedAuthConfigAdapter/createListLocationsHandler.js +15 -0
  106. package/dist/cjs/storageBrowser/managedAuthConfigAdapter/createListLocationsHandler.js.map +1 -0
  107. package/dist/cjs/storageBrowser/managedAuthConfigAdapter/createLocationCredentialsHandler.js +29 -0
  108. package/dist/cjs/storageBrowser/managedAuthConfigAdapter/createLocationCredentialsHandler.js.map +1 -0
  109. package/dist/cjs/storageBrowser/managedAuthConfigAdapter/createManagedAuthConfigAdapter.js +32 -0
  110. package/dist/cjs/storageBrowser/managedAuthConfigAdapter/createManagedAuthConfigAdapter.js.map +1 -0
  111. package/dist/cjs/storageBrowser/managedAuthConfigAdapter/index.js +9 -0
  112. package/dist/cjs/storageBrowser/managedAuthConfigAdapter/index.js.map +1 -0
  113. package/dist/cjs/storageBrowser/types.js +6 -0
  114. package/dist/cjs/storageBrowser/types.js.map +1 -0
  115. package/dist/esm/errors/constants.d.ts +1 -0
  116. package/dist/esm/errors/constants.mjs +6 -0
  117. package/dist/esm/errors/constants.mjs.map +1 -0
  118. package/dist/esm/errors/types/validation.d.ts +4 -1
  119. package/dist/esm/errors/types/validation.mjs +12 -0
  120. package/dist/esm/errors/types/validation.mjs.map +1 -1
  121. package/dist/esm/providers/s3/apis/downloadData.mjs +13 -13
  122. package/dist/esm/providers/s3/apis/downloadData.mjs.map +1 -1
  123. package/dist/esm/providers/s3/apis/internal/copy.mjs +48 -16
  124. package/dist/esm/providers/s3/apis/internal/copy.mjs.map +1 -1
  125. package/dist/esm/providers/s3/apis/internal/getProperties.mjs +13 -14
  126. package/dist/esm/providers/s3/apis/internal/getProperties.mjs.map +1 -1
  127. package/dist/esm/providers/s3/apis/internal/getUrl.mjs +13 -13
  128. package/dist/esm/providers/s3/apis/internal/getUrl.mjs.map +1 -1
  129. package/dist/esm/providers/s3/apis/internal/list.mjs +13 -13
  130. package/dist/esm/providers/s3/apis/internal/list.mjs.map +1 -1
  131. package/dist/esm/providers/s3/apis/internal/remove.mjs +13 -14
  132. package/dist/esm/providers/s3/apis/internal/remove.mjs.map +1 -1
  133. package/dist/esm/providers/s3/apis/uploadData/multipart/initialUpload.d.ts +2 -1
  134. package/dist/esm/providers/s3/apis/uploadData/multipart/initialUpload.mjs +32 -12
  135. package/dist/esm/providers/s3/apis/uploadData/multipart/initialUpload.mjs.map +1 -1
  136. package/dist/esm/providers/s3/apis/uploadData/multipart/uploadCache.d.ts +3 -1
  137. package/dist/esm/providers/s3/apis/uploadData/multipart/uploadCache.mjs +13 -12
  138. package/dist/esm/providers/s3/apis/uploadData/multipart/uploadCache.mjs.map +1 -1
  139. package/dist/esm/providers/s3/apis/uploadData/multipart/uploadHandlers.mjs +27 -16
  140. package/dist/esm/providers/s3/apis/uploadData/multipart/uploadHandlers.mjs.map +1 -1
  141. package/dist/esm/providers/s3/apis/uploadData/multipart/uploadPartExecutor.d.ts +3 -2
  142. package/dist/esm/providers/s3/apis/uploadData/multipart/uploadPartExecutor.mjs +27 -18
  143. package/dist/esm/providers/s3/apis/uploadData/multipart/uploadPartExecutor.mjs.map +1 -1
  144. package/dist/esm/providers/s3/apis/uploadData/putObjectJob.mjs +30 -17
  145. package/dist/esm/providers/s3/apis/uploadData/putObjectJob.mjs.map +1 -1
  146. package/dist/esm/providers/s3/apis/uploadData/validateObjectNotExists.d.ts +3 -0
  147. package/dist/esm/providers/s3/apis/uploadData/validateObjectNotExists.mjs +34 -0
  148. package/dist/esm/providers/s3/apis/uploadData/validateObjectNotExists.mjs.map +1 -0
  149. package/dist/esm/providers/s3/types/inputs.d.ts +5 -1
  150. package/dist/esm/providers/s3/types/options.d.ts +24 -1
  151. package/dist/esm/providers/s3/utils/client/s3control/base.d.ts +56 -0
  152. package/dist/esm/providers/s3/utils/client/s3control/base.mjs +74 -0
  153. package/dist/esm/providers/s3/utils/client/s3control/base.mjs.map +1 -0
  154. package/dist/esm/providers/s3/utils/client/s3control/getDataAccess.d.ts +26 -0
  155. package/dist/esm/providers/s3/utils/client/s3control/getDataAccess.mjs +63 -0
  156. package/dist/esm/providers/s3/utils/client/s3control/getDataAccess.mjs.map +1 -0
  157. package/dist/esm/providers/s3/utils/client/s3control/index.d.ts +2 -0
  158. package/dist/esm/providers/s3/utils/client/s3control/index.mjs +3 -0
  159. package/dist/esm/providers/s3/utils/client/s3control/index.mjs.map +1 -0
  160. package/dist/esm/providers/s3/utils/client/s3control/listCallerAccessGrants.d.ts +26 -0
  161. package/dist/esm/providers/s3/utils/client/s3control/listCallerAccessGrants.mjs +67 -0
  162. package/dist/esm/providers/s3/utils/client/s3control/listCallerAccessGrants.mjs.map +1 -0
  163. package/dist/esm/providers/s3/utils/client/s3control/types.d.ts +188 -0
  164. package/dist/esm/providers/s3/utils/client/{abortMultipartUpload.d.ts → s3data/abortMultipartUpload.d.ts} +4 -4
  165. package/dist/esm/providers/s3/utils/client/{abortMultipartUpload.mjs → s3data/abortMultipartUpload.mjs} +5 -6
  166. package/dist/esm/providers/s3/utils/client/s3data/abortMultipartUpload.mjs.map +1 -0
  167. package/dist/esm/providers/s3/utils/client/{base.d.ts → s3data/base.d.ts} +23 -1
  168. package/dist/esm/providers/s3/utils/client/{base.mjs → s3data/base.mjs} +29 -6
  169. package/dist/esm/providers/s3/utils/client/s3data/base.mjs.map +1 -0
  170. package/dist/esm/providers/s3/utils/client/{completeMultipartUpload.d.ts → s3data/completeMultipartUpload.d.ts} +6 -6
  171. package/dist/esm/providers/s3/utils/client/{completeMultipartUpload.mjs → s3data/completeMultipartUpload.mjs} +19 -14
  172. package/dist/esm/providers/s3/utils/client/s3data/completeMultipartUpload.mjs.map +1 -0
  173. package/dist/esm/providers/s3/utils/client/{copyObject.d.ts → s3data/copyObject.d.ts} +4 -4
  174. package/dist/esm/providers/s3/utils/client/{copyObject.mjs → s3data/copyObject.mjs} +6 -6
  175. package/dist/esm/providers/s3/utils/client/s3data/copyObject.mjs.map +1 -0
  176. package/dist/esm/providers/s3/utils/client/{createMultipartUpload.d.ts → s3data/createMultipartUpload.d.ts} +4 -4
  177. package/dist/esm/providers/s3/utils/client/{createMultipartUpload.mjs → s3data/createMultipartUpload.mjs} +12 -7
  178. package/dist/esm/providers/s3/utils/client/s3data/createMultipartUpload.mjs.map +1 -0
  179. package/dist/esm/providers/s3/utils/client/{deleteObject.d.ts → s3data/deleteObject.d.ts} +4 -4
  180. package/dist/esm/providers/s3/utils/client/{deleteObject.mjs → s3data/deleteObject.mjs} +5 -6
  181. package/dist/esm/providers/s3/utils/client/s3data/deleteObject.mjs.map +1 -0
  182. package/dist/esm/providers/s3/utils/client/{getObject.d.ts → s3data/getObject.d.ts} +4 -4
  183. package/dist/esm/providers/s3/utils/client/{getObject.mjs → s3data/getObject.mjs} +7 -8
  184. package/dist/esm/providers/s3/utils/client/s3data/getObject.mjs.map +1 -0
  185. package/dist/esm/providers/s3/utils/client/{headObject.d.ts → s3data/headObject.d.ts} +4 -4
  186. package/dist/esm/providers/s3/utils/client/{headObject.mjs → s3data/headObject.mjs} +5 -6
  187. package/dist/esm/providers/s3/utils/client/s3data/headObject.mjs.map +1 -0
  188. package/dist/esm/providers/s3/utils/client/{listObjectsV2.d.ts → s3data/listObjectsV2.d.ts} +4 -4
  189. package/dist/esm/providers/s3/utils/client/{listObjectsV2.mjs → s3data/listObjectsV2.mjs} +6 -6
  190. package/dist/esm/providers/s3/utils/client/s3data/listObjectsV2.mjs.map +1 -0
  191. package/dist/esm/providers/s3/utils/client/{listParts.d.ts → s3data/listParts.d.ts} +4 -4
  192. package/dist/esm/providers/s3/utils/client/{listParts.mjs → s3data/listParts.mjs} +7 -6
  193. package/dist/esm/providers/s3/utils/client/s3data/listParts.mjs.map +1 -0
  194. package/dist/esm/providers/s3/utils/client/{putObject.d.ts → s3data/putObject.d.ts} +5 -5
  195. package/dist/esm/providers/s3/utils/client/{putObject.mjs → s3data/putObject.mjs} +6 -6
  196. package/dist/esm/providers/s3/utils/client/s3data/putObject.mjs.map +1 -0
  197. package/dist/esm/providers/s3/utils/client/s3data/types.mjs +2 -0
  198. package/dist/esm/providers/s3/utils/client/s3data/types.mjs.map +1 -0
  199. package/dist/esm/providers/s3/utils/client/{uploadPart.d.ts → s3data/uploadPart.d.ts} +5 -5
  200. package/dist/esm/providers/s3/utils/client/{uploadPart.mjs → s3data/uploadPart.mjs} +7 -7
  201. package/dist/esm/providers/s3/utils/client/s3data/uploadPart.mjs.map +1 -0
  202. package/dist/esm/providers/s3/utils/client/utils/createRetryDecider.d.ts +22 -0
  203. package/dist/esm/providers/s3/utils/client/utils/createRetryDecider.mjs +55 -0
  204. package/dist/esm/providers/s3/utils/client/utils/createRetryDecider.mjs.map +1 -0
  205. package/dist/esm/providers/s3/utils/client/utils/deserializeHelpers.d.ts +17 -0
  206. package/dist/esm/providers/s3/utils/client/utils/deserializeHelpers.mjs +33 -1
  207. package/dist/esm/providers/s3/utils/client/utils/deserializeHelpers.mjs.map +1 -1
  208. package/dist/esm/providers/s3/utils/client/utils/index.d.ts +2 -1
  209. package/dist/esm/providers/s3/utils/client/utils/index.mjs +2 -1
  210. package/dist/esm/providers/s3/utils/client/utils/index.mjs.map +1 -1
  211. package/dist/esm/providers/s3/utils/client/utils/parsePayload.d.ts +16 -1
  212. package/dist/esm/providers/s3/utils/client/utils/parsePayload.mjs +19 -5
  213. package/dist/esm/providers/s3/utils/client/utils/parsePayload.mjs.map +1 -1
  214. package/dist/esm/providers/s3/utils/crc32.d.ts +6 -0
  215. package/dist/esm/providers/s3/utils/crc32.mjs +34 -0
  216. package/dist/esm/providers/s3/utils/crc32.mjs.map +1 -0
  217. package/dist/esm/providers/s3/utils/crc32.native.d.ts +2 -0
  218. package/dist/esm/providers/s3/utils/crc32.native.mjs +8 -0
  219. package/dist/esm/providers/s3/utils/crc32.native.mjs.map +1 -0
  220. package/dist/esm/providers/s3/utils/resolveIdentityId.d.ts +1 -0
  221. package/dist/esm/providers/s3/utils/resolveIdentityId.mjs +12 -0
  222. package/dist/esm/providers/s3/utils/resolveIdentityId.mjs.map +1 -0
  223. package/dist/esm/providers/s3/utils/resolveS3ConfigAndInput.d.ts +10 -2
  224. package/dist/esm/providers/s3/utils/resolveS3ConfigAndInput.mjs +57 -11
  225. package/dist/esm/providers/s3/utils/resolveS3ConfigAndInput.mjs.map +1 -1
  226. package/dist/esm/providers/s3/utils/validateStorageOperationInput.mjs +4 -1
  227. package/dist/esm/providers/s3/utils/validateStorageOperationInput.mjs.map +1 -1
  228. package/dist/esm/providers/s3/utils/validateStorageOperationInputWithPrefix.mjs +4 -1
  229. package/dist/esm/providers/s3/utils/validateStorageOperationInputWithPrefix.mjs.map +1 -1
  230. package/dist/esm/storageBrowser/apis/constants.d.ts +2 -0
  231. package/dist/esm/storageBrowser/apis/constants.mjs +7 -0
  232. package/dist/esm/storageBrowser/apis/constants.mjs.map +1 -0
  233. package/dist/esm/storageBrowser/apis/getDataAccess.d.ts +2 -0
  234. package/dist/esm/storageBrowser/apis/getDataAccess.mjs +57 -0
  235. package/dist/esm/storageBrowser/apis/getDataAccess.mjs.map +1 -0
  236. package/dist/esm/storageBrowser/apis/listCallerAccessGrants.d.ts +2 -0
  237. package/dist/esm/storageBrowser/apis/listCallerAccessGrants.mjs +69 -0
  238. package/dist/esm/storageBrowser/apis/listCallerAccessGrants.mjs.map +1 -0
  239. package/dist/esm/storageBrowser/apis/types.d.ts +18 -0
  240. package/dist/esm/storageBrowser/apis/types.mjs +2 -0
  241. package/dist/esm/storageBrowser/apis/types.mjs.map +1 -0
  242. package/dist/esm/storageBrowser/index.d.ts +6 -0
  243. package/dist/esm/storageBrowser/index.mjs +3 -0
  244. package/dist/esm/storageBrowser/index.mjs.map +1 -0
  245. package/dist/esm/storageBrowser/locationCredentialsStore/constants.d.ts +2 -0
  246. package/dist/esm/storageBrowser/locationCredentialsStore/constants.mjs +7 -0
  247. package/dist/esm/storageBrowser/locationCredentialsStore/constants.mjs.map +1 -0
  248. package/dist/esm/storageBrowser/locationCredentialsStore/create.d.ts +2 -0
  249. package/dist/esm/storageBrowser/locationCredentialsStore/create.mjs +34 -0
  250. package/dist/esm/storageBrowser/locationCredentialsStore/create.mjs.map +1 -0
  251. package/dist/esm/storageBrowser/locationCredentialsStore/index.d.ts +1 -0
  252. package/dist/esm/storageBrowser/locationCredentialsStore/index.mjs +2 -0
  253. package/dist/esm/storageBrowser/locationCredentialsStore/index.mjs.map +1 -0
  254. package/dist/esm/storageBrowser/locationCredentialsStore/registry.d.ts +23 -0
  255. package/dist/esm/storageBrowser/locationCredentialsStore/registry.mjs +54 -0
  256. package/dist/esm/storageBrowser/locationCredentialsStore/registry.mjs.map +1 -0
  257. package/dist/esm/storageBrowser/locationCredentialsStore/store.d.ts +35 -0
  258. package/dist/esm/storageBrowser/locationCredentialsStore/store.mjs +95 -0
  259. package/dist/esm/storageBrowser/locationCredentialsStore/store.mjs.map +1 -0
  260. package/dist/esm/storageBrowser/managedAuthConfigAdapter/createListLocationsHandler.d.ts +8 -0
  261. package/dist/esm/storageBrowser/managedAuthConfigAdapter/createListLocationsHandler.mjs +13 -0
  262. package/dist/esm/storageBrowser/managedAuthConfigAdapter/createListLocationsHandler.mjs.map +1 -0
  263. package/dist/esm/storageBrowser/managedAuthConfigAdapter/createLocationCredentialsHandler.d.ts +8 -0
  264. package/dist/esm/storageBrowser/managedAuthConfigAdapter/createLocationCredentialsHandler.mjs +27 -0
  265. package/dist/esm/storageBrowser/managedAuthConfigAdapter/createLocationCredentialsHandler.mjs.map +1 -0
  266. package/dist/esm/storageBrowser/managedAuthConfigAdapter/createManagedAuthConfigAdapter.d.ts +19 -0
  267. package/dist/esm/storageBrowser/managedAuthConfigAdapter/createManagedAuthConfigAdapter.mjs +30 -0
  268. package/dist/esm/storageBrowser/managedAuthConfigAdapter/createManagedAuthConfigAdapter.mjs.map +1 -0
  269. package/dist/esm/storageBrowser/managedAuthConfigAdapter/index.d.ts +1 -0
  270. package/dist/esm/storageBrowser/managedAuthConfigAdapter/index.mjs +2 -0
  271. package/dist/esm/storageBrowser/managedAuthConfigAdapter/index.mjs.map +1 -0
  272. package/dist/esm/storageBrowser/types.d.ts +92 -0
  273. package/dist/esm/storageBrowser/types.mjs +2 -0
  274. package/dist/esm/storageBrowser/types.mjs.map +1 -0
  275. package/package.json +117 -107
  276. package/src/errors/constants.ts +4 -0
  277. package/src/errors/types/validation.ts +12 -0
  278. package/src/providers/s3/apis/downloadData.ts +2 -2
  279. package/src/providers/s3/apis/internal/copy.ts +42 -12
  280. package/src/providers/s3/apis/internal/getProperties.ts +2 -3
  281. package/src/providers/s3/apis/internal/getUrl.ts +2 -2
  282. package/src/providers/s3/apis/internal/list.ts +3 -3
  283. package/src/providers/s3/apis/internal/remove.ts +2 -3
  284. package/src/providers/s3/apis/uploadData/multipart/initialUpload.ts +30 -1
  285. package/src/providers/s3/apis/uploadData/multipart/uploadCache.ts +4 -1
  286. package/src/providers/s3/apis/uploadData/multipart/uploadHandlers.ts +36 -17
  287. package/src/providers/s3/apis/uploadData/multipart/uploadPartExecutor.ts +23 -7
  288. package/src/providers/s3/apis/uploadData/putObjectJob.ts +22 -5
  289. package/src/providers/s3/apis/uploadData/validateObjectNotExists.ts +25 -0
  290. package/src/providers/s3/types/inputs.ts +7 -1
  291. package/src/providers/s3/types/options.ts +35 -1
  292. package/src/providers/s3/utils/client/s3control/base.ts +97 -0
  293. package/src/providers/s3/utils/client/s3control/getDataAccess.ts +96 -0
  294. package/src/providers/s3/utils/client/s3control/index.ts +13 -0
  295. package/src/providers/s3/utils/client/s3control/listCallerAccessGrants.ts +107 -0
  296. package/src/providers/s3/utils/client/s3control/types.ts +216 -0
  297. package/src/providers/s3/utils/client/{abortMultipartUpload.ts → s3data/abortMultipartUpload.ts} +4 -4
  298. package/src/providers/s3/utils/client/{base.ts → s3data/base.ts} +26 -3
  299. package/src/providers/s3/utils/client/{completeMultipartUpload.ts → s3data/completeMultipartUpload.ts} +28 -19
  300. package/src/providers/s3/utils/client/{copyObject.ts → s3data/copyObject.ts} +4 -4
  301. package/src/providers/s3/utils/client/{createMultipartUpload.ts → s3data/createMultipartUpload.ts} +15 -9
  302. package/src/providers/s3/utils/client/{deleteObject.ts → s3data/deleteObject.ts} +7 -7
  303. package/src/providers/s3/utils/client/{getObject.ts → s3data/getObject.ts} +13 -9
  304. package/src/providers/s3/utils/client/{headObject.ts → s3data/headObject.ts} +4 -4
  305. package/src/providers/s3/utils/client/{listObjectsV2.ts → s3data/listObjectsV2.ts} +7 -7
  306. package/src/providers/s3/utils/client/{listParts.ts → s3data/listParts.ts} +9 -8
  307. package/src/providers/s3/utils/client/{putObject.ts → s3data/putObject.ts} +6 -4
  308. package/src/providers/s3/utils/client/{uploadPart.ts → s3data/uploadPart.ts} +13 -6
  309. package/src/providers/s3/utils/client/utils/createRetryDecider.ts +96 -0
  310. package/src/providers/s3/utils/client/utils/deserializeHelpers.ts +41 -0
  311. package/src/providers/s3/utils/client/utils/index.ts +2 -1
  312. package/src/providers/s3/utils/client/utils/parsePayload.ts +36 -18
  313. package/src/providers/s3/utils/crc32.native.ts +11 -0
  314. package/src/providers/s3/utils/crc32.ts +51 -0
  315. package/src/providers/s3/utils/resolveIdentityId.ts +11 -0
  316. package/src/providers/s3/utils/resolveS3ConfigAndInput.ts +109 -14
  317. package/src/providers/s3/utils/validateStorageOperationInput.ts +5 -1
  318. package/src/providers/s3/utils/validateStorageOperationInputWithPrefix.ts +5 -1
  319. package/src/storageBrowser/apis/constants.ts +5 -0
  320. package/src/storageBrowser/apis/getDataAccess.ts +79 -0
  321. package/src/storageBrowser/apis/listCallerAccessGrants.ts +94 -0
  322. package/src/storageBrowser/apis/types.ts +33 -0
  323. package/src/storageBrowser/index.ts +25 -0
  324. package/src/storageBrowser/locationCredentialsStore/constants.ts +5 -0
  325. package/src/storageBrowser/locationCredentialsStore/create.ts +54 -0
  326. package/src/storageBrowser/locationCredentialsStore/index.ts +4 -0
  327. package/src/storageBrowser/locationCredentialsStore/registry.ts +88 -0
  328. package/src/storageBrowser/locationCredentialsStore/store.ts +161 -0
  329. package/src/storageBrowser/managedAuthConfigAdapter/createListLocationsHandler.ts +21 -0
  330. package/src/storageBrowser/managedAuthConfigAdapter/createLocationCredentialsHandler.ts +40 -0
  331. package/src/storageBrowser/managedAuthConfigAdapter/createManagedAuthConfigAdapter.ts +53 -0
  332. package/src/storageBrowser/managedAuthConfigAdapter/index.ts +8 -0
  333. package/src/storageBrowser/types.ts +117 -0
  334. package/dist/cjs/providers/s3/utils/client/abortMultipartUpload.js.map +0 -1
  335. package/dist/cjs/providers/s3/utils/client/base.js.map +0 -1
  336. package/dist/cjs/providers/s3/utils/client/completeMultipartUpload.js.map +0 -1
  337. package/dist/cjs/providers/s3/utils/client/copyObject.js.map +0 -1
  338. package/dist/cjs/providers/s3/utils/client/createMultipartUpload.js.map +0 -1
  339. package/dist/cjs/providers/s3/utils/client/deleteObject.js.map +0 -1
  340. package/dist/cjs/providers/s3/utils/client/getObject.js.map +0 -1
  341. package/dist/cjs/providers/s3/utils/client/headObject.js.map +0 -1
  342. package/dist/cjs/providers/s3/utils/client/index.js.map +0 -1
  343. package/dist/cjs/providers/s3/utils/client/listObjectsV2.js.map +0 -1
  344. package/dist/cjs/providers/s3/utils/client/listParts.js.map +0 -1
  345. package/dist/cjs/providers/s3/utils/client/putObject.js.map +0 -1
  346. package/dist/cjs/providers/s3/utils/client/types.js.map +0 -1
  347. package/dist/cjs/providers/s3/utils/client/uploadPart.js.map +0 -1
  348. package/dist/esm/providers/s3/utils/client/abortMultipartUpload.mjs.map +0 -1
  349. package/dist/esm/providers/s3/utils/client/base.mjs.map +0 -1
  350. package/dist/esm/providers/s3/utils/client/completeMultipartUpload.mjs.map +0 -1
  351. package/dist/esm/providers/s3/utils/client/copyObject.mjs.map +0 -1
  352. package/dist/esm/providers/s3/utils/client/createMultipartUpload.mjs.map +0 -1
  353. package/dist/esm/providers/s3/utils/client/deleteObject.mjs.map +0 -1
  354. package/dist/esm/providers/s3/utils/client/getObject.mjs.map +0 -1
  355. package/dist/esm/providers/s3/utils/client/headObject.mjs.map +0 -1
  356. package/dist/esm/providers/s3/utils/client/listObjectsV2.mjs.map +0 -1
  357. package/dist/esm/providers/s3/utils/client/listParts.mjs.map +0 -1
  358. package/dist/esm/providers/s3/utils/client/putObject.mjs.map +0 -1
  359. package/dist/esm/providers/s3/utils/client/uploadPart.mjs.map +0 -1
  360. /package/dist/cjs/providers/s3/utils/client/{types.js → s3control/types.js} +0 -0
  361. /package/dist/cjs/providers/s3/utils/client/{index.js → s3data/index.js} +0 -0
  362. /package/dist/esm/providers/s3/utils/client/{types.mjs → s3control/types.mjs} +0 -0
  363. /package/dist/esm/providers/s3/utils/client/{types.mjs.map → s3control/types.mjs.map} +0 -0
  364. /package/dist/esm/providers/s3/utils/client/{index.d.ts → s3data/index.d.ts} +0 -0
  365. /package/dist/esm/providers/s3/utils/client/{index.mjs → s3data/index.mjs} +0 -0
  366. /package/dist/esm/providers/s3/utils/client/{index.mjs.map → s3data/index.mjs.map} +0 -0
  367. /package/dist/esm/providers/s3/utils/client/{types.d.ts → s3data/types.d.ts} +0 -0
  368. /package/src/providers/s3/utils/client/{index.ts → s3data/index.ts} +0 -0
  369. /package/src/providers/s3/utils/client/{types.ts → s3data/types.ts} +0 -0
@@ -10,20 +10,20 @@ 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 {
19
14
  buildStorageServiceError,
20
15
  deserializeBoolean,
21
16
  map,
22
- parseXmlError,
23
17
  s3TransferHandler,
24
18
  serializePathnameObjectKey,
25
19
  validateS3RequiredParameter,
26
- } from './utils';
20
+ } from '../utils';
21
+
22
+ import type {
23
+ DeleteObjectCommandInput,
24
+ DeleteObjectCommandOutput,
25
+ } from './types';
26
+ import { defaultConfig, parseXmlError } from './base';
27
27
 
28
28
  export type DeleteObjectInput = Pick<
29
29
  DeleteObjectCommandInput,
@@ -11,15 +11,9 @@ 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,
25
19
  buildStorageServiceError,
@@ -28,11 +22,21 @@ import {
28
22
  deserializeNumber,
29
23
  deserializeTimestamp,
30
24
  map,
31
- parseXmlError,
32
25
  s3TransferHandler,
33
26
  serializePathnameObjectKey,
34
27
  validateS3RequiredParameter,
35
- } from './utils';
28
+ } from '../utils';
29
+
30
+ import {
31
+ S3EndpointResolverOptions,
32
+ defaultConfig,
33
+ parseXmlError,
34
+ } from './base';
35
+ import type {
36
+ CompatibleHttpResponse,
37
+ GetObjectCommandInput,
38
+ GetObjectCommandOutput,
39
+ } from './types';
36
40
 
37
41
  const USER_AGENT_HEADER = 'x-amz-user-agent';
38
42
 
@@ -10,19 +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 { HeadObjectCommandInput, HeadObjectCommandOutput } from './types';
15
13
  import {
16
14
  buildStorageServiceError,
17
15
  deserializeMetadata,
18
16
  deserializeNumber,
19
17
  deserializeTimestamp,
20
18
  map,
21
- parseXmlError,
22
19
  s3TransferHandler,
23
20
  serializePathnameObjectKey,
24
21
  validateS3RequiredParameter,
25
- } from './utils';
22
+ } from '../utils';
23
+
24
+ import { defaultConfig, parseXmlError } from './base';
25
+ import type { HeadObjectCommandInput, HeadObjectCommandOutput } from './types';
26
26
 
27
27
  export type HeadObjectInput = Pick<HeadObjectCommandInput, 'Bucket' | 'Key'>;
28
28
 
@@ -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,14 @@ import {
27
22
  emptyArrayGuard,
28
23
  map,
29
24
  parseXmlBody,
30
- parseXmlError,
31
25
  s3TransferHandler,
32
- } from './utils';
26
+ } from '../utils';
27
+
28
+ import type {
29
+ ListObjectsV2CommandInput,
30
+ ListObjectsV2CommandOutput,
31
+ } from './types';
32
+ import { defaultConfig, parseXmlError } from './base';
33
33
 
34
34
  export type ListObjectsV2Input = ListObjectsV2CommandInput;
35
35
 
@@ -13,23 +13,23 @@ 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
18
  deserializeNumber,
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 {
28
+ CompletedPart,
29
+ ListPartsCommandInput,
30
+ ListPartsCommandOutput,
31
+ } from './types';
32
+ import { defaultConfig, parseXmlError } from './base';
33
33
 
34
34
  export type ListPartsInput = Pick<
35
35
  ListPartsCommandInput,
@@ -90,6 +90,7 @@ const deserializeCompletedPartList = (input: any[]): CompletedPart[] =>
90
90
  PartNumber: ['PartNumber', deserializeNumber],
91
91
  ETag: 'ETag',
92
92
  Size: ['Size', deserializeNumber],
93
+ ChecksumCRC32: 'ChecksumCRC32',
93
94
  }),
94
95
  );
95
96
 
@@ -10,18 +10,18 @@ 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
+
23
+ import { defaultConfig, parseXmlError } from './base';
24
+ import type { PutObjectCommandInput, PutObjectCommandOutput } from './types';
25
25
 
26
26
  export type PutObjectInput = Pick<
27
27
  PutObjectCommandInput,
@@ -37,6 +37,7 @@ export type PutObjectInput = Pick<
37
37
  | 'Expires'
38
38
  | 'Metadata'
39
39
  | 'Tagging'
40
+ | 'ChecksumCRC32'
40
41
  >;
41
42
 
42
43
  export type PutObjectOutput = Pick<
@@ -56,6 +57,7 @@ const putObjectSerializer = async (
56
57
  ContentType: input.ContentType ?? 'application/octet-stream',
57
58
  })),
58
59
  ...assignStringVariables({ 'content-md5': input.ContentMD5 }),
60
+ ...assignStringVariables({ 'x-amz-checksum-crc32': input.ChecksumCRC32 }),
59
61
  };
60
62
  const url = new AmplifyUrl(endpoint.url.toString());
61
63
  validateS3RequiredParameter(!!input.Key, 'Key');
@@ -13,23 +13,29 @@ 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
+
25
+ import { defaultConfig, parseXmlError } from './base';
26
+ import type { UploadPartCommandInput, UploadPartCommandOutput } from './types';
27
27
 
28
28
  // Content-length is ignored here because it's forbidden header
29
29
  // and will be set by browser or fetch polyfill.
30
30
  export type UploadPartInput = Pick<
31
31
  UploadPartCommandInput,
32
- 'PartNumber' | 'Body' | 'UploadId' | 'Bucket' | 'Key' | 'ContentMD5'
32
+ | 'PartNumber'
33
+ | 'Body'
34
+ | 'UploadId'
35
+ | 'Bucket'
36
+ | 'Key'
37
+ | 'ContentMD5'
38
+ | 'ChecksumCRC32'
33
39
  >;
34
40
 
35
41
  export type UploadPartOutput = Pick<
@@ -42,9 +48,10 @@ const uploadPartSerializer = async (
42
48
  endpoint: Endpoint,
43
49
  ): Promise<HttpRequest> => {
44
50
  const headers = {
51
+ ...assignStringVariables({ 'x-amz-checksum-crc32': input.ChecksumCRC32 }),
45
52
  ...assignStringVariables({ 'content-md5': input.ContentMD5 }),
53
+ 'content-type': 'application/octet-stream',
46
54
  };
47
- headers['content-type'] = 'application/octet-stream';
48
55
  const url = new AmplifyUrl(endpoint.url.toString());
49
56
  validateS3RequiredParameter(!!input.Key, 'Key');
50
57
  url.pathname = serializePathnameObjectKey(url, input.Key);
@@ -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
+ };
@@ -104,6 +104,47 @@ export const deserializeTimestamp = (value: string): Date | undefined => {
104
104
  return value ? new Date(value) : undefined;
105
105
  };
106
106
 
107
+ /**
108
+ * Create a function deserializing a string to an enum value. If the string is not a valid enum value, it throws a
109
+ * StorageError.
110
+ *
111
+ * @example
112
+ * ```typescript
113
+ * const deserializeStringEnum = createStringEnumDeserializer(['a', 'b', 'c'] as const, 'FieldName');
114
+ * const deserializedArray = ['a', 'b', 'c'].map(deserializeStringEnum);
115
+ * // deserializedArray = ['a', 'b', 'c']
116
+ *
117
+ * const invalidValue = deserializeStringEnum('d');
118
+ * // Throws InvalidFieldName: Invalid FieldName: d
119
+ * ```
120
+ *
121
+ * @internal
122
+ */
123
+ export const createStringEnumDeserializer = <T extends readonly string[]>(
124
+ enumValues: T,
125
+ fieldName: string,
126
+ ) => {
127
+ const deserializeStringEnum = (
128
+ value: any,
129
+ ): T extends (infer E)[] ? E : never => {
130
+ const parsedEnumValue = value
131
+ ? (enumValues.find(enumValue => enumValue === value) as any)
132
+ : undefined;
133
+ if (!parsedEnumValue) {
134
+ throw new StorageError({
135
+ name: `Invalid${fieldName}`,
136
+ message: `Invalid ${fieldName}: ${value}`,
137
+ recoverySuggestion:
138
+ 'This is likely to be a bug. Please reach out to library authors.',
139
+ });
140
+ }
141
+
142
+ return parsedEnumValue;
143
+ };
144
+
145
+ return deserializeStringEnum;
146
+ };
147
+
107
148
  /**
108
149
  * Function that makes sure the deserializer receives non-empty array.
109
150
  *
@@ -1,7 +1,7 @@
1
1
  // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
2
  // SPDX-License-Identifier: Apache-2.0
3
3
 
4
- export { parseXmlBody, parseXmlError } from './parsePayload';
4
+ export { parseXmlBody, createXmlErrorParser } from './parsePayload';
5
5
  export {
6
6
  SEND_DOWNLOAD_PROGRESS_EVENT,
7
7
  SEND_UPLOAD_PROGRESS_EVENT,
@@ -25,3 +25,4 @@ export {
25
25
  serializePathnameObjectKey,
26
26
  validateS3RequiredParameter,
27
27
  } from './serializeHelpers';
28
+ export { createRetryDecider } from './createRetryDecider';
@@ -9,25 +9,43 @@ import {
9
9
 
10
10
  import { parser } from '../runtime';
11
11
 
12
- export const parseXmlError: ErrorParser = async (response?: HttpResponse) => {
13
- if (!response || response.statusCode < 300) {
14
- return;
15
- }
16
- const { statusCode } = response;
17
- const body = await parseXmlBody(response);
18
- const code = body?.Code
19
- ? (body.Code as string)
20
- : statusCode === 404
21
- ? 'NotFound'
22
- : statusCode.toString();
23
- const message = body?.message ?? body?.Message ?? code;
24
- const error = new Error(message);
12
+ /**
13
+ * Factory creating a parser that parses the JS Error object from the XML
14
+ * response payload.
15
+ *
16
+ * @param input Input object
17
+ * @param input.noErrorWrapping Whether the error code and message are located
18
+ * directly in the root XML element, or in a nested `<Error>` element.
19
+ * See: https://smithy.io/2.0/aws/protocols/aws-restxml-protocol.html#restxml-errors
20
+ *
21
+ * Default to false.
22
+ *
23
+ * @internal
24
+ */
25
+ export const createXmlErrorParser =
26
+ ({
27
+ noErrorWrapping = false,
28
+ }: { noErrorWrapping?: boolean } = {}): ErrorParser =>
29
+ async (response?: HttpResponse) => {
30
+ if (!response || response.statusCode < 300) {
31
+ return;
32
+ }
33
+ const { statusCode } = response;
34
+ const body = await parseXmlBody(response);
35
+ const errorLocation = noErrorWrapping ? body : body.Error;
36
+ const code = errorLocation?.Code
37
+ ? (errorLocation.Code as string)
38
+ : statusCode === 404
39
+ ? 'NotFound'
40
+ : statusCode.toString();
41
+ const message = errorLocation?.message ?? errorLocation?.Message ?? code;
42
+ const error = new Error(message);
25
43
 
26
- return Object.assign(error, {
27
- name: code,
28
- $metadata: parseMetadata(response),
29
- });
30
- };
44
+ return Object.assign(error, {
45
+ name: code,
46
+ $metadata: parseMetadata(response),
47
+ });
48
+ };
31
49
 
32
50
  export const parseXmlBody = async (response: HttpResponse): Promise<any> => {
33
51
  if (!response.body) {
@@ -0,0 +1,11 @@
1
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ import { CRC32Checksum } from './crc32';
5
+
6
+ export const calculateContentCRC32 = async (
7
+ content: Blob | string | ArrayBuffer | ArrayBufferView,
8
+ _seed = 0,
9
+ ): Promise<CRC32Checksum | undefined> => {
10
+ return undefined;
11
+ };
@@ -0,0 +1,51 @@
1
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ import crc32 from 'crc-32';
5
+
6
+ export interface CRC32Checksum {
7
+ checksumArrayBuffer: ArrayBuffer;
8
+ checksum: string;
9
+ seed: number;
10
+ }
11
+
12
+ export const calculateContentCRC32 = async (
13
+ content: Blob | string | ArrayBuffer | ArrayBufferView,
14
+ seed = 0,
15
+ ): Promise<CRC32Checksum | undefined> => {
16
+ let internalSeed = seed;
17
+ let blob: Blob;
18
+
19
+ if (content instanceof Blob) {
20
+ blob = content;
21
+ } else {
22
+ blob = new Blob([content]);
23
+ }
24
+
25
+ await blob.stream().pipeTo(
26
+ new WritableStream<Uint8Array>({
27
+ write(chunk) {
28
+ internalSeed = crc32.buf(chunk, internalSeed) >>> 0;
29
+ },
30
+ }),
31
+ );
32
+ const hex = internalSeed.toString(16).padStart(8, '0');
33
+
34
+ return {
35
+ checksumArrayBuffer: hexToArrayBuffer(hex),
36
+ checksum: hexToBase64(hex),
37
+ seed: internalSeed,
38
+ };
39
+ };
40
+
41
+ const hexToArrayBuffer = (hexString: string) =>
42
+ new Uint8Array((hexString.match(/\w{2}/g)! ?? []).map(h => parseInt(h, 16)))
43
+ .buffer;
44
+
45
+ const hexToBase64 = (hexString: string) =>
46
+ btoa(
47
+ hexString
48
+ .match(/\w{2}/g)!
49
+ .map((a: string) => String.fromCharCode(parseInt(a, 16)))
50
+ .join(''),
51
+ );
@@ -0,0 +1,11 @@
1
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ import { StorageValidationErrorCode } from '../../../errors/types/validation';
5
+ import { assertValidationError } from '../../../errors/utils/assertValidationError';
6
+
7
+ export const resolveIdentityId = (identityId?: string): string => {
8
+ assertValidationError(!!identityId, StorageValidationErrorCode.NoIdentityId);
9
+
10
+ return identityId;
11
+ };