{"version":3,"file":"transferHandler.mjs","sources":["../../../../src/apis/common/transferHandler.ts"],"sourcesContent":["import { getRetryDecider, jitteredBackoff, } from '@aws-amplify/core/internals/aws-client-utils';\nimport { logger, parseRestApiServiceError, parseSigningInfo, resolveLibraryOptions, } from '../../utils';\nimport { resolveHeaders } from '../../utils/resolveHeaders';\nimport { authenticatedHandler } from './baseHandlers/authenticatedHandler';\nimport { unauthenticatedHandler } from './baseHandlers/unauthenticatedHandler';\n/**\n * Make REST API call with best-effort IAM auth.\n * @param amplify Amplify instance to to resolve credentials and tokens. Should use different instance in client-side\n *   and SSR\n * @param options Options accepted from public API options when calling the handlers.\n * @param signingServiceInfo Internal-only options enable IAM auth as well as to to overwrite the IAM signing service\n *   and region. If specified, and NONE of API Key header or Auth header is present, IAM auth will be used.\n * @param iamAuthApplicable Callback function that is used to determine if IAM Auth should be used or not.\n *\n * @internal\n */\nexport const transferHandler = async (amplify, options, iamAuthApplicable, signingServiceInfo) => {\n    const { url, method, headers, body, withCredentials, abortSignal, retryStrategy, } = options;\n    const resolvedBody = body\n        ? body instanceof FormData\n            ? body\n            : JSON.stringify(body ?? '')\n        : undefined;\n    const resolvedHeaders = resolveHeaders(headers, body);\n    const request = {\n        url,\n        headers: resolvedHeaders,\n        method,\n        body: resolvedBody,\n    };\n    const { retryStrategy: libraryRetryStrategy, defaultAuthMode: libraryDefaultAuthMode, } = resolveLibraryOptions(amplify);\n    const baseOptions = {\n        retryDecider: getRetryDeciderFromStrategy(retryStrategy ?? libraryRetryStrategy),\n        computeDelay: jitteredBackoff,\n        withCrossDomainCredentials: withCredentials,\n        abortSignal,\n    };\n    const defaultAuthMode = options.defaultAuthMode ?? libraryDefaultAuthMode;\n    let credentials = null;\n    if (defaultAuthMode !== 'none') {\n        credentials = await resolveCredentials(amplify);\n    }\n    let response;\n    const isIamAuthApplicable = iamAuthApplicable(request, signingServiceInfo);\n    if (isIamAuthApplicable && credentials) {\n        const signingInfoFromUrl = parseSigningInfo(url);\n        const signingService = signingServiceInfo?.service ?? signingInfoFromUrl.service;\n        const signingRegion = signingServiceInfo?.region ?? signingInfoFromUrl.region;\n        response = await authenticatedHandler(request, {\n            ...baseOptions,\n            credentials,\n            region: signingRegion,\n            service: signingService,\n        });\n    }\n    else {\n        response = await unauthenticatedHandler(request, {\n            ...baseOptions,\n        });\n    }\n    // Clean-up un-modeled properties from response.\n    return {\n        statusCode: response.statusCode,\n        headers: response.headers,\n        body: response.body,\n    };\n};\nconst getRetryDeciderFromStrategy = (retryStrategy) => {\n    const strategy = retryStrategy?.strategy;\n    if (strategy === 'no-retry') {\n        return () => Promise.resolve({ retryable: false });\n    }\n    return getRetryDecider(parseRestApiServiceError);\n};\nconst resolveCredentials = async (amplify) => {\n    try {\n        const { credentials } = await amplify.Auth.fetchAuthSession();\n        if (credentials) {\n            return credentials;\n        }\n    }\n    catch (e) {\n        logger.debug('No credentials available, the request will be unsigned.');\n    }\n    return null;\n};\n"],"names":[],"mappings":"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"}