{"version":3,"file":"appsyncRequest.mjs","sources":["../../../../src/internals/events/appsyncRequest.ts"],"sourcesContent":["import { AmplifyUrl, getAmplifyUserAgent, } from '@aws-amplify/core/internals/utils';\nimport { post } from '@aws-amplify/api-rest/internals';\nimport { resolveLibraryOptions } from '../../utils';\nimport { repackageUnauthorizedError } from '../../utils/errors/repackageAuthError';\nimport { headerBasedAuth } from '../graphqlAuth';\nimport { isGraphQLResponseWithErrors } from '../utils/runtimeTypeGuards/isGraphQLResponseWithErrors';\nconst USER_AGENT_HEADER = 'x-amz-user-agent';\n// This is effectively a copy of InternalGraphQLAPI.ts._graphql(...)\n// Our existing unit tests are tightly coupled to the implementation, so i was unable to refactor\n// and extend _graphql() without having to change a bunch of tests as well... which in turn reduces confidence\n// that this feature will _not affect_ GQL behavior.\nexport async function appsyncRequest(amplify, options, additionalHeaders = {}, abortController, customUserAgentDetails) {\n    const { region, appSyncGraphqlEndpoint: endpoint, authenticationType: authMode, query, variables, } = options;\n    if (!endpoint) {\n        throw new Error('No endpoint');\n    }\n    const { withCredentials } = resolveLibraryOptions(amplify);\n    const headers = await requestHeaders(amplify, options, additionalHeaders, customUserAgentDetails);\n    const body = {\n        channel: query,\n        events: variables,\n    };\n    const signingServiceInfo = ['apiKey', 'none'].includes(authMode)\n        ? undefined\n        : {\n            service: 'appsync',\n            region,\n        };\n    const { body: responseBody } = await post(amplify, {\n        url: new AmplifyUrl(endpoint),\n        options: {\n            headers,\n            body,\n            signingServiceInfo,\n            withCredentials,\n        },\n        abortController,\n    });\n    const response = await responseBody.json();\n    if (isGraphQLResponseWithErrors(response)) {\n        throw repackageUnauthorizedError(response);\n    }\n    return response;\n}\n/**\n * Computes all the necessary HTTP headers for the request based on:\n * 1. Operation-level header options\n * 2. Amplify.configure custom headers\n * 3. AuthZ headers for explicit auth mode specified for operation ?? default auth mode in config\n *\n * @returns HTTP request headers key/value\n */\nasync function requestHeaders(amplify, options, additionalHeaders, customUserAgentDetails) {\n    const { apiKey, appSyncGraphqlEndpoint: endpoint, authenticationType: authMode, query, variables, authToken, } = options;\n    const { headers: customHeadersFn } = resolveLibraryOptions(amplify);\n    let additionalCustomHeaders;\n    if (typeof additionalHeaders === 'function') {\n        const requestOptions = {\n            method: 'POST',\n            url: new AmplifyUrl(endpoint).toString(),\n            queryString: query,\n        };\n        additionalCustomHeaders = await additionalHeaders(requestOptions);\n    }\n    else {\n        additionalCustomHeaders = additionalHeaders;\n    }\n    // if an authorization header is set, have the operation-level authToken take precedence\n    if (authToken) {\n        additionalCustomHeaders = {\n            ...additionalCustomHeaders,\n            Authorization: authToken,\n        };\n    }\n    const authHeaders = await headerBasedAuth(amplify, authMode, apiKey, additionalCustomHeaders);\n    const customHeaders = customHeadersFn &&\n        (await customHeadersFn({\n            query,\n            variables: variables,\n        }));\n    const headers = {\n        ...authHeaders,\n        // Custom headers included in Amplify configuration options:\n        ...customHeaders,\n        // Custom headers from individual requests or API client configuration:\n        ...additionalCustomHeaders,\n        // User agent headers:\n        [USER_AGENT_HEADER]: getAmplifyUserAgent(customUserAgentDetails),\n    };\n    return headers;\n}\n"],"names":[],"mappings":"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"}