{"version":3,"file":"index.mjs","sources":["../../../../src/Providers/AWSAppSyncEventsProvider/index.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { USER_AGENT_HEADER, getAmplifyUserAgent, } from '@aws-amplify/core/internals/utils';\nimport { DEFAULT_KEEP_ALIVE_TIMEOUT, MESSAGE_TYPES } from '../constants';\nimport { AWSWebSocketProvider } from '../AWSWebSocketProvider';\nimport { awsRealTimeHeaderBasedAuth } from '../AWSWebSocketProvider/authHeaders';\nimport { serializeEvents } from '../../internals/events/utils';\nconst PROVIDER_NAME = 'AWSAppSyncEventsProvider';\nconst WS_PROTOCOL_NAME = 'aws-appsync-event-ws';\nconst CONNECT_URI = ''; // events does not expect a connect uri\nexport class AWSAppSyncEventProvider extends AWSWebSocketProvider {\n    constructor() {\n        super({\n            providerName: PROVIDER_NAME,\n            wsProtocolName: WS_PROTOCOL_NAME,\n            connectUri: CONNECT_URI,\n        });\n        this.allowNoSubscriptions = true;\n    }\n    getProviderName() {\n        return PROVIDER_NAME;\n    }\n    async connect(options) {\n        return super.connect(options);\n    }\n    subscribe(options, customUserAgentDetails) {\n        return super.subscribe(options, customUserAgentDetails).pipe();\n    }\n    async publish(options, customUserAgentDetails) {\n        return super.publish(options, customUserAgentDetails);\n    }\n    closeIfNoActiveSubscription() {\n        this._closeSocketIfRequired();\n    }\n    async _prepareSubscriptionPayload({ options, subscriptionId, customUserAgentDetails, additionalCustomHeaders, libraryConfigHeaders, publish, }) {\n        const { appSyncGraphqlEndpoint, authenticationType, query, apiKey, region, variables, } = options;\n        const data = {\n            channel: query,\n            events: variables !== undefined ? serializeEvents(variables) : undefined,\n        };\n        const serializedData = JSON.stringify(data);\n        const headers = {\n            ...(await awsRealTimeHeaderBasedAuth({\n                apiKey,\n                appSyncGraphqlEndpoint,\n                authenticationType,\n                payload: serializedData,\n                canonicalUri: '',\n                region,\n                additionalCustomHeaders,\n            })),\n            ...libraryConfigHeaders,\n            ...additionalCustomHeaders,\n            [USER_AGENT_HEADER]: getAmplifyUserAgent(customUserAgentDetails),\n        };\n        const subscriptionMessage = {\n            id: subscriptionId,\n            channel: query,\n            events: variables !== undefined ? serializeEvents(variables) : undefined,\n            authorization: {\n                ...headers,\n            },\n            payload: {\n                events: variables !== undefined ? serializeEvents(variables) : undefined,\n                channel: query,\n                extensions: {\n                    authorization: {\n                        ...headers,\n                    },\n                },\n            },\n            type: publish\n                ? MESSAGE_TYPES.EVENT_PUBLISH\n                : MESSAGE_TYPES.EVENT_SUBSCRIBE,\n        };\n        const serializedSubscriptionMessage = JSON.stringify(subscriptionMessage);\n        return serializedSubscriptionMessage;\n    }\n    _handleSubscriptionData(message) {\n        this.logger.debug(`subscription message from AWS AppSync Events: ${message.data}`);\n        const { id = '', event: payload, type, } = JSON.parse(String(message.data));\n        const { observer = null, query = '', variables = {}, } = this.subscriptionObserverMap.get(id) || {};\n        this.logger.debug({ id, observer, query, variables });\n        if (type === MESSAGE_TYPES.DATA && payload) {\n            const deserializedEvent = JSON.parse(payload);\n            if (observer) {\n                observer.next({ id, type, event: deserializedEvent });\n            }\n            else {\n                this.logger.debug(`observer not found for id: ${id}`);\n            }\n            return [true, { id, type, payload: deserializedEvent }];\n        }\n        return [false, { id, type, payload }];\n    }\n    _unsubscribeMessage(subscriptionId) {\n        return {\n            id: subscriptionId,\n            type: MESSAGE_TYPES.EVENT_STOP,\n        };\n    }\n    _extractConnectionTimeout(data) {\n        const { connectionTimeoutMs = DEFAULT_KEEP_ALIVE_TIMEOUT } = data;\n        return connectionTimeoutMs;\n    }\n    _extractErrorCodeAndType(data) {\n        const { errors: [{ errorType = '', errorCode = 0 } = {}] = [] } = data;\n        return { errorCode, errorType };\n    }\n}\nexport const AppSyncEventProvider = new AWSAppSyncEventProvider();\n"],"names":[],"mappings":"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"}