{"version":3,"file":"defaultRetryDecider.mjs","sources":["../../../../../src/clients/middleware/retry/defaultRetryDecider.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { AmplifyErrorCode } from '../../../types';\nimport { isClockSkewError } from './isClockSkewError';\n/**\n * Get retry decider function\n * @param errorParser Function to load JavaScript error from HTTP response\n */\nexport const getRetryDecider = (errorParser) => async (response, error) => {\n    const parsedError = error ??\n        (await errorParser(response)) ??\n        undefined;\n    const errorCode = parsedError?.code || parsedError?.name;\n    const statusCode = response?.statusCode;\n    const isRetryable = isConnectionError(error) ||\n        isThrottlingError(statusCode, errorCode) ||\n        isClockSkewError(errorCode) ||\n        isServerSideError(statusCode, errorCode);\n    return {\n        retryable: isRetryable,\n    };\n};\n// reference: https://github.com/aws/aws-sdk-js-v3/blob/ab0e7be36e7e7f8a0c04834357aaad643c7912c3/packages/service-error-classification/src/constants.ts#L22-L37\nconst THROTTLING_ERROR_CODES = [\n    'BandwidthLimitExceeded',\n    'EC2ThrottledException',\n    'LimitExceededException',\n    'PriorRequestNotComplete',\n    'ProvisionedThroughputExceededException',\n    'RequestLimitExceeded',\n    'RequestThrottled',\n    'RequestThrottledException',\n    'SlowDown',\n    'ThrottledException',\n    'Throttling',\n    'ThrottlingException',\n    'TooManyRequestsException',\n];\nconst TIMEOUT_ERROR_CODES = [\n    'TimeoutError',\n    'RequestTimeout',\n    'RequestTimeoutException',\n];\nconst isThrottlingError = (statusCode, errorCode) => statusCode === 429 ||\n    (!!errorCode && THROTTLING_ERROR_CODES.includes(errorCode));\nconst isConnectionError = (error) => [\n    AmplifyErrorCode.NetworkError,\n    // TODO(vNext): unify the error code `ERR_NETWORK` used by the Storage XHR handler\n    'ERR_NETWORK',\n].includes(error?.name);\nconst isServerSideError = (statusCode, errorCode) => (!!statusCode && [500, 502, 503, 504].includes(statusCode)) ||\n    (!!errorCode && TIMEOUT_ERROR_CODES.includes(errorCode));\n"],"names":[],"mappings":";;;AAAA;AACA;AAGA;AACA;AACA;AACA;AACY,MAAC,eAAe,GAAG,CAAC,WAAW,KAAK,OAAO,QAAQ,EAAE,KAAK,KAAK;AAC3E,IAAI,MAAM,WAAW,GAAG,KAAK;AAC7B,SAAS,MAAM,WAAW,CAAC,QAAQ,CAAC,CAAC;AACrC,QAAQ,SAAS;AACjB,IAAI,MAAM,SAAS,GAAG,WAAW,EAAE,IAAI,IAAI,WAAW,EAAE,IAAI;AAC5D,IAAI,MAAM,UAAU,GAAG,QAAQ,EAAE,UAAU;AAC3C,IAAI,MAAM,WAAW,GAAG,iBAAiB,CAAC,KAAK,CAAC;AAChD,QAAQ,iBAAiB,CAAC,UAAU,EAAE,SAAS,CAAC;AAChD,QAAQ,gBAAgB,CAAC,SAAS,CAAC;AACnC,QAAQ,iBAAiB,CAAC,UAAU,EAAE,SAAS,CAAC;AAChD,IAAI,OAAO;AACX,QAAQ,SAAS,EAAE,WAAW;AAC9B,KAAK;AACL;AACA;AACA,MAAM,sBAAsB,GAAG;AAC/B,IAAI,wBAAwB;AAC5B,IAAI,uBAAuB;AAC3B,IAAI,wBAAwB;AAC5B,IAAI,yBAAyB;AAC7B,IAAI,wCAAwC;AAC5C,IAAI,sBAAsB;AAC1B,IAAI,kBAAkB;AACtB,IAAI,2BAA2B;AAC/B,IAAI,UAAU;AACd,IAAI,oBAAoB;AACxB,IAAI,YAAY;AAChB,IAAI,qBAAqB;AACzB,IAAI,0BAA0B;AAC9B,CAAC;AACD,MAAM,mBAAmB,GAAG;AAC5B,IAAI,cAAc;AAClB,IAAI,gBAAgB;AACpB,IAAI,yBAAyB;AAC7B,CAAC;AACD,MAAM,iBAAiB,GAAG,CAAC,UAAU,EAAE,SAAS,KAAK,UAAU,KAAK,GAAG;AACvE,KAAK,CAAC,CAAC,SAAS,IAAI,sBAAsB,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AAC/D,MAAM,iBAAiB,GAAG,CAAC,KAAK,KAAK;AACrC,IAAI,gBAAgB,CAAC,YAAY;AACjC;AACA,IAAI,aAAa;AACjB,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC;AACvB,MAAM,iBAAiB,GAAG,CAAC,UAAU,EAAE,SAAS,KAAK,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC;AAC/G,KAAK,CAAC,CAAC,SAAS,IAAI,mBAAmB,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;;;;"}