UNPKG

@aws-amplify/storage

Version:

Storage category of aws-amplify

93 lines (90 loc) 4.16 kB
import { StorageAction } from '@aws-amplify/core/internals/utils'; import '@smithy/md5-js'; import '@aws-amplify/core/internals/aws-client-utils'; import '../../utils/client/runtime/s3TransferHandler/fetch.mjs'; import 'fast-xml-parser'; import '../../utils/client/runtime/s3TransferHandler/xhr.mjs'; import 'buffer'; import { deleteFolderContents } from '../../utils/deleteFolderContents.mjs'; import { resolveS3ConfigAndInput } from '../../utils/resolveS3ConfigAndInput.mjs'; import { resolveFinalKey } from '../../utils/resolveFinalKey.mjs'; import { CanceledError } from '../../../../errors/CanceledError.mjs'; import '../../../../errors/types/validation.mjs'; import '../../../../utils/logger.mjs'; import { validateBucketOwnerID } from '../../utils/validateBucketOwnerID.mjs'; import { validateRemovePath } from '../../utils/validateRemovePath.mjs'; import { validateStorageOperationInput } from '../../utils/validateStorageOperationInput.mjs'; import { STORAGE_INPUT_KEY } from '../../utils/constants.mjs'; import { isPathFolder } from '../../utils/isPathFolder.mjs'; import { createAbortableTask } from '../../utils/createAbortableTask.mjs'; import '../../utils/client/s3data/base.mjs'; import '../../utils/client/s3data/getObject.mjs'; import '../../utils/client/s3data/listObjectsV2.mjs'; import '../../utils/client/s3data/putObject.mjs'; import '../../utils/client/s3data/createMultipartUpload.mjs'; import '../../utils/client/s3data/uploadPart.mjs'; import '../../utils/client/s3data/completeMultipartUpload.mjs'; import '../../utils/client/s3data/listParts.mjs'; import '../../utils/client/s3data/abortMultipartUpload.mjs'; import '../../utils/client/s3data/copyObject.mjs'; import '../../utils/client/s3data/headObject.mjs'; import { deleteObject } from '../../utils/client/s3data/deleteObject.mjs'; import '../../utils/client/s3data/deleteObjects.mjs'; import { getStorageUserAgentValue } from '../../utils/userAgent.mjs'; // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 function remove(amplify, input) { return createAbortableTask(executeRemove(amplify, input)); } const executeRemove = (amplify, input) => async (abortController) => { try { const { s3Config, keyPrefix, bucket, identityId } = await resolveS3ConfigAndInput(amplify, input); const { inputType, objectKey } = validateStorageOperationInput(input, identityId); validateBucketOwnerID(input.options?.expectedBucketOwner); const finalKey = resolveFinalKey(inputType, objectKey, keyPrefix); validateRemovePath(finalKey); const isFolder = finalKey.endsWith('/') || (await isPathFolder({ s3Config, bucket, key: finalKey, expectedBucketOwner: input.options?.expectedBucketOwner, })); if (isFolder) { return deleteFolderContents({ s3Config, bucket, folderKey: finalKey, expectedBucketOwner: input.options?.expectedBucketOwner, onProgress: input.options?.onProgress, abortSignal: abortController.signal, }); } else { if (abortController.signal.aborted) { throw new CanceledError({ message: 'Operation was cancelled' }); } await deleteObject({ ...s3Config, userAgentValue: getStorageUserAgentValue(StorageAction.Remove), abortSignal: abortController.signal, }, { Bucket: bucket, Key: finalKey, ExpectedBucketOwner: input.options?.expectedBucketOwner, }); const result = inputType === STORAGE_INPUT_KEY ? { key: objectKey } : { path: objectKey }; return result; } } catch (error) { if (abortController.signal.aborted) { throw new CanceledError({ message: 'Operation was cancelled' }); } throw error; } }; export { remove }; //# sourceMappingURL=remove.mjs.map