@aws-amplify/storage 6.6.0 → 6.6.1-storage-browser.37d5283.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 +20 -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 +59 -14
- 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 +45 -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 +59 -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} +1 -1
- 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} +2 -2
- 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} +14 -9
- 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} +1 -1
- 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} +7 -2
- 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} +1 -1
- 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} +1 -1
- 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} +1 -1
- 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} +1 -1
- 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} +2 -1
- 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} +2 -1
- 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} +3 -2
- package/dist/cjs/providers/s3/utils/client/s3data/uploadPart.js.map +1 -0
- package/dist/cjs/providers/s3/utils/client/utils/index.js +3 -1
- package/dist/cjs/providers/s3/utils/client/utils/index.js.map +1 -1
- package/dist/cjs/providers/s3/utils/client/utils/retryDecider.js +61 -0
- package/dist/cjs/providers/s3/utils/client/utils/retryDecider.js.map +1 -0
- 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 +74 -14
- 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 +79 -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 +6 -1
- package/dist/esm/errors/types/validation.mjs +20 -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 +69 -24
- 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/index.d.ts +1 -1
- package/dist/esm/providers/s3/types/inputs.d.ts +5 -2
- package/dist/esm/providers/s3/types/options.d.ts +38 -1
- package/dist/esm/providers/s3/utils/client/s3control/base.d.ts +31 -0
- package/dist/esm/providers/s3/utils/client/s3control/base.mjs +48 -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 +64 -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 +176 -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} +6 -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} +1 -1
- package/dist/esm/providers/s3/utils/client/{base.mjs → s3data/base.mjs} +5 -5
- 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} +20 -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} +6 -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 -7
- 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} +6 -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} +7 -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} +8 -7
- package/dist/esm/providers/s3/utils/client/s3data/uploadPart.mjs.map +1 -0
- package/dist/esm/providers/s3/utils/client/utils/index.d.ts +1 -0
- package/dist/esm/providers/s3/utils/client/utils/index.mjs +1 -0
- package/dist/esm/providers/s3/utils/client/utils/index.mjs.map +1 -1
- package/dist/esm/providers/s3/utils/client/utils/retryDecider.d.ts +13 -0
- package/dist/esm/providers/s3/utils/client/utils/retryDecider.mjs +59 -0
- package/dist/esm/providers/s3/utils/client/utils/retryDecider.mjs.map +1 -0
- 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 +11 -2
- package/dist/esm/providers/s3/utils/resolveS3ConfigAndInput.mjs +72 -12
- 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 +79 -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/dist/esm/types/inputs.d.ts +3 -3
- package/package.json +117 -107
- package/src/errors/constants.ts +4 -0
- package/src/errors/types/validation.ts +21 -0
- package/src/providers/s3/apis/downloadData.ts +2 -2
- package/src/providers/s3/apis/internal/copy.ts +77 -23
- 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/index.ts +2 -0
- package/src/providers/s3/types/inputs.ts +11 -1
- package/src/providers/s3/types/options.ts +51 -1
- package/src/providers/s3/utils/client/s3control/base.ts +70 -0
- package/src/providers/s3/utils/client/s3control/getDataAccess.ts +97 -0
- package/src/providers/s3/utils/client/s3control/index.ts +13 -0
- package/src/providers/s3/utils/client/s3control/listCallerAccessGrants.ts +104 -0
- package/src/providers/s3/utils/client/s3control/types.ts +213 -0
- package/src/providers/s3/utils/client/{abortMultipartUpload.ts → s3data/abortMultipartUpload.ts} +4 -3
- package/src/providers/s3/utils/client/{base.ts → s3data/base.ts} +2 -3
- package/src/providers/s3/utils/client/{completeMultipartUpload.ts → s3data/completeMultipartUpload.ts} +29 -18
- package/src/providers/s3/utils/client/{copyObject.ts → s3data/copyObject.ts} +4 -3
- package/src/providers/s3/utils/client/{createMultipartUpload.ts → s3data/createMultipartUpload.ts} +15 -8
- package/src/providers/s3/utils/client/{deleteObject.ts → s3data/deleteObject.ts} +7 -6
- package/src/providers/s3/utils/client/{getObject.ts → s3data/getObject.ts} +8 -7
- package/src/providers/s3/utils/client/{headObject.ts → s3data/headObject.ts} +4 -3
- package/src/providers/s3/utils/client/{listObjectsV2.ts → s3data/listObjectsV2.ts} +7 -6
- package/src/providers/s3/utils/client/{listParts.ts → s3data/listParts.ts} +9 -7
- package/src/providers/s3/utils/client/{putObject.ts → s3data/putObject.ts} +6 -3
- package/src/providers/s3/utils/client/{uploadPart.ts → s3data/uploadPart.ts} +13 -5
- package/src/providers/s3/utils/client/utils/index.ts +1 -0
- package/src/providers/s3/utils/client/utils/retryDecider.ts +81 -0
- 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 +142 -16
- 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 +107 -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/src/types/inputs.ts +7 -3
- 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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolveS3ConfigAndInput.mjs","sources":["../../../../../src/providers/s3/utils/resolveS3ConfigAndInput.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { assertValidationError } from '../../../errors/utils/assertValidationError';\nimport { StorageValidationErrorCode } from '../../../errors/types/validation';\nimport { resolvePrefix as defaultPrefixResolver } from '../../../utils/resolvePrefix';\nimport { DEFAULT_ACCESS_LEVEL, LOCAL_TESTING_S3_ENDPOINT } from './constants';\n/**\n * resolve the common input options for S3 API handlers from Amplify configuration and library options.\n *\n * @param {AmplifyClassV6} amplify The Amplify instance.\n * @param {S3ApiOptions} apiOptions The input options for S3 provider.\n * @returns {Promise<ResolvedS3ConfigAndInput>} The resolved common input options for S3 API handlers.\n * @throws A `StorageError` with `error.name` from `StorageValidationErrorCode` indicating invalid\n * configurations or Amplify library options.\n *\n * @internal\n */\nexport const resolveS3ConfigAndInput = async (amplify,
|
|
1
|
+
{"version":3,"file":"resolveS3ConfigAndInput.mjs","sources":["../../../../../src/providers/s3/utils/resolveS3ConfigAndInput.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { assertValidationError } from '../../../errors/utils/assertValidationError';\nimport { StorageValidationErrorCode } from '../../../errors/types/validation';\nimport { resolvePrefix as defaultPrefixResolver } from '../../../utils/resolvePrefix';\nimport { StorageError } from '../../../errors/StorageError';\nimport { INVALID_STORAGE_INPUT } from '../../../errors/constants';\nimport { DEFAULT_ACCESS_LEVEL, LOCAL_TESTING_S3_ENDPOINT } from './constants';\n/**\n * resolve the common input options for S3 API handlers from Amplify configuration and library options.\n *\n * @param {AmplifyClassV6} amplify The Amplify instance.\n * @param {S3ApiOptions} apiOptions The input options for S3 provider.\n * @returns {Promise<ResolvedS3ConfigAndInput>} The resolved common input options for S3 API handlers.\n * @throws A `StorageError` with `error.name` from `StorageValidationErrorCode` indicating invalid\n * configurations or Amplify library options.\n *\n * @internal\n */\nexport const resolveS3ConfigAndInput = async (amplify, apiInput) => {\n const { options: apiOptions } = apiInput ?? {};\n /**\n * IdentityId is always cached in memory so we can safely make calls here. It\n * should be stable even for unauthenticated users, regardless of credentials.\n */\n const { identityId } = await amplify.Auth.fetchAuthSession();\n /**\n * A credentials provider function instead of a static credentials object is\n * used because the long-running tasks like multipart upload may span over the\n * credentials expiry. Auth.fetchAuthSession() automatically refreshes the\n * credentials if they are expired.\n *\n * The optional forceRefresh option is set when the S3 service returns expired\n * tokens error in the previous API call attempt.\n */\n const credentialsProvider = async (options) => {\n if (isLocationCredentialsProvider(apiOptions)) {\n assertStorageInput(apiInput);\n }\n // TODO: forceRefresh option of fetchAuthSession would refresh both tokens and\n // AWS credentials. So we do not support forceRefreshing from the Auth until\n // we support refreshing only the credentials.\n const { credentials } = isLocationCredentialsProvider(apiOptions)\n ? await apiOptions.locationCredentialsProvider(options)\n : await amplify.Auth.fetchAuthSession();\n assertValidationError(!!credentials, StorageValidationErrorCode.NoCredentials);\n return credentials;\n };\n const { bucket: defaultBucket, region: defaultRegion, dangerouslyConnectToHttpEndpointForTesting, buckets, } = amplify.getConfig()?.Storage?.S3 ?? {};\n const { bucket = defaultBucket, region = defaultRegion } = (apiOptions?.bucket && resolveBucketConfig(apiOptions, buckets)) || {};\n assertValidationError(!!bucket, StorageValidationErrorCode.NoBucket);\n assertValidationError(!!region, StorageValidationErrorCode.NoRegion);\n const { defaultAccessLevel, prefixResolver = defaultPrefixResolver, isObjectLockEnabled, } = amplify.libraryOptions?.Storage?.S3 ?? {};\n const accessLevel = apiOptions?.accessLevel ?? defaultAccessLevel ?? DEFAULT_ACCESS_LEVEL;\n const targetIdentityId = accessLevel === 'protected'\n ? (apiOptions?.targetIdentityId ?? identityId)\n : identityId;\n const keyPrefix = await prefixResolver({ accessLevel, targetIdentityId });\n return {\n s3Config: {\n credentials: credentialsProvider,\n region,\n useAccelerateEndpoint: apiOptions?.useAccelerateEndpoint,\n ...(dangerouslyConnectToHttpEndpointForTesting\n ? {\n customEndpoint: LOCAL_TESTING_S3_ENDPOINT,\n forcePathStyle: true,\n }\n : {}),\n },\n bucket,\n keyPrefix,\n identityId,\n isObjectLockEnabled,\n };\n};\nconst isLocationCredentialsProvider = (options) => {\n return !!options?.locationCredentialsProvider;\n};\nconst isInputWithCallbackPath = (input) => {\n return ((input?.path &&\n typeof input.path === 'function') ||\n (input?.destination?.path &&\n typeof input.destination?.path === 'function') ||\n (input?.source?.path &&\n typeof input.source?.path === 'function'));\n};\nconst isDeprecatedInput = (input) => {\n return (isInputWithKey(input) ||\n isInputWithPrefix(input) ||\n isInputWithCopySourceOrDestination(input));\n};\nconst assertStorageInput = (input) => {\n if (isDeprecatedInput(input) || isInputWithCallbackPath(input)) {\n throw new StorageError({\n name: INVALID_STORAGE_INPUT,\n message: 'The input needs to have a path as a string value.',\n recoverySuggestion: 'Please provide a valid path as a string value for the input.',\n });\n }\n};\nconst isInputWithKey = (input) => {\n return !!(typeof input.key === 'string');\n};\nconst isInputWithPrefix = (input) => {\n return !!(typeof input.prefix === 'string');\n};\nconst isInputWithCopySourceOrDestination = (input) => {\n return !!(typeof input.source?.key === 'string' ||\n typeof input.destination?.key === 'string');\n};\nconst resolveBucketConfig = (apiOptions, buckets) => {\n if (typeof apiOptions.bucket === 'string') {\n const bucketConfig = buckets?.[apiOptions.bucket];\n assertValidationError(!!bucketConfig, StorageValidationErrorCode.InvalidStorageBucket);\n return { bucket: bucketConfig.bucketName, region: bucketConfig.region };\n }\n if (typeof apiOptions.bucket === 'object') {\n return {\n bucket: apiOptions.bucket.bucketName,\n region: apiOptions.bucket.region,\n };\n }\n};\n"],"names":["defaultPrefixResolver"],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@ import { assertValidationError } from '../../../errors/utils/assertValidationErr
|
|
|
2
2
|
import { StorageValidationErrorCode } from '../../../errors/types/validation.mjs';
|
|
3
3
|
import { isInputWithPath } from './isInputWithPath.mjs';
|
|
4
4
|
import { STORAGE_INPUT_PATH, STORAGE_INPUT_KEY } from './constants.mjs';
|
|
5
|
+
import { resolveIdentityId } from './resolveIdentityId.mjs';
|
|
5
6
|
|
|
6
7
|
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
7
8
|
// SPDX-License-Identifier: Apache-2.0
|
|
@@ -13,7 +14,9 @@ const validateStorageOperationInput = (input, identityId) => {
|
|
|
13
14
|
(!input.key && !!input.path), StorageValidationErrorCode.InvalidStorageOperationInput);
|
|
14
15
|
if (isInputWithPath(input)) {
|
|
15
16
|
const { path } = input;
|
|
16
|
-
const objectKey = typeof path === 'string'
|
|
17
|
+
const objectKey = typeof path === 'string'
|
|
18
|
+
? path
|
|
19
|
+
: path({ identityId: resolveIdentityId(identityId) });
|
|
17
20
|
assertValidationError(!objectKey.startsWith('/'), StorageValidationErrorCode.InvalidStoragePathInput);
|
|
18
21
|
return {
|
|
19
22
|
inputType: STORAGE_INPUT_PATH,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validateStorageOperationInput.mjs","sources":["../../../../../src/providers/s3/utils/validateStorageOperationInput.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { assertValidationError } from '../../../errors/utils/assertValidationError';\nimport { StorageValidationErrorCode } from '../../../errors/types/validation';\nimport { isInputWithPath } from './isInputWithPath';\nimport { STORAGE_INPUT_KEY, STORAGE_INPUT_PATH } from './constants';\nexport const validateStorageOperationInput = (input, identityId) => {\n assertValidationError(\n // Key present without a path\n (!!input.key && !input.path) ||\n // Path present without a key\n (!input.key && !!input.path), StorageValidationErrorCode.InvalidStorageOperationInput);\n if (isInputWithPath(input)) {\n const { path } = input;\n const objectKey = typeof path === 'string'
|
|
1
|
+
{"version":3,"file":"validateStorageOperationInput.mjs","sources":["../../../../../src/providers/s3/utils/validateStorageOperationInput.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { assertValidationError } from '../../../errors/utils/assertValidationError';\nimport { StorageValidationErrorCode } from '../../../errors/types/validation';\nimport { isInputWithPath } from './isInputWithPath';\nimport { STORAGE_INPUT_KEY, STORAGE_INPUT_PATH } from './constants';\nimport { resolveIdentityId } from './resolveIdentityId';\nexport const validateStorageOperationInput = (input, identityId) => {\n assertValidationError(\n // Key present without a path\n (!!input.key && !input.path) ||\n // Path present without a key\n (!input.key && !!input.path), StorageValidationErrorCode.InvalidStorageOperationInput);\n if (isInputWithPath(input)) {\n const { path } = input;\n const objectKey = typeof path === 'string'\n ? path\n : path({ identityId: resolveIdentityId(identityId) });\n assertValidationError(!objectKey.startsWith('/'), StorageValidationErrorCode.InvalidStoragePathInput);\n return {\n inputType: STORAGE_INPUT_PATH,\n objectKey,\n };\n }\n else {\n return { inputType: STORAGE_INPUT_KEY, objectKey: input.key };\n }\n};\n"],"names":[],"mappings":";;;;;;AAAA;AACA;AAMY,MAAC,6BAA6B,GAAG,CAAC,KAAK,EAAE,UAAU,KAAK;AACpE,IAAI,qBAAqB;AACzB;AACA,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI;AAC/B;AACA,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,0BAA0B,CAAC,4BAA4B,CAAC,CAAC;AAC/F,IAAI,IAAI,eAAe,CAAC,KAAK,CAAC,EAAE;AAChC,QAAQ,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;AAC/B,QAAQ,MAAM,SAAS,GAAG,OAAO,IAAI,KAAK,QAAQ;AAClD,cAAc,IAAI;AAClB,cAAc,IAAI,CAAC,EAAE,UAAU,EAAE,iBAAiB,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;AAClE,QAAQ,qBAAqB,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,0BAA0B,CAAC,uBAAuB,CAAC,CAAC;AAC9G,QAAQ,OAAO;AACf,YAAY,SAAS,EAAE,kBAAkB;AACzC,YAAY,SAAS;AACrB,SAAS,CAAC;AACV,KAAK;AACL,SAAS;AACT,QAAQ,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,SAAS,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;AACtE,KAAK;AACL;;;;"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { assertValidationError } from '../../../errors/utils/assertValidationError.mjs';
|
|
2
2
|
import { StorageValidationErrorCode } from '../../../errors/types/validation.mjs';
|
|
3
3
|
import { STORAGE_INPUT_PATH, STORAGE_INPUT_PREFIX } from './constants.mjs';
|
|
4
|
+
import { resolveIdentityId } from './resolveIdentityId.mjs';
|
|
4
5
|
|
|
5
6
|
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
6
7
|
// SPDX-License-Identifier: Apache-2.0
|
|
@@ -13,7 +14,9 @@ const validateStorageOperationInputWithPrefix = (input, identityId) => {
|
|
|
13
14
|
assertValidationError(!(input.prefix && input.path), StorageValidationErrorCode.InvalidStorageOperationPrefixInput);
|
|
14
15
|
if (_isInputWithPath(input)) {
|
|
15
16
|
const { path } = input;
|
|
16
|
-
const objectKey = typeof path === 'string'
|
|
17
|
+
const objectKey = typeof path === 'string'
|
|
18
|
+
? path
|
|
19
|
+
: path({ identityId: resolveIdentityId(identityId) });
|
|
17
20
|
// Assert on no leading slash in the path parameter
|
|
18
21
|
assertValidationError(!objectKey.startsWith('/'), StorageValidationErrorCode.InvalidStoragePathInput);
|
|
19
22
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validateStorageOperationInputWithPrefix.mjs","sources":["../../../../../src/providers/s3/utils/validateStorageOperationInputWithPrefix.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { assertValidationError } from '../../../errors/utils/assertValidationError';\nimport { StorageValidationErrorCode } from '../../../errors/types/validation';\nimport { STORAGE_INPUT_PATH, STORAGE_INPUT_PREFIX } from './constants';\n// Local assertion function with StorageOperationInputWithPrefixPath as Input\nconst _isInputWithPath = (input) => {\n return input.path !== undefined;\n};\nexport const validateStorageOperationInputWithPrefix = (input, identityId) => {\n // Validate prefix & path not present at the same time\n assertValidationError(!(input.prefix && input.path), StorageValidationErrorCode.InvalidStorageOperationPrefixInput);\n if (_isInputWithPath(input)) {\n const { path } = input;\n const objectKey = typeof path === 'string'
|
|
1
|
+
{"version":3,"file":"validateStorageOperationInputWithPrefix.mjs","sources":["../../../../../src/providers/s3/utils/validateStorageOperationInputWithPrefix.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { assertValidationError } from '../../../errors/utils/assertValidationError';\nimport { StorageValidationErrorCode } from '../../../errors/types/validation';\nimport { STORAGE_INPUT_PATH, STORAGE_INPUT_PREFIX } from './constants';\nimport { resolveIdentityId } from './resolveIdentityId';\n// Local assertion function with StorageOperationInputWithPrefixPath as Input\nconst _isInputWithPath = (input) => {\n return input.path !== undefined;\n};\nexport const validateStorageOperationInputWithPrefix = (input, identityId) => {\n // Validate prefix & path not present at the same time\n assertValidationError(!(input.prefix && input.path), StorageValidationErrorCode.InvalidStorageOperationPrefixInput);\n if (_isInputWithPath(input)) {\n const { path } = input;\n const objectKey = typeof path === 'string'\n ? path\n : path({ identityId: resolveIdentityId(identityId) });\n // Assert on no leading slash in the path parameter\n assertValidationError(!objectKey.startsWith('/'), StorageValidationErrorCode.InvalidStoragePathInput);\n return {\n inputType: STORAGE_INPUT_PATH,\n objectKey,\n };\n }\n else {\n return { inputType: STORAGE_INPUT_PREFIX, objectKey: input.prefix ?? '' };\n }\n};\n"],"names":[],"mappings":";;;;;AAAA;AACA;AAKA;AACA,MAAM,gBAAgB,GAAG,CAAC,KAAK,KAAK;AACpC,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC;AACpC,CAAC,CAAC;AACU,MAAC,uCAAuC,GAAG,CAAC,KAAK,EAAE,UAAU,KAAK;AAC9E;AACA,IAAI,qBAAqB,CAAC,EAAE,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE,0BAA0B,CAAC,kCAAkC,CAAC,CAAC;AACxH,IAAI,IAAI,gBAAgB,CAAC,KAAK,CAAC,EAAE;AACjC,QAAQ,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;AAC/B,QAAQ,MAAM,SAAS,GAAG,OAAO,IAAI,KAAK,QAAQ;AAClD,cAAc,IAAI;AAClB,cAAc,IAAI,CAAC,EAAE,UAAU,EAAE,iBAAiB,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;AAClE;AACA,QAAQ,qBAAqB,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,0BAA0B,CAAC,uBAAuB,CAAC,CAAC;AAC9G,QAAQ,OAAO;AACf,YAAY,SAAS,EAAE,kBAAkB;AACzC,YAAY,SAAS;AACrB,SAAS,CAAC;AACV,KAAK;AACL,SAAS;AACT,QAAQ,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,SAAS,EAAE,KAAK,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;AAClF,KAAK;AACL;;;;"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
const DEFAULT_CRED_TTL = 15 * 60; // 15 minutes
|
|
4
|
+
const MAX_PAGE_SIZE = 1000;
|
|
5
|
+
|
|
6
|
+
export { DEFAULT_CRED_TTL, MAX_PAGE_SIZE };
|
|
7
|
+
//# sourceMappingURL=constants.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.mjs","sources":["../../../../src/storageBrowser/apis/constants.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nexport const DEFAULT_CRED_TTL = 15 * 60; // 15 minutes\nexport const MAX_PAGE_SIZE = 1000;\n"],"names":[],"mappings":"AAAA;AACA;AACY,MAAC,gBAAgB,GAAG,EAAE,GAAG,GAAG;AAC5B,MAAC,aAAa,GAAG;;;;"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { StorageAction, AmplifyErrorCode } from '@aws-amplify/core/internals/utils';
|
|
2
|
+
import { getStorageUserAgentValue } from '../../providers/s3/utils/userAgent.mjs';
|
|
3
|
+
import { getDataAccess as getDataAccess$1 } from '../../providers/s3/utils/client/s3control/getDataAccess.mjs';
|
|
4
|
+
import '../../providers/s3/utils/client/s3control/listCallerAccessGrants.mjs';
|
|
5
|
+
import { StorageError } from '../../errors/StorageError.mjs';
|
|
6
|
+
import '../../errors/types/validation.mjs';
|
|
7
|
+
import { logger } from '../../utils/logger.mjs';
|
|
8
|
+
import { DEFAULT_CRED_TTL } from './constants.mjs';
|
|
9
|
+
|
|
10
|
+
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
11
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
12
|
+
const getDataAccess = async (input) => {
|
|
13
|
+
const targetType = input.scope.endsWith('*') ? undefined : 'Object';
|
|
14
|
+
const clientCredentialsProvider = async (options) => {
|
|
15
|
+
const { credentials } = await input.credentialsProvider(options);
|
|
16
|
+
return credentials;
|
|
17
|
+
};
|
|
18
|
+
const result = await getDataAccess$1({
|
|
19
|
+
credentials: clientCredentialsProvider,
|
|
20
|
+
region: input.region,
|
|
21
|
+
userAgentValue: getStorageUserAgentValue(StorageAction.GetDataAccess),
|
|
22
|
+
}, {
|
|
23
|
+
AccountId: input.accountId,
|
|
24
|
+
Target: input.scope,
|
|
25
|
+
Permission: input.permission,
|
|
26
|
+
TargetType: targetType,
|
|
27
|
+
DurationSeconds: DEFAULT_CRED_TTL,
|
|
28
|
+
});
|
|
29
|
+
const grantCredentials = result.Credentials;
|
|
30
|
+
// Ensure that S3 returned credentials (this shouldn't happen)
|
|
31
|
+
if (!grantCredentials ||
|
|
32
|
+
!grantCredentials.AccessKeyId ||
|
|
33
|
+
!grantCredentials.SecretAccessKey ||
|
|
34
|
+
!grantCredentials.SessionToken ||
|
|
35
|
+
!grantCredentials.Expiration) {
|
|
36
|
+
throw new StorageError({
|
|
37
|
+
name: AmplifyErrorCode.Unknown,
|
|
38
|
+
message: 'Service did not return valid temporary credentials.',
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
logger.debug(`Retrieved credentials for: ${result.MatchedGrantTarget}`);
|
|
43
|
+
}
|
|
44
|
+
const { AccessKeyId: accessKeyId, SecretAccessKey: secretAccessKey, SessionToken: sessionToken, Expiration: expiration, } = grantCredentials;
|
|
45
|
+
return {
|
|
46
|
+
credentials: {
|
|
47
|
+
accessKeyId,
|
|
48
|
+
secretAccessKey,
|
|
49
|
+
sessionToken,
|
|
50
|
+
expiration,
|
|
51
|
+
},
|
|
52
|
+
scope: result.MatchedGrantTarget,
|
|
53
|
+
};
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
export { getDataAccess };
|
|
57
|
+
//# sourceMappingURL=getDataAccess.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getDataAccess.mjs","sources":["../../../../src/storageBrowser/apis/getDataAccess.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { AmplifyErrorCode, StorageAction, } from '@aws-amplify/core/internals/utils';\nimport { getStorageUserAgentValue } from '../../providers/s3/utils/userAgent';\nimport { getDataAccess as getDataAccessClient } from '../../providers/s3/utils/client/s3control';\nimport { StorageError } from '../../errors/StorageError';\nimport { logger } from '../../utils';\nimport { DEFAULT_CRED_TTL } from './constants';\nexport const getDataAccess = async (input) => {\n const targetType = input.scope.endsWith('*') ? undefined : 'Object';\n const clientCredentialsProvider = async (options) => {\n const { credentials } = await input.credentialsProvider(options);\n return credentials;\n };\n const result = await getDataAccessClient({\n credentials: clientCredentialsProvider,\n region: input.region,\n userAgentValue: getStorageUserAgentValue(StorageAction.GetDataAccess),\n }, {\n AccountId: input.accountId,\n Target: input.scope,\n Permission: input.permission,\n TargetType: targetType,\n DurationSeconds: DEFAULT_CRED_TTL,\n });\n const grantCredentials = result.Credentials;\n // Ensure that S3 returned credentials (this shouldn't happen)\n if (!grantCredentials ||\n !grantCredentials.AccessKeyId ||\n !grantCredentials.SecretAccessKey ||\n !grantCredentials.SessionToken ||\n !grantCredentials.Expiration) {\n throw new StorageError({\n name: AmplifyErrorCode.Unknown,\n message: 'Service did not return valid temporary credentials.',\n });\n }\n else {\n logger.debug(`Retrieved credentials for: ${result.MatchedGrantTarget}`);\n }\n const { AccessKeyId: accessKeyId, SecretAccessKey: secretAccessKey, SessionToken: sessionToken, Expiration: expiration, } = grantCredentials;\n return {\n credentials: {\n accessKeyId,\n secretAccessKey,\n sessionToken,\n expiration,\n },\n scope: result.MatchedGrantTarget,\n };\n};\n"],"names":["getDataAccessClient"],"mappings":";;;;;;;;;AAAA;AACA;AAOY,MAAC,aAAa,GAAG,OAAO,KAAK,KAAK;AAC9C,IAAI,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,SAAS,GAAG,QAAQ,CAAC;AACxE,IAAI,MAAM,yBAAyB,GAAG,OAAO,OAAO,KAAK;AACzD,QAAQ,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,KAAK,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;AACzE,QAAQ,OAAO,WAAW,CAAC;AAC3B,KAAK,CAAC;AACN,IAAI,MAAM,MAAM,GAAG,MAAMA,eAAmB,CAAC;AAC7C,QAAQ,WAAW,EAAE,yBAAyB;AAC9C,QAAQ,MAAM,EAAE,KAAK,CAAC,MAAM;AAC5B,QAAQ,cAAc,EAAE,wBAAwB,CAAC,aAAa,CAAC,aAAa,CAAC;AAC7E,KAAK,EAAE;AACP,QAAQ,SAAS,EAAE,KAAK,CAAC,SAAS;AAClC,QAAQ,MAAM,EAAE,KAAK,CAAC,KAAK;AAC3B,QAAQ,UAAU,EAAE,KAAK,CAAC,UAAU;AACpC,QAAQ,UAAU,EAAE,UAAU;AAC9B,QAAQ,eAAe,EAAE,gBAAgB;AACzC,KAAK,CAAC,CAAC;AACP,IAAI,MAAM,gBAAgB,GAAG,MAAM,CAAC,WAAW,CAAC;AAChD;AACA,IAAI,IAAI,CAAC,gBAAgB;AACzB,QAAQ,CAAC,gBAAgB,CAAC,WAAW;AACrC,QAAQ,CAAC,gBAAgB,CAAC,eAAe;AACzC,QAAQ,CAAC,gBAAgB,CAAC,YAAY;AACtC,QAAQ,CAAC,gBAAgB,CAAC,UAAU,EAAE;AACtC,QAAQ,MAAM,IAAI,YAAY,CAAC;AAC/B,YAAY,IAAI,EAAE,gBAAgB,CAAC,OAAO;AAC1C,YAAY,OAAO,EAAE,qDAAqD;AAC1E,SAAS,CAAC,CAAC;AACX,KAAK;AACL,SAAS;AACT,QAAQ,MAAM,CAAC,KAAK,CAAC,CAAC,2BAA2B,EAAE,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAChF,KAAK;AACL,IAAI,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,eAAe,EAAE,eAAe,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,GAAG,GAAG,gBAAgB,CAAC;AACjJ,IAAI,OAAO;AACX,QAAQ,WAAW,EAAE;AACrB,YAAY,WAAW;AACvB,YAAY,eAAe;AAC3B,YAAY,YAAY;AACxB,YAAY,UAAU;AACtB,SAAS;AACT,QAAQ,KAAK,EAAE,MAAM,CAAC,kBAAkB;AACxC,KAAK,CAAC;AACN;;;;"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { StorageAction } from '@aws-amplify/core/internals/utils';
|
|
2
|
+
import '../../errors/types/validation.mjs';
|
|
3
|
+
import { StorageError } from '../../errors/StorageError.mjs';
|
|
4
|
+
import { logger } from '../../utils/logger.mjs';
|
|
5
|
+
import '../../providers/s3/utils/client/s3control/getDataAccess.mjs';
|
|
6
|
+
import { listCallerAccessGrants as listCallerAccessGrants$1 } from '../../providers/s3/utils/client/s3control/listCallerAccessGrants.mjs';
|
|
7
|
+
import { getStorageUserAgentValue } from '../../providers/s3/utils/userAgent.mjs';
|
|
8
|
+
import { MAX_PAGE_SIZE } from './constants.mjs';
|
|
9
|
+
|
|
10
|
+
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
11
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
12
|
+
const listCallerAccessGrants = async (input) => {
|
|
13
|
+
const { credentialsProvider, accountId, region, nextToken, pageSize } = input;
|
|
14
|
+
logger.debug(`listing available locations from account ${input.accountId}`);
|
|
15
|
+
if (!!pageSize && pageSize > MAX_PAGE_SIZE) {
|
|
16
|
+
logger.debug(`defaulting pageSize to ${MAX_PAGE_SIZE}.`);
|
|
17
|
+
}
|
|
18
|
+
const clientCredentialsProvider = async (options) => {
|
|
19
|
+
const { credentials } = await credentialsProvider(options);
|
|
20
|
+
return credentials;
|
|
21
|
+
};
|
|
22
|
+
const { CallerAccessGrantsList, NextToken } = await listCallerAccessGrants$1({
|
|
23
|
+
credentials: clientCredentialsProvider,
|
|
24
|
+
region,
|
|
25
|
+
userAgentValue: getStorageUserAgentValue(StorageAction.ListCallerAccessGrants),
|
|
26
|
+
}, {
|
|
27
|
+
AccountId: accountId,
|
|
28
|
+
NextToken: nextToken,
|
|
29
|
+
MaxResults: pageSize ?? MAX_PAGE_SIZE,
|
|
30
|
+
});
|
|
31
|
+
const accessGrants = CallerAccessGrantsList?.map(grant => {
|
|
32
|
+
// These values are correct from service mostly, but we add assertions to make TSC happy.
|
|
33
|
+
assertPermission(grant.Permission);
|
|
34
|
+
assertGrantScope(grant.GrantScope);
|
|
35
|
+
return {
|
|
36
|
+
scope: grant.GrantScope,
|
|
37
|
+
permission: grant.Permission,
|
|
38
|
+
type: parseGrantType(grant.GrantScope),
|
|
39
|
+
};
|
|
40
|
+
}) ?? [];
|
|
41
|
+
return {
|
|
42
|
+
locations: accessGrants,
|
|
43
|
+
nextToken: NextToken,
|
|
44
|
+
};
|
|
45
|
+
};
|
|
46
|
+
const parseGrantType = (grantScope) => {
|
|
47
|
+
const bucketScopeReg = /^s3:\/\/(.*)\/\*$/;
|
|
48
|
+
const possibleBucketName = grantScope.match(bucketScopeReg)?.[1];
|
|
49
|
+
if (!grantScope.endsWith('*')) {
|
|
50
|
+
return 'OBJECT';
|
|
51
|
+
}
|
|
52
|
+
else if (grantScope.endsWith('/*') &&
|
|
53
|
+
possibleBucketName &&
|
|
54
|
+
possibleBucketName.indexOf('/') === -1) {
|
|
55
|
+
return 'BUCKET';
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
return 'PREFIX';
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
function assertPermission(permissionValue) {
|
|
62
|
+
if (!['READ', 'READWRITE', 'WRITE'].includes(permissionValue ?? '')) {
|
|
63
|
+
throw new StorageError({
|
|
64
|
+
name: 'InvalidPermission',
|
|
65
|
+
message: `Invalid permission: ${permissionValue}`,
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
function assertGrantScope(value) {
|
|
70
|
+
if (typeof value !== 'string' || !value.startsWith('s3://')) {
|
|
71
|
+
throw new StorageError({
|
|
72
|
+
name: 'InvalidGrantScope',
|
|
73
|
+
message: `Expected a valid grant scope, got ${value}`,
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
export { listCallerAccessGrants };
|
|
79
|
+
//# sourceMappingURL=listCallerAccessGrants.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"listCallerAccessGrants.mjs","sources":["../../../../src/storageBrowser/apis/listCallerAccessGrants.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { StorageAction } from '@aws-amplify/core/internals/utils';\nimport { logger } from '../../utils';\nimport { listCallerAccessGrants as listCallerAccessGrantsClient } from '../../providers/s3/utils/client/s3control';\nimport { StorageError } from '../../errors/StorageError';\nimport { getStorageUserAgentValue } from '../../providers/s3/utils/userAgent';\nimport { MAX_PAGE_SIZE } from './constants';\nexport const listCallerAccessGrants = async (input) => {\n const { credentialsProvider, accountId, region, nextToken, pageSize } = input;\n logger.debug(`listing available locations from account ${input.accountId}`);\n if (!!pageSize && pageSize > MAX_PAGE_SIZE) {\n logger.debug(`defaulting pageSize to ${MAX_PAGE_SIZE}.`);\n }\n const clientCredentialsProvider = async (options) => {\n const { credentials } = await credentialsProvider(options);\n return credentials;\n };\n const { CallerAccessGrantsList, NextToken } = await listCallerAccessGrantsClient({\n credentials: clientCredentialsProvider,\n region,\n userAgentValue: getStorageUserAgentValue(StorageAction.ListCallerAccessGrants),\n }, {\n AccountId: accountId,\n NextToken: nextToken,\n MaxResults: pageSize ?? MAX_PAGE_SIZE,\n });\n const accessGrants = CallerAccessGrantsList?.map(grant => {\n // These values are correct from service mostly, but we add assertions to make TSC happy.\n assertPermission(grant.Permission);\n assertGrantScope(grant.GrantScope);\n return {\n scope: grant.GrantScope,\n permission: grant.Permission,\n type: parseGrantType(grant.GrantScope),\n };\n }) ?? [];\n return {\n locations: accessGrants,\n nextToken: NextToken,\n };\n};\nconst parseGrantType = (grantScope) => {\n const bucketScopeReg = /^s3:\\/\\/(.*)\\/\\*$/;\n const possibleBucketName = grantScope.match(bucketScopeReg)?.[1];\n if (!grantScope.endsWith('*')) {\n return 'OBJECT';\n }\n else if (grantScope.endsWith('/*') &&\n possibleBucketName &&\n possibleBucketName.indexOf('/') === -1) {\n return 'BUCKET';\n }\n else {\n return 'PREFIX';\n }\n};\nfunction assertPermission(permissionValue) {\n if (!['READ', 'READWRITE', 'WRITE'].includes(permissionValue ?? '')) {\n throw new StorageError({\n name: 'InvalidPermission',\n message: `Invalid permission: ${permissionValue}`,\n });\n }\n}\nfunction assertGrantScope(value) {\n if (typeof value !== 'string' || !value.startsWith('s3://')) {\n throw new StorageError({\n name: 'InvalidGrantScope',\n message: `Expected a valid grant scope, got ${value}`,\n });\n }\n}\n"],"names":["listCallerAccessGrantsClient"],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { CredentialsProvider, ListLocationsInput, ListLocationsOutput, LocationCredentials, Permission, PrefixType, Privilege } from '../types';
|
|
2
|
+
export interface ListCallerAccessGrantsInput extends ListLocationsInput {
|
|
3
|
+
accountId: string;
|
|
4
|
+
credentialsProvider: CredentialsProvider;
|
|
5
|
+
region: string;
|
|
6
|
+
}
|
|
7
|
+
export type ListCallerAccessGrantsOutput = ListLocationsOutput;
|
|
8
|
+
export interface GetDataAccessInput {
|
|
9
|
+
accountId: string;
|
|
10
|
+
credentialsProvider: CredentialsProvider;
|
|
11
|
+
durationSeconds?: number;
|
|
12
|
+
permission: Permission;
|
|
13
|
+
prefixType?: PrefixType;
|
|
14
|
+
privilege?: Privilege;
|
|
15
|
+
region: string;
|
|
16
|
+
scope: string;
|
|
17
|
+
}
|
|
18
|
+
export type GetDataAccessOutput = LocationCredentials;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { LocationCredentialsProvider } from '../providers/s3/types/options';
|
|
2
|
+
export { StorageSubpathStrategy } from '../types/options';
|
|
3
|
+
export { createLocationCredentialsStore } from './locationCredentialsStore';
|
|
4
|
+
export { AuthConfigAdapter, createManagedAuthConfigAdapter, CreateManagedAuthConfigAdapterInput, } from './managedAuthConfigAdapter';
|
|
5
|
+
export { GetLocationCredentials, ListLocations, LocationCredentialsStore, CreateLocationCredentialsStoreInput, LocationCredentials, ListLocationsInput, ListLocationsOutput, GetLocationCredentialsInput, GetLocationCredentialsOutput, Permission, } from './types';
|
|
6
|
+
export { AWSTemporaryCredentials } from '../providers/s3/types/options';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
const CREDENTIALS_STORE_DEFAULT_SIZE = 10;
|
|
4
|
+
const CREDENTIALS_REFRESH_WINDOW_MS = 30000;
|
|
5
|
+
|
|
6
|
+
export { CREDENTIALS_REFRESH_WINDOW_MS, CREDENTIALS_STORE_DEFAULT_SIZE };
|
|
7
|
+
//# sourceMappingURL=constants.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.mjs","sources":["../../../../src/storageBrowser/locationCredentialsStore/constants.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nexport const CREDENTIALS_STORE_DEFAULT_SIZE = 10;\nexport const CREDENTIALS_REFRESH_WINDOW_MS = 30000;\n"],"names":[],"mappings":"AAAA;AACA;AACY,MAAC,8BAA8B,GAAG,GAAG;AACrC,MAAC,6BAA6B,GAAG;;;;"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { StorageValidationErrorCode } from '../../errors/types/validation.mjs';
|
|
2
|
+
import { assertValidationError } from '../../errors/utils/assertValidationError.mjs';
|
|
3
|
+
import { createStore, removeStore, getValue } from './registry.mjs';
|
|
4
|
+
|
|
5
|
+
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
6
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
7
|
+
const createLocationCredentialsStore = (input) => {
|
|
8
|
+
const storeSymbol = createStore(input.handler);
|
|
9
|
+
const store = {
|
|
10
|
+
getProvider(providerLocation) {
|
|
11
|
+
const locationCredentialsProvider = async ({ forceRefresh = false, } = {}) => {
|
|
12
|
+
validateS3Uri(providerLocation.scope);
|
|
13
|
+
// TODO(@AllanZhengYP): validate the action bucket and paths matches provider scope.
|
|
14
|
+
return getValue({
|
|
15
|
+
storeSymbol,
|
|
16
|
+
location: { ...providerLocation },
|
|
17
|
+
forceRefresh,
|
|
18
|
+
});
|
|
19
|
+
};
|
|
20
|
+
return locationCredentialsProvider;
|
|
21
|
+
},
|
|
22
|
+
destroy() {
|
|
23
|
+
removeStore(storeSymbol);
|
|
24
|
+
},
|
|
25
|
+
};
|
|
26
|
+
return store;
|
|
27
|
+
};
|
|
28
|
+
const validateS3Uri = (uri) => {
|
|
29
|
+
const s3UrlSchemaRegex = /^s3:\/\/[^/]+/;
|
|
30
|
+
assertValidationError(s3UrlSchemaRegex.test(uri), StorageValidationErrorCode.InvalidS3Uri);
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
export { createLocationCredentialsStore };
|
|
34
|
+
//# sourceMappingURL=create.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create.mjs","sources":["../../../../src/storageBrowser/locationCredentialsStore/create.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { StorageValidationErrorCode } from '../../errors/types/validation';\nimport { assertValidationError } from '../../errors/utils/assertValidationError';\nimport { createStore, getValue, removeStore } from './registry';\nexport const createLocationCredentialsStore = (input) => {\n const storeSymbol = createStore(input.handler);\n const store = {\n getProvider(providerLocation) {\n const locationCredentialsProvider = async ({ forceRefresh = false, } = {}) => {\n validateS3Uri(providerLocation.scope);\n // TODO(@AllanZhengYP): validate the action bucket and paths matches provider scope.\n return getValue({\n storeSymbol,\n location: { ...providerLocation },\n forceRefresh,\n });\n };\n return locationCredentialsProvider;\n },\n destroy() {\n removeStore(storeSymbol);\n },\n };\n return store;\n};\nconst validateS3Uri = (uri) => {\n const s3UrlSchemaRegex = /^s3:\\/\\/[^/]+/;\n assertValidationError(s3UrlSchemaRegex.test(uri), StorageValidationErrorCode.InvalidS3Uri);\n};\n"],"names":[],"mappings":";;;;AAAA;AACA;AAIY,MAAC,8BAA8B,GAAG,CAAC,KAAK,KAAK;AACzD,IAAI,MAAM,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AACnD,IAAI,MAAM,KAAK,GAAG;AAClB,QAAQ,WAAW,CAAC,gBAAgB,EAAE;AACtC,YAAY,MAAM,2BAA2B,GAAG,OAAO,EAAE,YAAY,GAAG,KAAK,GAAG,GAAG,EAAE,KAAK;AAC1F,gBAAgB,aAAa,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;AACtD;AACA,gBAAgB,OAAO,QAAQ,CAAC;AAChC,oBAAoB,WAAW;AAC/B,oBAAoB,QAAQ,EAAE,EAAE,GAAG,gBAAgB,EAAE;AACrD,oBAAoB,YAAY;AAChC,iBAAiB,CAAC,CAAC;AACnB,aAAa,CAAC;AACd,YAAY,OAAO,2BAA2B,CAAC;AAC/C,SAAS;AACT,QAAQ,OAAO,GAAG;AAClB,YAAY,WAAW,CAAC,WAAW,CAAC,CAAC;AACrC,SAAS;AACT,KAAK,CAAC;AACN,IAAI,OAAO,KAAK,CAAC;AACjB,EAAE;AACF,MAAM,aAAa,GAAG,CAAC,GAAG,KAAK;AAC/B,IAAI,MAAM,gBAAgB,GAAG,eAAe,CAAC;AAC7C,IAAI,qBAAqB,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,0BAA0B,CAAC,YAAY,CAAC,CAAC;AAC/F,CAAC;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { createLocationCredentialsStore } from './create';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { AWSTemporaryCredentials } from '../../providers/s3/types/options';
|
|
2
|
+
import { CredentialsLocation, GetLocationCredentials } from '../types';
|
|
3
|
+
interface StoreRegistrySymbol {
|
|
4
|
+
readonly value: symbol;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* @internal
|
|
8
|
+
*/
|
|
9
|
+
export declare const createStore: (refreshHandler: GetLocationCredentials, size?: number) => {
|
|
10
|
+
value: symbol;
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* @internal
|
|
14
|
+
*/
|
|
15
|
+
export declare const getValue: (input: {
|
|
16
|
+
storeSymbol: StoreRegistrySymbol;
|
|
17
|
+
location: CredentialsLocation;
|
|
18
|
+
forceRefresh: boolean;
|
|
19
|
+
}) => Promise<{
|
|
20
|
+
credentials: AWSTemporaryCredentials;
|
|
21
|
+
}>;
|
|
22
|
+
export declare const removeStore: (storeSymbol: StoreRegistrySymbol) => void;
|
|
23
|
+
export {};
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { assertValidationError } from '../../errors/utils/assertValidationError.mjs';
|
|
2
|
+
import { StorageValidationErrorCode } from '../../errors/types/validation.mjs';
|
|
3
|
+
import { initStore, getCacheValue, fetchNewValue } from './store.mjs';
|
|
4
|
+
|
|
5
|
+
/* eslint-disable unused-imports/no-unused-vars */
|
|
6
|
+
/**
|
|
7
|
+
* Keep all cache records for all instances of credentials store in a singleton
|
|
8
|
+
* so we can reliably de-reference from the memory when we destroy a store
|
|
9
|
+
* instance.
|
|
10
|
+
*/
|
|
11
|
+
const storeRegistry = new WeakMap();
|
|
12
|
+
/**
|
|
13
|
+
* @internal
|
|
14
|
+
*/
|
|
15
|
+
const createStore = (refreshHandler, size) => {
|
|
16
|
+
const storeSymbol = { value: Symbol('LocationCredentialsStore') };
|
|
17
|
+
storeRegistry.set(storeSymbol, initStore(refreshHandler, size));
|
|
18
|
+
return storeSymbol;
|
|
19
|
+
};
|
|
20
|
+
const getLookUpLocations = (location) => {
|
|
21
|
+
const { scope, permission } = location;
|
|
22
|
+
const locations = [{ scope, permission }];
|
|
23
|
+
if (permission === 'READ' || permission === 'WRITE') {
|
|
24
|
+
locations.push({ scope, permission: 'READWRITE' });
|
|
25
|
+
}
|
|
26
|
+
return locations;
|
|
27
|
+
};
|
|
28
|
+
const getCredentialsStore = (storeSymbol) => {
|
|
29
|
+
assertValidationError(storeRegistry.has(storeSymbol), StorageValidationErrorCode.LocationCredentialsStoreDestroyed);
|
|
30
|
+
return storeRegistry.get(storeSymbol);
|
|
31
|
+
};
|
|
32
|
+
/**
|
|
33
|
+
* @internal
|
|
34
|
+
*/
|
|
35
|
+
const getValue = async (input) => {
|
|
36
|
+
const { storeSymbol: storeReference, location, forceRefresh } = input;
|
|
37
|
+
const store = getCredentialsStore(storeReference);
|
|
38
|
+
if (!forceRefresh) {
|
|
39
|
+
const lookupLocations = getLookUpLocations(location);
|
|
40
|
+
for (const lookupLocation of lookupLocations) {
|
|
41
|
+
const credentials = getCacheValue(store, lookupLocation);
|
|
42
|
+
if (credentials !== null) {
|
|
43
|
+
return { credentials };
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return fetchNewValue(store, location);
|
|
48
|
+
};
|
|
49
|
+
const removeStore = (storeSymbol) => {
|
|
50
|
+
storeRegistry.delete(storeSymbol);
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
export { createStore, getValue, removeStore };
|
|
54
|
+
//# sourceMappingURL=registry.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.mjs","sources":["../../../../src/storageBrowser/locationCredentialsStore/registry.ts"],"sourcesContent":["/* eslint-disable unused-imports/no-unused-vars */\nimport { assertValidationError } from '../../errors/utils/assertValidationError';\nimport { StorageValidationErrorCode } from '../../errors/types/validation';\nimport { fetchNewValue, getCacheValue, initStore, } from './store';\n/**\n * Keep all cache records for all instances of credentials store in a singleton\n * so we can reliably de-reference from the memory when we destroy a store\n * instance.\n */\nconst storeRegistry = new WeakMap();\n/**\n * @internal\n */\nexport const createStore = (refreshHandler, size) => {\n const storeSymbol = { value: Symbol('LocationCredentialsStore') };\n storeRegistry.set(storeSymbol, initStore(refreshHandler, size));\n return storeSymbol;\n};\nconst getLookUpLocations = (location) => {\n const { scope, permission } = location;\n const locations = [{ scope, permission }];\n if (permission === 'READ' || permission === 'WRITE') {\n locations.push({ scope, permission: 'READWRITE' });\n }\n return locations;\n};\nconst getCredentialsStore = (storeSymbol) => {\n assertValidationError(storeRegistry.has(storeSymbol), StorageValidationErrorCode.LocationCredentialsStoreDestroyed);\n return storeRegistry.get(storeSymbol);\n};\n/**\n * @internal\n */\nexport const getValue = async (input) => {\n const { storeSymbol: storeReference, location, forceRefresh } = input;\n const store = getCredentialsStore(storeReference);\n if (!forceRefresh) {\n const lookupLocations = getLookUpLocations(location);\n for (const lookupLocation of lookupLocations) {\n const credentials = getCacheValue(store, lookupLocation);\n if (credentials !== null) {\n return { credentials };\n }\n }\n }\n return fetchNewValue(store, location);\n};\nexport const removeStore = (storeSymbol) => {\n storeRegistry.delete(storeSymbol);\n};\n"],"names":[],"mappings":";;;;AAAA;AAIA;AACA;AACA;AACA;AACA;AACA,MAAM,aAAa,GAAG,IAAI,OAAO,EAAE,CAAC;AACpC;AACA;AACA;AACY,MAAC,WAAW,GAAG,CAAC,cAAc,EAAE,IAAI,KAAK;AACrD,IAAI,MAAM,WAAW,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,0BAA0B,CAAC,EAAE,CAAC;AACtE,IAAI,aAAa,CAAC,GAAG,CAAC,WAAW,EAAE,SAAS,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC,CAAC;AACpE,IAAI,OAAO,WAAW,CAAC;AACvB,EAAE;AACF,MAAM,kBAAkB,GAAG,CAAC,QAAQ,KAAK;AACzC,IAAI,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,QAAQ,CAAC;AAC3C,IAAI,MAAM,SAAS,GAAG,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;AAC9C,IAAI,IAAI,UAAU,KAAK,MAAM,IAAI,UAAU,KAAK,OAAO,EAAE;AACzD,QAAQ,SAAS,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC,CAAC;AAC3D,KAAK;AACL,IAAI,OAAO,SAAS,CAAC;AACrB,CAAC,CAAC;AACF,MAAM,mBAAmB,GAAG,CAAC,WAAW,KAAK;AAC7C,IAAI,qBAAqB,CAAC,aAAa,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,0BAA0B,CAAC,iCAAiC,CAAC,CAAC;AACxH,IAAI,OAAO,aAAa,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AAC1C,CAAC,CAAC;AACF;AACA;AACA;AACY,MAAC,QAAQ,GAAG,OAAO,KAAK,KAAK;AACzC,IAAI,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,KAAK,CAAC;AAC1E,IAAI,MAAM,KAAK,GAAG,mBAAmB,CAAC,cAAc,CAAC,CAAC;AACtD,IAAI,IAAI,CAAC,YAAY,EAAE;AACvB,QAAQ,MAAM,eAAe,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;AAC7D,QAAQ,KAAK,MAAM,cAAc,IAAI,eAAe,EAAE;AACtD,YAAY,MAAM,WAAW,GAAG,aAAa,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;AACrE,YAAY,IAAI,WAAW,KAAK,IAAI,EAAE;AACtC,gBAAgB,OAAO,EAAE,WAAW,EAAE,CAAC;AACvC,aAAa;AACb,SAAS;AACT,KAAK;AACL,IAAI,OAAO,aAAa,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AAC1C,EAAE;AACU,MAAC,WAAW,GAAG,CAAC,WAAW,KAAK;AAC5C,IAAI,aAAa,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AACtC;;;;"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { CredentialsLocation, GetLocationCredentials, Permission } from '../types';
|
|
2
|
+
import { AWSTemporaryCredentials } from '../../providers/s3/types/options';
|
|
3
|
+
interface StoreValue extends CredentialsLocation {
|
|
4
|
+
credentials?: AWSTemporaryCredentials;
|
|
5
|
+
inflightCredentials?: Promise<{
|
|
6
|
+
credentials: AWSTemporaryCredentials;
|
|
7
|
+
}>;
|
|
8
|
+
}
|
|
9
|
+
type S3Uri = string;
|
|
10
|
+
type CacheKey = `${S3Uri}_${Permission}`;
|
|
11
|
+
/**
|
|
12
|
+
* LRU implementation for Location Credentials Store
|
|
13
|
+
* O(n) for get and set for simplicity.
|
|
14
|
+
*
|
|
15
|
+
* @internal
|
|
16
|
+
*/
|
|
17
|
+
export interface LruLocationCredentialsStore {
|
|
18
|
+
capacity: number;
|
|
19
|
+
refreshHandler: GetLocationCredentials;
|
|
20
|
+
values: Map<CacheKey, StoreValue>;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* @internal
|
|
24
|
+
*/
|
|
25
|
+
export declare const initStore: (refreshHandler: GetLocationCredentials, size?: number) => LruLocationCredentialsStore;
|
|
26
|
+
export declare const getCacheValue: (store: LruLocationCredentialsStore, location: CredentialsLocation) => AWSTemporaryCredentials | null;
|
|
27
|
+
/**
|
|
28
|
+
* Fetch new credentials value with refresh handler and cache the result in
|
|
29
|
+
* LRU cache.
|
|
30
|
+
* @internal
|
|
31
|
+
*/
|
|
32
|
+
export declare const fetchNewValue: (store: LruLocationCredentialsStore, location: CredentialsLocation) => Promise<{
|
|
33
|
+
credentials: AWSTemporaryCredentials;
|
|
34
|
+
}>;
|
|
35
|
+
export {};
|