{"version":3,"file":"index.mjs","sources":["../../../src/Hub/index.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { ConsoleLogger } from '../Logger';\nimport { NO_HUBCALLBACK_PROVIDED_EXCEPTION } from '../constants';\nimport { AmplifyError } from '../errors';\nexport const AMPLIFY_SYMBOL = (typeof Symbol !== 'undefined'\n    ? Symbol('amplify_default')\n    : '@@amplify_default');\nconst logger = new ConsoleLogger('Hub');\nexport class HubClass {\n    constructor(name) {\n        this.listeners = new Map();\n        this.protectedChannels = [\n            'core',\n            'auth',\n            'api',\n            'analytics',\n            'interactions',\n            'pubsub',\n            'storage',\n            'ui',\n            'xr',\n        ];\n        this.name = name;\n    }\n    /**\n     * Used internally to remove a Hub listener.\n     *\n     * @remarks\n     * This private method is for internal use only. Instead of calling Hub.remove, call the result of Hub.listen.\n     */\n    _remove(channel, listener) {\n        const holder = this.listeners.get(channel);\n        if (!holder) {\n            logger.warn(`No listeners for ${channel}`);\n            return;\n        }\n        this.listeners.set(channel, [\n            ...holder.filter(({ callback }) => callback !== listener),\n        ]);\n    }\n    dispatch(channel, payload, source, ampSymbol) {\n        if (typeof channel === 'string' &&\n            this.protectedChannels.indexOf(channel) > -1) {\n            const hasAccess = ampSymbol === AMPLIFY_SYMBOL;\n            if (!hasAccess) {\n                logger.warn(`WARNING: ${channel} is protected and dispatching on it can have unintended consequences`);\n            }\n        }\n        const capsule = {\n            channel,\n            payload: { ...payload },\n            source,\n            patternInfo: [],\n        };\n        try {\n            this._toListeners(capsule);\n        }\n        catch (e) {\n            logger.error(e);\n        }\n    }\n    listen(channel, callback, listenerName = 'noname') {\n        let cb;\n        if (typeof callback !== 'function') {\n            throw new AmplifyError({\n                name: NO_HUBCALLBACK_PROVIDED_EXCEPTION,\n                message: 'No callback supplied to Hub',\n            });\n        }\n        else {\n            // Needs to be casted as a more generic type\n            cb = callback;\n        }\n        let holder = this.listeners.get(channel);\n        if (!holder) {\n            holder = [];\n            this.listeners.set(channel, holder);\n        }\n        holder.push({\n            name: listenerName,\n            callback: cb,\n        });\n        return () => {\n            this._remove(channel, cb);\n        };\n    }\n    _toListeners(capsule) {\n        const { channel, payload } = capsule;\n        const holder = this.listeners.get(channel);\n        if (holder) {\n            holder.forEach(listener => {\n                logger.debug(`Dispatching to ${channel} with `, payload);\n                try {\n                    listener.callback(capsule);\n                }\n                catch (e) {\n                    logger.error(e);\n                }\n            });\n        }\n    }\n}\n/* We export a __default__ instance of HubClass to use it as a\npseudo Singleton for the main messaging bus, however you can still create\nyour own instance of HubClass() for a separate \"private bus\" of events. */\nexport const Hub = new HubClass('__default__');\n/**\n * @internal\n *\n * Internal hub used for core Amplify functionality. Not intended for use outside of Amplify.\n *\n */\nexport const HubInternal = new HubClass('internal-hub');\n"],"names":[],"mappings":"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"}