{"version":3,"file":"authHeaders.mjs","sources":["../../../../src/Providers/AWSWebSocketProvider/authHeaders.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { ConsoleLogger, fetchAuthSession } from '@aws-amplify/core';\nimport { signRequest } from '@aws-amplify/core/internals/aws-client-utils';\nimport { AmplifyUrl } from '@aws-amplify/core/internals/utils';\nimport { AWS_APPSYNC_REALTIME_HEADERS } from '../constants';\nconst logger = new ConsoleLogger('AWSAppSyncRealTimeProvider Auth');\nconst awsAuthTokenHeader = async ({ host }) => {\n    const session = await fetchAuthSession();\n    return {\n        Authorization: session?.tokens?.accessToken?.toString(),\n        host,\n    };\n};\nconst awsRealTimeApiKeyHeader = async ({ apiKey, host, }) => {\n    const dt = new Date();\n    const dtStr = dt.toISOString().replace(/[:-]|\\.\\d{3}/g, '');\n    return {\n        host,\n        'x-amz-date': dtStr,\n        'x-api-key': apiKey,\n    };\n};\nconst awsRealTimeIAMHeader = async ({ payload, canonicalUri, appSyncGraphqlEndpoint, region, }) => {\n    const endpointInfo = {\n        region,\n        service: 'appsync',\n    };\n    const creds = (await fetchAuthSession()).credentials;\n    const request = {\n        url: `${appSyncGraphqlEndpoint}${canonicalUri}`,\n        data: payload,\n        method: 'POST',\n        headers: { ...AWS_APPSYNC_REALTIME_HEADERS },\n    };\n    const signedParams = signRequest({\n        headers: request.headers,\n        method: request.method,\n        url: new AmplifyUrl(request.url),\n        body: request.data,\n    }, {\n        credentials: creds,\n        signingRegion: endpointInfo.region,\n        signingService: endpointInfo.service,\n    });\n    return signedParams.headers;\n};\nconst customAuthHeader = async ({ host, additionalCustomHeaders, }) => {\n    /**\n     * If `additionalHeaders` was provided to the subscription as a function,\n     * the headers that are returned by that function will already have been\n     * provided before this function is called.\n     */\n    if (!additionalCustomHeaders?.Authorization) {\n        throw new Error('No auth token specified');\n    }\n    return {\n        Authorization: additionalCustomHeaders.Authorization,\n        host,\n    };\n};\nexport const awsRealTimeHeaderBasedAuth = async ({ apiKey, authenticationType, canonicalUri, appSyncGraphqlEndpoint, region, additionalCustomHeaders, payload, }) => {\n    const headerHandler = {\n        apiKey: awsRealTimeApiKeyHeader,\n        iam: awsRealTimeIAMHeader,\n        oidc: awsAuthTokenHeader,\n        userPool: awsAuthTokenHeader,\n        lambda: customAuthHeader,\n        none: customAuthHeader,\n    };\n    if (!authenticationType || !headerHandler[authenticationType]) {\n        logger.debug(`Authentication type ${authenticationType} not supported`);\n        return undefined;\n    }\n    else {\n        const handler = headerHandler[authenticationType];\n        const host = appSyncGraphqlEndpoint\n            ? new AmplifyUrl(appSyncGraphqlEndpoint).host\n            : undefined;\n        const resolvedApiKey = authenticationType === 'apiKey' ? apiKey : undefined;\n        logger.debug(`Authenticating with ${JSON.stringify(authenticationType)}`);\n        const result = await handler({\n            payload,\n            canonicalUri,\n            appSyncGraphqlEndpoint,\n            apiKey: resolvedApiKey,\n            region,\n            host,\n            additionalCustomHeaders,\n        });\n        return result;\n    }\n};\n"],"names":[],"mappings":"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"}