@aws-amplify/storage 6.7.16-unstable.81afde8.0 → 6.7.16-unstable.980e3f8.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/CanceledError.js.map +1 -1
- package/dist/cjs/errors/IntegrityError.js.map +1 -1
- package/dist/cjs/errors/StorageError.js.map +1 -1
- package/dist/cjs/errors/constants.js.map +1 -1
- package/dist/cjs/errors/types/validation.js.map +1 -1
- package/dist/cjs/errors/utils/assertValidationError.js.map +1 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/internals/apis/copy.js.map +1 -1
- package/dist/cjs/internals/apis/downloadData.js.map +1 -1
- package/dist/cjs/internals/apis/getDataAccess.js.map +1 -1
- package/dist/cjs/internals/apis/getProperties.js.map +1 -1
- package/dist/cjs/internals/apis/getUrl.js.map +1 -1
- package/dist/cjs/internals/apis/list.js.map +1 -1
- package/dist/cjs/internals/apis/listCallerAccessGrants.js.map +1 -1
- package/dist/cjs/internals/apis/listPaths/getHighestPrecedenceUserGroup.js.map +1 -1
- package/dist/cjs/internals/apis/listPaths/index.js.map +1 -1
- package/dist/cjs/internals/apis/listPaths/listPaths.js.map +1 -1
- package/dist/cjs/internals/apis/listPaths/resolveLocationsForCurrentSession.js.map +1 -1
- package/dist/cjs/internals/apis/remove.js.map +1 -1
- package/dist/cjs/internals/apis/uploadData.js.map +1 -1
- package/dist/cjs/internals/index.js.map +1 -1
- package/dist/cjs/internals/utils/constants.js.map +1 -1
- package/dist/cjs/providers/s3/apis/copy.js.map +1 -1
- package/dist/cjs/providers/s3/apis/downloadData.js.map +1 -1
- package/dist/cjs/providers/s3/apis/getProperties.js.map +1 -1
- package/dist/cjs/providers/s3/apis/getUrl.js.map +1 -1
- package/dist/cjs/providers/s3/apis/index.js.map +1 -1
- package/dist/cjs/providers/s3/apis/internal/copy.js.map +1 -1
- package/dist/cjs/providers/s3/apis/internal/downloadData.js.map +1 -1
- package/dist/cjs/providers/s3/apis/internal/getProperties.js.map +1 -1
- package/dist/cjs/providers/s3/apis/internal/getUrl.js.map +1 -1
- package/dist/cjs/providers/s3/apis/internal/list.js.map +1 -1
- package/dist/cjs/providers/s3/apis/internal/remove.js.map +1 -1
- package/dist/cjs/providers/s3/apis/internal/uploadData/byteLength.js.map +1 -1
- package/dist/cjs/providers/s3/apis/internal/uploadData/index.js.map +1 -1
- package/dist/cjs/providers/s3/apis/internal/uploadData/multipart/calculatePartSize.js.map +1 -1
- package/dist/cjs/providers/s3/apis/internal/uploadData/multipart/getDataChunker.js.map +1 -1
- package/dist/cjs/providers/s3/apis/internal/uploadData/multipart/index.js.map +1 -1
- package/dist/cjs/providers/s3/apis/internal/uploadData/multipart/initialUpload.js.map +1 -1
- package/dist/cjs/providers/s3/apis/internal/uploadData/multipart/progressTracker.js.map +1 -1
- package/dist/cjs/providers/s3/apis/internal/uploadData/multipart/uploadCache.js.map +1 -1
- package/dist/cjs/providers/s3/apis/internal/uploadData/multipart/uploadHandlers.js.map +1 -1
- package/dist/cjs/providers/s3/apis/internal/uploadData/multipart/uploadPartExecutor.js.map +1 -1
- package/dist/cjs/providers/s3/apis/internal/uploadData/putObjectJob.js.map +1 -1
- package/dist/cjs/providers/s3/apis/list.js.map +1 -1
- package/dist/cjs/providers/s3/apis/remove.js.map +1 -1
- package/dist/cjs/providers/s3/apis/server/copy.js.map +1 -1
- package/dist/cjs/providers/s3/apis/server/getProperties.js.map +1 -1
- package/dist/cjs/providers/s3/apis/server/getUrl.js.map +1 -1
- package/dist/cjs/providers/s3/apis/server/index.js.map +1 -1
- package/dist/cjs/providers/s3/apis/server/list.js.map +1 -1
- package/dist/cjs/providers/s3/apis/server/remove.js.map +1 -1
- package/dist/cjs/providers/s3/apis/uploadData.js.map +1 -1
- package/dist/cjs/providers/s3/index.js.map +1 -1
- package/dist/cjs/providers/s3/server.js.map +1 -1
- package/dist/cjs/providers/s3/utils/client/runtime/base64/index.browser.js.map +1 -1
- package/dist/cjs/providers/s3/utils/client/runtime/base64/index.native.js.map +1 -1
- package/dist/cjs/providers/s3/utils/client/runtime/constants.js.map +1 -1
- package/dist/cjs/providers/s3/utils/client/runtime/contentSha256middleware.js.map +1 -1
- package/dist/cjs/providers/s3/utils/client/runtime/index.browser.js.map +1 -1
- package/dist/cjs/providers/s3/utils/client/runtime/index.js.map +1 -1
- package/dist/cjs/providers/s3/utils/client/runtime/index.native.js.map +1 -1
- package/dist/cjs/providers/s3/utils/client/runtime/s3TransferHandler/fetch.js.map +1 -1
- package/dist/cjs/providers/s3/utils/client/runtime/s3TransferHandler/xhr.js.map +1 -1
- package/dist/cjs/providers/s3/utils/client/runtime/xhrTransferHandler.js.map +1 -1
- package/dist/cjs/providers/s3/utils/client/runtime/xmlParser/dom.js.map +1 -1
- package/dist/cjs/providers/s3/utils/client/runtime/xmlParser/pureJs.js.map +1 -1
- package/dist/cjs/providers/s3/utils/client/s3control/base.js.map +1 -1
- package/dist/cjs/providers/s3/utils/client/s3control/getDataAccess.js.map +1 -1
- package/dist/cjs/providers/s3/utils/client/s3control/index.js.map +1 -1
- package/dist/cjs/providers/s3/utils/client/s3control/listCallerAccessGrants.js.map +1 -1
- package/dist/cjs/providers/s3/utils/client/s3data/abortMultipartUpload.js.map +1 -1
- package/dist/cjs/providers/s3/utils/client/s3data/base.js.map +1 -1
- package/dist/cjs/providers/s3/utils/client/s3data/completeMultipartUpload.js.map +1 -1
- package/dist/cjs/providers/s3/utils/client/s3data/copyObject.js.map +1 -1
- package/dist/cjs/providers/s3/utils/client/s3data/createMultipartUpload.js.map +1 -1
- package/dist/cjs/providers/s3/utils/client/s3data/deleteObject.js.map +1 -1
- package/dist/cjs/providers/s3/utils/client/s3data/getObject.js.map +1 -1
- package/dist/cjs/providers/s3/utils/client/s3data/headObject.js.map +1 -1
- package/dist/cjs/providers/s3/utils/client/s3data/index.js.map +1 -1
- package/dist/cjs/providers/s3/utils/client/s3data/listObjectsV2.js.map +1 -1
- package/dist/cjs/providers/s3/utils/client/s3data/listParts.js.map +1 -1
- package/dist/cjs/providers/s3/utils/client/s3data/putObject.js.map +1 -1
- package/dist/cjs/providers/s3/utils/client/s3data/uploadPart.js.map +1 -1
- package/dist/cjs/providers/s3/utils/client/utils/createRetryDecider.js.map +1 -1
- package/dist/cjs/providers/s3/utils/client/utils/deserializeHelpers.js.map +1 -1
- package/dist/cjs/providers/s3/utils/client/utils/index.js.map +1 -1
- package/dist/cjs/providers/s3/utils/client/utils/integrityHelpers.js.map +1 -1
- package/dist/cjs/providers/s3/utils/client/utils/parsePayload.js.map +1 -1
- package/dist/cjs/providers/s3/utils/client/utils/serializeHelpers.js.map +1 -1
- package/dist/cjs/providers/s3/utils/constants.js.map +1 -1
- package/dist/cjs/providers/s3/utils/constructContentDisposition.js.map +1 -1
- package/dist/cjs/providers/s3/utils/crc32.js.map +1 -1
- package/dist/cjs/providers/s3/utils/getCombinedCrc32.js.map +1 -1
- package/dist/cjs/providers/s3/utils/getCombinedCrc32.native.js.map +1 -1
- package/dist/cjs/providers/s3/utils/hexUtils.js.map +1 -1
- package/dist/cjs/providers/s3/utils/index.js.map +1 -1
- package/dist/cjs/providers/s3/utils/isInputWithPath.js.map +1 -1
- package/dist/cjs/providers/s3/utils/md5.js.map +1 -1
- package/dist/cjs/providers/s3/utils/readFile.js.map +1 -1
- package/dist/cjs/providers/s3/utils/readFile.native.js.map +1 -1
- package/dist/cjs/providers/s3/utils/resolveIdentityId.js.map +1 -1
- package/dist/cjs/providers/s3/utils/resolveS3ConfigAndInput.js.map +1 -1
- package/dist/cjs/providers/s3/utils/transferTask.js.map +1 -1
- package/dist/cjs/providers/s3/utils/urlDecoder.js.map +1 -1
- package/dist/cjs/providers/s3/utils/userAgent.js.map +1 -1
- package/dist/cjs/providers/s3/utils/validateBucketOwnerID.js.map +1 -1
- package/dist/cjs/providers/s3/utils/validateMultipartUploadXML.js.map +1 -1
- package/dist/cjs/providers/s3/utils/validateObjectUrl.js.map +1 -1
- package/dist/cjs/providers/s3/utils/validateStorageOperationInput.js.map +1 -1
- package/dist/cjs/providers/s3/utils/validateStorageOperationInputWithPrefix.js.map +1 -1
- package/dist/cjs/server.js.map +1 -1
- package/dist/cjs/utils/index.js.map +1 -1
- package/dist/cjs/utils/logger.js.map +1 -1
- package/dist/cjs/utils/resolvePrefix.js.map +1 -1
- package/dist/esm/errors/CanceledError.mjs.map +1 -1
- package/dist/esm/errors/IntegrityError.mjs.map +1 -1
- package/dist/esm/errors/StorageError.mjs.map +1 -1
- package/dist/esm/errors/types/validation.mjs.map +1 -1
- package/dist/esm/errors/utils/assertValidationError.mjs.map +1 -1
- package/dist/esm/internals/apis/getDataAccess.mjs.map +1 -1
- package/dist/esm/internals/apis/list.mjs.map +1 -1
- package/dist/esm/internals/apis/listCallerAccessGrants.mjs.map +1 -1
- package/dist/esm/internals/apis/listPaths/getHighestPrecedenceUserGroup.mjs.map +1 -1
- package/dist/esm/internals/apis/listPaths/listPaths.mjs.map +1 -1
- package/dist/esm/internals/apis/listPaths/resolveLocationsForCurrentSession.mjs.map +1 -1
- package/dist/esm/internals/apis/uploadData.mjs.map +1 -1
- package/dist/esm/internals/utils/constants.mjs.map +1 -1
- package/dist/esm/providers/s3/apis/copy.mjs.map +1 -1
- package/dist/esm/providers/s3/apis/downloadData.mjs.map +1 -1
- package/dist/esm/providers/s3/apis/getProperties.mjs.map +1 -1
- package/dist/esm/providers/s3/apis/getUrl.mjs.map +1 -1
- package/dist/esm/providers/s3/apis/internal/copy.mjs.map +1 -1
- package/dist/esm/providers/s3/apis/internal/downloadData.mjs.map +1 -1
- package/dist/esm/providers/s3/apis/internal/getProperties.mjs.map +1 -1
- package/dist/esm/providers/s3/apis/internal/getUrl.mjs +1 -1
- package/dist/esm/providers/s3/apis/internal/getUrl.mjs.map +1 -1
- package/dist/esm/providers/s3/apis/internal/list.mjs.map +1 -1
- package/dist/esm/providers/s3/apis/internal/remove.mjs.map +1 -1
- package/dist/esm/providers/s3/apis/internal/uploadData/byteLength.mjs.map +1 -1
- package/dist/esm/providers/s3/apis/internal/uploadData/index.mjs.map +1 -1
- package/dist/esm/providers/s3/apis/internal/uploadData/multipart/calculatePartSize.mjs.map +1 -1
- package/dist/esm/providers/s3/apis/internal/uploadData/multipart/getDataChunker.mjs +1 -1
- package/dist/esm/providers/s3/apis/internal/uploadData/multipart/getDataChunker.mjs.map +1 -1
- package/dist/esm/providers/s3/apis/internal/uploadData/multipart/initialUpload.mjs.map +1 -1
- package/dist/esm/providers/s3/apis/internal/uploadData/multipart/progressTracker.mjs.map +1 -1
- package/dist/esm/providers/s3/apis/internal/uploadData/multipart/uploadCache.mjs.map +1 -1
- package/dist/esm/providers/s3/apis/internal/uploadData/multipart/uploadHandlers.mjs +1 -1
- package/dist/esm/providers/s3/apis/internal/uploadData/multipart/uploadHandlers.mjs.map +1 -1
- package/dist/esm/providers/s3/apis/internal/uploadData/multipart/uploadPartExecutor.mjs.map +1 -1
- package/dist/esm/providers/s3/apis/internal/uploadData/putObjectJob.mjs.map +1 -1
- package/dist/esm/providers/s3/apis/list.mjs.map +1 -1
- package/dist/esm/providers/s3/apis/remove.mjs.map +1 -1
- package/dist/esm/providers/s3/apis/server/copy.mjs.map +1 -1
- package/dist/esm/providers/s3/apis/server/getProperties.mjs.map +1 -1
- package/dist/esm/providers/s3/apis/server/getUrl.mjs.map +1 -1
- package/dist/esm/providers/s3/apis/server/list.mjs.map +1 -1
- package/dist/esm/providers/s3/apis/server/remove.mjs.map +1 -1
- package/dist/esm/providers/s3/apis/uploadData.mjs.map +1 -1
- package/dist/esm/providers/s3/utils/client/runtime/base64/index.browser.mjs.map +1 -1
- package/dist/esm/providers/s3/utils/client/runtime/base64/index.native.mjs.map +1 -1
- package/dist/esm/providers/s3/utils/client/runtime/constants.mjs.map +1 -1
- package/dist/esm/providers/s3/utils/client/runtime/contentSha256middleware.mjs.map +1 -1
- package/dist/esm/providers/s3/utils/client/runtime/xhrTransferHandler.mjs +1 -1
- package/dist/esm/providers/s3/utils/client/runtime/xhrTransferHandler.mjs.map +1 -1
- package/dist/esm/providers/s3/utils/client/runtime/xmlParser/dom.mjs.map +1 -1
- package/dist/esm/providers/s3/utils/client/runtime/xmlParser/pureJs.mjs.map +1 -1
- package/dist/esm/providers/s3/utils/client/s3control/base.mjs.map +1 -1
- package/dist/esm/providers/s3/utils/client/s3control/getDataAccess.mjs.map +1 -1
- package/dist/esm/providers/s3/utils/client/s3control/listCallerAccessGrants.mjs.map +1 -1
- package/dist/esm/providers/s3/utils/client/s3data/abortMultipartUpload.mjs.map +1 -1
- package/dist/esm/providers/s3/utils/client/s3data/base.mjs.map +1 -1
- package/dist/esm/providers/s3/utils/client/s3data/completeMultipartUpload.mjs.map +1 -1
- package/dist/esm/providers/s3/utils/client/s3data/copyObject.mjs +1 -1
- package/dist/esm/providers/s3/utils/client/s3data/copyObject.mjs.map +1 -1
- package/dist/esm/providers/s3/utils/client/s3data/createMultipartUpload.mjs +1 -1
- package/dist/esm/providers/s3/utils/client/s3data/createMultipartUpload.mjs.map +1 -1
- package/dist/esm/providers/s3/utils/client/s3data/deleteObject.mjs.map +1 -1
- package/dist/esm/providers/s3/utils/client/s3data/getObject.mjs +1 -1
- package/dist/esm/providers/s3/utils/client/s3data/getObject.mjs.map +1 -1
- package/dist/esm/providers/s3/utils/client/s3data/headObject.mjs +1 -1
- package/dist/esm/providers/s3/utils/client/s3data/headObject.mjs.map +1 -1
- package/dist/esm/providers/s3/utils/client/s3data/listObjectsV2.mjs +1 -1
- package/dist/esm/providers/s3/utils/client/s3data/listObjectsV2.mjs.map +1 -1
- package/dist/esm/providers/s3/utils/client/s3data/listParts.mjs.map +1 -1
- package/dist/esm/providers/s3/utils/client/s3data/putObject.mjs +1 -1
- package/dist/esm/providers/s3/utils/client/s3data/putObject.mjs.map +1 -1
- package/dist/esm/providers/s3/utils/client/s3data/uploadPart.mjs.map +1 -1
- package/dist/esm/providers/s3/utils/client/utils/createRetryDecider.mjs.map +1 -1
- package/dist/esm/providers/s3/utils/client/utils/deserializeHelpers.mjs.map +1 -1
- package/dist/esm/providers/s3/utils/client/utils/integrityHelpers.mjs.map +1 -1
- package/dist/esm/providers/s3/utils/client/utils/parsePayload.mjs.map +1 -1
- package/dist/esm/providers/s3/utils/client/utils/serializeHelpers.mjs.map +1 -1
- package/dist/esm/providers/s3/utils/constants.mjs.map +1 -1
- package/dist/esm/providers/s3/utils/constructContentDisposition.mjs.map +1 -1
- package/dist/esm/providers/s3/utils/crc32.mjs +1 -1
- package/dist/esm/providers/s3/utils/crc32.mjs.map +1 -1
- package/dist/esm/providers/s3/utils/getCombinedCrc32.mjs.map +1 -1
- package/dist/esm/providers/s3/utils/getCombinedCrc32.native.mjs.map +1 -1
- package/dist/esm/providers/s3/utils/hexUtils.mjs.map +1 -1
- package/dist/esm/providers/s3/utils/isInputWithPath.mjs.map +1 -1
- package/dist/esm/providers/s3/utils/md5.mjs.map +1 -1
- package/dist/esm/providers/s3/utils/readFile.mjs.map +1 -1
- package/dist/esm/providers/s3/utils/readFile.native.mjs.map +1 -1
- package/dist/esm/providers/s3/utils/resolveIdentityId.mjs.map +1 -1
- package/dist/esm/providers/s3/utils/resolveS3ConfigAndInput.mjs.map +1 -1
- package/dist/esm/providers/s3/utils/transferTask.mjs.map +1 -1
- package/dist/esm/providers/s3/utils/urlDecoder.mjs.map +1 -1
- package/dist/esm/providers/s3/utils/userAgent.mjs.map +1 -1
- package/dist/esm/providers/s3/utils/validateBucketOwnerID.mjs.map +1 -1
- package/dist/esm/providers/s3/utils/validateMultipartUploadXML.mjs.map +1 -1
- package/dist/esm/providers/s3/utils/validateObjectUrl.mjs.map +1 -1
- package/dist/esm/providers/s3/utils/validateStorageOperationInput.mjs.map +1 -1
- package/dist/esm/providers/s3/utils/validateStorageOperationInputWithPrefix.mjs.map +1 -1
- package/dist/esm/utils/resolvePrefix.mjs.map +1 -1
- package/package.json +5 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uploadHandlers.mjs","sources":["../../../../../../../../src/providers/s3/apis/internal/uploadData/multipart/uploadHandlers.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { Amplify, } from '@aws-amplify/core';\nimport { StorageAction } from '@aws-amplify/core/internals/utils';\nimport { resolveS3ConfigAndInput, validateStorageOperationInput, } from '../../../../utils';\nimport { DEFAULT_ACCESS_LEVEL, DEFAULT_QUEUE_SIZE, STORAGE_INPUT_KEY, } from '../../../../utils/constants';\nimport { StorageError } from '../../../../../../errors/StorageError';\nimport { CanceledError } from '../../../../../../errors/CanceledError';\nimport { abortMultipartUpload, completeMultipartUpload, headObject, } from '../../../../utils/client/s3data';\nimport { getStorageUserAgentValue } from '../../../../utils/userAgent';\nimport { logger } from '../../../../../../utils';\nimport { calculateContentCRC32 } from '../../../../utils/crc32';\nimport { IntegrityError } from '../../../../../../errors/IntegrityError';\nimport { uploadPartExecutor } from './uploadPartExecutor';\nimport { getUploadsCacheKey, removeCachedUpload, serializeUploadOptions, } from './uploadCache';\nimport { getConcurrentUploadsProgressTracker } from './progressTracker';\nimport { loadOrCreateMultipartUpload } from './initialUpload';\nimport { getDataChunker } from './getDataChunker';\nimport { calculatePartSize } from './calculatePartSize';\n/**\n * Create closure hiding the multipart upload implementation details and expose the upload job and control functions(\n * onPause, onResume, onCancel).\n *\n * @internal\n */\nexport const getMultipartUploadHandlers = (uploadDataInput, size) => {\n let resolveCallback;\n let rejectCallback;\n let inProgressUpload;\n let resolvedS3Config;\n let abortController;\n let resolvedAccessLevel;\n let resolvedBucket;\n let resolvedKeyPrefix;\n let resolvedIdentityId;\n let uploadCacheKey;\n let finalKey;\n let expectedBucketOwner;\n // Special flag that differentiates HTTP requests abort error caused by pause() from ones caused by cancel().\n // The former one should NOT cause the upload job to throw, but cancels any pending HTTP requests.\n // This should be replaced by a special abort reason. However,the support of this API is lagged behind.\n let isAbortSignalFromPause = false;\n const { resumableUploadsCache } = uploadDataInput.options ?? {};\n const startUpload = async () => {\n const { options: uploadDataOptions, data } = uploadDataInput;\n const resolvedS3Options = await resolveS3ConfigAndInput(Amplify, uploadDataInput);\n abortController = new AbortController();\n isAbortSignalFromPause = false;\n resolvedS3Config = resolvedS3Options.s3Config;\n resolvedBucket = resolvedS3Options.bucket;\n resolvedIdentityId = resolvedS3Options.identityId;\n expectedBucketOwner = uploadDataOptions?.expectedBucketOwner;\n const { inputType, objectKey } = validateStorageOperationInput(uploadDataInput, resolvedIdentityId);\n const { contentDisposition, contentEncoding, contentType = 'application/octet-stream', metadata, preventOverwrite, onProgress, } = uploadDataOptions ?? {};\n finalKey = objectKey;\n // Resolve \"key\" specific options\n if (inputType === STORAGE_INPUT_KEY) {\n const accessLevel = uploadDataOptions\n ?.accessLevel;\n resolvedKeyPrefix = resolvedS3Options.keyPrefix;\n finalKey = resolvedKeyPrefix + objectKey;\n resolvedAccessLevel = resolveAccessLevel(accessLevel);\n }\n const { checksum: optionsHash } = await calculateContentCRC32(serializeUploadOptions(uploadDataOptions));\n if (!inProgressUpload) {\n const { uploadId, cachedParts, finalCrc32 } = await loadOrCreateMultipartUpload({\n s3Config: resolvedS3Config,\n accessLevel: resolvedAccessLevel,\n bucket: resolvedBucket,\n keyPrefix: resolvedKeyPrefix,\n key: objectKey,\n contentType,\n contentDisposition,\n contentEncoding,\n metadata,\n data,\n size,\n abortSignal: abortController.signal,\n checksumAlgorithm: uploadDataOptions?.checksumAlgorithm,\n optionsHash,\n resumableUploadsCache,\n expectedBucketOwner,\n });\n inProgressUpload = {\n uploadId,\n completedParts: cachedParts,\n finalCrc32,\n };\n }\n uploadCacheKey = size\n ? getUploadsCacheKey({\n file: data instanceof File ? data : undefined,\n accessLevel: resolvedAccessLevel,\n contentType: uploadDataOptions?.contentType,\n bucket: resolvedBucket,\n size,\n key: objectKey,\n optionsHash,\n })\n : undefined;\n const dataChunker = getDataChunker(data, size);\n const completedPartNumberSet = new Set(inProgressUpload.completedParts.map(({ PartNumber }) => PartNumber));\n const onPartUploadCompletion = (partNumber, eTag, crc32) => {\n inProgressUpload?.completedParts.push({\n PartNumber: partNumber,\n ETag: eTag,\n // TODO: crc32 can always be added once RN also has an implementation\n ...(crc32 ? { ChecksumCRC32: crc32 } : {}),\n });\n };\n const concurrentUploadsProgressTracker = getConcurrentUploadsProgressTracker({\n size,\n onProgress,\n });\n const concurrentUploadPartExecutors = [];\n for (let index = 0; index < DEFAULT_QUEUE_SIZE; index++) {\n concurrentUploadPartExecutors.push(uploadPartExecutor({\n dataChunkerGenerator: dataChunker,\n completedPartNumberSet,\n s3Config: resolvedS3Config,\n abortSignal: abortController.signal,\n bucket: resolvedBucket,\n finalKey,\n uploadId: inProgressUpload.uploadId,\n onPartUploadCompletion,\n onProgress: concurrentUploadsProgressTracker.getOnProgressListener(),\n isObjectLockEnabled: resolvedS3Options.isObjectLockEnabled,\n useCRC32Checksum: Boolean(inProgressUpload.finalCrc32),\n expectedBucketOwner,\n }));\n }\n await Promise.all(concurrentUploadPartExecutors);\n validateCompletedParts(inProgressUpload.completedParts, size);\n const { ETag: eTag } = await completeMultipartUpload({\n ...resolvedS3Config,\n abortSignal: abortController.signal,\n userAgentValue: getStorageUserAgentValue(StorageAction.UploadData),\n }, {\n Bucket: resolvedBucket,\n Key: finalKey,\n UploadId: inProgressUpload.uploadId,\n ChecksumCRC32: inProgressUpload.finalCrc32,\n IfNoneMatch: preventOverwrite ? '*' : undefined,\n MultipartUpload: {\n Parts: sortUploadParts(inProgressUpload.completedParts),\n },\n ExpectedBucketOwner: expectedBucketOwner,\n });\n if (size) {\n const { ContentLength: uploadedObjectSize } = await headObject(resolvedS3Config, {\n Bucket: resolvedBucket,\n Key: finalKey,\n ExpectedBucketOwner: expectedBucketOwner,\n });\n if (uploadedObjectSize && uploadedObjectSize !== size) {\n throw new StorageError({\n name: 'Error',\n message: `Upload failed. Expected object size ${size}, but got ${uploadedObjectSize}.`,\n });\n }\n }\n if (resumableUploadsCache && uploadCacheKey) {\n await removeCachedUpload(resumableUploadsCache, uploadCacheKey);\n }\n const result = {\n eTag,\n contentType,\n metadata,\n };\n return inputType === STORAGE_INPUT_KEY\n ? { key: objectKey, ...result }\n : { path: objectKey, ...result };\n };\n const startUploadWithResumability = () => startUpload()\n .then(resolveCallback)\n .catch(error => {\n const abortSignal = abortController?.signal;\n if (abortSignal?.aborted && isAbortSignalFromPause) {\n logger.debug('upload paused.');\n }\n else {\n // Uncaught errors should be exposed to the users.\n rejectCallback(error);\n }\n });\n const multipartUploadJob = () => new Promise((resolve, reject) => {\n resolveCallback = resolve;\n rejectCallback = reject;\n startUploadWithResumability();\n });\n const onPause = () => {\n isAbortSignalFromPause = true;\n abortController?.abort();\n };\n const onResume = () => {\n startUploadWithResumability();\n };\n const onCancel = (message) => {\n // 1. abort in-flight API requests\n abortController?.abort(message);\n const cancelUpload = async () => {\n // 2. clear upload cache.\n if (uploadCacheKey && resumableUploadsCache) {\n await removeCachedUpload(resumableUploadsCache, uploadCacheKey);\n }\n // 3. clear multipart upload on server side.\n await abortMultipartUpload(resolvedS3Config, {\n Bucket: resolvedBucket,\n Key: finalKey,\n UploadId: inProgressUpload?.uploadId,\n ExpectedBucketOwner: expectedBucketOwner,\n });\n };\n cancelUpload().catch(e => {\n logger.debug('error when cancelling upload task.', e);\n });\n rejectCallback(\n // Internal error that should not be exposed to the users. They should use isCancelError() to check if\n // the error is caused by cancel().\n new CanceledError(message ? { message } : undefined));\n };\n return {\n multipartUploadJob,\n onPause,\n onResume,\n onCancel,\n };\n};\nconst resolveAccessLevel = (accessLevel) => accessLevel ??\n Amplify.libraryOptions.Storage?.S3?.defaultAccessLevel ??\n DEFAULT_ACCESS_LEVEL;\nconst validateCompletedParts = (completedParts, size) => {\n const partsExpected = Math.ceil(size / calculatePartSize(size));\n const validPartCount = completedParts.length === partsExpected;\n const sorted = sortUploadParts(completedParts);\n const validPartNumbers = sorted.every((part, index) => part.PartNumber === index + 1);\n if (!validPartCount || !validPartNumbers) {\n throw new IntegrityError();\n }\n};\nconst sortUploadParts = (parts) => {\n return [...parts].sort((partA, partB) => partA.PartNumber - partB.PartNumber);\n};\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"uploadHandlers.mjs","sources":["../../../../../../../../src/providers/s3/apis/internal/uploadData/multipart/uploadHandlers.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { Amplify, } from '@aws-amplify/core';\nimport { StorageAction } from '@aws-amplify/core/internals/utils';\nimport { resolveS3ConfigAndInput, validateStorageOperationInput, } from '../../../../utils';\nimport { DEFAULT_ACCESS_LEVEL, DEFAULT_QUEUE_SIZE, STORAGE_INPUT_KEY, } from '../../../../utils/constants';\nimport { StorageError } from '../../../../../../errors/StorageError';\nimport { CanceledError } from '../../../../../../errors/CanceledError';\nimport { abortMultipartUpload, completeMultipartUpload, headObject, } from '../../../../utils/client/s3data';\nimport { getStorageUserAgentValue } from '../../../../utils/userAgent';\nimport { logger } from '../../../../../../utils';\nimport { calculateContentCRC32 } from '../../../../utils/crc32';\nimport { IntegrityError } from '../../../../../../errors/IntegrityError';\nimport { uploadPartExecutor } from './uploadPartExecutor';\nimport { getUploadsCacheKey, removeCachedUpload, serializeUploadOptions, } from './uploadCache';\nimport { getConcurrentUploadsProgressTracker } from './progressTracker';\nimport { loadOrCreateMultipartUpload } from './initialUpload';\nimport { getDataChunker } from './getDataChunker';\nimport { calculatePartSize } from './calculatePartSize';\n/**\n * Create closure hiding the multipart upload implementation details and expose the upload job and control functions(\n * onPause, onResume, onCancel).\n *\n * @internal\n */\nexport const getMultipartUploadHandlers = (uploadDataInput, size) => {\n let resolveCallback;\n let rejectCallback;\n let inProgressUpload;\n let resolvedS3Config;\n let abortController;\n let resolvedAccessLevel;\n let resolvedBucket;\n let resolvedKeyPrefix;\n let resolvedIdentityId;\n let uploadCacheKey;\n let finalKey;\n let expectedBucketOwner;\n // Special flag that differentiates HTTP requests abort error caused by pause() from ones caused by cancel().\n // The former one should NOT cause the upload job to throw, but cancels any pending HTTP requests.\n // This should be replaced by a special abort reason. However,the support of this API is lagged behind.\n let isAbortSignalFromPause = false;\n const { resumableUploadsCache } = uploadDataInput.options ?? {};\n const startUpload = async () => {\n const { options: uploadDataOptions, data } = uploadDataInput;\n const resolvedS3Options = await resolveS3ConfigAndInput(Amplify, uploadDataInput);\n abortController = new AbortController();\n isAbortSignalFromPause = false;\n resolvedS3Config = resolvedS3Options.s3Config;\n resolvedBucket = resolvedS3Options.bucket;\n resolvedIdentityId = resolvedS3Options.identityId;\n expectedBucketOwner = uploadDataOptions?.expectedBucketOwner;\n const { inputType, objectKey } = validateStorageOperationInput(uploadDataInput, resolvedIdentityId);\n const { contentDisposition, contentEncoding, contentType = 'application/octet-stream', metadata, preventOverwrite, onProgress, } = uploadDataOptions ?? {};\n finalKey = objectKey;\n // Resolve \"key\" specific options\n if (inputType === STORAGE_INPUT_KEY) {\n const accessLevel = uploadDataOptions\n ?.accessLevel;\n resolvedKeyPrefix = resolvedS3Options.keyPrefix;\n finalKey = resolvedKeyPrefix + objectKey;\n resolvedAccessLevel = resolveAccessLevel(accessLevel);\n }\n const { checksum: optionsHash } = await calculateContentCRC32(serializeUploadOptions(uploadDataOptions));\n if (!inProgressUpload) {\n const { uploadId, cachedParts, finalCrc32 } = await loadOrCreateMultipartUpload({\n s3Config: resolvedS3Config,\n accessLevel: resolvedAccessLevel,\n bucket: resolvedBucket,\n keyPrefix: resolvedKeyPrefix,\n key: objectKey,\n contentType,\n contentDisposition,\n contentEncoding,\n metadata,\n data,\n size,\n abortSignal: abortController.signal,\n checksumAlgorithm: uploadDataOptions?.checksumAlgorithm,\n optionsHash,\n resumableUploadsCache,\n expectedBucketOwner,\n });\n inProgressUpload = {\n uploadId,\n completedParts: cachedParts,\n finalCrc32,\n };\n }\n uploadCacheKey = size\n ? getUploadsCacheKey({\n file: data instanceof File ? data : undefined,\n accessLevel: resolvedAccessLevel,\n contentType: uploadDataOptions?.contentType,\n bucket: resolvedBucket,\n size,\n key: objectKey,\n optionsHash,\n })\n : undefined;\n const dataChunker = getDataChunker(data, size);\n const completedPartNumberSet = new Set(inProgressUpload.completedParts.map(({ PartNumber }) => PartNumber));\n const onPartUploadCompletion = (partNumber, eTag, crc32) => {\n inProgressUpload?.completedParts.push({\n PartNumber: partNumber,\n ETag: eTag,\n // TODO: crc32 can always be added once RN also has an implementation\n ...(crc32 ? { ChecksumCRC32: crc32 } : {}),\n });\n };\n const concurrentUploadsProgressTracker = getConcurrentUploadsProgressTracker({\n size,\n onProgress,\n });\n const concurrentUploadPartExecutors = [];\n for (let index = 0; index < DEFAULT_QUEUE_SIZE; index++) {\n concurrentUploadPartExecutors.push(uploadPartExecutor({\n dataChunkerGenerator: dataChunker,\n completedPartNumberSet,\n s3Config: resolvedS3Config,\n abortSignal: abortController.signal,\n bucket: resolvedBucket,\n finalKey,\n uploadId: inProgressUpload.uploadId,\n onPartUploadCompletion,\n onProgress: concurrentUploadsProgressTracker.getOnProgressListener(),\n isObjectLockEnabled: resolvedS3Options.isObjectLockEnabled,\n useCRC32Checksum: Boolean(inProgressUpload.finalCrc32),\n expectedBucketOwner,\n }));\n }\n await Promise.all(concurrentUploadPartExecutors);\n validateCompletedParts(inProgressUpload.completedParts, size);\n const { ETag: eTag } = await completeMultipartUpload({\n ...resolvedS3Config,\n abortSignal: abortController.signal,\n userAgentValue: getStorageUserAgentValue(StorageAction.UploadData),\n }, {\n Bucket: resolvedBucket,\n Key: finalKey,\n UploadId: inProgressUpload.uploadId,\n ChecksumCRC32: inProgressUpload.finalCrc32,\n IfNoneMatch: preventOverwrite ? '*' : undefined,\n MultipartUpload: {\n Parts: sortUploadParts(inProgressUpload.completedParts),\n },\n ExpectedBucketOwner: expectedBucketOwner,\n });\n if (size) {\n const { ContentLength: uploadedObjectSize } = await headObject(resolvedS3Config, {\n Bucket: resolvedBucket,\n Key: finalKey,\n ExpectedBucketOwner: expectedBucketOwner,\n });\n if (uploadedObjectSize && uploadedObjectSize !== size) {\n throw new StorageError({\n name: 'Error',\n message: `Upload failed. Expected object size ${size}, but got ${uploadedObjectSize}.`,\n });\n }\n }\n if (resumableUploadsCache && uploadCacheKey) {\n await removeCachedUpload(resumableUploadsCache, uploadCacheKey);\n }\n const result = {\n eTag,\n contentType,\n metadata,\n };\n return inputType === STORAGE_INPUT_KEY\n ? { key: objectKey, ...result }\n : { path: objectKey, ...result };\n };\n const startUploadWithResumability = () => startUpload()\n .then(resolveCallback)\n .catch(error => {\n const abortSignal = abortController?.signal;\n if (abortSignal?.aborted && isAbortSignalFromPause) {\n logger.debug('upload paused.');\n }\n else {\n // Uncaught errors should be exposed to the users.\n rejectCallback(error);\n }\n });\n const multipartUploadJob = () => new Promise((resolve, reject) => {\n resolveCallback = resolve;\n rejectCallback = reject;\n startUploadWithResumability();\n });\n const onPause = () => {\n isAbortSignalFromPause = true;\n abortController?.abort();\n };\n const onResume = () => {\n startUploadWithResumability();\n };\n const onCancel = (message) => {\n // 1. abort in-flight API requests\n abortController?.abort(message);\n const cancelUpload = async () => {\n // 2. clear upload cache.\n if (uploadCacheKey && resumableUploadsCache) {\n await removeCachedUpload(resumableUploadsCache, uploadCacheKey);\n }\n // 3. clear multipart upload on server side.\n await abortMultipartUpload(resolvedS3Config, {\n Bucket: resolvedBucket,\n Key: finalKey,\n UploadId: inProgressUpload?.uploadId,\n ExpectedBucketOwner: expectedBucketOwner,\n });\n };\n cancelUpload().catch(e => {\n logger.debug('error when cancelling upload task.', e);\n });\n rejectCallback(\n // Internal error that should not be exposed to the users. They should use isCancelError() to check if\n // the error is caused by cancel().\n new CanceledError(message ? { message } : undefined));\n };\n return {\n multipartUploadJob,\n onPause,\n onResume,\n onCancel,\n };\n};\nconst resolveAccessLevel = (accessLevel) => accessLevel ??\n Amplify.libraryOptions.Storage?.S3?.defaultAccessLevel ??\n DEFAULT_ACCESS_LEVEL;\nconst validateCompletedParts = (completedParts, size) => {\n const partsExpected = Math.ceil(size / calculatePartSize(size));\n const validPartCount = completedParts.length === partsExpected;\n const sorted = sortUploadParts(completedParts);\n const validPartNumbers = sorted.every((part, index) => part.PartNumber === index + 1);\n if (!validPartCount || !validPartNumbers) {\n throw new IntegrityError();\n }\n};\nconst sortUploadParts = (parts) => {\n return [...parts].sort((partA, partB) => partA.PartNumber - partB.PartNumber);\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uploadPartExecutor.mjs","sources":["../../../../../../../../src/providers/s3/apis/internal/uploadData/multipart/uploadPartExecutor.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { uploadPart } from '../../../../utils/client/s3data';\nimport { logger } from '../../../../../../utils';\nimport { calculateContentCRC32 } from '../../../../utils/crc32';\nimport { calculateContentMd5 } from '../../../../utils';\nexport const uploadPartExecutor = async ({ dataChunkerGenerator, completedPartNumberSet, s3Config, abortSignal, bucket, finalKey, uploadId, onPartUploadCompletion, onProgress, isObjectLockEnabled, useCRC32Checksum, expectedBucketOwner, }) => {\n let transferredBytes = 0;\n for (const { data, partNumber, size } of dataChunkerGenerator) {\n if (abortSignal.aborted) {\n logger.debug('upload executor aborted.');\n break;\n }\n if (completedPartNumberSet.has(partNumber)) {\n logger.debug(`part ${partNumber} already uploaded.`);\n transferredBytes += size;\n onProgress?.({\n transferredBytes,\n });\n }\n else {\n // handle cancel error\n let checksumCRC32;\n if (useCRC32Checksum) {\n checksumCRC32 = await calculateContentCRC32(data);\n }\n const contentMD5 = \n // check if checksum exists. ex: should not exist in react native\n !checksumCRC32 && isObjectLockEnabled\n ? await calculateContentMd5(data)\n : undefined;\n const { ETag: eTag } = await uploadPart({\n ...s3Config,\n abortSignal,\n onUploadProgress: (event) => {\n const { transferredBytes: currentPartTransferredBytes } = event;\n onProgress?.({\n transferredBytes: transferredBytes + currentPartTransferredBytes,\n });\n },\n }, {\n Bucket: bucket,\n Key: finalKey,\n UploadId: uploadId,\n Body: data,\n PartNumber: partNumber,\n ChecksumCRC32: checksumCRC32?.checksum,\n ContentMD5: contentMD5,\n ExpectedBucketOwner: expectedBucketOwner,\n });\n transferredBytes += size;\n // eTag will always be set even the S3 model interface marks it as optional.\n onPartUploadCompletion(partNumber, eTag, checksumCRC32?.checksum);\n }\n }\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AACA;AAKY,MAAC,kBAAkB,GAAG,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,sBAAsB,EAAE,UAAU,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,mBAAmB,GAAG,KAAK;AAClP,IAAI,IAAI,gBAAgB,GAAG,CAAC
|
|
1
|
+
{"version":3,"file":"uploadPartExecutor.mjs","sources":["../../../../../../../../src/providers/s3/apis/internal/uploadData/multipart/uploadPartExecutor.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { uploadPart } from '../../../../utils/client/s3data';\nimport { logger } from '../../../../../../utils';\nimport { calculateContentCRC32 } from '../../../../utils/crc32';\nimport { calculateContentMd5 } from '../../../../utils';\nexport const uploadPartExecutor = async ({ dataChunkerGenerator, completedPartNumberSet, s3Config, abortSignal, bucket, finalKey, uploadId, onPartUploadCompletion, onProgress, isObjectLockEnabled, useCRC32Checksum, expectedBucketOwner, }) => {\n let transferredBytes = 0;\n for (const { data, partNumber, size } of dataChunkerGenerator) {\n if (abortSignal.aborted) {\n logger.debug('upload executor aborted.');\n break;\n }\n if (completedPartNumberSet.has(partNumber)) {\n logger.debug(`part ${partNumber} already uploaded.`);\n transferredBytes += size;\n onProgress?.({\n transferredBytes,\n });\n }\n else {\n // handle cancel error\n let checksumCRC32;\n if (useCRC32Checksum) {\n checksumCRC32 = await calculateContentCRC32(data);\n }\n const contentMD5 = \n // check if checksum exists. ex: should not exist in react native\n !checksumCRC32 && isObjectLockEnabled\n ? await calculateContentMd5(data)\n : undefined;\n const { ETag: eTag } = await uploadPart({\n ...s3Config,\n abortSignal,\n onUploadProgress: (event) => {\n const { transferredBytes: currentPartTransferredBytes } = event;\n onProgress?.({\n transferredBytes: transferredBytes + currentPartTransferredBytes,\n });\n },\n }, {\n Bucket: bucket,\n Key: finalKey,\n UploadId: uploadId,\n Body: data,\n PartNumber: partNumber,\n ChecksumCRC32: checksumCRC32?.checksum,\n ContentMD5: contentMD5,\n ExpectedBucketOwner: expectedBucketOwner,\n });\n transferredBytes += size;\n // eTag will always be set even the S3 model interface marks it as optional.\n onPartUploadCompletion(partNumber, eTag, checksumCRC32?.checksum);\n }\n }\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AACA;AAKY,MAAC,kBAAkB,GAAG,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,sBAAsB,EAAE,UAAU,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,mBAAmB,GAAG,KAAK;AAClP,IAAI,IAAI,gBAAgB,GAAG,CAAC;AAC5B,IAAI,KAAK,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,oBAAoB,EAAE;AACnE,QAAQ,IAAI,WAAW,CAAC,OAAO,EAAE;AACjC,YAAY,MAAM,CAAC,KAAK,CAAC,0BAA0B,CAAC;AACpD,YAAY;AACZ;AACA,QAAQ,IAAI,sBAAsB,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;AACpD,YAAY,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,UAAU,CAAC,kBAAkB,CAAC,CAAC;AAChE,YAAY,gBAAgB,IAAI,IAAI;AACpC,YAAY,UAAU,GAAG;AACzB,gBAAgB,gBAAgB;AAChC,aAAa,CAAC;AACd;AACA,aAAa;AACb;AACA,YAAY,IAAI,aAAa;AAC7B,YAAY,IAAI,gBAAgB,EAAE;AAClC,gBAAgB,aAAa,GAAG,MAAM,qBAAqB,CAAC,IAAI,CAAC;AACjE;AACA,YAAY,MAAM,UAAU;AAC5B;AACA,YAAY,CAAC,aAAa,IAAI;AAC9B,kBAAkB,MAAM,mBAAmB,CAAC,IAAI;AAChD,kBAAkB,SAAS;AAC3B,YAAY,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,UAAU,CAAC;AACpD,gBAAgB,GAAG,QAAQ;AAC3B,gBAAgB,WAAW;AAC3B,gBAAgB,gBAAgB,EAAE,CAAC,KAAK,KAAK;AAC7C,oBAAoB,MAAM,EAAE,gBAAgB,EAAE,2BAA2B,EAAE,GAAG,KAAK;AACnF,oBAAoB,UAAU,GAAG;AACjC,wBAAwB,gBAAgB,EAAE,gBAAgB,GAAG,2BAA2B;AACxF,qBAAqB,CAAC;AACtB,iBAAiB;AACjB,aAAa,EAAE;AACf,gBAAgB,MAAM,EAAE,MAAM;AAC9B,gBAAgB,GAAG,EAAE,QAAQ;AAC7B,gBAAgB,QAAQ,EAAE,QAAQ;AAClC,gBAAgB,IAAI,EAAE,IAAI;AAC1B,gBAAgB,UAAU,EAAE,UAAU;AACtC,gBAAgB,aAAa,EAAE,aAAa,EAAE,QAAQ;AACtD,gBAAgB,UAAU,EAAE,UAAU;AACtC,gBAAgB,mBAAmB,EAAE,mBAAmB;AACxD,aAAa,CAAC;AACd,YAAY,gBAAgB,IAAI,IAAI;AACpC;AACA,YAAY,sBAAsB,CAAC,UAAU,EAAE,IAAI,EAAE,aAAa,EAAE,QAAQ,CAAC;AAC7E;AACA;AACA;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"putObjectJob.mjs","sources":["../../../../../../../src/providers/s3/apis/internal/uploadData/putObjectJob.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { Amplify } from '@aws-amplify/core';\nimport { StorageAction } from '@aws-amplify/core/internals/utils';\nimport { calculateContentMd5, resolveS3ConfigAndInput, validateBucketOwnerID, validateStorageOperationInput, } from '../../../utils';\nimport { putObject } from '../../../utils/client/s3data';\nimport { getStorageUserAgentValue } from '../../../utils/userAgent';\nimport { CHECKSUM_ALGORITHM_CRC32, STORAGE_INPUT_KEY, } from '../../../utils/constants';\nimport { calculateContentCRC32 } from '../../../utils/crc32';\nimport { constructContentDisposition } from '../../../utils/constructContentDisposition';\n/**\n * Get a function the returns a promise to call putObject API to S3.\n *\n * @internal\n */\nexport const putObjectJob = (uploadDataInput, abortSignal, totalLength) => async () => {\n const { options: uploadDataOptions, data } = uploadDataInput;\n const { bucket, keyPrefix, s3Config, isObjectLockEnabled, identityId } = await resolveS3ConfigAndInput(Amplify, uploadDataInput);\n const { inputType, objectKey } = validateStorageOperationInput(uploadDataInput, identityId);\n validateBucketOwnerID(uploadDataOptions?.expectedBucketOwner);\n const finalKey = inputType === STORAGE_INPUT_KEY ? keyPrefix + objectKey : objectKey;\n const { contentDisposition, contentEncoding, contentType = 'application/octet-stream', preventOverwrite, metadata, checksumAlgorithm, onProgress, expectedBucketOwner, } = uploadDataOptions ?? {};\n const checksumCRC32 = checksumAlgorithm === CHECKSUM_ALGORITHM_CRC32\n ? await calculateContentCRC32(data)\n : undefined;\n const contentMD5 = \n // check if checksum exists. ex: should not exist in react native\n !checksumCRC32 && isObjectLockEnabled\n ? await calculateContentMd5(data)\n : undefined;\n const { ETag: eTag, VersionId: versionId } = await putObject({\n ...s3Config,\n abortSignal,\n onUploadProgress: onProgress,\n userAgentValue: getStorageUserAgentValue(StorageAction.UploadData),\n }, {\n Bucket: bucket,\n Key: finalKey,\n Body: data,\n ContentType: contentType,\n ContentDisposition: constructContentDisposition(contentDisposition),\n ContentEncoding: contentEncoding,\n Metadata: metadata,\n ContentMD5: contentMD5,\n ChecksumCRC32: checksumCRC32?.checksum,\n ExpectedBucketOwner: expectedBucketOwner,\n IfNoneMatch: preventOverwrite ? '*' : undefined,\n });\n const result = {\n eTag,\n versionId,\n contentType,\n metadata,\n size: totalLength,\n };\n return inputType === STORAGE_INPUT_KEY\n ? { key: objectKey, ...result }\n : { path: objectKey, ...result };\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AACA;AASA;AACA;AACA;AACA;AACA;AACY,MAAC,YAAY,GAAG,CAAC,eAAe,EAAE,WAAW,EAAE,WAAW,KAAK,YAAY;AACvF,IAAI,MAAM,EAAE,OAAO,EAAE,iBAAiB,EAAE,IAAI,EAAE,GAAG,eAAe
|
|
1
|
+
{"version":3,"file":"putObjectJob.mjs","sources":["../../../../../../../src/providers/s3/apis/internal/uploadData/putObjectJob.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { Amplify } from '@aws-amplify/core';\nimport { StorageAction } from '@aws-amplify/core/internals/utils';\nimport { calculateContentMd5, resolveS3ConfigAndInput, validateBucketOwnerID, validateStorageOperationInput, } from '../../../utils';\nimport { putObject } from '../../../utils/client/s3data';\nimport { getStorageUserAgentValue } from '../../../utils/userAgent';\nimport { CHECKSUM_ALGORITHM_CRC32, STORAGE_INPUT_KEY, } from '../../../utils/constants';\nimport { calculateContentCRC32 } from '../../../utils/crc32';\nimport { constructContentDisposition } from '../../../utils/constructContentDisposition';\n/**\n * Get a function the returns a promise to call putObject API to S3.\n *\n * @internal\n */\nexport const putObjectJob = (uploadDataInput, abortSignal, totalLength) => async () => {\n const { options: uploadDataOptions, data } = uploadDataInput;\n const { bucket, keyPrefix, s3Config, isObjectLockEnabled, identityId } = await resolveS3ConfigAndInput(Amplify, uploadDataInput);\n const { inputType, objectKey } = validateStorageOperationInput(uploadDataInput, identityId);\n validateBucketOwnerID(uploadDataOptions?.expectedBucketOwner);\n const finalKey = inputType === STORAGE_INPUT_KEY ? keyPrefix + objectKey : objectKey;\n const { contentDisposition, contentEncoding, contentType = 'application/octet-stream', preventOverwrite, metadata, checksumAlgorithm, onProgress, expectedBucketOwner, } = uploadDataOptions ?? {};\n const checksumCRC32 = checksumAlgorithm === CHECKSUM_ALGORITHM_CRC32\n ? await calculateContentCRC32(data)\n : undefined;\n const contentMD5 = \n // check if checksum exists. ex: should not exist in react native\n !checksumCRC32 && isObjectLockEnabled\n ? await calculateContentMd5(data)\n : undefined;\n const { ETag: eTag, VersionId: versionId } = await putObject({\n ...s3Config,\n abortSignal,\n onUploadProgress: onProgress,\n userAgentValue: getStorageUserAgentValue(StorageAction.UploadData),\n }, {\n Bucket: bucket,\n Key: finalKey,\n Body: data,\n ContentType: contentType,\n ContentDisposition: constructContentDisposition(contentDisposition),\n ContentEncoding: contentEncoding,\n Metadata: metadata,\n ContentMD5: contentMD5,\n ChecksumCRC32: checksumCRC32?.checksum,\n ExpectedBucketOwner: expectedBucketOwner,\n IfNoneMatch: preventOverwrite ? '*' : undefined,\n });\n const result = {\n eTag,\n versionId,\n contentType,\n metadata,\n size: totalLength,\n };\n return inputType === STORAGE_INPUT_KEY\n ? { key: objectKey, ...result }\n : { path: objectKey, ...result };\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AACA;AASA;AACA;AACA;AACA;AACA;AACY,MAAC,YAAY,GAAG,CAAC,eAAe,EAAE,WAAW,EAAE,WAAW,KAAK,YAAY;AACvF,IAAI,MAAM,EAAE,OAAO,EAAE,iBAAiB,EAAE,IAAI,EAAE,GAAG,eAAe;AAChE,IAAI,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,mBAAmB,EAAE,UAAU,EAAE,GAAG,MAAM,uBAAuB,CAAC,OAAO,EAAE,eAAe,CAAC;AACpI,IAAI,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,6BAA6B,CAAC,eAAe,EAAE,UAAU,CAAC;AAC/F,IAAI,qBAAqB,CAAC,iBAAiB,EAAE,mBAAmB,CAAC;AACjE,IAAI,MAAM,QAAQ,GAAG,SAAS,KAAK,iBAAiB,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS;AACxF,IAAI,MAAM,EAAE,kBAAkB,EAAE,eAAe,EAAE,WAAW,GAAG,0BAA0B,EAAE,gBAAgB,EAAE,QAAQ,EAAE,iBAAiB,EAAE,UAAU,EAAE,mBAAmB,GAAG,GAAG,iBAAiB,IAAI,EAAE;AACtM,IAAI,MAAM,aAAa,GAAG,iBAAiB,KAAK;AAChD,UAAU,MAAM,qBAAqB,CAAC,IAAI;AAC1C,UAAU,SAAS;AACnB,IAAI,MAAM,UAAU;AACpB;AACA,IAAI,CAAC,aAAa,IAAI;AACtB,UAAU,MAAM,mBAAmB,CAAC,IAAI;AACxC,UAAU,SAAS;AACnB,IAAI,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,MAAM,SAAS,CAAC;AACjE,QAAQ,GAAG,QAAQ;AACnB,QAAQ,WAAW;AACnB,QAAQ,gBAAgB,EAAE,UAAU;AACpC,QAAQ,cAAc,EAAE,wBAAwB,CAAC,aAAa,CAAC,UAAU,CAAC;AAC1E,KAAK,EAAE;AACP,QAAQ,MAAM,EAAE,MAAM;AACtB,QAAQ,GAAG,EAAE,QAAQ;AACrB,QAAQ,IAAI,EAAE,IAAI;AAClB,QAAQ,WAAW,EAAE,WAAW;AAChC,QAAQ,kBAAkB,EAAE,2BAA2B,CAAC,kBAAkB,CAAC;AAC3E,QAAQ,eAAe,EAAE,eAAe;AACxC,QAAQ,QAAQ,EAAE,QAAQ;AAC1B,QAAQ,UAAU,EAAE,UAAU;AAC9B,QAAQ,aAAa,EAAE,aAAa,EAAE,QAAQ;AAC9C,QAAQ,mBAAmB,EAAE,mBAAmB;AAChD,QAAQ,WAAW,EAAE,gBAAgB,GAAG,GAAG,GAAG,SAAS;AACvD,KAAK,CAAC;AACN,IAAI,MAAM,MAAM,GAAG;AACnB,QAAQ,IAAI;AACZ,QAAQ,SAAS;AACjB,QAAQ,WAAW;AACnB,QAAQ,QAAQ;AAChB,QAAQ,IAAI,EAAE,WAAW;AACzB,KAAK;AACL,IAAI,OAAO,SAAS,KAAK;AACzB,UAAU,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,MAAM;AACrC,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,MAAM,EAAE;AACxC;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.mjs","sources":["../../../../../src/providers/s3/apis/list.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { Amplify } from '@aws-amplify/core';\nimport { list as listInternal } from './internal/list';\nexport function list(input) {\n return listInternal(Amplify, input ?? {});\n}\n"],"names":["listInternal"],"mappings":";;;AAAA;AACA;AAGO,SAAS,IAAI,CAAC,KAAK,EAAE;AAC5B,IAAI,OAAOA,MAAY,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC
|
|
1
|
+
{"version":3,"file":"list.mjs","sources":["../../../../../src/providers/s3/apis/list.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { Amplify } from '@aws-amplify/core';\nimport { list as listInternal } from './internal/list';\nexport function list(input) {\n return listInternal(Amplify, input ?? {});\n}\n"],"names":["listInternal"],"mappings":";;;AAAA;AACA;AAGO,SAAS,IAAI,CAAC,KAAK,EAAE;AAC5B,IAAI,OAAOA,MAAY,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC;AAC7C;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remove.mjs","sources":["../../../../../src/providers/s3/apis/remove.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { Amplify } from '@aws-amplify/core';\nimport { remove as removeInternal } from './internal/remove';\nexport function remove(input) {\n return removeInternal(Amplify, input);\n}\n"],"names":["removeInternal"],"mappings":";;;AAAA;AACA;AAGO,SAAS,MAAM,CAAC,KAAK,EAAE;AAC9B,IAAI,OAAOA,QAAc,CAAC,OAAO,EAAE,KAAK,CAAC
|
|
1
|
+
{"version":3,"file":"remove.mjs","sources":["../../../../../src/providers/s3/apis/remove.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { Amplify } from '@aws-amplify/core';\nimport { remove as removeInternal } from './internal/remove';\nexport function remove(input) {\n return removeInternal(Amplify, input);\n}\n"],"names":["removeInternal"],"mappings":";;;AAAA;AACA;AAGO,SAAS,MAAM,CAAC,KAAK,EAAE;AAC9B,IAAI,OAAOA,QAAc,CAAC,OAAO,EAAE,KAAK,CAAC;AACzC;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"copy.mjs","sources":["../../../../../../src/providers/s3/apis/server/copy.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { getAmplifyServerContext, } from '@aws-amplify/core/internals/adapter-core';\nimport { copy as copyInternal } from '../internal/copy';\nexport function copy(contextSpec, input) {\n return copyInternal(getAmplifyServerContext(contextSpec).amplify, input);\n}\n"],"names":["copyInternal"],"mappings":";;;AAAA;AACA;AAGO,SAAS,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE;AACzC,IAAI,OAAOA,MAAY,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC
|
|
1
|
+
{"version":3,"file":"copy.mjs","sources":["../../../../../../src/providers/s3/apis/server/copy.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { getAmplifyServerContext, } from '@aws-amplify/core/internals/adapter-core';\nimport { copy as copyInternal } from '../internal/copy';\nexport function copy(contextSpec, input) {\n return copyInternal(getAmplifyServerContext(contextSpec).amplify, input);\n}\n"],"names":["copyInternal"],"mappings":";;;AAAA;AACA;AAGO,SAAS,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE;AACzC,IAAI,OAAOA,MAAY,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC;AAC5E;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getProperties.mjs","sources":["../../../../../../src/providers/s3/apis/server/getProperties.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { getAmplifyServerContext, } from '@aws-amplify/core/internals/adapter-core';\nimport { getProperties as getPropertiesInternal } from '../internal/getProperties';\nexport function getProperties(contextSpec, input) {\n return getPropertiesInternal(getAmplifyServerContext(contextSpec).amplify, input);\n}\n"],"names":["getPropertiesInternal"],"mappings":";;;AAAA;AACA;AAGO,SAAS,aAAa,CAAC,WAAW,EAAE,KAAK,EAAE;AAClD,IAAI,OAAOA,eAAqB,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC
|
|
1
|
+
{"version":3,"file":"getProperties.mjs","sources":["../../../../../../src/providers/s3/apis/server/getProperties.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { getAmplifyServerContext, } from '@aws-amplify/core/internals/adapter-core';\nimport { getProperties as getPropertiesInternal } from '../internal/getProperties';\nexport function getProperties(contextSpec, input) {\n return getPropertiesInternal(getAmplifyServerContext(contextSpec).amplify, input);\n}\n"],"names":["getPropertiesInternal"],"mappings":";;;AAAA;AACA;AAGO,SAAS,aAAa,CAAC,WAAW,EAAE,KAAK,EAAE;AAClD,IAAI,OAAOA,eAAqB,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC;AACrF;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getUrl.mjs","sources":["../../../../../../src/providers/s3/apis/server/getUrl.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { getAmplifyServerContext, } from '@aws-amplify/core/internals/adapter-core';\nimport { getUrl as getUrlInternal } from '../internal/getUrl';\nexport function getUrl(contextSpec, input) {\n return getUrlInternal(getAmplifyServerContext(contextSpec).amplify, input);\n}\n"],"names":["getUrlInternal"],"mappings":";;;AAAA;AACA;AAGO,SAAS,MAAM,CAAC,WAAW,EAAE,KAAK,EAAE;AAC3C,IAAI,OAAOA,QAAc,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC
|
|
1
|
+
{"version":3,"file":"getUrl.mjs","sources":["../../../../../../src/providers/s3/apis/server/getUrl.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { getAmplifyServerContext, } from '@aws-amplify/core/internals/adapter-core';\nimport { getUrl as getUrlInternal } from '../internal/getUrl';\nexport function getUrl(contextSpec, input) {\n return getUrlInternal(getAmplifyServerContext(contextSpec).amplify, input);\n}\n"],"names":["getUrlInternal"],"mappings":";;;AAAA;AACA;AAGO,SAAS,MAAM,CAAC,WAAW,EAAE,KAAK,EAAE;AAC3C,IAAI,OAAOA,QAAc,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC;AAC9E;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.mjs","sources":["../../../../../../src/providers/s3/apis/server/list.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { getAmplifyServerContext, } from '@aws-amplify/core/internals/adapter-core';\nimport { list as listInternal } from '../internal/list';\nexport function list(contextSpec, input) {\n return listInternal(getAmplifyServerContext(contextSpec).amplify, input ?? {});\n}\n"],"names":["listInternal"],"mappings":";;;AAAA;AACA;AAGO,SAAS,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE;AACzC,IAAI,OAAOA,MAAY,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC
|
|
1
|
+
{"version":3,"file":"list.mjs","sources":["../../../../../../src/providers/s3/apis/server/list.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { getAmplifyServerContext, } from '@aws-amplify/core/internals/adapter-core';\nimport { list as listInternal } from '../internal/list';\nexport function list(contextSpec, input) {\n return listInternal(getAmplifyServerContext(contextSpec).amplify, input ?? {});\n}\n"],"names":["listInternal"],"mappings":";;;AAAA;AACA;AAGO,SAAS,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE;AACzC,IAAI,OAAOA,MAAY,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC;AAClF;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remove.mjs","sources":["../../../../../../src/providers/s3/apis/server/remove.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { getAmplifyServerContext, } from '@aws-amplify/core/internals/adapter-core';\nimport { remove as removeInternal } from '../internal/remove';\nexport function remove(contextSpec, input) {\n return removeInternal(getAmplifyServerContext(contextSpec).amplify, input);\n}\n"],"names":["removeInternal"],"mappings":";;;AAAA;AACA;AAGO,SAAS,MAAM,CAAC,WAAW,EAAE,KAAK,EAAE;AAC3C,IAAI,OAAOA,QAAc,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC
|
|
1
|
+
{"version":3,"file":"remove.mjs","sources":["../../../../../../src/providers/s3/apis/server/remove.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { getAmplifyServerContext, } from '@aws-amplify/core/internals/adapter-core';\nimport { remove as removeInternal } from '../internal/remove';\nexport function remove(contextSpec, input) {\n return removeInternal(getAmplifyServerContext(contextSpec).amplify, input);\n}\n"],"names":["removeInternal"],"mappings":";;;AAAA;AACA;AAGO,SAAS,MAAM,CAAC,WAAW,EAAE,KAAK,EAAE;AAC3C,IAAI,OAAOA,QAAc,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC;AAC9E;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uploadData.mjs","sources":["../../../../../src/providers/s3/apis/uploadData.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { defaultStorage } from '@aws-amplify/core';\nimport { uploadData as uploadDataInternal } from './internal/uploadData';\nexport function uploadData(input) {\n return uploadDataInternal({\n ...input,\n options: {\n ...input?.options,\n // This option enables caching in-progress multipart uploads.\n // It's ONLY needed for client-side API.\n resumableUploadsCache: defaultStorage,\n },\n });\n}\n"],"names":["uploadDataInternal"],"mappings":";;;AAAA;AACA;AAGO,SAAS,UAAU,CAAC,KAAK,EAAE;AAClC,IAAI,OAAOA,YAAkB,CAAC;AAC9B,QAAQ,GAAG,KAAK;AAChB,QAAQ,OAAO,EAAE;AACjB,YAAY,GAAG,KAAK,EAAE,OAAO;AAC7B;AACA;AACA,YAAY,qBAAqB,EAAE,cAAc;AACjD,SAAS;AACT,KAAK,CAAC
|
|
1
|
+
{"version":3,"file":"uploadData.mjs","sources":["../../../../../src/providers/s3/apis/uploadData.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { defaultStorage } from '@aws-amplify/core';\nimport { uploadData as uploadDataInternal } from './internal/uploadData';\nexport function uploadData(input) {\n return uploadDataInternal({\n ...input,\n options: {\n ...input?.options,\n // This option enables caching in-progress multipart uploads.\n // It's ONLY needed for client-side API.\n resumableUploadsCache: defaultStorage,\n },\n });\n}\n"],"names":["uploadDataInternal"],"mappings":";;;AAAA;AACA;AAGO,SAAS,UAAU,CAAC,KAAK,EAAE;AAClC,IAAI,OAAOA,YAAkB,CAAC;AAC9B,QAAQ,GAAG,KAAK;AAChB,QAAQ,OAAO,EAAE;AACjB,YAAY,GAAG,KAAK,EAAE,OAAO;AAC7B;AACA;AACA,YAAY,qBAAqB,EAAE,cAAc;AACjD,SAAS;AACT,KAAK,CAAC;AACN;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.browser.mjs","sources":["../../../../../../../../src/providers/s3/utils/client/runtime/base64/index.browser.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nfunction bytesToBase64(bytes) {\n const base64Str = Array.from(bytes, x => String.fromCodePoint(x)).join('');\n return btoa(base64Str);\n}\nexport function toBase64(input) {\n if (typeof input === 'string') {\n return bytesToBase64(new TextEncoder().encode(input));\n }\n return bytesToBase64(new Uint8Array(input.buffer, input.byteOffset, input.byteLength));\n}\n"],"names":[],"mappings":"AAAA;AACA;AACA,SAAS,aAAa,CAAC,KAAK,EAAE;AAC9B,IAAI,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC
|
|
1
|
+
{"version":3,"file":"index.browser.mjs","sources":["../../../../../../../../src/providers/s3/utils/client/runtime/base64/index.browser.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nfunction bytesToBase64(bytes) {\n const base64Str = Array.from(bytes, x => String.fromCodePoint(x)).join('');\n return btoa(base64Str);\n}\nexport function toBase64(input) {\n if (typeof input === 'string') {\n return bytesToBase64(new TextEncoder().encode(input));\n }\n return bytesToBase64(new Uint8Array(input.buffer, input.byteOffset, input.byteLength));\n}\n"],"names":[],"mappings":"AAAA;AACA;AACA,SAAS,aAAa,CAAC,KAAK,EAAE;AAC9B,IAAI,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;AAC9E,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC;AAC1B;AACO,SAAS,QAAQ,CAAC,KAAK,EAAE;AAChC,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACnC,QAAQ,OAAO,aAAa,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC7D;AACA,IAAI,OAAO,aAAa,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;AAC1F;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.native.mjs","sources":["../../../../../../../../src/providers/s3/utils/client/runtime/base64/index.native.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { Buffer } from 'buffer';\nexport function toBase64(input) {\n if (typeof input === 'string') {\n return Buffer.from(input, 'utf-8').toString('base64');\n }\n return Buffer.from(input.buffer).toString('base64');\n}\n"],"names":[],"mappings":";;AAAA;AACA;AAEO,SAAS,QAAQ,CAAC,KAAK,EAAE;AAChC,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACnC,QAAQ,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC
|
|
1
|
+
{"version":3,"file":"index.native.mjs","sources":["../../../../../../../../src/providers/s3/utils/client/runtime/base64/index.native.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { Buffer } from 'buffer';\nexport function toBase64(input) {\n if (typeof input === 'string') {\n return Buffer.from(input, 'utf-8').toString('base64');\n }\n return Buffer.from(input.buffer).toString('base64');\n}\n"],"names":[],"mappings":";;AAAA;AACA;AAEO,SAAS,QAAQ,CAAC,KAAK,EAAE;AAChC,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACnC,QAAQ,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;AAC7D;AACA,IAAI,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;AACvD;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.mjs","sources":["../../../../../../../src/providers/s3/utils/client/runtime/constants.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nexport const SEND_UPLOAD_PROGRESS_EVENT = 'sendUploadProgress';\nexport const SEND_DOWNLOAD_PROGRESS_EVENT = 'sendDownloadProgress';\nexport const NETWORK_ERROR_MESSAGE = 'Network Error';\nexport const NETWORK_ERROR_CODE = 'ERR_NETWORK';\nexport const ABORT_ERROR_MESSAGE = 'Request aborted';\nexport const ABORT_ERROR_CODE = 'ERR_ABORTED';\nexport const CANCELED_ERROR_MESSAGE = 'canceled';\nexport const CANCELED_ERROR_CODE = 'ERR_CANCELED';\nexport const CONTENT_SHA256_HEADER = 'x-amz-content-sha256';\n"],"names":[],"mappings":"AAAA;AACA;AACY,MAAC,0BAA0B,GAAG
|
|
1
|
+
{"version":3,"file":"constants.mjs","sources":["../../../../../../../src/providers/s3/utils/client/runtime/constants.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nexport const SEND_UPLOAD_PROGRESS_EVENT = 'sendUploadProgress';\nexport const SEND_DOWNLOAD_PROGRESS_EVENT = 'sendDownloadProgress';\nexport const NETWORK_ERROR_MESSAGE = 'Network Error';\nexport const NETWORK_ERROR_CODE = 'ERR_NETWORK';\nexport const ABORT_ERROR_MESSAGE = 'Request aborted';\nexport const ABORT_ERROR_CODE = 'ERR_ABORTED';\nexport const CANCELED_ERROR_MESSAGE = 'canceled';\nexport const CANCELED_ERROR_CODE = 'ERR_CANCELED';\nexport const CONTENT_SHA256_HEADER = 'x-amz-content-sha256';\n"],"names":[],"mappings":"AAAA;AACA;AACY,MAAC,0BAA0B,GAAG;AAC9B,MAAC,4BAA4B,GAAG;AAChC,MAAC,qBAAqB,GAAG;AACzB,MAAC,kBAAkB,GAAG;AACtB,MAAC,mBAAmB,GAAG;AACvB,MAAC,gBAAgB,GAAG;AACpB,MAAC,sBAAsB,GAAG;AAC1B,MAAC,mBAAmB,GAAG;AACvB,MAAC,qBAAqB,GAAG;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contentSha256middleware.mjs","sources":["../../../../../../../src/providers/s3/utils/client/runtime/contentSha256middleware.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { getHashedPayload, } from '@aws-amplify/core/internals/aws-client-utils';\nimport { CONTENT_SHA256_HEADER } from './constants';\n/**\n * A middleware that adds the x-amz-content-sha256 header to the request if it is not already present.\n * It's required for S3 requests in browsers where the request body is sent in 1 chunk.\n * @see https://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-header-based-auth.html\n *\n * @internal\n */\nexport const contentSha256MiddlewareFactory = () => (next) => async function contentSha256Middleware(request) {\n if (request.headers[CONTENT_SHA256_HEADER]) {\n return next(request);\n }\n else {\n const hash = await getHashedPayload(request.body);\n request.headers[CONTENT_SHA256_HEADER] = hash;\n return next(request);\n }\n};\n"],"names":[],"mappings":";;;AAAA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,8BAA8B,GAAG,MAAM,CAAC,IAAI,KAAK,eAAe,uBAAuB,CAAC,OAAO,EAAE;AAC9G,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC,qBAAqB,CAAC,EAAE;AAChD,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC
|
|
1
|
+
{"version":3,"file":"contentSha256middleware.mjs","sources":["../../../../../../../src/providers/s3/utils/client/runtime/contentSha256middleware.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { getHashedPayload, } from '@aws-amplify/core/internals/aws-client-utils';\nimport { CONTENT_SHA256_HEADER } from './constants';\n/**\n * A middleware that adds the x-amz-content-sha256 header to the request if it is not already present.\n * It's required for S3 requests in browsers where the request body is sent in 1 chunk.\n * @see https://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-header-based-auth.html\n *\n * @internal\n */\nexport const contentSha256MiddlewareFactory = () => (next) => async function contentSha256Middleware(request) {\n if (request.headers[CONTENT_SHA256_HEADER]) {\n return next(request);\n }\n else {\n const hash = await getHashedPayload(request.body);\n request.headers[CONTENT_SHA256_HEADER] = hash;\n return next(request);\n }\n};\n"],"names":[],"mappings":";;;AAAA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,8BAA8B,GAAG,MAAM,CAAC,IAAI,KAAK,eAAe,uBAAuB,CAAC,OAAO,EAAE;AAC9G,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC,qBAAqB,CAAC,EAAE;AAChD,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC;AAC5B;AACA,SAAS;AACT,QAAQ,MAAM,IAAI,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC;AACzD,QAAQ,OAAO,CAAC,OAAO,CAAC,qBAAqB,CAAC,GAAG,IAAI;AACrD,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC;AAC5B;AACA;;;;"}
|
|
@@ -2,7 +2,7 @@ import { withMemoization } from '@aws-amplify/core/internals/aws-client-utils';
|
|
|
2
2
|
import { ConsoleLogger } from '@aws-amplify/core';
|
|
3
3
|
import { CanceledError } from '../../../../../errors/CanceledError.mjs';
|
|
4
4
|
import { StorageError } from '../../../../../errors/StorageError.mjs';
|
|
5
|
-
import {
|
|
5
|
+
import { NETWORK_ERROR_CODE, NETWORK_ERROR_MESSAGE, ABORT_ERROR_MESSAGE, ABORT_ERROR_CODE, CANCELED_ERROR_MESSAGE, CANCELED_ERROR_CODE } from './constants.mjs';
|
|
6
6
|
|
|
7
7
|
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
8
8
|
// SPDX-License-Identifier: Apache-2.0
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xhrTransferHandler.mjs","sources":["../../../../../../../src/providers/s3/utils/client/runtime/xhrTransferHandler.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { withMemoization, } from '@aws-amplify/core/internals/aws-client-utils';\nimport { ConsoleLogger } from '@aws-amplify/core';\nimport { CanceledError } from '../../../../../errors/CanceledError';\nimport { StorageError } from '../../../../../errors/StorageError';\nimport { ABORT_ERROR_CODE, ABORT_ERROR_MESSAGE, CANCELED_ERROR_CODE, CANCELED_ERROR_MESSAGE, NETWORK_ERROR_CODE, NETWORK_ERROR_MESSAGE, } from './constants';\nconst logger = new ConsoleLogger('xhr-http-handler');\n/**\n * Base transfer handler implementation using XMLHttpRequest to support upload and download progress events.\n *\n * @param request - The request object.\n * @param options - The request options.\n * @returns A promise that will be resolved with the response object.\n *\n * @internal\n */\nexport const xhrTransferHandler = (request, options) => {\n const { url, method, headers, body } = request;\n const { onDownloadProgress, onUploadProgress, responseType, abortSignal } = options;\n return new Promise((resolve, reject) => {\n let xhr = new XMLHttpRequest();\n xhr.open(method.toUpperCase(), url.toString());\n Object.entries(headers)\n .filter(([header]) => !FORBIDDEN_HEADERS.includes(header))\n .forEach(([header, value]) => {\n xhr.setRequestHeader(header, value);\n });\n xhr.responseType = responseType;\n if (onDownloadProgress) {\n xhr.addEventListener('progress', event => {\n onDownloadProgress(convertToTransferProgressEvent(event));\n logger.debug(event);\n });\n }\n if (onUploadProgress) {\n xhr.upload.addEventListener('progress', event => {\n onUploadProgress(convertToTransferProgressEvent(event));\n logger.debug(event);\n });\n }\n xhr.addEventListener('error', () => {\n const networkError = new StorageError({\n message: NETWORK_ERROR_MESSAGE,\n name: NETWORK_ERROR_CODE,\n });\n logger.error(NETWORK_ERROR_MESSAGE);\n reject(networkError);\n xhr = null; // clean up request\n });\n // Handle browser request cancellation (as opposed to a manual cancellation)\n xhr.addEventListener('abort', () => {\n // The abort event can be triggered after the error or load event. So we need to check if the xhr is null.\n // When request is aborted by AbortSignal, the promise is rejected in the abortSignal's 'abort' event listener.\n if (!xhr || abortSignal?.aborted)\n return;\n // Handle abort request caused by browser instead of AbortController\n // see: https://github.com/axios/axios/issues/537\n const error = buildHandlerError(ABORT_ERROR_MESSAGE, ABORT_ERROR_CODE);\n logger.error(ABORT_ERROR_MESSAGE);\n reject(error);\n xhr = null; // clean up request\n });\n // Skip handling timeout error since we don't have a timeout\n xhr.addEventListener('readystatechange', () => {\n if (!xhr || xhr.readyState !== xhr.DONE) {\n return;\n }\n const onloadend = () => {\n // The load event is triggered after the error/abort/load event. So we need to check if the xhr is null.\n if (!xhr)\n return;\n const responseHeaders = convertResponseHeaders(xhr.getAllResponseHeaders());\n const { responseType: loadEndResponseType } = xhr;\n const responseBlob = xhr.response;\n const responseText = loadEndResponseType === 'text' ? xhr.responseText : '';\n const bodyMixIn = {\n blob: () => Promise.resolve(responseBlob),\n text: withMemoization(() => loadEndResponseType === 'blob'\n ? readBlobAsText(responseBlob)\n : Promise.resolve(responseText)),\n json: () => Promise.reject(\n // S3 does not support JSON response. So fail-fast here with nicer error message.\n new Error('Parsing response to JSON is not implemented. Please use response.text() instead.')),\n };\n const response = {\n statusCode: xhr.status,\n headers: responseHeaders,\n // The xhr.responseType is only set to 'blob' for streaming binary S3 object data. The streaming data is\n // exposed via public interface of Storage.get(). So we need to return the response as a Blob object for\n // backward compatibility. In other cases, the response payload is only used internally, we return it is\n // {@link ResponseBodyMixin}\n body: (xhr.responseType === 'blob'\n ? Object.assign(responseBlob, bodyMixIn)\n : bodyMixIn),\n };\n resolve(response);\n xhr = null; // clean up request\n };\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n // @see https://github.com/axios/axios/blob/9588fcdec8aca45c3ba2f7968988a5d03f23168c/lib/adapters/xhr.js#L98-L99\n setTimeout(onloadend);\n });\n if (abortSignal) {\n const onCanceled = () => {\n // The abort event is triggered after the error or load event. So we need to check if the xhr is null.\n if (!xhr) {\n return;\n }\n const canceledError = new CanceledError({\n name: CANCELED_ERROR_CODE,\n message: CANCELED_ERROR_MESSAGE,\n });\n reject(canceledError);\n xhr.abort();\n xhr = null;\n };\n abortSignal.aborted\n ? onCanceled()\n : abortSignal.addEventListener('abort', onCanceled);\n }\n if (typeof ReadableStream === 'function' &&\n body instanceof ReadableStream) {\n // This does not matter as previous implementation uses Axios which does not support ReadableStream anyway.\n throw new Error('ReadableStream request payload is not supported.');\n }\n xhr.send(body ?? null);\n });\n};\nconst convertToTransferProgressEvent = (event) => ({\n transferredBytes: event.loaded,\n totalBytes: event.lengthComputable ? event.total : undefined,\n});\nconst buildHandlerError = (message, name) => {\n const error = new Error(message);\n error.name = name;\n return error;\n};\n/**\n * Convert xhr.getAllResponseHeaders() string to a Record<string, string>. Note that modern browser already returns\n * header names in lowercase.\n * @param xhrHeaders - string of headers returned from xhr.getAllResponseHeaders()\n */\nconst convertResponseHeaders = (xhrHeaders) => {\n if (!xhrHeaders) {\n return {};\n }\n return xhrHeaders\n .split('\\r\\n')\n .reduce((headerMap, line) => {\n const parts = line.split(': ');\n const header = parts.shift();\n const value = parts.join(': ');\n headerMap[header.toLowerCase()] = value;\n return headerMap;\n }, {});\n};\nconst readBlobAsText = (blob) => {\n const reader = new FileReader();\n return new Promise((resolve, reject) => {\n reader.onloadend = () => {\n if (reader.readyState !== FileReader.DONE) {\n return;\n }\n resolve(reader.result);\n };\n reader.onerror = () => {\n reject(reader.error);\n };\n reader.readAsText(blob);\n });\n};\n// To add more forbidden headers as found set by S3. Intentionally NOT list all of them here to save bundle size.\n// https://developer.mozilla.org/en-US/docs/Glossary/Forbidden_header_name\nconst FORBIDDEN_HEADERS = ['host'];\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"xhrTransferHandler.mjs","sources":["../../../../../../../src/providers/s3/utils/client/runtime/xhrTransferHandler.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { withMemoization, } from '@aws-amplify/core/internals/aws-client-utils';\nimport { ConsoleLogger } from '@aws-amplify/core';\nimport { CanceledError } from '../../../../../errors/CanceledError';\nimport { StorageError } from '../../../../../errors/StorageError';\nimport { ABORT_ERROR_CODE, ABORT_ERROR_MESSAGE, CANCELED_ERROR_CODE, CANCELED_ERROR_MESSAGE, NETWORK_ERROR_CODE, NETWORK_ERROR_MESSAGE, } from './constants';\nconst logger = new ConsoleLogger('xhr-http-handler');\n/**\n * Base transfer handler implementation using XMLHttpRequest to support upload and download progress events.\n *\n * @param request - The request object.\n * @param options - The request options.\n * @returns A promise that will be resolved with the response object.\n *\n * @internal\n */\nexport const xhrTransferHandler = (request, options) => {\n const { url, method, headers, body } = request;\n const { onDownloadProgress, onUploadProgress, responseType, abortSignal } = options;\n return new Promise((resolve, reject) => {\n let xhr = new XMLHttpRequest();\n xhr.open(method.toUpperCase(), url.toString());\n Object.entries(headers)\n .filter(([header]) => !FORBIDDEN_HEADERS.includes(header))\n .forEach(([header, value]) => {\n xhr.setRequestHeader(header, value);\n });\n xhr.responseType = responseType;\n if (onDownloadProgress) {\n xhr.addEventListener('progress', event => {\n onDownloadProgress(convertToTransferProgressEvent(event));\n logger.debug(event);\n });\n }\n if (onUploadProgress) {\n xhr.upload.addEventListener('progress', event => {\n onUploadProgress(convertToTransferProgressEvent(event));\n logger.debug(event);\n });\n }\n xhr.addEventListener('error', () => {\n const networkError = new StorageError({\n message: NETWORK_ERROR_MESSAGE,\n name: NETWORK_ERROR_CODE,\n });\n logger.error(NETWORK_ERROR_MESSAGE);\n reject(networkError);\n xhr = null; // clean up request\n });\n // Handle browser request cancellation (as opposed to a manual cancellation)\n xhr.addEventListener('abort', () => {\n // The abort event can be triggered after the error or load event. So we need to check if the xhr is null.\n // When request is aborted by AbortSignal, the promise is rejected in the abortSignal's 'abort' event listener.\n if (!xhr || abortSignal?.aborted)\n return;\n // Handle abort request caused by browser instead of AbortController\n // see: https://github.com/axios/axios/issues/537\n const error = buildHandlerError(ABORT_ERROR_MESSAGE, ABORT_ERROR_CODE);\n logger.error(ABORT_ERROR_MESSAGE);\n reject(error);\n xhr = null; // clean up request\n });\n // Skip handling timeout error since we don't have a timeout\n xhr.addEventListener('readystatechange', () => {\n if (!xhr || xhr.readyState !== xhr.DONE) {\n return;\n }\n const onloadend = () => {\n // The load event is triggered after the error/abort/load event. So we need to check if the xhr is null.\n if (!xhr)\n return;\n const responseHeaders = convertResponseHeaders(xhr.getAllResponseHeaders());\n const { responseType: loadEndResponseType } = xhr;\n const responseBlob = xhr.response;\n const responseText = loadEndResponseType === 'text' ? xhr.responseText : '';\n const bodyMixIn = {\n blob: () => Promise.resolve(responseBlob),\n text: withMemoization(() => loadEndResponseType === 'blob'\n ? readBlobAsText(responseBlob)\n : Promise.resolve(responseText)),\n json: () => Promise.reject(\n // S3 does not support JSON response. So fail-fast here with nicer error message.\n new Error('Parsing response to JSON is not implemented. Please use response.text() instead.')),\n };\n const response = {\n statusCode: xhr.status,\n headers: responseHeaders,\n // The xhr.responseType is only set to 'blob' for streaming binary S3 object data. The streaming data is\n // exposed via public interface of Storage.get(). So we need to return the response as a Blob object for\n // backward compatibility. In other cases, the response payload is only used internally, we return it is\n // {@link ResponseBodyMixin}\n body: (xhr.responseType === 'blob'\n ? Object.assign(responseBlob, bodyMixIn)\n : bodyMixIn),\n };\n resolve(response);\n xhr = null; // clean up request\n };\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n // @see https://github.com/axios/axios/blob/9588fcdec8aca45c3ba2f7968988a5d03f23168c/lib/adapters/xhr.js#L98-L99\n setTimeout(onloadend);\n });\n if (abortSignal) {\n const onCanceled = () => {\n // The abort event is triggered after the error or load event. So we need to check if the xhr is null.\n if (!xhr) {\n return;\n }\n const canceledError = new CanceledError({\n name: CANCELED_ERROR_CODE,\n message: CANCELED_ERROR_MESSAGE,\n });\n reject(canceledError);\n xhr.abort();\n xhr = null;\n };\n abortSignal.aborted\n ? onCanceled()\n : abortSignal.addEventListener('abort', onCanceled);\n }\n if (typeof ReadableStream === 'function' &&\n body instanceof ReadableStream) {\n // This does not matter as previous implementation uses Axios which does not support ReadableStream anyway.\n throw new Error('ReadableStream request payload is not supported.');\n }\n xhr.send(body ?? null);\n });\n};\nconst convertToTransferProgressEvent = (event) => ({\n transferredBytes: event.loaded,\n totalBytes: event.lengthComputable ? event.total : undefined,\n});\nconst buildHandlerError = (message, name) => {\n const error = new Error(message);\n error.name = name;\n return error;\n};\n/**\n * Convert xhr.getAllResponseHeaders() string to a Record<string, string>. Note that modern browser already returns\n * header names in lowercase.\n * @param xhrHeaders - string of headers returned from xhr.getAllResponseHeaders()\n */\nconst convertResponseHeaders = (xhrHeaders) => {\n if (!xhrHeaders) {\n return {};\n }\n return xhrHeaders\n .split('\\r\\n')\n .reduce((headerMap, line) => {\n const parts = line.split(': ');\n const header = parts.shift();\n const value = parts.join(': ');\n headerMap[header.toLowerCase()] = value;\n return headerMap;\n }, {});\n};\nconst readBlobAsText = (blob) => {\n const reader = new FileReader();\n return new Promise((resolve, reject) => {\n reader.onloadend = () => {\n if (reader.readyState !== FileReader.DONE) {\n return;\n }\n resolve(reader.result);\n };\n reader.onerror = () => {\n reject(reader.error);\n };\n reader.readAsText(blob);\n });\n};\n// To add more forbidden headers as found set by S3. Intentionally NOT list all of them here to save bundle size.\n// https://developer.mozilla.org/en-US/docs/Glossary/Forbidden_header_name\nconst FORBIDDEN_HEADERS = ['host'];\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dom.mjs","sources":["../../../../../../../../src/providers/s3/utils/client/runtime/xmlParser/dom.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n/**\n * Drop-in replacement for fast-xml-parser's XmlParser class used in the AWS SDK S3 client XML deserializer. This\n * implementation is not tested against the full xml conformance test suite. It is only tested against the XML responses\n * from S3. This implementation requires the `DOMParser` class in the runtime.\n */\nexport const parser = {\n parse: (xmlStr) => {\n const domParser = new DOMParser();\n const xml = domParser.parseFromString(xmlStr, 'text/xml');\n const parsedObj = parseXmlNode(xml);\n const rootKey = Object.keys(parsedObj)[0];\n return parsedObj[rootKey];\n },\n};\nconst parseXmlNode = (node) => {\n if (isDocumentNode(node)) {\n return {\n [node.documentElement.nodeName]: parseXmlNode(node.documentElement),\n };\n }\n if (node.nodeType === Node.TEXT_NODE) {\n return node.nodeValue?.trim();\n }\n if (isElementNode(node)) {\n // Node like <Location>foo</Location> will be converted to { Location: 'foo' }\n // instead of { Location: { '#text': 'foo' } }.\n if (isTextOnlyElementNode(node)) {\n return node.childNodes[0].nodeValue;\n }\n const nodeValue = {};\n // convert attributes\n for (const attr of node.attributes) {\n if (!isNamespaceAttributeName(attr.nodeName)) {\n nodeValue[attr.nodeName] = attr.nodeValue;\n }\n }\n // convert child nodes\n if (node.children.length > 0) {\n for (const child of node.children) {\n const childValue = parseXmlNode(child);\n if (childValue === undefined) {\n continue;\n }\n const childName = child.nodeName;\n if (nodeValue[childName] === undefined) {\n nodeValue[childName] = childValue;\n }\n else if (Array.isArray(nodeValue[childName])) {\n nodeValue[childName].push(childValue);\n }\n else {\n nodeValue[childName] = [nodeValue[childName], childValue];\n }\n }\n }\n // Return empty element node as empty string instead of `{}`, which is the default behavior of fast-xml-parser.\n return Object.keys(nodeValue).length === 0 ? '' : nodeValue;\n }\n};\nconst isElementNode = (node) => node.nodeType === Node.ELEMENT_NODE;\nconst isDocumentNode = (node) => node.nodeType === Node.DOCUMENT_NODE;\nconst isTextOnlyElementNode = (node) => hasOnlyNamespaceAttributes(node) &&\n node.children.length === 0 &&\n node.firstChild?.nodeType === Node.TEXT_NODE;\nconst hasOnlyNamespaceAttributes = (node) => {\n for (const attr of node.attributes) {\n if (!isNamespaceAttributeName(attr.nodeName)) {\n return false;\n }\n }\n return true;\n};\nconst isNamespaceAttributeName = (name) => name === 'xmlns' || name.startsWith('xmlns:');\n"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,MAAM,GAAG;AACtB,IAAI,KAAK,EAAE,CAAC,MAAM,KAAK;AACvB,QAAQ,MAAM,SAAS,GAAG,IAAI,SAAS,EAAE
|
|
1
|
+
{"version":3,"file":"dom.mjs","sources":["../../../../../../../../src/providers/s3/utils/client/runtime/xmlParser/dom.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n/**\n * Drop-in replacement for fast-xml-parser's XmlParser class used in the AWS SDK S3 client XML deserializer. This\n * implementation is not tested against the full xml conformance test suite. It is only tested against the XML responses\n * from S3. This implementation requires the `DOMParser` class in the runtime.\n */\nexport const parser = {\n parse: (xmlStr) => {\n const domParser = new DOMParser();\n const xml = domParser.parseFromString(xmlStr, 'text/xml');\n const parsedObj = parseXmlNode(xml);\n const rootKey = Object.keys(parsedObj)[0];\n return parsedObj[rootKey];\n },\n};\nconst parseXmlNode = (node) => {\n if (isDocumentNode(node)) {\n return {\n [node.documentElement.nodeName]: parseXmlNode(node.documentElement),\n };\n }\n if (node.nodeType === Node.TEXT_NODE) {\n return node.nodeValue?.trim();\n }\n if (isElementNode(node)) {\n // Node like <Location>foo</Location> will be converted to { Location: 'foo' }\n // instead of { Location: { '#text': 'foo' } }.\n if (isTextOnlyElementNode(node)) {\n return node.childNodes[0].nodeValue;\n }\n const nodeValue = {};\n // convert attributes\n for (const attr of node.attributes) {\n if (!isNamespaceAttributeName(attr.nodeName)) {\n nodeValue[attr.nodeName] = attr.nodeValue;\n }\n }\n // convert child nodes\n if (node.children.length > 0) {\n for (const child of node.children) {\n const childValue = parseXmlNode(child);\n if (childValue === undefined) {\n continue;\n }\n const childName = child.nodeName;\n if (nodeValue[childName] === undefined) {\n nodeValue[childName] = childValue;\n }\n else if (Array.isArray(nodeValue[childName])) {\n nodeValue[childName].push(childValue);\n }\n else {\n nodeValue[childName] = [nodeValue[childName], childValue];\n }\n }\n }\n // Return empty element node as empty string instead of `{}`, which is the default behavior of fast-xml-parser.\n return Object.keys(nodeValue).length === 0 ? '' : nodeValue;\n }\n};\nconst isElementNode = (node) => node.nodeType === Node.ELEMENT_NODE;\nconst isDocumentNode = (node) => node.nodeType === Node.DOCUMENT_NODE;\nconst isTextOnlyElementNode = (node) => hasOnlyNamespaceAttributes(node) &&\n node.children.length === 0 &&\n node.firstChild?.nodeType === Node.TEXT_NODE;\nconst hasOnlyNamespaceAttributes = (node) => {\n for (const attr of node.attributes) {\n if (!isNamespaceAttributeName(attr.nodeName)) {\n return false;\n }\n }\n return true;\n};\nconst isNamespaceAttributeName = (name) => name === 'xmlns' || name.startsWith('xmlns:');\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pureJs.mjs","sources":["../../../../../../../../src/providers/s3/utils/client/runtime/xmlParser/pureJs.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { XMLParser } from 'fast-xml-parser';\n/**\n * Pure JS XML parser that can be used in Non-browser environments, like React Native and Node.js. This is the same\n * XML parser implementation as used in AWS SDK S3 client. It depends on pure JavaScript XML parser library\n * `fast-xml-parser`.\n *\n * Ref: https://github.com/aws/aws-sdk-js-v3/blob/1e806ba3f4a83c9e3eb0b41a3a7092da93826b8f/clients/client-s3/src/protocols/Aws_restXml.ts#L12938-L12959\n */\nexport const parser = {\n parse: (xmlStr) => {\n const xmlParser = new XMLParser({\n attributeNamePrefix: '',\n htmlEntities: true,\n ignoreAttributes: false,\n ignoreDeclaration: true,\n parseTagValue: false,\n trimValues: false,\n removeNSPrefix: true,\n tagValueProcessor: (_, val) => val.trim() === '' && val.includes('\\n') ? '' : undefined,\n });\n xmlParser.addEntity('#xD', '\\r');\n xmlParser.addEntity('#10', '\\n');\n const parsedObj = xmlParser.parse(xmlStr);\n const textNodeName = '#text';\n const key = Object.keys(parsedObj)[0];\n const parsedObjToReturn = parsedObj[key];\n if (parsedObjToReturn[textNodeName]) {\n parsedObjToReturn[key] = parsedObjToReturn[textNodeName];\n delete parsedObjToReturn[textNodeName];\n }\n return getValueFromTextNode(parsedObjToReturn);\n },\n};\n/**\n * Recursively parses object and populates value is node from \"#text\" key if it's available\n *\n * Ref: https://github.com/aws/aws-sdk-js-v3/blob/6b4bde6f338720abf28b931f8a4506613bd64d3f/packages/smithy-client/src/get-value-from-text-node.ts#L1\n */\nconst getValueFromTextNode = (obj) => {\n const textNodeName = '#text';\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key) &&\n obj[key][textNodeName] !== undefined) {\n obj[key] = obj[key][textNodeName];\n }\n else if (typeof obj[key] === 'object' && obj[key] !== null) {\n obj[key] = getValueFromTextNode(obj[key]);\n }\n }\n return obj;\n};\n"],"names":[],"mappings":";;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,MAAM,GAAG;AACtB,IAAI,KAAK,EAAE,CAAC,MAAM,KAAK;AACvB,QAAQ,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC;AACxC,YAAY,mBAAmB,EAAE,EAAE;AACnC,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,gBAAgB,EAAE,KAAK;AACnC,YAAY,iBAAiB,EAAE,IAAI;AACnC,YAAY,aAAa,EAAE,KAAK;AAChC,YAAY,UAAU,EAAE,KAAK;AAC7B,YAAY,cAAc,EAAE,IAAI;AAChC,YAAY,iBAAiB,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;AACnG,SAAS,CAAC
|
|
1
|
+
{"version":3,"file":"pureJs.mjs","sources":["../../../../../../../../src/providers/s3/utils/client/runtime/xmlParser/pureJs.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { XMLParser } from 'fast-xml-parser';\n/**\n * Pure JS XML parser that can be used in Non-browser environments, like React Native and Node.js. This is the same\n * XML parser implementation as used in AWS SDK S3 client. It depends on pure JavaScript XML parser library\n * `fast-xml-parser`.\n *\n * Ref: https://github.com/aws/aws-sdk-js-v3/blob/1e806ba3f4a83c9e3eb0b41a3a7092da93826b8f/clients/client-s3/src/protocols/Aws_restXml.ts#L12938-L12959\n */\nexport const parser = {\n parse: (xmlStr) => {\n const xmlParser = new XMLParser({\n attributeNamePrefix: '',\n htmlEntities: true,\n ignoreAttributes: false,\n ignoreDeclaration: true,\n parseTagValue: false,\n trimValues: false,\n removeNSPrefix: true,\n tagValueProcessor: (_, val) => val.trim() === '' && val.includes('\\n') ? '' : undefined,\n });\n xmlParser.addEntity('#xD', '\\r');\n xmlParser.addEntity('#10', '\\n');\n const parsedObj = xmlParser.parse(xmlStr);\n const textNodeName = '#text';\n const key = Object.keys(parsedObj)[0];\n const parsedObjToReturn = parsedObj[key];\n if (parsedObjToReturn[textNodeName]) {\n parsedObjToReturn[key] = parsedObjToReturn[textNodeName];\n delete parsedObjToReturn[textNodeName];\n }\n return getValueFromTextNode(parsedObjToReturn);\n },\n};\n/**\n * Recursively parses object and populates value is node from \"#text\" key if it's available\n *\n * Ref: https://github.com/aws/aws-sdk-js-v3/blob/6b4bde6f338720abf28b931f8a4506613bd64d3f/packages/smithy-client/src/get-value-from-text-node.ts#L1\n */\nconst getValueFromTextNode = (obj) => {\n const textNodeName = '#text';\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key) &&\n obj[key][textNodeName] !== undefined) {\n obj[key] = obj[key][textNodeName];\n }\n else if (typeof obj[key] === 'object' && obj[key] !== null) {\n obj[key] = getValueFromTextNode(obj[key]);\n }\n }\n return obj;\n};\n"],"names":[],"mappings":";;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,MAAM,GAAG;AACtB,IAAI,KAAK,EAAE,CAAC,MAAM,KAAK;AACvB,QAAQ,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC;AACxC,YAAY,mBAAmB,EAAE,EAAE;AACnC,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,gBAAgB,EAAE,KAAK;AACnC,YAAY,iBAAiB,EAAE,IAAI;AACnC,YAAY,aAAa,EAAE,KAAK;AAChC,YAAY,UAAU,EAAE,KAAK;AAC7B,YAAY,cAAc,EAAE,IAAI;AAChC,YAAY,iBAAiB,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;AACnG,SAAS,CAAC;AACV,QAAQ,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC;AACxC,QAAQ,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC;AACxC,QAAQ,MAAM,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC;AACjD,QAAQ,MAAM,YAAY,GAAG,OAAO;AACpC,QAAQ,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAC7C,QAAQ,MAAM,iBAAiB,GAAG,SAAS,CAAC,GAAG,CAAC;AAChD,QAAQ,IAAI,iBAAiB,CAAC,YAAY,CAAC,EAAE;AAC7C,YAAY,iBAAiB,CAAC,GAAG,CAAC,GAAG,iBAAiB,CAAC,YAAY,CAAC;AACpE,YAAY,OAAO,iBAAiB,CAAC,YAAY,CAAC;AAClD;AACA,QAAQ,OAAO,oBAAoB,CAAC,iBAAiB,CAAC;AACtD,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,oBAAoB,GAAG,CAAC,GAAG,KAAK;AACtC,IAAI,MAAM,YAAY,GAAG,OAAO;AAChC,IAAI,KAAK,MAAM,GAAG,IAAI,GAAG,EAAE;AAC3B,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC;AAC1D,YAAY,GAAG,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,KAAK,SAAS,EAAE;AAClD,YAAY,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC;AAC7C;AACA,aAAa,IAAI,OAAO,GAAG,CAAC,GAAG,CAAC,KAAK,QAAQ,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE;AACpE,YAAY,GAAG,CAAC,GAAG,CAAC,GAAG,oBAAoB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACrD;AACA;AACA,IAAI,OAAO,GAAG;AACd,CAAC;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.mjs","sources":["../../../../../../../src/providers/s3/utils/client/s3control/base.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { AmplifyUrl, getAmplifyUserAgent, } from '@aws-amplify/core/internals/utils';\nimport { getDnsSuffix, jitteredBackoff, } from '@aws-amplify/core/internals/aws-client-utils';\nimport { createRetryDecider, createXmlErrorParser } from '../utils';\nimport { assertValidationError } from '../../../../../errors/utils/assertValidationError';\nimport { StorageValidationErrorCode } from '../../../../../errors/types/validation';\n/**\n * The service name used to sign requests if the API requires authentication.\n */\nexport const SERVICE_NAME = 's3';\n/**\n * The endpoint resolver function that returns the endpoint URL for a given region, and input parameters.\n */\nconst endpointResolver = (options, apiInput) => {\n const { region, customEndpoint } = options;\n const { AccountId: accountId } = apiInput;\n let endpoint;\n if (customEndpoint) {\n assertValidationError(!customEndpoint.includes('://'), StorageValidationErrorCode.InvalidCustomEndpoint);\n endpoint = new AmplifyUrl(`https://${accountId}.${customEndpoint}`);\n }\n else {\n endpoint = new AmplifyUrl(`https://${accountId}.s3-control.${region}.${getDnsSuffix(region)}`);\n }\n return { url: endpoint };\n};\n/**\n * Error parser for the XML payload of S3 control plane error response. The\n * error's `Code` and `Message` locates at the nested `Error` element instead of\n * the XML root element.\n *\n * @example\n * ```\n * \t<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n * \t<ErrorResponse>\n * \t <Error>\n * \t\t <Code>AccessDenied</Code>\n * \t\t <Message>Access Denied</Message>\n * \t\t</Error>\n * \t\t<RequestId>656c76696e6727732072657175657374</RequestId>\n * \t\t<HostId>Uuag1LuByRx9e6j5Onimru9pO4ZVKnJ2Qz7/C1NPcfTWAtRPfTaOFg==</HostId>\n * \t</ErrorResponse>\n * \t```\n *\n * @internal\n */\nexport const parseXmlError = createXmlErrorParser();\n/**\n * @internal\n */\nexport const retryDecider = createRetryDecider(parseXmlError);\n/**\n * @internal\n */\nexport const defaultConfig = {\n service: SERVICE_NAME,\n endpointResolver,\n retryDecider,\n computeDelay: jitteredBackoff,\n userAgentValue: getAmplifyUserAgent(),\n uriEscapePath: false, // Required by S3. See https://github.com/aws/aws-sdk-js-v3/blob/9ba012dfa3a3429aa2db0f90b3b0b3a7a31f9bc3/packages/signature-v4/src/SignatureV4.ts#L76-L83\n};\n"],"names":[],"mappings":";;;;;;;;;;;AAAA;AACA;AAMA;AACA;AACA;AACY,MAAC,YAAY,GAAG
|
|
1
|
+
{"version":3,"file":"base.mjs","sources":["../../../../../../../src/providers/s3/utils/client/s3control/base.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { AmplifyUrl, getAmplifyUserAgent, } from '@aws-amplify/core/internals/utils';\nimport { getDnsSuffix, jitteredBackoff, } from '@aws-amplify/core/internals/aws-client-utils';\nimport { createRetryDecider, createXmlErrorParser } from '../utils';\nimport { assertValidationError } from '../../../../../errors/utils/assertValidationError';\nimport { StorageValidationErrorCode } from '../../../../../errors/types/validation';\n/**\n * The service name used to sign requests if the API requires authentication.\n */\nexport const SERVICE_NAME = 's3';\n/**\n * The endpoint resolver function that returns the endpoint URL for a given region, and input parameters.\n */\nconst endpointResolver = (options, apiInput) => {\n const { region, customEndpoint } = options;\n const { AccountId: accountId } = apiInput;\n let endpoint;\n if (customEndpoint) {\n assertValidationError(!customEndpoint.includes('://'), StorageValidationErrorCode.InvalidCustomEndpoint);\n endpoint = new AmplifyUrl(`https://${accountId}.${customEndpoint}`);\n }\n else {\n endpoint = new AmplifyUrl(`https://${accountId}.s3-control.${region}.${getDnsSuffix(region)}`);\n }\n return { url: endpoint };\n};\n/**\n * Error parser for the XML payload of S3 control plane error response. The\n * error's `Code` and `Message` locates at the nested `Error` element instead of\n * the XML root element.\n *\n * @example\n * ```\n * \t<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n * \t<ErrorResponse>\n * \t <Error>\n * \t\t <Code>AccessDenied</Code>\n * \t\t <Message>Access Denied</Message>\n * \t\t</Error>\n * \t\t<RequestId>656c76696e6727732072657175657374</RequestId>\n * \t\t<HostId>Uuag1LuByRx9e6j5Onimru9pO4ZVKnJ2Qz7/C1NPcfTWAtRPfTaOFg==</HostId>\n * \t</ErrorResponse>\n * \t```\n *\n * @internal\n */\nexport const parseXmlError = createXmlErrorParser();\n/**\n * @internal\n */\nexport const retryDecider = createRetryDecider(parseXmlError);\n/**\n * @internal\n */\nexport const defaultConfig = {\n service: SERVICE_NAME,\n endpointResolver,\n retryDecider,\n computeDelay: jitteredBackoff,\n userAgentValue: getAmplifyUserAgent(),\n uriEscapePath: false, // Required by S3. See https://github.com/aws/aws-sdk-js-v3/blob/9ba012dfa3a3429aa2db0f90b3b0b3a7a31f9bc3/packages/signature-v4/src/SignatureV4.ts#L76-L83\n};\n"],"names":[],"mappings":";;;;;;;;;;;AAAA;AACA;AAMA;AACA;AACA;AACY,MAAC,YAAY,GAAG;AAC5B;AACA;AACA;AACA,MAAM,gBAAgB,GAAG,CAAC,OAAO,EAAE,QAAQ,KAAK;AAChD,IAAI,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,OAAO;AAC9C,IAAI,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,QAAQ;AAC7C,IAAI,IAAI,QAAQ;AAChB,IAAI,IAAI,cAAc,EAAE;AACxB,QAAQ,qBAAqB,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,0BAA0B,CAAC,qBAAqB,CAAC;AAChH,QAAQ,QAAQ,GAAG,IAAI,UAAU,CAAC,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC;AAC3E;AACA,SAAS;AACT,QAAQ,QAAQ,GAAG,IAAI,UAAU,CAAC,CAAC,QAAQ,EAAE,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACtG;AACA,IAAI,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE;AAC5B,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,aAAa,GAAG,oBAAoB;AACjD;AACA;AACA;AACY,MAAC,YAAY,GAAG,kBAAkB,CAAC,aAAa;AAC5D;AACA;AACA;AACY,MAAC,aAAa,GAAG;AAC7B,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,gBAAgB;AACpB,IAAI,YAAY;AAChB,IAAI,YAAY,EAAE,eAAe;AACjC,IAAI,cAAc,EAAE,mBAAmB,EAAE;AACzC,IAAI,aAAa,EAAE,KAAK;AACxB;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getDataAccess.mjs","sources":["../../../../../../../src/providers/s3/utils/client/s3control/getDataAccess.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { parseMetadata, } from '@aws-amplify/core/internals/aws-client-utils';\nimport { composeServiceApi } from '@aws-amplify/core/internals/aws-client-utils/composers';\nimport { AmplifyUrl, AmplifyUrlSearchParams, } from '@aws-amplify/core/internals/utils';\nimport { assignStringVariables, buildStorageServiceError, deserializeTimestamp, map, parseXmlBody, s3TransferHandler, } from '../utils';\nimport { defaultConfig, parseXmlError } from './base';\nconst getDataAccessSerializer = (input, endpoint) => {\n const headers = assignStringVariables({\n 'x-amz-account-id': input.AccountId,\n });\n const query = assignStringVariables({\n durationSeconds: input.DurationSeconds,\n permission: input.Permission,\n privilege: input.Privilege,\n target: input.Target,\n targetType: input.TargetType,\n });\n const url = new AmplifyUrl(endpoint.url.toString());\n url.search = new AmplifyUrlSearchParams(query).toString();\n // Ref: https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetDataAccess.html\n url.pathname = '/v20180820/accessgrantsinstance/dataaccess';\n return {\n method: 'GET',\n headers,\n url,\n };\n};\nconst getDataAccessDeserializer = async (response) => {\n if (response.statusCode >= 300) {\n // error is always set when statusCode >= 300\n const error = (await parseXmlError(response));\n throw buildStorageServiceError(error, response.statusCode);\n }\n else {\n const parsed = await parseXmlBody(response);\n const contents = map(parsed, {\n Credentials: ['Credentials', deserializeCredentials],\n MatchedGrantTarget: 'MatchedGrantTarget',\n });\n return {\n $metadata: parseMetadata(response),\n ...contents,\n };\n }\n};\nconst deserializeCredentials = (output) => map(output, {\n AccessKeyId: 'AccessKeyId',\n Expiration: ['Expiration', deserializeTimestamp],\n SecretAccessKey: 'SecretAccessKey',\n SessionToken: 'SessionToken',\n});\nexport const getDataAccess = composeServiceApi(s3TransferHandler, getDataAccessSerializer, getDataAccessDeserializer, { ...defaultConfig, responseType: 'text' });\n"],"names":[],"mappings":";;;;;;;;;;;;AAAA;AACA;AAMA,MAAM,uBAAuB,GAAG,CAAC,KAAK,EAAE,QAAQ,KAAK;AACrD,IAAI,MAAM,OAAO,GAAG,qBAAqB,CAAC;AAC1C,QAAQ,kBAAkB,EAAE,KAAK,CAAC,SAAS;AAC3C,KAAK,CAAC
|
|
1
|
+
{"version":3,"file":"getDataAccess.mjs","sources":["../../../../../../../src/providers/s3/utils/client/s3control/getDataAccess.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { parseMetadata, } from '@aws-amplify/core/internals/aws-client-utils';\nimport { composeServiceApi } from '@aws-amplify/core/internals/aws-client-utils/composers';\nimport { AmplifyUrl, AmplifyUrlSearchParams, } from '@aws-amplify/core/internals/utils';\nimport { assignStringVariables, buildStorageServiceError, deserializeTimestamp, map, parseXmlBody, s3TransferHandler, } from '../utils';\nimport { defaultConfig, parseXmlError } from './base';\nconst getDataAccessSerializer = (input, endpoint) => {\n const headers = assignStringVariables({\n 'x-amz-account-id': input.AccountId,\n });\n const query = assignStringVariables({\n durationSeconds: input.DurationSeconds,\n permission: input.Permission,\n privilege: input.Privilege,\n target: input.Target,\n targetType: input.TargetType,\n });\n const url = new AmplifyUrl(endpoint.url.toString());\n url.search = new AmplifyUrlSearchParams(query).toString();\n // Ref: https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetDataAccess.html\n url.pathname = '/v20180820/accessgrantsinstance/dataaccess';\n return {\n method: 'GET',\n headers,\n url,\n };\n};\nconst getDataAccessDeserializer = async (response) => {\n if (response.statusCode >= 300) {\n // error is always set when statusCode >= 300\n const error = (await parseXmlError(response));\n throw buildStorageServiceError(error, response.statusCode);\n }\n else {\n const parsed = await parseXmlBody(response);\n const contents = map(parsed, {\n Credentials: ['Credentials', deserializeCredentials],\n MatchedGrantTarget: 'MatchedGrantTarget',\n });\n return {\n $metadata: parseMetadata(response),\n ...contents,\n };\n }\n};\nconst deserializeCredentials = (output) => map(output, {\n AccessKeyId: 'AccessKeyId',\n Expiration: ['Expiration', deserializeTimestamp],\n SecretAccessKey: 'SecretAccessKey',\n SessionToken: 'SessionToken',\n});\nexport const getDataAccess = composeServiceApi(s3TransferHandler, getDataAccessSerializer, getDataAccessDeserializer, { ...defaultConfig, responseType: 'text' });\n"],"names":[],"mappings":";;;;;;;;;;;;AAAA;AACA;AAMA,MAAM,uBAAuB,GAAG,CAAC,KAAK,EAAE,QAAQ,KAAK;AACrD,IAAI,MAAM,OAAO,GAAG,qBAAqB,CAAC;AAC1C,QAAQ,kBAAkB,EAAE,KAAK,CAAC,SAAS;AAC3C,KAAK,CAAC;AACN,IAAI,MAAM,KAAK,GAAG,qBAAqB,CAAC;AACxC,QAAQ,eAAe,EAAE,KAAK,CAAC,eAAe;AAC9C,QAAQ,UAAU,EAAE,KAAK,CAAC,UAAU;AACpC,QAAQ,SAAS,EAAE,KAAK,CAAC,SAAS;AAClC,QAAQ,MAAM,EAAE,KAAK,CAAC,MAAM;AAC5B,QAAQ,UAAU,EAAE,KAAK,CAAC,UAAU;AACpC,KAAK,CAAC;AACN,IAAI,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;AACvD,IAAI,GAAG,CAAC,MAAM,GAAG,IAAI,sBAAsB,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE;AAC7D;AACA,IAAI,GAAG,CAAC,QAAQ,GAAG,4CAA4C;AAC/D,IAAI,OAAO;AACX,QAAQ,MAAM,EAAE,KAAK;AACrB,QAAQ,OAAO;AACf,QAAQ,GAAG;AACX,KAAK;AACL,CAAC;AACD,MAAM,yBAAyB,GAAG,OAAO,QAAQ,KAAK;AACtD,IAAI,IAAI,QAAQ,CAAC,UAAU,IAAI,GAAG,EAAE;AACpC;AACA,QAAQ,MAAM,KAAK,IAAI,MAAM,aAAa,CAAC,QAAQ,CAAC,CAAC;AACrD,QAAQ,MAAM,wBAAwB,CAAC,KAAK,EAAE,QAAQ,CAAC,UAAU,CAAC;AAClE;AACA,SAAS;AACT,QAAQ,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,QAAQ,CAAC;AACnD,QAAQ,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,EAAE;AACrC,YAAY,WAAW,EAAE,CAAC,aAAa,EAAE,sBAAsB,CAAC;AAChE,YAAY,kBAAkB,EAAE,oBAAoB;AACpD,SAAS,CAAC;AACV,QAAQ,OAAO;AACf,YAAY,SAAS,EAAE,aAAa,CAAC,QAAQ,CAAC;AAC9C,YAAY,GAAG,QAAQ;AACvB,SAAS;AACT;AACA,CAAC;AACD,MAAM,sBAAsB,GAAG,CAAC,MAAM,KAAK,GAAG,CAAC,MAAM,EAAE;AACvD,IAAI,WAAW,EAAE,aAAa;AAC9B,IAAI,UAAU,EAAE,CAAC,YAAY,EAAE,oBAAoB,CAAC;AACpD,IAAI,eAAe,EAAE,iBAAiB;AACtC,IAAI,YAAY,EAAE,cAAc;AAChC,CAAC,CAAC;AACU,MAAC,aAAa,GAAG,iBAAiB,CAAC,iBAAiB,EAAE,uBAAuB,EAAE,yBAAyB,EAAE,EAAE,GAAG,aAAa,EAAE,YAAY,EAAE,MAAM,EAAE;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"listCallerAccessGrants.mjs","sources":["../../../../../../../src/providers/s3/utils/client/s3control/listCallerAccessGrants.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { parseMetadata, } from '@aws-amplify/core/internals/aws-client-utils';\nimport { AmplifyUrl, AmplifyUrlSearchParams, } from '@aws-amplify/core/internals/utils';\nimport { composeServiceApi } from '@aws-amplify/core/internals/aws-client-utils/composers';\nimport { assignStringVariables, buildStorageServiceError, emptyArrayGuard, map, parseXmlBody, s3TransferHandler, } from '../utils';\nimport { createStringEnumDeserializer } from '../utils/deserializeHelpers';\nimport { defaultConfig, parseXmlError } from './base';\nconst listCallerAccessGrantsSerializer = (input, endpoint) => {\n const headers = assignStringVariables({\n 'x-amz-account-id': input.AccountId,\n });\n const query = assignStringVariables({\n grantscope: input.GrantScope,\n maxResults: input.MaxResults,\n nextToken: input.NextToken,\n allowedByApplication: input.AllowedByApplication,\n });\n const url = new AmplifyUrl(endpoint.url.toString());\n url.search = new AmplifyUrlSearchParams(query).toString();\n // Ref: https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_ListCallerAccessGrants.html\n url.pathname = '/v20180820/accessgrantsinstance/caller/grants';\n return {\n method: 'GET',\n headers,\n url,\n };\n};\nconst listCallerAccessGrantsDeserializer = async (response) => {\n if (response.statusCode >= 300) {\n // error is always set when statusCode >= 300\n const error = (await parseXmlError(response));\n throw buildStorageServiceError(error, response.statusCode);\n }\n else {\n const parsed = await parseXmlBody(response);\n const contents = map(parsed, {\n CallerAccessGrantsList: [\n 'CallerAccessGrantsList',\n value => emptyArrayGuard(value.AccessGrant, deserializeAccessGrantsList),\n ],\n NextToken: 'NextToken',\n });\n return {\n $metadata: parseMetadata(response),\n ...contents,\n };\n }\n};\nconst deserializeAccessGrantsList = (output) => output.map(deserializeCallerAccessGrant);\nconst deserializeCallerAccessGrant = (output) => map(output, {\n ApplicationArn: 'ApplicationArn',\n GrantScope: 'GrantScope',\n Permission: [\n 'Permission',\n createStringEnumDeserializer(['READ', 'READWRITE', 'WRITE'], 'Permission'),\n ],\n});\nexport const listCallerAccessGrants = composeServiceApi(s3TransferHandler, listCallerAccessGrantsSerializer, listCallerAccessGrantsDeserializer, { ...defaultConfig, responseType: 'text' });\n"],"names":[],"mappings":";;;;;;;;;;;;AAAA;AACA;AAOA,MAAM,gCAAgC,GAAG,CAAC,KAAK,EAAE,QAAQ,KAAK;AAC9D,IAAI,MAAM,OAAO,GAAG,qBAAqB,CAAC;AAC1C,QAAQ,kBAAkB,EAAE,KAAK,CAAC,SAAS;AAC3C,KAAK,CAAC
|
|
1
|
+
{"version":3,"file":"listCallerAccessGrants.mjs","sources":["../../../../../../../src/providers/s3/utils/client/s3control/listCallerAccessGrants.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { parseMetadata, } from '@aws-amplify/core/internals/aws-client-utils';\nimport { AmplifyUrl, AmplifyUrlSearchParams, } from '@aws-amplify/core/internals/utils';\nimport { composeServiceApi } from '@aws-amplify/core/internals/aws-client-utils/composers';\nimport { assignStringVariables, buildStorageServiceError, emptyArrayGuard, map, parseXmlBody, s3TransferHandler, } from '../utils';\nimport { createStringEnumDeserializer } from '../utils/deserializeHelpers';\nimport { defaultConfig, parseXmlError } from './base';\nconst listCallerAccessGrantsSerializer = (input, endpoint) => {\n const headers = assignStringVariables({\n 'x-amz-account-id': input.AccountId,\n });\n const query = assignStringVariables({\n grantscope: input.GrantScope,\n maxResults: input.MaxResults,\n nextToken: input.NextToken,\n allowedByApplication: input.AllowedByApplication,\n });\n const url = new AmplifyUrl(endpoint.url.toString());\n url.search = new AmplifyUrlSearchParams(query).toString();\n // Ref: https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_ListCallerAccessGrants.html\n url.pathname = '/v20180820/accessgrantsinstance/caller/grants';\n return {\n method: 'GET',\n headers,\n url,\n };\n};\nconst listCallerAccessGrantsDeserializer = async (response) => {\n if (response.statusCode >= 300) {\n // error is always set when statusCode >= 300\n const error = (await parseXmlError(response));\n throw buildStorageServiceError(error, response.statusCode);\n }\n else {\n const parsed = await parseXmlBody(response);\n const contents = map(parsed, {\n CallerAccessGrantsList: [\n 'CallerAccessGrantsList',\n value => emptyArrayGuard(value.AccessGrant, deserializeAccessGrantsList),\n ],\n NextToken: 'NextToken',\n });\n return {\n $metadata: parseMetadata(response),\n ...contents,\n };\n }\n};\nconst deserializeAccessGrantsList = (output) => output.map(deserializeCallerAccessGrant);\nconst deserializeCallerAccessGrant = (output) => map(output, {\n ApplicationArn: 'ApplicationArn',\n GrantScope: 'GrantScope',\n Permission: [\n 'Permission',\n createStringEnumDeserializer(['READ', 'READWRITE', 'WRITE'], 'Permission'),\n ],\n});\nexport const listCallerAccessGrants = composeServiceApi(s3TransferHandler, listCallerAccessGrantsSerializer, listCallerAccessGrantsDeserializer, { ...defaultConfig, responseType: 'text' });\n"],"names":[],"mappings":";;;;;;;;;;;;AAAA;AACA;AAOA,MAAM,gCAAgC,GAAG,CAAC,KAAK,EAAE,QAAQ,KAAK;AAC9D,IAAI,MAAM,OAAO,GAAG,qBAAqB,CAAC;AAC1C,QAAQ,kBAAkB,EAAE,KAAK,CAAC,SAAS;AAC3C,KAAK,CAAC;AACN,IAAI,MAAM,KAAK,GAAG,qBAAqB,CAAC;AACxC,QAAQ,UAAU,EAAE,KAAK,CAAC,UAAU;AACpC,QAAQ,UAAU,EAAE,KAAK,CAAC,UAAU;AACpC,QAAQ,SAAS,EAAE,KAAK,CAAC,SAAS;AAClC,QAAQ,oBAAoB,EAAE,KAAK,CAAC,oBAAoB;AACxD,KAAK,CAAC;AACN,IAAI,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;AACvD,IAAI,GAAG,CAAC,MAAM,GAAG,IAAI,sBAAsB,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE;AAC7D;AACA,IAAI,GAAG,CAAC,QAAQ,GAAG,+CAA+C;AAClE,IAAI,OAAO;AACX,QAAQ,MAAM,EAAE,KAAK;AACrB,QAAQ,OAAO;AACf,QAAQ,GAAG;AACX,KAAK;AACL,CAAC;AACD,MAAM,kCAAkC,GAAG,OAAO,QAAQ,KAAK;AAC/D,IAAI,IAAI,QAAQ,CAAC,UAAU,IAAI,GAAG,EAAE;AACpC;AACA,QAAQ,MAAM,KAAK,IAAI,MAAM,aAAa,CAAC,QAAQ,CAAC,CAAC;AACrD,QAAQ,MAAM,wBAAwB,CAAC,KAAK,EAAE,QAAQ,CAAC,UAAU,CAAC;AAClE;AACA,SAAS;AACT,QAAQ,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,QAAQ,CAAC;AACnD,QAAQ,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,EAAE;AACrC,YAAY,sBAAsB,EAAE;AACpC,gBAAgB,wBAAwB;AACxC,gBAAgB,KAAK,IAAI,eAAe,CAAC,KAAK,CAAC,WAAW,EAAE,2BAA2B,CAAC;AACxF,aAAa;AACb,YAAY,SAAS,EAAE,WAAW;AAClC,SAAS,CAAC;AACV,QAAQ,OAAO;AACf,YAAY,SAAS,EAAE,aAAa,CAAC,QAAQ,CAAC;AAC9C,YAAY,GAAG,QAAQ;AACvB,SAAS;AACT;AACA,CAAC;AACD,MAAM,2BAA2B,GAAG,CAAC,MAAM,KAAK,MAAM,CAAC,GAAG,CAAC,4BAA4B,CAAC;AACxF,MAAM,4BAA4B,GAAG,CAAC,MAAM,KAAK,GAAG,CAAC,MAAM,EAAE;AAC7D,IAAI,cAAc,EAAE,gBAAgB;AACpC,IAAI,UAAU,EAAE,YAAY;AAC5B,IAAI,UAAU,EAAE;AAChB,QAAQ,YAAY;AACpB,QAAQ,4BAA4B,CAAC,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,YAAY,CAAC;AAClF,KAAK;AACL,CAAC,CAAC;AACU,MAAC,sBAAsB,GAAG,iBAAiB,CAAC,iBAAiB,EAAE,gCAAgC,EAAE,kCAAkC,EAAE,EAAE,GAAG,aAAa,EAAE,YAAY,EAAE,MAAM,EAAE;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"abortMultipartUpload.mjs","sources":["../../../../../../../src/providers/s3/utils/client/s3data/abortMultipartUpload.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { parseMetadata, } from '@aws-amplify/core/internals/aws-client-utils';\nimport { composeServiceApi } from '@aws-amplify/core/internals/aws-client-utils/composers';\nimport { AmplifyUrl, AmplifyUrlSearchParams, } from '@aws-amplify/core/internals/utils';\nimport { assignStringVariables, buildStorageServiceError, s3TransferHandler, serializePathnameObjectKey, validateS3RequiredParameter, } from '../utils';\nimport { validateObjectUrl } from '../../validateObjectUrl';\nimport { defaultConfig, parseXmlError } from './base';\nconst abortMultipartUploadSerializer = (input, endpoint) => {\n const url = new AmplifyUrl(endpoint.url.toString());\n validateS3RequiredParameter(!!input.Key, 'Key');\n url.pathname = serializePathnameObjectKey(url, input.Key);\n validateS3RequiredParameter(!!input.UploadId, 'UploadId');\n url.search = new AmplifyUrlSearchParams({\n uploadId: input.UploadId,\n }).toString();\n validateObjectUrl({\n bucketName: input.Bucket,\n key: input.Key,\n objectURL: url,\n });\n const headers = {\n ...assignStringVariables({\n 'x-amz-expected-bucket-owner': input.ExpectedBucketOwner,\n }),\n };\n return {\n method: 'DELETE',\n headers,\n url,\n };\n};\nconst abortMultipartUploadDeserializer = async (response) => {\n if (response.statusCode >= 300) {\n const error = (await parseXmlError(response));\n throw buildStorageServiceError(error, response.statusCode);\n }\n else {\n return {\n $metadata: parseMetadata(response),\n };\n }\n};\nexport const abortMultipartUpload = composeServiceApi(s3TransferHandler, abortMultipartUploadSerializer, abortMultipartUploadDeserializer, { ...defaultConfig, responseType: 'text' });\n"],"names":[],"mappings":";;;;;;;;;;;;AAAA;AACA;AAOA,MAAM,8BAA8B,GAAG,CAAC,KAAK,EAAE,QAAQ,KAAK;AAC5D,IAAI,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC
|
|
1
|
+
{"version":3,"file":"abortMultipartUpload.mjs","sources":["../../../../../../../src/providers/s3/utils/client/s3data/abortMultipartUpload.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { parseMetadata, } from '@aws-amplify/core/internals/aws-client-utils';\nimport { composeServiceApi } from '@aws-amplify/core/internals/aws-client-utils/composers';\nimport { AmplifyUrl, AmplifyUrlSearchParams, } from '@aws-amplify/core/internals/utils';\nimport { assignStringVariables, buildStorageServiceError, s3TransferHandler, serializePathnameObjectKey, validateS3RequiredParameter, } from '../utils';\nimport { validateObjectUrl } from '../../validateObjectUrl';\nimport { defaultConfig, parseXmlError } from './base';\nconst abortMultipartUploadSerializer = (input, endpoint) => {\n const url = new AmplifyUrl(endpoint.url.toString());\n validateS3RequiredParameter(!!input.Key, 'Key');\n url.pathname = serializePathnameObjectKey(url, input.Key);\n validateS3RequiredParameter(!!input.UploadId, 'UploadId');\n url.search = new AmplifyUrlSearchParams({\n uploadId: input.UploadId,\n }).toString();\n validateObjectUrl({\n bucketName: input.Bucket,\n key: input.Key,\n objectURL: url,\n });\n const headers = {\n ...assignStringVariables({\n 'x-amz-expected-bucket-owner': input.ExpectedBucketOwner,\n }),\n };\n return {\n method: 'DELETE',\n headers,\n url,\n };\n};\nconst abortMultipartUploadDeserializer = async (response) => {\n if (response.statusCode >= 300) {\n const error = (await parseXmlError(response));\n throw buildStorageServiceError(error, response.statusCode);\n }\n else {\n return {\n $metadata: parseMetadata(response),\n };\n }\n};\nexport const abortMultipartUpload = composeServiceApi(s3TransferHandler, abortMultipartUploadSerializer, abortMultipartUploadDeserializer, { ...defaultConfig, responseType: 'text' });\n"],"names":[],"mappings":";;;;;;;;;;;;AAAA;AACA;AAOA,MAAM,8BAA8B,GAAG,CAAC,KAAK,EAAE,QAAQ,KAAK;AAC5D,IAAI,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;AACvD,IAAI,2BAA2B,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC;AACnD,IAAI,GAAG,CAAC,QAAQ,GAAG,0BAA0B,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC;AAC7D,IAAI,2BAA2B,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC7D,IAAI,GAAG,CAAC,MAAM,GAAG,IAAI,sBAAsB,CAAC;AAC5C,QAAQ,QAAQ,EAAE,KAAK,CAAC,QAAQ;AAChC,KAAK,CAAC,CAAC,QAAQ,EAAE;AACjB,IAAI,iBAAiB,CAAC;AACtB,QAAQ,UAAU,EAAE,KAAK,CAAC,MAAM;AAChC,QAAQ,GAAG,EAAE,KAAK,CAAC,GAAG;AACtB,QAAQ,SAAS,EAAE,GAAG;AACtB,KAAK,CAAC;AACN,IAAI,MAAM,OAAO,GAAG;AACpB,QAAQ,GAAG,qBAAqB,CAAC;AACjC,YAAY,6BAA6B,EAAE,KAAK,CAAC,mBAAmB;AACpE,SAAS,CAAC;AACV,KAAK;AACL,IAAI,OAAO;AACX,QAAQ,MAAM,EAAE,QAAQ;AACxB,QAAQ,OAAO;AACf,QAAQ,GAAG;AACX,KAAK;AACL,CAAC;AACD,MAAM,gCAAgC,GAAG,OAAO,QAAQ,KAAK;AAC7D,IAAI,IAAI,QAAQ,CAAC,UAAU,IAAI,GAAG,EAAE;AACpC,QAAQ,MAAM,KAAK,IAAI,MAAM,aAAa,CAAC,QAAQ,CAAC,CAAC;AACrD,QAAQ,MAAM,wBAAwB,CAAC,KAAK,EAAE,QAAQ,CAAC,UAAU,CAAC;AAClE;AACA,SAAS;AACT,QAAQ,OAAO;AACf,YAAY,SAAS,EAAE,aAAa,CAAC,QAAQ,CAAC;AAC9C,SAAS;AACT;AACA,CAAC;AACW,MAAC,oBAAoB,GAAG,iBAAiB,CAAC,iBAAiB,EAAE,8BAA8B,EAAE,gCAAgC,EAAE,EAAE,GAAG,aAAa,EAAE,YAAY,EAAE,MAAM,EAAE;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.mjs","sources":["../../../../../../../src/providers/s3/utils/client/s3data/base.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { AmplifyUrl, getAmplifyUserAgent, } from '@aws-amplify/core/internals/utils';\nimport { getDnsSuffix, jitteredBackoff, } from '@aws-amplify/core/internals/aws-client-utils';\nimport { createRetryDecider, createXmlErrorParser } from '../utils';\nimport { LOCAL_TESTING_S3_ENDPOINT } from '../../constants';\nimport { assertValidationError } from '../../../../../errors/utils/assertValidationError';\nimport { StorageValidationErrorCode } from '../../../../../errors/types/validation';\nconst DOMAIN_PATTERN = /^[a-z0-9][a-z0-9.-]{1,61}[a-z0-9]$/;\nconst IP_ADDRESS_PATTERN = /(\\d+\\.){3}\\d+/;\nconst DOTS_PATTERN = /\\.\\./;\n/**\n * The service name used to sign requests if the API requires authentication.\n */\nexport const SERVICE_NAME = 's3';\n/**\n * The endpoint resolver function that returns the endpoint URL for a given region, and input parameters.\n */\nconst endpointResolver = (options, apiInput) => {\n const { region, useAccelerateEndpoint, customEndpoint, forcePathStyle } = options;\n let endpoint;\n // 1. get base endpoint\n if (customEndpoint) {\n if (customEndpoint === LOCAL_TESTING_S3_ENDPOINT) {\n endpoint = new AmplifyUrl(customEndpoint);\n }\n assertValidationError(!customEndpoint.includes('://'), StorageValidationErrorCode.InvalidCustomEndpoint);\n endpoint = new AmplifyUrl(`https://${customEndpoint}`);\n }\n else if (useAccelerateEndpoint) {\n // this ErrorCode isn't expose yet since forcePathStyle param isn't publicly exposed\n assertValidationError(!forcePathStyle, StorageValidationErrorCode.ForcePathStyleEndpointNotSupported);\n endpoint = new AmplifyUrl(`https://s3-accelerate.${getDnsSuffix(region)}`);\n }\n else {\n endpoint = new AmplifyUrl(`https://s3.${region}.${getDnsSuffix(region)}`);\n }\n // 2. inject bucket name\n if (apiInput?.Bucket) {\n assertValidationError(isDnsCompatibleBucketName(apiInput.Bucket), StorageValidationErrorCode.DnsIncompatibleBucketName);\n if (forcePathStyle || apiInput.Bucket.includes('.')) {\n endpoint.pathname = `/${apiInput.Bucket}`;\n }\n else {\n endpoint.host = `${apiInput.Bucket}.${endpoint.host}`;\n }\n }\n return { url: endpoint };\n};\n/**\n * Determines whether a given string is DNS compliant per the rules outlined by\n * S3. Length, capitaization, and leading dot restrictions are enforced by the\n * DOMAIN_PATTERN regular expression.\n * @internal\n *\n * @see https://github.com/aws/aws-sdk-js-v3/blob/f2da6182298d4d6b02e84fb723492c07c27469a8/packages/middleware-bucket-endpoint/src/bucketHostnameUtils.ts#L39-L48\n * @see https://docs.aws.amazon.com/AmazonS3/latest/dev/BucketRestrictions.html\n */\nexport const isDnsCompatibleBucketName = (bucketName) => DOMAIN_PATTERN.test(bucketName) &&\n !IP_ADDRESS_PATTERN.test(bucketName) &&\n !DOTS_PATTERN.test(bucketName);\n/**\n * Error parser for the XML payload of S3 data plane error response. The error's\n * `Code` and `Message` locates directly at the XML root element.\n *\n * @example\n * ```\n * <?xml version=\"1.0\" encoding=\"UTF-8\"?>\n * \t<Error>\n * \t\t<Code>NoSuchKey</Code>\n * \t\t<Message>The resource you requested does not exist</Message>\n * \t\t<Resource>/mybucket/myfoto.jpg</Resource>\n * \t\t<RequestId>4442587FB7D0A2F9</RequestId>\n * \t</Error>\n * \t```\n *\n * @internal\n */\nexport const parseXmlError = createXmlErrorParser({ noErrorWrapping: true });\n/**\n * @internal\n */\nexport const retryDecider = createRetryDecider(parseXmlError);\n/**\n * @internal\n */\nexport const defaultConfig = {\n service: SERVICE_NAME,\n endpointResolver,\n retryDecider,\n computeDelay: jitteredBackoff,\n userAgentValue: getAmplifyUserAgent(),\n useAccelerateEndpoint: false,\n uriEscapePath: false, // Required by S3. See https://github.com/aws/aws-sdk-js-v3/blob/9ba012dfa3a3429aa2db0f90b3b0b3a7a31f9bc3/packages/signature-v4/src/SignatureV4.ts#L76-L83\n};\n"],"names":[],"mappings":";;;;;;;;;;;;AAAA;AACA;AAOA,MAAM,cAAc,GAAG,oCAAoC
|
|
1
|
+
{"version":3,"file":"base.mjs","sources":["../../../../../../../src/providers/s3/utils/client/s3data/base.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { AmplifyUrl, getAmplifyUserAgent, } from '@aws-amplify/core/internals/utils';\nimport { getDnsSuffix, jitteredBackoff, } from '@aws-amplify/core/internals/aws-client-utils';\nimport { createRetryDecider, createXmlErrorParser } from '../utils';\nimport { LOCAL_TESTING_S3_ENDPOINT } from '../../constants';\nimport { assertValidationError } from '../../../../../errors/utils/assertValidationError';\nimport { StorageValidationErrorCode } from '../../../../../errors/types/validation';\nconst DOMAIN_PATTERN = /^[a-z0-9][a-z0-9.-]{1,61}[a-z0-9]$/;\nconst IP_ADDRESS_PATTERN = /(\\d+\\.){3}\\d+/;\nconst DOTS_PATTERN = /\\.\\./;\n/**\n * The service name used to sign requests if the API requires authentication.\n */\nexport const SERVICE_NAME = 's3';\n/**\n * The endpoint resolver function that returns the endpoint URL for a given region, and input parameters.\n */\nconst endpointResolver = (options, apiInput) => {\n const { region, useAccelerateEndpoint, customEndpoint, forcePathStyle } = options;\n let endpoint;\n // 1. get base endpoint\n if (customEndpoint) {\n if (customEndpoint === LOCAL_TESTING_S3_ENDPOINT) {\n endpoint = new AmplifyUrl(customEndpoint);\n }\n assertValidationError(!customEndpoint.includes('://'), StorageValidationErrorCode.InvalidCustomEndpoint);\n endpoint = new AmplifyUrl(`https://${customEndpoint}`);\n }\n else if (useAccelerateEndpoint) {\n // this ErrorCode isn't expose yet since forcePathStyle param isn't publicly exposed\n assertValidationError(!forcePathStyle, StorageValidationErrorCode.ForcePathStyleEndpointNotSupported);\n endpoint = new AmplifyUrl(`https://s3-accelerate.${getDnsSuffix(region)}`);\n }\n else {\n endpoint = new AmplifyUrl(`https://s3.${region}.${getDnsSuffix(region)}`);\n }\n // 2. inject bucket name\n if (apiInput?.Bucket) {\n assertValidationError(isDnsCompatibleBucketName(apiInput.Bucket), StorageValidationErrorCode.DnsIncompatibleBucketName);\n if (forcePathStyle || apiInput.Bucket.includes('.')) {\n endpoint.pathname = `/${apiInput.Bucket}`;\n }\n else {\n endpoint.host = `${apiInput.Bucket}.${endpoint.host}`;\n }\n }\n return { url: endpoint };\n};\n/**\n * Determines whether a given string is DNS compliant per the rules outlined by\n * S3. Length, capitaization, and leading dot restrictions are enforced by the\n * DOMAIN_PATTERN regular expression.\n * @internal\n *\n * @see https://github.com/aws/aws-sdk-js-v3/blob/f2da6182298d4d6b02e84fb723492c07c27469a8/packages/middleware-bucket-endpoint/src/bucketHostnameUtils.ts#L39-L48\n * @see https://docs.aws.amazon.com/AmazonS3/latest/dev/BucketRestrictions.html\n */\nexport const isDnsCompatibleBucketName = (bucketName) => DOMAIN_PATTERN.test(bucketName) &&\n !IP_ADDRESS_PATTERN.test(bucketName) &&\n !DOTS_PATTERN.test(bucketName);\n/**\n * Error parser for the XML payload of S3 data plane error response. The error's\n * `Code` and `Message` locates directly at the XML root element.\n *\n * @example\n * ```\n * <?xml version=\"1.0\" encoding=\"UTF-8\"?>\n * \t<Error>\n * \t\t<Code>NoSuchKey</Code>\n * \t\t<Message>The resource you requested does not exist</Message>\n * \t\t<Resource>/mybucket/myfoto.jpg</Resource>\n * \t\t<RequestId>4442587FB7D0A2F9</RequestId>\n * \t</Error>\n * \t```\n *\n * @internal\n */\nexport const parseXmlError = createXmlErrorParser({ noErrorWrapping: true });\n/**\n * @internal\n */\nexport const retryDecider = createRetryDecider(parseXmlError);\n/**\n * @internal\n */\nexport const defaultConfig = {\n service: SERVICE_NAME,\n endpointResolver,\n retryDecider,\n computeDelay: jitteredBackoff,\n userAgentValue: getAmplifyUserAgent(),\n useAccelerateEndpoint: false,\n uriEscapePath: false, // Required by S3. See https://github.com/aws/aws-sdk-js-v3/blob/9ba012dfa3a3429aa2db0f90b3b0b3a7a31f9bc3/packages/signature-v4/src/SignatureV4.ts#L76-L83\n};\n"],"names":[],"mappings":";;;;;;;;;;;;AAAA;AACA;AAOA,MAAM,cAAc,GAAG,oCAAoC;AAC3D,MAAM,kBAAkB,GAAG,eAAe;AAC1C,MAAM,YAAY,GAAG,MAAM;AAC3B;AACA;AACA;AACY,MAAC,YAAY,GAAG;AAC5B;AACA;AACA;AACA,MAAM,gBAAgB,GAAG,CAAC,OAAO,EAAE,QAAQ,KAAK;AAChD,IAAI,MAAM,EAAE,MAAM,EAAE,qBAAqB,EAAE,cAAc,EAAE,cAAc,EAAE,GAAG,OAAO;AACrF,IAAI,IAAI,QAAQ;AAChB;AACA,IAAI,IAAI,cAAc,EAAE;AACxB,QAAQ,IAAI,cAAc,KAAK,yBAAyB,EAAE;AAC1D,YAAY,QAAQ,GAAG,IAAI,UAAU,CAAC,cAAc,CAAC;AACrD;AACA,QAAQ,qBAAqB,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,0BAA0B,CAAC,qBAAqB,CAAC;AAChH,QAAQ,QAAQ,GAAG,IAAI,UAAU,CAAC,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC;AAC9D;AACA,SAAS,IAAI,qBAAqB,EAAE;AACpC;AACA,QAAQ,qBAAqB,CAAC,CAAC,cAAc,EAAE,0BAA0B,CAAC,kCAAkC,CAAC;AAC7G,QAAQ,QAAQ,GAAG,IAAI,UAAU,CAAC,CAAC,sBAAsB,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAClF;AACA,SAAS;AACT,QAAQ,QAAQ,GAAG,IAAI,UAAU,CAAC,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACjF;AACA;AACA,IAAI,IAAI,QAAQ,EAAE,MAAM,EAAE;AAC1B,QAAQ,qBAAqB,CAAC,yBAAyB,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,0BAA0B,CAAC,yBAAyB,CAAC;AAC/H,QAAQ,IAAI,cAAc,IAAI,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AAC7D,YAAY,QAAQ,CAAC,QAAQ,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;AACrD;AACA,aAAa;AACb,YAAY,QAAQ,CAAC,IAAI,GAAG,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;AACjE;AACA;AACA,IAAI,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE;AAC5B,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,yBAAyB,GAAG,CAAC,UAAU,KAAK,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC;AACxF,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;AACxC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,aAAa,GAAG,oBAAoB,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE;AAC3E;AACA;AACA;AACY,MAAC,YAAY,GAAG,kBAAkB,CAAC,aAAa;AAC5D;AACA;AACA;AACY,MAAC,aAAa,GAAG;AAC7B,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,gBAAgB;AACpB,IAAI,YAAY;AAChB,IAAI,YAAY,EAAE,eAAe;AACjC,IAAI,cAAc,EAAE,mBAAmB,EAAE;AACzC,IAAI,qBAAqB,EAAE,KAAK;AAChC,IAAI,aAAa,EAAE,KAAK;AACxB;;;;"}
|