@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.
- package/dist/cjs/errors/constants.js +8 -0
- package/dist/cjs/errors/constants.js.map +1 -0
- package/dist/cjs/errors/types/validation.js +12 -0
- package/dist/cjs/errors/types/validation.js.map +1 -1
- package/dist/cjs/providers/s3/apis/downloadData.js +3 -3
- package/dist/cjs/providers/s3/apis/downloadData.js.map +1 -1
- package/dist/cjs/providers/s3/apis/internal/copy.js +38 -6
- package/dist/cjs/providers/s3/apis/internal/copy.js.map +1 -1
- package/dist/cjs/providers/s3/apis/internal/getProperties.js +3 -4
- package/dist/cjs/providers/s3/apis/internal/getProperties.js.map +1 -1
- package/dist/cjs/providers/s3/apis/internal/getUrl.js +3 -3
- package/dist/cjs/providers/s3/apis/internal/getUrl.js.map +1 -1
- package/dist/cjs/providers/s3/apis/internal/list.js +4 -4
- package/dist/cjs/providers/s3/apis/internal/list.js.map +1 -1
- package/dist/cjs/providers/s3/apis/internal/remove.js +3 -4
- package/dist/cjs/providers/s3/apis/internal/remove.js.map +1 -1
- package/dist/cjs/providers/s3/apis/uploadData/multipart/initialUpload.js +22 -2
- package/dist/cjs/providers/s3/apis/uploadData/multipart/initialUpload.js.map +1 -1
- package/dist/cjs/providers/s3/apis/uploadData/multipart/uploadCache.js +3 -2
- package/dist/cjs/providers/s3/apis/uploadData/multipart/uploadCache.js.map +1 -1
- package/dist/cjs/providers/s3/apis/uploadData/multipart/uploadHandlers.js +19 -8
- package/dist/cjs/providers/s3/apis/uploadData/multipart/uploadHandlers.js.map +1 -1
- package/dist/cjs/providers/s3/apis/uploadData/multipart/uploadPartExecutor.js +20 -11
- package/dist/cjs/providers/s3/apis/uploadData/multipart/uploadPartExecutor.js.map +1 -1
- package/dist/cjs/providers/s3/apis/uploadData/putObjectJob.js +20 -7
- package/dist/cjs/providers/s3/apis/uploadData/putObjectJob.js.map +1 -1
- package/dist/cjs/providers/s3/apis/uploadData/validateObjectNotExists.js +25 -0
- package/dist/cjs/providers/s3/apis/uploadData/validateObjectNotExists.js.map +1 -0
- package/dist/cjs/providers/s3/utils/client/s3control/base.js +70 -0
- package/dist/cjs/providers/s3/utils/client/s3control/base.js.map +1 -0
- package/dist/cjs/providers/s3/utils/client/s3control/getDataAccess.js +58 -0
- package/dist/cjs/providers/s3/utils/client/s3control/getDataAccess.js.map +1 -0
- package/dist/cjs/providers/s3/utils/client/s3control/index.js +11 -0
- package/dist/cjs/providers/s3/utils/client/s3control/index.js.map +1 -0
- package/dist/cjs/providers/s3/utils/client/s3control/listCallerAccessGrants.js +63 -0
- package/dist/cjs/providers/s3/utils/client/s3control/listCallerAccessGrants.js.map +1 -0
- package/dist/cjs/providers/s3/utils/client/s3control/types.js.map +1 -0
- package/dist/cjs/providers/s3/utils/client/{abortMultipartUpload.js → s3data/abortMultipartUpload.js} +2 -2
- package/dist/cjs/providers/s3/utils/client/s3data/abortMultipartUpload.js.map +1 -0
- package/dist/cjs/providers/s3/utils/client/{base.js → s3data/base.js} +25 -3
- package/dist/cjs/providers/s3/utils/client/s3data/base.js.map +1 -0
- package/dist/cjs/providers/s3/utils/client/{completeMultipartUpload.js → s3data/completeMultipartUpload.js} +16 -11
- package/dist/cjs/providers/s3/utils/client/s3data/completeMultipartUpload.js.map +1 -0
- package/dist/cjs/providers/s3/utils/client/{copyObject.js → s3data/copyObject.js} +2 -2
- package/dist/cjs/providers/s3/utils/client/s3data/copyObject.js.map +1 -0
- package/dist/cjs/providers/s3/utils/client/{createMultipartUpload.js → s3data/createMultipartUpload.js} +8 -3
- package/dist/cjs/providers/s3/utils/client/s3data/createMultipartUpload.js.map +1 -0
- package/dist/cjs/providers/s3/utils/client/{deleteObject.js → s3data/deleteObject.js} +2 -2
- package/dist/cjs/providers/s3/utils/client/s3data/deleteObject.js.map +1 -0
- package/dist/cjs/providers/s3/utils/client/{getObject.js → s3data/getObject.js} +3 -3
- package/dist/cjs/providers/s3/utils/client/s3data/getObject.js.map +1 -0
- package/dist/cjs/providers/s3/utils/client/{headObject.js → s3data/headObject.js} +2 -2
- package/dist/cjs/providers/s3/utils/client/s3data/headObject.js.map +1 -0
- package/dist/cjs/providers/s3/utils/client/s3data/index.js.map +1 -0
- package/dist/cjs/providers/s3/utils/client/{listObjectsV2.js → s3data/listObjectsV2.js} +2 -2
- package/dist/cjs/providers/s3/utils/client/s3data/listObjectsV2.js.map +1 -0
- package/dist/cjs/providers/s3/utils/client/{listParts.js → s3data/listParts.js} +3 -2
- package/dist/cjs/providers/s3/utils/client/s3data/listParts.js.map +1 -0
- package/dist/cjs/providers/s3/utils/client/{putObject.js → s3data/putObject.js} +3 -2
- package/dist/cjs/providers/s3/utils/client/s3data/putObject.js.map +1 -0
- package/dist/cjs/providers/s3/utils/client/s3data/types.js +6 -0
- package/dist/cjs/providers/s3/utils/client/s3data/types.js.map +1 -0
- package/dist/cjs/providers/s3/utils/client/{uploadPart.js → s3data/uploadPart.js} +4 -3
- package/dist/cjs/providers/s3/utils/client/s3data/uploadPart.js.map +1 -0
- package/dist/cjs/providers/s3/utils/client/utils/createRetryDecider.js +57 -0
- package/dist/cjs/providers/s3/utils/client/utils/createRetryDecider.js.map +1 -0
- package/dist/cjs/providers/s3/utils/client/utils/deserializeHelpers.js +34 -1
- package/dist/cjs/providers/s3/utils/client/utils/deserializeHelpers.js.map +1 -1
- package/dist/cjs/providers/s3/utils/client/utils/index.js +4 -2
- package/dist/cjs/providers/s3/utils/client/utils/index.js.map +1 -1
- package/dist/cjs/providers/s3/utils/client/utils/parsePayload.js +20 -6
- package/dist/cjs/providers/s3/utils/client/utils/parsePayload.js.map +1 -1
- package/dist/cjs/providers/s3/utils/crc32.js +37 -0
- package/dist/cjs/providers/s3/utils/crc32.js.map +1 -0
- package/dist/cjs/providers/s3/utils/crc32.native.js +11 -0
- package/dist/cjs/providers/s3/utils/crc32.native.js.map +1 -0
- package/dist/cjs/providers/s3/utils/resolveIdentityId.js +14 -0
- package/dist/cjs/providers/s3/utils/resolveIdentityId.js.map +1 -0
- package/dist/cjs/providers/s3/utils/resolveS3ConfigAndInput.js +59 -13
- package/dist/cjs/providers/s3/utils/resolveS3ConfigAndInput.js.map +1 -1
- package/dist/cjs/providers/s3/utils/validateStorageOperationInput.js +4 -1
- package/dist/cjs/providers/s3/utils/validateStorageOperationInput.js.map +1 -1
- package/dist/cjs/providers/s3/utils/validateStorageOperationInputWithPrefix.js +4 -1
- package/dist/cjs/providers/s3/utils/validateStorageOperationInputWithPrefix.js.map +1 -1
- package/dist/cjs/storageBrowser/apis/constants.js +9 -0
- package/dist/cjs/storageBrowser/apis/constants.js.map +1 -0
- package/dist/cjs/storageBrowser/apis/getDataAccess.js +57 -0
- package/dist/cjs/storageBrowser/apis/getDataAccess.js.map +1 -0
- package/dist/cjs/storageBrowser/apis/listCallerAccessGrants.js +69 -0
- package/dist/cjs/storageBrowser/apis/listCallerAccessGrants.js.map +1 -0
- package/dist/cjs/storageBrowser/apis/types.js +6 -0
- package/dist/cjs/storageBrowser/apis/types.js.map +1 -0
- package/dist/cjs/storageBrowser/index.js +11 -0
- package/dist/cjs/storageBrowser/index.js.map +1 -0
- package/dist/cjs/storageBrowser/locationCredentialsStore/constants.js +9 -0
- package/dist/cjs/storageBrowser/locationCredentialsStore/constants.js.map +1 -0
- package/dist/cjs/storageBrowser/locationCredentialsStore/create.js +36 -0
- package/dist/cjs/storageBrowser/locationCredentialsStore/create.js.map +1 -0
- package/dist/cjs/storageBrowser/locationCredentialsStore/index.js +9 -0
- package/dist/cjs/storageBrowser/locationCredentialsStore/index.js.map +1 -0
- package/dist/cjs/storageBrowser/locationCredentialsStore/registry.js +58 -0
- package/dist/cjs/storageBrowser/locationCredentialsStore/registry.js.map +1 -0
- package/dist/cjs/storageBrowser/locationCredentialsStore/store.js +99 -0
- package/dist/cjs/storageBrowser/locationCredentialsStore/store.js.map +1 -0
- package/dist/cjs/storageBrowser/managedAuthConfigAdapter/createListLocationsHandler.js +15 -0
- package/dist/cjs/storageBrowser/managedAuthConfigAdapter/createListLocationsHandler.js.map +1 -0
- package/dist/cjs/storageBrowser/managedAuthConfigAdapter/createLocationCredentialsHandler.js +29 -0
- package/dist/cjs/storageBrowser/managedAuthConfigAdapter/createLocationCredentialsHandler.js.map +1 -0
- package/dist/cjs/storageBrowser/managedAuthConfigAdapter/createManagedAuthConfigAdapter.js +32 -0
- package/dist/cjs/storageBrowser/managedAuthConfigAdapter/createManagedAuthConfigAdapter.js.map +1 -0
- package/dist/cjs/storageBrowser/managedAuthConfigAdapter/index.js +9 -0
- package/dist/cjs/storageBrowser/managedAuthConfigAdapter/index.js.map +1 -0
- package/dist/cjs/storageBrowser/types.js +6 -0
- package/dist/cjs/storageBrowser/types.js.map +1 -0
- package/dist/esm/errors/constants.d.ts +1 -0
- package/dist/esm/errors/constants.mjs +6 -0
- package/dist/esm/errors/constants.mjs.map +1 -0
- package/dist/esm/errors/types/validation.d.ts +4 -1
- package/dist/esm/errors/types/validation.mjs +12 -0
- package/dist/esm/errors/types/validation.mjs.map +1 -1
- package/dist/esm/providers/s3/apis/downloadData.mjs +13 -13
- package/dist/esm/providers/s3/apis/downloadData.mjs.map +1 -1
- package/dist/esm/providers/s3/apis/internal/copy.mjs +48 -16
- package/dist/esm/providers/s3/apis/internal/copy.mjs.map +1 -1
- package/dist/esm/providers/s3/apis/internal/getProperties.mjs +13 -14
- package/dist/esm/providers/s3/apis/internal/getProperties.mjs.map +1 -1
- package/dist/esm/providers/s3/apis/internal/getUrl.mjs +13 -13
- package/dist/esm/providers/s3/apis/internal/getUrl.mjs.map +1 -1
- package/dist/esm/providers/s3/apis/internal/list.mjs +13 -13
- package/dist/esm/providers/s3/apis/internal/list.mjs.map +1 -1
- package/dist/esm/providers/s3/apis/internal/remove.mjs +13 -14
- package/dist/esm/providers/s3/apis/internal/remove.mjs.map +1 -1
- package/dist/esm/providers/s3/apis/uploadData/multipart/initialUpload.d.ts +2 -1
- package/dist/esm/providers/s3/apis/uploadData/multipart/initialUpload.mjs +32 -12
- package/dist/esm/providers/s3/apis/uploadData/multipart/initialUpload.mjs.map +1 -1
- package/dist/esm/providers/s3/apis/uploadData/multipart/uploadCache.d.ts +3 -1
- package/dist/esm/providers/s3/apis/uploadData/multipart/uploadCache.mjs +13 -12
- package/dist/esm/providers/s3/apis/uploadData/multipart/uploadCache.mjs.map +1 -1
- package/dist/esm/providers/s3/apis/uploadData/multipart/uploadHandlers.mjs +27 -16
- package/dist/esm/providers/s3/apis/uploadData/multipart/uploadHandlers.mjs.map +1 -1
- package/dist/esm/providers/s3/apis/uploadData/multipart/uploadPartExecutor.d.ts +3 -2
- package/dist/esm/providers/s3/apis/uploadData/multipart/uploadPartExecutor.mjs +27 -18
- package/dist/esm/providers/s3/apis/uploadData/multipart/uploadPartExecutor.mjs.map +1 -1
- package/dist/esm/providers/s3/apis/uploadData/putObjectJob.mjs +30 -17
- package/dist/esm/providers/s3/apis/uploadData/putObjectJob.mjs.map +1 -1
- package/dist/esm/providers/s3/apis/uploadData/validateObjectNotExists.d.ts +3 -0
- package/dist/esm/providers/s3/apis/uploadData/validateObjectNotExists.mjs +34 -0
- package/dist/esm/providers/s3/apis/uploadData/validateObjectNotExists.mjs.map +1 -0
- package/dist/esm/providers/s3/types/inputs.d.ts +5 -1
- package/dist/esm/providers/s3/types/options.d.ts +24 -1
- package/dist/esm/providers/s3/utils/client/s3control/base.d.ts +56 -0
- package/dist/esm/providers/s3/utils/client/s3control/base.mjs +74 -0
- package/dist/esm/providers/s3/utils/client/s3control/base.mjs.map +1 -0
- package/dist/esm/providers/s3/utils/client/s3control/getDataAccess.d.ts +26 -0
- package/dist/esm/providers/s3/utils/client/s3control/getDataAccess.mjs +63 -0
- package/dist/esm/providers/s3/utils/client/s3control/getDataAccess.mjs.map +1 -0
- package/dist/esm/providers/s3/utils/client/s3control/index.d.ts +2 -0
- package/dist/esm/providers/s3/utils/client/s3control/index.mjs +3 -0
- package/dist/esm/providers/s3/utils/client/s3control/index.mjs.map +1 -0
- package/dist/esm/providers/s3/utils/client/s3control/listCallerAccessGrants.d.ts +26 -0
- package/dist/esm/providers/s3/utils/client/s3control/listCallerAccessGrants.mjs +67 -0
- package/dist/esm/providers/s3/utils/client/s3control/listCallerAccessGrants.mjs.map +1 -0
- package/dist/esm/providers/s3/utils/client/s3control/types.d.ts +188 -0
- package/dist/esm/providers/s3/utils/client/{abortMultipartUpload.d.ts → s3data/abortMultipartUpload.d.ts} +4 -4
- package/dist/esm/providers/s3/utils/client/{abortMultipartUpload.mjs → s3data/abortMultipartUpload.mjs} +5 -6
- package/dist/esm/providers/s3/utils/client/s3data/abortMultipartUpload.mjs.map +1 -0
- package/dist/esm/providers/s3/utils/client/{base.d.ts → s3data/base.d.ts} +23 -1
- package/dist/esm/providers/s3/utils/client/{base.mjs → s3data/base.mjs} +29 -6
- package/dist/esm/providers/s3/utils/client/s3data/base.mjs.map +1 -0
- package/dist/esm/providers/s3/utils/client/{completeMultipartUpload.d.ts → s3data/completeMultipartUpload.d.ts} +6 -6
- package/dist/esm/providers/s3/utils/client/{completeMultipartUpload.mjs → s3data/completeMultipartUpload.mjs} +19 -14
- package/dist/esm/providers/s3/utils/client/s3data/completeMultipartUpload.mjs.map +1 -0
- package/dist/esm/providers/s3/utils/client/{copyObject.d.ts → s3data/copyObject.d.ts} +4 -4
- package/dist/esm/providers/s3/utils/client/{copyObject.mjs → s3data/copyObject.mjs} +6 -6
- package/dist/esm/providers/s3/utils/client/s3data/copyObject.mjs.map +1 -0
- package/dist/esm/providers/s3/utils/client/{createMultipartUpload.d.ts → s3data/createMultipartUpload.d.ts} +4 -4
- package/dist/esm/providers/s3/utils/client/{createMultipartUpload.mjs → s3data/createMultipartUpload.mjs} +12 -7
- package/dist/esm/providers/s3/utils/client/s3data/createMultipartUpload.mjs.map +1 -0
- package/dist/esm/providers/s3/utils/client/{deleteObject.d.ts → s3data/deleteObject.d.ts} +4 -4
- package/dist/esm/providers/s3/utils/client/{deleteObject.mjs → s3data/deleteObject.mjs} +5 -6
- package/dist/esm/providers/s3/utils/client/s3data/deleteObject.mjs.map +1 -0
- package/dist/esm/providers/s3/utils/client/{getObject.d.ts → s3data/getObject.d.ts} +4 -4
- package/dist/esm/providers/s3/utils/client/{getObject.mjs → s3data/getObject.mjs} +7 -8
- package/dist/esm/providers/s3/utils/client/s3data/getObject.mjs.map +1 -0
- package/dist/esm/providers/s3/utils/client/{headObject.d.ts → s3data/headObject.d.ts} +4 -4
- package/dist/esm/providers/s3/utils/client/{headObject.mjs → s3data/headObject.mjs} +5 -6
- package/dist/esm/providers/s3/utils/client/s3data/headObject.mjs.map +1 -0
- package/dist/esm/providers/s3/utils/client/{listObjectsV2.d.ts → s3data/listObjectsV2.d.ts} +4 -4
- package/dist/esm/providers/s3/utils/client/{listObjectsV2.mjs → s3data/listObjectsV2.mjs} +6 -6
- package/dist/esm/providers/s3/utils/client/s3data/listObjectsV2.mjs.map +1 -0
- package/dist/esm/providers/s3/utils/client/{listParts.d.ts → s3data/listParts.d.ts} +4 -4
- package/dist/esm/providers/s3/utils/client/{listParts.mjs → s3data/listParts.mjs} +7 -6
- package/dist/esm/providers/s3/utils/client/s3data/listParts.mjs.map +1 -0
- package/dist/esm/providers/s3/utils/client/{putObject.d.ts → s3data/putObject.d.ts} +5 -5
- package/dist/esm/providers/s3/utils/client/{putObject.mjs → s3data/putObject.mjs} +6 -6
- package/dist/esm/providers/s3/utils/client/s3data/putObject.mjs.map +1 -0
- package/dist/esm/providers/s3/utils/client/s3data/types.mjs +2 -0
- package/dist/esm/providers/s3/utils/client/s3data/types.mjs.map +1 -0
- package/dist/esm/providers/s3/utils/client/{uploadPart.d.ts → s3data/uploadPart.d.ts} +5 -5
- package/dist/esm/providers/s3/utils/client/{uploadPart.mjs → s3data/uploadPart.mjs} +7 -7
- package/dist/esm/providers/s3/utils/client/s3data/uploadPart.mjs.map +1 -0
- package/dist/esm/providers/s3/utils/client/utils/createRetryDecider.d.ts +22 -0
- package/dist/esm/providers/s3/utils/client/utils/createRetryDecider.mjs +55 -0
- package/dist/esm/providers/s3/utils/client/utils/createRetryDecider.mjs.map +1 -0
- package/dist/esm/providers/s3/utils/client/utils/deserializeHelpers.d.ts +17 -0
- package/dist/esm/providers/s3/utils/client/utils/deserializeHelpers.mjs +33 -1
- package/dist/esm/providers/s3/utils/client/utils/deserializeHelpers.mjs.map +1 -1
- package/dist/esm/providers/s3/utils/client/utils/index.d.ts +2 -1
- package/dist/esm/providers/s3/utils/client/utils/index.mjs +2 -1
- package/dist/esm/providers/s3/utils/client/utils/index.mjs.map +1 -1
- package/dist/esm/providers/s3/utils/client/utils/parsePayload.d.ts +16 -1
- package/dist/esm/providers/s3/utils/client/utils/parsePayload.mjs +19 -5
- package/dist/esm/providers/s3/utils/client/utils/parsePayload.mjs.map +1 -1
- package/dist/esm/providers/s3/utils/crc32.d.ts +6 -0
- package/dist/esm/providers/s3/utils/crc32.mjs +34 -0
- package/dist/esm/providers/s3/utils/crc32.mjs.map +1 -0
- package/dist/esm/providers/s3/utils/crc32.native.d.ts +2 -0
- package/dist/esm/providers/s3/utils/crc32.native.mjs +8 -0
- package/dist/esm/providers/s3/utils/crc32.native.mjs.map +1 -0
- package/dist/esm/providers/s3/utils/resolveIdentityId.d.ts +1 -0
- package/dist/esm/providers/s3/utils/resolveIdentityId.mjs +12 -0
- package/dist/esm/providers/s3/utils/resolveIdentityId.mjs.map +1 -0
- package/dist/esm/providers/s3/utils/resolveS3ConfigAndInput.d.ts +10 -2
- package/dist/esm/providers/s3/utils/resolveS3ConfigAndInput.mjs +57 -11
- package/dist/esm/providers/s3/utils/resolveS3ConfigAndInput.mjs.map +1 -1
- package/dist/esm/providers/s3/utils/validateStorageOperationInput.mjs +4 -1
- package/dist/esm/providers/s3/utils/validateStorageOperationInput.mjs.map +1 -1
- package/dist/esm/providers/s3/utils/validateStorageOperationInputWithPrefix.mjs +4 -1
- package/dist/esm/providers/s3/utils/validateStorageOperationInputWithPrefix.mjs.map +1 -1
- package/dist/esm/storageBrowser/apis/constants.d.ts +2 -0
- package/dist/esm/storageBrowser/apis/constants.mjs +7 -0
- package/dist/esm/storageBrowser/apis/constants.mjs.map +1 -0
- package/dist/esm/storageBrowser/apis/getDataAccess.d.ts +2 -0
- package/dist/esm/storageBrowser/apis/getDataAccess.mjs +57 -0
- package/dist/esm/storageBrowser/apis/getDataAccess.mjs.map +1 -0
- package/dist/esm/storageBrowser/apis/listCallerAccessGrants.d.ts +2 -0
- package/dist/esm/storageBrowser/apis/listCallerAccessGrants.mjs +69 -0
- package/dist/esm/storageBrowser/apis/listCallerAccessGrants.mjs.map +1 -0
- package/dist/esm/storageBrowser/apis/types.d.ts +18 -0
- package/dist/esm/storageBrowser/apis/types.mjs +2 -0
- package/dist/esm/storageBrowser/apis/types.mjs.map +1 -0
- package/dist/esm/storageBrowser/index.d.ts +6 -0
- package/dist/esm/storageBrowser/index.mjs +3 -0
- package/dist/esm/storageBrowser/index.mjs.map +1 -0
- package/dist/esm/storageBrowser/locationCredentialsStore/constants.d.ts +2 -0
- package/dist/esm/storageBrowser/locationCredentialsStore/constants.mjs +7 -0
- package/dist/esm/storageBrowser/locationCredentialsStore/constants.mjs.map +1 -0
- package/dist/esm/storageBrowser/locationCredentialsStore/create.d.ts +2 -0
- package/dist/esm/storageBrowser/locationCredentialsStore/create.mjs +34 -0
- package/dist/esm/storageBrowser/locationCredentialsStore/create.mjs.map +1 -0
- package/dist/esm/storageBrowser/locationCredentialsStore/index.d.ts +1 -0
- package/dist/esm/storageBrowser/locationCredentialsStore/index.mjs +2 -0
- package/dist/esm/storageBrowser/locationCredentialsStore/index.mjs.map +1 -0
- package/dist/esm/storageBrowser/locationCredentialsStore/registry.d.ts +23 -0
- package/dist/esm/storageBrowser/locationCredentialsStore/registry.mjs +54 -0
- package/dist/esm/storageBrowser/locationCredentialsStore/registry.mjs.map +1 -0
- package/dist/esm/storageBrowser/locationCredentialsStore/store.d.ts +35 -0
- package/dist/esm/storageBrowser/locationCredentialsStore/store.mjs +95 -0
- package/dist/esm/storageBrowser/locationCredentialsStore/store.mjs.map +1 -0
- package/dist/esm/storageBrowser/managedAuthConfigAdapter/createListLocationsHandler.d.ts +8 -0
- package/dist/esm/storageBrowser/managedAuthConfigAdapter/createListLocationsHandler.mjs +13 -0
- package/dist/esm/storageBrowser/managedAuthConfigAdapter/createListLocationsHandler.mjs.map +1 -0
- package/dist/esm/storageBrowser/managedAuthConfigAdapter/createLocationCredentialsHandler.d.ts +8 -0
- package/dist/esm/storageBrowser/managedAuthConfigAdapter/createLocationCredentialsHandler.mjs +27 -0
- package/dist/esm/storageBrowser/managedAuthConfigAdapter/createLocationCredentialsHandler.mjs.map +1 -0
- package/dist/esm/storageBrowser/managedAuthConfigAdapter/createManagedAuthConfigAdapter.d.ts +19 -0
- package/dist/esm/storageBrowser/managedAuthConfigAdapter/createManagedAuthConfigAdapter.mjs +30 -0
- package/dist/esm/storageBrowser/managedAuthConfigAdapter/createManagedAuthConfigAdapter.mjs.map +1 -0
- package/dist/esm/storageBrowser/managedAuthConfigAdapter/index.d.ts +1 -0
- package/dist/esm/storageBrowser/managedAuthConfigAdapter/index.mjs +2 -0
- package/dist/esm/storageBrowser/managedAuthConfigAdapter/index.mjs.map +1 -0
- package/dist/esm/storageBrowser/types.d.ts +92 -0
- package/dist/esm/storageBrowser/types.mjs +2 -0
- package/dist/esm/storageBrowser/types.mjs.map +1 -0
- package/package.json +117 -107
- package/src/errors/constants.ts +4 -0
- package/src/errors/types/validation.ts +12 -0
- package/src/providers/s3/apis/downloadData.ts +2 -2
- package/src/providers/s3/apis/internal/copy.ts +42 -12
- package/src/providers/s3/apis/internal/getProperties.ts +2 -3
- package/src/providers/s3/apis/internal/getUrl.ts +2 -2
- package/src/providers/s3/apis/internal/list.ts +3 -3
- package/src/providers/s3/apis/internal/remove.ts +2 -3
- package/src/providers/s3/apis/uploadData/multipart/initialUpload.ts +30 -1
- package/src/providers/s3/apis/uploadData/multipart/uploadCache.ts +4 -1
- package/src/providers/s3/apis/uploadData/multipart/uploadHandlers.ts +36 -17
- package/src/providers/s3/apis/uploadData/multipart/uploadPartExecutor.ts +23 -7
- package/src/providers/s3/apis/uploadData/putObjectJob.ts +22 -5
- package/src/providers/s3/apis/uploadData/validateObjectNotExists.ts +25 -0
- package/src/providers/s3/types/inputs.ts +7 -1
- package/src/providers/s3/types/options.ts +35 -1
- package/src/providers/s3/utils/client/s3control/base.ts +97 -0
- package/src/providers/s3/utils/client/s3control/getDataAccess.ts +96 -0
- package/src/providers/s3/utils/client/s3control/index.ts +13 -0
- package/src/providers/s3/utils/client/s3control/listCallerAccessGrants.ts +107 -0
- package/src/providers/s3/utils/client/s3control/types.ts +216 -0
- package/src/providers/s3/utils/client/{abortMultipartUpload.ts → s3data/abortMultipartUpload.ts} +4 -4
- package/src/providers/s3/utils/client/{base.ts → s3data/base.ts} +26 -3
- package/src/providers/s3/utils/client/{completeMultipartUpload.ts → s3data/completeMultipartUpload.ts} +28 -19
- package/src/providers/s3/utils/client/{copyObject.ts → s3data/copyObject.ts} +4 -4
- package/src/providers/s3/utils/client/{createMultipartUpload.ts → s3data/createMultipartUpload.ts} +15 -9
- package/src/providers/s3/utils/client/{deleteObject.ts → s3data/deleteObject.ts} +7 -7
- package/src/providers/s3/utils/client/{getObject.ts → s3data/getObject.ts} +13 -9
- package/src/providers/s3/utils/client/{headObject.ts → s3data/headObject.ts} +4 -4
- package/src/providers/s3/utils/client/{listObjectsV2.ts → s3data/listObjectsV2.ts} +7 -7
- package/src/providers/s3/utils/client/{listParts.ts → s3data/listParts.ts} +9 -8
- package/src/providers/s3/utils/client/{putObject.ts → s3data/putObject.ts} +6 -4
- package/src/providers/s3/utils/client/{uploadPart.ts → s3data/uploadPart.ts} +13 -6
- package/src/providers/s3/utils/client/utils/createRetryDecider.ts +96 -0
- package/src/providers/s3/utils/client/utils/deserializeHelpers.ts +41 -0
- package/src/providers/s3/utils/client/utils/index.ts +2 -1
- package/src/providers/s3/utils/client/utils/parsePayload.ts +36 -18
- package/src/providers/s3/utils/crc32.native.ts +11 -0
- package/src/providers/s3/utils/crc32.ts +51 -0
- package/src/providers/s3/utils/resolveIdentityId.ts +11 -0
- package/src/providers/s3/utils/resolveS3ConfigAndInput.ts +109 -14
- package/src/providers/s3/utils/validateStorageOperationInput.ts +5 -1
- package/src/providers/s3/utils/validateStorageOperationInputWithPrefix.ts +5 -1
- package/src/storageBrowser/apis/constants.ts +5 -0
- package/src/storageBrowser/apis/getDataAccess.ts +79 -0
- package/src/storageBrowser/apis/listCallerAccessGrants.ts +94 -0
- package/src/storageBrowser/apis/types.ts +33 -0
- package/src/storageBrowser/index.ts +25 -0
- package/src/storageBrowser/locationCredentialsStore/constants.ts +5 -0
- package/src/storageBrowser/locationCredentialsStore/create.ts +54 -0
- package/src/storageBrowser/locationCredentialsStore/index.ts +4 -0
- package/src/storageBrowser/locationCredentialsStore/registry.ts +88 -0
- package/src/storageBrowser/locationCredentialsStore/store.ts +161 -0
- package/src/storageBrowser/managedAuthConfigAdapter/createListLocationsHandler.ts +21 -0
- package/src/storageBrowser/managedAuthConfigAdapter/createLocationCredentialsHandler.ts +40 -0
- package/src/storageBrowser/managedAuthConfigAdapter/createManagedAuthConfigAdapter.ts +53 -0
- package/src/storageBrowser/managedAuthConfigAdapter/index.ts +8 -0
- package/src/storageBrowser/types.ts +117 -0
- package/dist/cjs/providers/s3/utils/client/abortMultipartUpload.js.map +0 -1
- package/dist/cjs/providers/s3/utils/client/base.js.map +0 -1
- package/dist/cjs/providers/s3/utils/client/completeMultipartUpload.js.map +0 -1
- package/dist/cjs/providers/s3/utils/client/copyObject.js.map +0 -1
- package/dist/cjs/providers/s3/utils/client/createMultipartUpload.js.map +0 -1
- package/dist/cjs/providers/s3/utils/client/deleteObject.js.map +0 -1
- package/dist/cjs/providers/s3/utils/client/getObject.js.map +0 -1
- package/dist/cjs/providers/s3/utils/client/headObject.js.map +0 -1
- package/dist/cjs/providers/s3/utils/client/index.js.map +0 -1
- package/dist/cjs/providers/s3/utils/client/listObjectsV2.js.map +0 -1
- package/dist/cjs/providers/s3/utils/client/listParts.js.map +0 -1
- package/dist/cjs/providers/s3/utils/client/putObject.js.map +0 -1
- package/dist/cjs/providers/s3/utils/client/types.js.map +0 -1
- package/dist/cjs/providers/s3/utils/client/uploadPart.js.map +0 -1
- package/dist/esm/providers/s3/utils/client/abortMultipartUpload.mjs.map +0 -1
- package/dist/esm/providers/s3/utils/client/base.mjs.map +0 -1
- package/dist/esm/providers/s3/utils/client/completeMultipartUpload.mjs.map +0 -1
- package/dist/esm/providers/s3/utils/client/copyObject.mjs.map +0 -1
- package/dist/esm/providers/s3/utils/client/createMultipartUpload.mjs.map +0 -1
- package/dist/esm/providers/s3/utils/client/deleteObject.mjs.map +0 -1
- package/dist/esm/providers/s3/utils/client/getObject.mjs.map +0 -1
- package/dist/esm/providers/s3/utils/client/headObject.mjs.map +0 -1
- package/dist/esm/providers/s3/utils/client/listObjectsV2.mjs.map +0 -1
- package/dist/esm/providers/s3/utils/client/listParts.mjs.map +0 -1
- package/dist/esm/providers/s3/utils/client/putObject.mjs.map +0 -1
- package/dist/esm/providers/s3/utils/client/uploadPart.mjs.map +0 -1
- /package/dist/cjs/providers/s3/utils/client/{types.js → s3control/types.js} +0 -0
- /package/dist/cjs/providers/s3/utils/client/{index.js → s3data/index.js} +0 -0
- /package/dist/esm/providers/s3/utils/client/{types.mjs → s3control/types.mjs} +0 -0
- /package/dist/esm/providers/s3/utils/client/{types.mjs.map → s3control/types.mjs.map} +0 -0
- /package/dist/esm/providers/s3/utils/client/{index.d.ts → s3data/index.d.ts} +0 -0
- /package/dist/esm/providers/s3/utils/client/{index.mjs → s3data/index.mjs} +0 -0
- /package/dist/esm/providers/s3/utils/client/{index.mjs.map → s3data/index.mjs.map} +0 -0
- /package/dist/esm/providers/s3/utils/client/{types.d.ts → s3data/types.d.ts} +0 -0
- /package/src/providers/s3/utils/client/{index.ts → s3data/index.ts} +0 -0
- /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 '
|
|
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 '
|
|
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 '
|
|
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 '
|
|
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 '
|
|
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 '
|
|
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 '
|
|
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
|
-
|
|
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,
|
|
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
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
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
|
-
|
|
27
|
-
|
|
28
|
-
|
|
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
|
+
};
|