{"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;;;;"}