{"version":3,"file":"transferTask.mjs","sources":["../../../../../src/providers/s3/utils/transferTask.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { isCancelError } from '../../../errors/CanceledError';\nimport { logger } from '../../../utils';\nconst createCancellableTask = ({ job, onCancel, }) => {\n    const state = 'IN_PROGRESS';\n    let canceledErrorMessage;\n    const cancelableTask = {\n        cancel: (message) => {\n            const { state: taskState } = cancelableTask;\n            if (taskState === 'CANCELED' ||\n                taskState === 'ERROR' ||\n                taskState === 'SUCCESS') {\n                logger.debug(`This task cannot be canceled. State: ${taskState}`);\n                return;\n            }\n            cancelableTask.state = 'CANCELED';\n            canceledErrorMessage = message;\n            onCancel(canceledErrorMessage);\n        },\n        state,\n    };\n    const wrappedJobPromise = (async () => {\n        try {\n            const result = await job();\n            cancelableTask.state = 'SUCCESS';\n            return result;\n        }\n        catch (e) {\n            if (isCancelError(e)) {\n                cancelableTask.state = 'CANCELED';\n                e.message = canceledErrorMessage ?? e.message;\n            }\n            cancelableTask.state = 'ERROR';\n            throw e;\n        }\n    })();\n    return Object.assign(cancelableTask, {\n        result: wrappedJobPromise,\n    });\n};\nexport const createDownloadTask = createCancellableTask;\nexport const createUploadTask = ({ job, onCancel, onResume, onPause, isMultipartUpload, }) => {\n    const cancellableTask = createCancellableTask({\n        job,\n        onCancel,\n    });\n    const uploadTask = Object.assign(cancellableTask, {\n        pause: () => {\n            const { state } = uploadTask;\n            if (!isMultipartUpload || state !== 'IN_PROGRESS') {\n                logger.debug(`This task cannot be paused. State: ${state}`);\n                return;\n            }\n            // TODO(eslint): remove this linter suppression.\n            // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n            // @ts-ignore\n            uploadTask.state = 'PAUSED';\n            onPause?.();\n        },\n        resume: () => {\n            const { state } = uploadTask;\n            if (!isMultipartUpload || state !== 'PAUSED') {\n                logger.debug(`This task cannot be resumed. State: ${state}`);\n                return;\n            }\n            // TODO(eslint): remove this linter suppression.\n            // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n            // @ts-ignore\n            uploadTask.state = 'IN_PROGRESS';\n            onResume?.();\n        },\n    });\n    return uploadTask;\n};\n"],"names":[],"mappings":";;;;;AAAA;AACA;AAGA,MAAM,qBAAqB,GAAG,CAAC,EAAE,GAAG,EAAE,QAAQ,GAAG,KAAK;AACtD,IAAI,MAAM,KAAK,GAAG,aAAa;AAC/B,IAAI,IAAI,oBAAoB;AAC5B,IAAI,MAAM,cAAc,GAAG;AAC3B,QAAQ,MAAM,EAAE,CAAC,OAAO,KAAK;AAC7B,YAAY,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,cAAc;AACvD,YAAY,IAAI,SAAS,KAAK,UAAU;AACxC,gBAAgB,SAAS,KAAK,OAAO;AACrC,gBAAgB,SAAS,KAAK,SAAS,EAAE;AACzC,gBAAgB,MAAM,CAAC,KAAK,CAAC,CAAC,qCAAqC,EAAE,SAAS,CAAC,CAAC,CAAC;AACjF,gBAAgB;AAChB,YAAY;AACZ,YAAY,cAAc,CAAC,KAAK,GAAG,UAAU;AAC7C,YAAY,oBAAoB,GAAG,OAAO;AAC1C,YAAY,QAAQ,CAAC,oBAAoB,CAAC;AAC1C,QAAQ,CAAC;AACT,QAAQ,KAAK;AACb,KAAK;AACL,IAAI,MAAM,iBAAiB,GAAG,CAAC,YAAY;AAC3C,QAAQ,IAAI;AACZ,YAAY,MAAM,MAAM,GAAG,MAAM,GAAG,EAAE;AACtC,YAAY,cAAc,CAAC,KAAK,GAAG,SAAS;AAC5C,YAAY,OAAO,MAAM;AACzB,QAAQ;AACR,QAAQ,OAAO,CAAC,EAAE;AAClB,YAAY,IAAI,aAAa,CAAC,CAAC,CAAC,EAAE;AAClC,gBAAgB,cAAc,CAAC,KAAK,GAAG,UAAU;AACjD,gBAAgB,CAAC,CAAC,OAAO,GAAG,oBAAoB,IAAI,CAAC,CAAC,OAAO;AAC7D,YAAY;AACZ,YAAY,cAAc,CAAC,KAAK,GAAG,OAAO;AAC1C,YAAY,MAAM,CAAC;AACnB,QAAQ;AACR,IAAI,CAAC,GAAG;AACR,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE;AACzC,QAAQ,MAAM,EAAE,iBAAiB;AACjC,KAAK,CAAC;AACN,CAAC;AACW,MAAC,kBAAkB,GAAG;AACtB,MAAC,gBAAgB,GAAG,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,iBAAiB,GAAG,KAAK;AAC9F,IAAI,MAAM,eAAe,GAAG,qBAAqB,CAAC;AAClD,QAAQ,GAAG;AACX,QAAQ,QAAQ;AAChB,KAAK,CAAC;AACN,IAAI,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE;AACtD,QAAQ,KAAK,EAAE,MAAM;AACrB,YAAY,MAAM,EAAE,KAAK,EAAE,GAAG,UAAU;AACxC,YAAY,IAAI,CAAC,iBAAiB,IAAI,KAAK,KAAK,aAAa,EAAE;AAC/D,gBAAgB,MAAM,CAAC,KAAK,CAAC,CAAC,mCAAmC,EAAE,KAAK,CAAC,CAAC,CAAC;AAC3E,gBAAgB;AAChB,YAAY;AACZ;AACA;AACA;AACA,YAAY,UAAU,CAAC,KAAK,GAAG,QAAQ;AACvC,YAAY,OAAO,IAAI;AACvB,QAAQ,CAAC;AACT,QAAQ,MAAM,EAAE,MAAM;AACtB,YAAY,MAAM,EAAE,KAAK,EAAE,GAAG,UAAU;AACxC,YAAY,IAAI,CAAC,iBAAiB,IAAI,KAAK,KAAK,QAAQ,EAAE;AAC1D,gBAAgB,MAAM,CAAC,KAAK,CAAC,CAAC,oCAAoC,EAAE,KAAK,CAAC,CAAC,CAAC;AAC5E,gBAAgB;AAChB,YAAY;AACZ;AACA;AACA;AACA,YAAY,UAAU,CAAC,KAAK,GAAG,aAAa;AAC5C,YAAY,QAAQ,IAAI;AACxB,QAAQ,CAAC;AACT,KAAK,CAAC;AACN,IAAI,OAAO,UAAU;AACrB;;;;"}