@webex/calling 3.12.0-mobius-socket.4 → 3.12.0-mobius-socket.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/CallingClient/CallingClient.js +1 -1
- package/dist/CallingClient/CallingClient.js.map +1 -1
- package/dist/CallingClient/CallingClient.test.js +1 -1
- package/dist/CallingClient/CallingClient.test.js.map +1 -1
- package/dist/module/CallingClient/CallingClient.js +1 -1
- package/dist/types/CallingClient/CallingClient.d.ts.map +1 -1
- package/package.json +2 -2
|
@@ -1017,7 +1017,7 @@ var CallingClient = exports.CallingClient = /*#__PURE__*/function (_Eventing) {
|
|
|
1017
1017
|
file: _constants2.CALLING_CLIENT_FILE,
|
|
1018
1018
|
method: _constants2.METHODS.REGISTER_MOBIUS_SOCKET_LISTENER
|
|
1019
1019
|
});
|
|
1020
|
-
this.sdkConnector.registerMobiusSocketListener('async_event', function (event) {
|
|
1020
|
+
this.sdkConnector.registerMobiusSocketListener('event:async_event', function (event) {
|
|
1021
1021
|
_this5.handleMobiusAsyncEvent(event);
|
|
1022
1022
|
});
|
|
1023
1023
|
_Logger.default.info('Successfully registered listener for Mobius events', {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Media","_interopRequireWildcard","require","_internalPluginMobiusSocket","_asyncMutex","_constants","_Utils","_types","_SDKConnector","_interopRequireDefault","_impl","_types2","_types3","_types4","_Logger","_callManager","_constants2","_line","_types5","_Metrics","_windowsChromiumIceWarmupUtils","_request","_utils","e","t","_WeakMap","r","n","__esModule","o","i","f","__proto__","default","_typeof","has","get","set","_t11","hasOwnProperty","call","_Object$defineProperty","_Object$getOwnPropertyDescriptor","_createForOfIteratorHelper","_Symbol","_Symbol$iterator","_Array$isArray","_unsupportedIterableToArray","length","_n","F","s","done","value","TypeError","a","u","next","return","_arrayLikeToArray","toString","slice","constructor","name","_Array$from","test","Array","_callSuper","_getPrototypeOf2","_possibleConstructorReturn2","_isNativeReflectConstruct","_Reflect$construct","apply","Boolean","prototype","valueOf","CallingClient","exports","_Eventing","webex","config","_this$sdkConfig","_this$sdkConfig$servi","_this$sdkConfig2","_this$sdkConfig2$logg","_config$isMobiusSocke","_this","_classCallCheck2","_defineProperty2","_asyncToGenerator2","_regenerator","mark","_callee","line","wrap","_context","prev","networkDownTimestamp","Date","toISOString","checkNetworkReachability","isNetworkDown","sent","log","warn","file","CALLING_CLIENT_FILE","method","METHODS","NETWORK_OFFLINE","_values","lineDict","registration","clearKeepaliveTimer","stop","info","METHOD_START_MESSAGE","NETWORK_ONLINE","networkUpTimestamp","MERCURY_OFFLINE","mercuryDownTimestamp","metricManager","submitConnectionMetrics","METRIC_EVENT","CONNECTION_ERROR","CONNECTION_ACTION","MERCURY_DOWN","METRIC_TYPE","BEHAVIORAL","mercuryUpTimestamp","_callee3","callCheckInterval","_context3","MERCURY_ONLINE","setInterval","_callee2","_context2","_keys","callManager","getActiveCalls","clearInterval","getStatus","RegistrationStatus","IDLE","handleConnectionRestoration","NETWORK_FLAP_TIMEOUT","checkCallStatus","NETWORK_FLAP","MERCURY_UP","_ref4","_callee4","event","eventType","_context4","HANDLE_MOBIUS_ASYNC_EVENT","data","abrupt","MobiusEventType","REGISTRATION_DOWN","startsWith","dequeueWsEvents","_x","arguments","_callee6","_context6","CALLS_CLEARED_HANDLER","isDeviceRegistered","mutex","runExclusive","_callee5","_context5","isReconnectPending","CALLS_CLEARED_HANDLER_UTIL","reconnectOnFailure","sdkConnector","SDKConnector","getWebex","_config$logger","setWebex","logger","level","setWebexLogger","Mutex","sdkConfig","serviceData","indicator","ServiceIndicator","CALLING","domain","logLevel","LOGGER","ERROR","setLogger","validateServiceData","isMobiusSocketEnabled","isMobiusWssEnabled","getCallManager","getMetricManager","mediaEngine","adaptedLogger","_len","args","_key","join","error","_len2","_key2","_len3","_key3","_len4","_key4","trace","_len5","_key5","debug","_len6","_key6","primaryMobiusUris","backupMobiusUris","primaryWssMobiusUris","backupWssMobiusUris","mobiusClusters","internal","services","getMobiusClusters","mobiusHost","mobiusSocket","getMobiusSocketInstance","apiRequest","APIRequest","getInstance","registerSessionsListener","registerCallsClearedListener","_inherits2","_createClass2","key","_init","_callee7","_window","_window$navigator","ua","_t","_context7","window","navigator","userAgent","toLowerCase","includes","windowsChromiumIceWarmup","iceServers","timeoutMs","concat","getMobiusServers","connectToMobiusSocket","registerMobiusSocketListener","createLine","setupNetworkEventListeners","init","_checkNetworkReachability","_callee8","controller","timeoutId","_t2","_context8","AbortController","setTimeout","abort","fetch","cache","mode","signal","clearTimeout","_checkCallStatus","_callee9","loggerContext","calls","_iterator","_step","_loop","_t3","_context0","_context9","postStatus","then","catch","err","sendCallStateMachineEvt","type","delegateYield","finish","_this2","addEventListener","handleNetworkOnline","handleNetworkOffline","mercury","on","handleMercuryOffline","handleMercuryOnline","_getClientRegionInfo","_callee0","_this3","regionInfo","_response$headers","_response$headers$tra","_response$headers2","response","clientRegionInfo","_t4","_context1","GET_CLIENT_REGION_INFO","request","uri","DISCOVERY_URL","HTTP_METHODS","GET","addAuthHeader","headers","SPARK_USER_AGENT","body","clientRegion","countryCode","trackingid","submitRegionInfoMetric","MOBIUS_DISCOVERY","MOBIUS_SERVER_ACTION","REGION_INFO","_stringify","handleCallingClientErrors","clientError","_headers$trackingId","_headers2","submitRegistrationMetric","REGISTRATION_ERROR","REG_ACTION","REGISTER","GET_MOBIUS_SERVERS_UTIL","trackingId","undefined","emit","CALLING_CLIENT_EVENT_KEYS","uploadLogs","getClientRegionInfo","_getMobiusServers","_callee1","_this$sdkConfig3","_this$sdkConfig3$disc","_this$sdkConfig4","_this$sdkConfig4$disc","_this4","useDefault","_this$sdkConfig5","_this$sdkConfig5$disc","_this$sdkConfig6","_this$sdkConfig6$disc","_this$webex$internal$","_iterator2","_step2","_loop2","_ret","_t6","_context11","GET_MOBIUS_SERVERS","discovery","country","region","_serviceUrls","mobius","_activeServices","_response$headers3","_response$headers$tra2","_response$headers4","mobiusServers","mobiusUris","_t5","_context10","host","API_V1","URL_ENDPOINT","CISCO_DEVICE_URL","device","url","CALLING_USER_AGENT","service","ALLOWED_SERVICES","MOBIUS","submitMobiusServersMetric","MOBIUS_SERVERS","filterMobiusUris","primary","backup","primaryWss","backupWss","_headers$trackingId2","_headers4","t0","_connectToMobiusSocket","_callee10","_iterator3","_step3","wssUri","_iterator4","_step4","_wssUri","_t7","_t8","_t9","_t0","_context12","CONNECT_TO_MOBIUS_SOCKET","connect","_this5","REGISTER_MOBIUS_SOCKET_LISTENER","handleMobiusAsyncEvent","REGISTER_CALLS_CLEARED_LISTENER","ALL_CALLS_CLEARED","callsClearedHandler","getLoggingLevel","getLogLevel","getSDKConnector","_this6","REGISTER_SESSIONS_LISTENER","registerListener","MOBIUS_EVENT_KEYS","CALL_SESSION_EVENT_INCLUSIVE","_ref7","_callee11","sessionArr","_context13","userSessions","sessionType","SessionType","WEBEX_CALLING","splice","USER_SESSION_INFO","_x2","_createLine","_callee12","_this$sdkConfig7","_this$sdkConfig8","_context14","CREATE_LINE","Line","userId","isSocketEnabled","normalizeMobiusUris","jwe","lineId","getLines","_getDevices","_callee13","userid","mobiusUrls","finalError","_iterator5","_step5","mobiusUrl","normalizedMobiusUrl","_body$devices","_t1","_t10","_context15","Error","GET_DEVICES","_toConsumableArray2","replace","DEVICES_ENDPOINT_RESOURCE","encodeURIComponent","statusCode","setDeviceInfo","setActiveMobiusUrl","devices","getDevices","_x3","activeCalls","forEach","correlationId","push","getConnectedCall","connectCall","isConnected","isHeld","_uploadLogs2","_callee14","result","_context16","Eventing","createClient","_ref8","_callee15","callingClientInstance","_context17","_x4","_x5"],"sources":["CallingClient.ts"],"sourcesContent":["/* eslint-disable no-underscore-dangle */\n/* eslint-disable valid-jsdoc */\n/* eslint-disable @typescript-eslint/no-shadow */\nimport * as Media from '@webex/internal-media-core';\n// @ts-ignore - JS module without type declarations\nimport {getMobiusSocketInstance} from '@webex/internal-plugin-mobius-socket';\nimport {Mutex} from 'async-mutex';\nimport {METHOD_START_MESSAGE} from '../common/constants';\nimport {\n filterMobiusUris,\n handleCallingClientErrors,\n normalizeMobiusUris,\n uploadLogs,\n validateServiceData,\n} from '../common/Utils';\nimport {LOGGER} from '../Logger/types';\nimport SDKConnector from '../SDKConnector';\nimport {ClientRegionInfo, ISDKConnector, ServiceHost, WebexSDK} from '../SDKConnector/types';\nimport {Eventing} from '../Events/impl';\nimport {\n CallingClientEventTypes,\n MOBIUS_EVENT_KEYS,\n CallSessionEvent,\n SessionType,\n CALLING_CLIENT_EVENT_KEYS,\n} from '../Events/types';\nimport {\n ServiceIndicator,\n RegionInfo,\n ALLOWED_SERVICES,\n HTTP_METHODS,\n MobiusServers,\n WebexRequestPayload,\n RegistrationStatus,\n UploadLogsResponse,\n DeviceType,\n Devices,\n} from '../common/types';\nimport {ICallingClient, CallingClientConfig} from './types';\nimport {ICall, ICallManager, MobiusAsyncEvent, MobiusEventType} from './calling/types';\nimport log from '../Logger';\nimport {getCallManager} from './calling/callManager';\nimport {\n CALLING_CLIENT_FILE,\n CALLS_CLEARED_HANDLER_UTIL,\n CALLING_USER_AGENT,\n CISCO_DEVICE_URL,\n DISCOVERY_URL,\n GET_MOBIUS_SERVERS_UTIL,\n SPARK_USER_AGENT,\n URL_ENDPOINT,\n API_V1,\n METHODS,\n NETWORK_FLAP_TIMEOUT,\n DEVICES_ENDPOINT_RESOURCE,\n} from './constants';\nimport Line from './line';\nimport {ILine} from './line/types';\nimport {\n METRIC_EVENT,\n REG_ACTION,\n METRIC_TYPE,\n IMetricManager,\n CONNECTION_ACTION,\n MOBIUS_SERVER_ACTION,\n} from '../Metrics/types';\nimport {getMetricManager} from '../Metrics';\nimport windowsChromiumIceWarmup from './windowsChromiumIceWarmupUtils';\nimport {APIRequest} from './utils/request';\nimport {isMobiusWssEnabled} from './utils';\n\n/**\n * The `CallingClient` module provides a set of APIs for line registration and calling functionalities within the SDK.\n *\n * The following code snippet demonstrates how to create an instance of `CallingClient` using a `webex` instance and `callingConfig`:\n *\n * @example\n * ```javascript\n * const callingClient = createClient(webex, callingConfig);\n * ```\n */\n\nexport class CallingClient extends Eventing<CallingClientEventTypes> implements ICallingClient {\n private sdkConnector: ISDKConnector;\n\n private webex: WebexSDK;\n\n private mutex: Mutex;\n\n private callManager: ICallManager;\n\n private metricManager: IMetricManager;\n\n private sdkConfig?: CallingClientConfig;\n\n private primaryMobiusUris: string[];\n\n private backupMobiusUris: string[];\n\n private primaryWssMobiusUris: string[];\n\n private backupWssMobiusUris: string[];\n\n private mobiusClusters: ServiceHost[];\n\n private mobiusHost: string;\n\n public mediaEngine: typeof Media;\n\n private lineDict: Record<string, ILine> = {};\n\n private apiRequest: APIRequest;\n\n private isMobiusSocketEnabled: boolean;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private mobiusSocket: any;\n\n private isNetworkDown = false;\n\n private networkDownTimestamp = '';\n\n private networkUpTimestamp = '';\n\n private mercuryDownTimestamp = '';\n\n private mercuryUpTimestamp = '';\n\n /**\n * @ignore\n */\n constructor(webex: WebexSDK, config?: CallingClientConfig) {\n super();\n this.sdkConnector = SDKConnector;\n\n if (!this.sdkConnector.getWebex()) {\n SDKConnector.setWebex(webex);\n if (config?.logger?.level && webex.logger.config) {\n webex.logger.config.level = config.logger.level; // override the webex logger level\n }\n log.setWebexLogger(webex.logger);\n }\n this.mutex = new Mutex();\n this.webex = this.sdkConnector.getWebex();\n\n this.sdkConfig = config;\n const serviceData = this.sdkConfig?.serviceData?.indicator\n ? this.sdkConfig.serviceData\n : {indicator: ServiceIndicator.CALLING, domain: ''};\n\n const logLevel = this.sdkConfig?.logger?.level ? this.sdkConfig.logger.level : LOGGER.ERROR;\n log.setLogger(logLevel, CALLING_CLIENT_FILE);\n validateServiceData(serviceData);\n\n this.isMobiusSocketEnabled =\n isMobiusWssEnabled(this.webex) || (config?.isMobiusSocketEnabled ?? false);\n\n this.callManager = getCallManager(\n this.webex,\n serviceData.indicator,\n this.isMobiusSocketEnabled\n );\n this.metricManager = getMetricManager(this.webex, serviceData.indicator);\n\n this.mediaEngine = Media;\n\n const adaptedLogger: Media.Logger = {\n log: (...args) => webex.logger.log(args.join(' : ')),\n error: (...args) => webex.logger.error(args.join(' : ')),\n warn: (...args) => webex.logger.warn(args.join(' : ')),\n info: (...args) => webex.logger.info(args.join(' : ')),\n trace: (...args) => webex.logger.trace(args.join(' : ')),\n debug: (...args) => webex.logger.debug(args.join(' : ')),\n };\n\n this.mediaEngine.setLogger(adaptedLogger);\n\n this.primaryMobiusUris = [];\n this.backupMobiusUris = [];\n this.primaryWssMobiusUris = [];\n this.backupWssMobiusUris = [];\n this.mobiusClusters = this.webex.internal.services.getMobiusClusters();\n this.mobiusHost = '';\n\n if (this.isMobiusSocketEnabled) {\n this.mobiusSocket = getMobiusSocketInstance(this.webex);\n }\n\n this.apiRequest = APIRequest.getInstance({\n webex: this.webex,\n isMobiusSocketEnabled: this.isMobiusSocketEnabled,\n });\n\n this.registerSessionsListener();\n\n this.registerCallsClearedListener();\n }\n\n /**\n * Initializes the `CallingClient` by performing the following steps:\n *\n * 1. Retrieves list of servers.\n * 2. Creates a line.\n * 3. Sets up network change detection.\n *\n * This method should be called once to initialize the `callingClient`.\n *\n * @returns A promise that resolves when the initialization is complete.\n * @ignore\n */\n public async init() {\n // Only for Windows Chromium based browsers we need to do the ICE warmup\n if (typeof window !== 'undefined' && window?.navigator?.userAgent) {\n const ua = window.navigator.userAgent;\n if (ua.toLowerCase().includes('windows')) {\n log.info('Starting ICE warmup for Windows Chromium based browser', {\n file: CALLING_CLIENT_FILE,\n method: 'init',\n });\n try {\n await windowsChromiumIceWarmup({\n iceServers: [],\n timeoutMs: 1000,\n });\n log.info(`ICE warmup completed`, {\n file: CALLING_CLIENT_FILE,\n method: 'init',\n });\n } catch (err) {\n log.warn(`ICE warmup failed: ${err}`, {\n file: CALLING_CLIENT_FILE,\n method: 'init',\n });\n }\n }\n }\n\n await this.getMobiusServers();\n\n if (this.isMobiusSocketEnabled) {\n await this.connectToMobiusSocket();\n this.registerMobiusSocketListener();\n }\n\n await this.createLine();\n\n this.setupNetworkEventListeners();\n }\n\n /**\n * Ping a reliable external endpoint with a short timeout to infer connectivity.\n */\n private async checkNetworkReachability(): Promise<boolean> {\n try {\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), 3000);\n\n // Using a common connectivity check endpoint that returns 204 with minimal payload.\n // no-cors mode yields an opaque response but a successful fetch implies reachability.\n await fetch('https://www.google.com/generate_204', {\n method: 'GET',\n cache: 'no-cache',\n mode: 'no-cors',\n signal: controller.signal,\n });\n\n clearTimeout(timeoutId);\n\n return true;\n } catch (error) {\n log.warn(`Network connectivity probe failed: ${error}`, {\n file: CALLING_CLIENT_FILE,\n method: 'pingExternal',\n });\n\n return false;\n }\n }\n\n private async checkCallStatus() {\n const loggerContext = {\n file: CALLING_CLIENT_FILE,\n method: 'checkCallStatus',\n };\n const calls = Object.values(this.callManager.getActiveCalls());\n for (const call of calls) {\n call\n .postStatus()\n .then(() => {\n log.info(`Call is active`, loggerContext);\n /*\n * Media Renegotiation Possibility if call keepalive succeeds,\n * for cases like WebRTC disconnect and media inactivity.\n */\n })\n .catch((err) => {\n log.warn(`Call Keepalive failed: ${err}`, loggerContext);\n\n call.sendCallStateMachineEvt({type: 'E_SEND_CALL_DISCONNECT'});\n });\n }\n }\n\n private handleNetworkOffline = async () => {\n this.networkDownTimestamp = new Date().toISOString();\n this.isNetworkDown = !(await this.checkNetworkReachability());\n log.warn(`Network has gone down, wait for it to come back up`, {\n file: CALLING_CLIENT_FILE,\n method: METHODS.NETWORK_OFFLINE,\n });\n\n if (this.isNetworkDown) {\n const line = Object.values(this.lineDict)[0];\n line.registration.clearKeepaliveTimer();\n }\n };\n\n // Wondering if we should keep this for timestamp recording purpose\n private handleNetworkOnline = () => {\n log.info(METHOD_START_MESSAGE, {\n file: CALLING_CLIENT_FILE,\n method: METHODS.NETWORK_ONLINE,\n });\n this.networkUpTimestamp = new Date().toISOString();\n };\n\n private handleMercuryOffline = () => {\n log.warn(`Mercury down, waiting for connection to be up`, {\n file: CALLING_CLIENT_FILE,\n method: METHODS.MERCURY_OFFLINE,\n });\n this.mercuryDownTimestamp = new Date().toISOString();\n this.metricManager.submitConnectionMetrics(\n METRIC_EVENT.CONNECTION_ERROR,\n CONNECTION_ACTION.MERCURY_DOWN,\n METRIC_TYPE.BEHAVIORAL,\n this.mercuryDownTimestamp,\n this.mercuryUpTimestamp\n );\n };\n\n private handleMercuryOnline = async () => {\n log.info(METHOD_START_MESSAGE, {\n file: CALLING_CLIENT_FILE,\n method: METHODS.MERCURY_ONLINE,\n });\n this.mercuryUpTimestamp = new Date().toISOString();\n if (this.isNetworkDown) {\n const callCheckInterval = setInterval(async () => {\n if (!Object.keys(this.callManager.getActiveCalls()).length) {\n clearInterval(callCheckInterval);\n const line = Object.values(this.lineDict)[0];\n\n if (line.getStatus() !== RegistrationStatus.IDLE) {\n this.isNetworkDown = await line.registration.handleConnectionRestoration(\n this.isNetworkDown\n );\n } else {\n this.isNetworkDown = false;\n }\n }\n }, NETWORK_FLAP_TIMEOUT);\n\n if (Object.keys(this.callManager.getActiveCalls()).length) {\n await this.checkCallStatus();\n }\n\n this.metricManager.submitConnectionMetrics(\n METRIC_EVENT.CONNECTION_ERROR,\n CONNECTION_ACTION.NETWORK_FLAP,\n METRIC_TYPE.BEHAVIORAL,\n this.networkDownTimestamp,\n this.networkUpTimestamp\n );\n } else {\n if (Object.keys(this.callManager.getActiveCalls()).length) {\n await this.checkCallStatus();\n }\n this.metricManager.submitConnectionMetrics(\n METRIC_EVENT.CONNECTION_ERROR,\n CONNECTION_ACTION.MERCURY_UP,\n METRIC_TYPE.BEHAVIORAL,\n this.mercuryDownTimestamp,\n this.mercuryUpTimestamp\n );\n }\n };\n\n private setupNetworkEventListeners(): void {\n if (typeof window !== 'undefined' && window.addEventListener) {\n window.addEventListener('online', this.handleNetworkOnline);\n\n window.addEventListener('offline', this.handleNetworkOffline);\n }\n\n this.webex.internal.mercury.on('offline', () => {\n this.handleMercuryOffline();\n });\n\n this.webex.internal.mercury.on('online', () => {\n this.handleMercuryOnline();\n });\n }\n\n /**\n * Fetches countryCode and region of the client.\n */\n private async getClientRegionInfo(): Promise<RegionInfo> {\n let abort;\n log.info(METHOD_START_MESSAGE, {\n file: CALLING_CLIENT_FILE,\n method: METHODS.GET_CLIENT_REGION_INFO,\n });\n const regionInfo = {} as RegionInfo;\n\n try {\n const response = <WebexRequestPayload>await this.webex.request({\n uri: `${DISCOVERY_URL}`,\n method: HTTP_METHODS.GET,\n addAuthHeader: false,\n headers: {\n [SPARK_USER_AGENT]: null,\n },\n });\n\n const clientRegionInfo = response.body as ClientRegionInfo;\n\n regionInfo.clientRegion = clientRegionInfo?.clientRegion || '';\n\n regionInfo.countryCode = clientRegionInfo?.countryCode || '';\n\n log.log(\n `Successfully fetched Client region info: ${regionInfo.clientRegion}, countryCode: ${regionInfo.countryCode}, and response trackingid: ${response?.headers?.trackingid}`,\n {\n file: CALLING_CLIENT_FILE,\n method: METHODS.GET_CLIENT_REGION_INFO,\n }\n );\n\n this.metricManager.submitRegionInfoMetric(\n METRIC_EVENT.MOBIUS_DISCOVERY,\n MOBIUS_SERVER_ACTION.REGION_INFO,\n METRIC_TYPE.BEHAVIORAL,\n this.mobiusHost,\n clientRegionInfo.clientRegion,\n clientRegionInfo.countryCode,\n response?.headers?.trackingid ?? ''\n );\n } catch (err: unknown) {\n log.error(`Failed to get client region info: ${JSON.stringify(err)}`, {\n method: METHODS.GET_CLIENT_REGION_INFO,\n file: CALLING_CLIENT_FILE,\n });\n\n // eslint-disable-next-line no-await-in-loop\n abort = await handleCallingClientErrors(\n err as WebexRequestPayload,\n (clientError) => {\n this.metricManager.submitRegistrationMetric(\n METRIC_EVENT.REGISTRATION_ERROR,\n REG_ACTION.REGISTER,\n METRIC_TYPE.BEHAVIORAL,\n GET_MOBIUS_SERVERS_UTIL,\n 'UNKNOWN',\n (err as WebexRequestPayload).headers?.trackingId ?? '',\n undefined,\n clientError\n );\n this.emit(CALLING_CLIENT_EVENT_KEYS.ERROR, clientError);\n },\n {method: GET_MOBIUS_SERVERS_UTIL, file: CALLING_CLIENT_FILE}\n );\n\n regionInfo.clientRegion = '';\n regionInfo.countryCode = '';\n\n if (abort) {\n await uploadLogs();\n\n return regionInfo;\n }\n }\n\n return regionInfo;\n }\n\n /**\n * Local method for finding the mobius servers.\n */\n private async getMobiusServers() {\n log.info(METHOD_START_MESSAGE, {\n file: CALLING_CLIENT_FILE,\n method: METHODS.GET_MOBIUS_SERVERS,\n });\n /* Following operations are performed in a synchronous way ->\n\n 1. Get RegionInfo\n 2. Get Mobius Server with that RegionInfo\n 3. Check whether Mobius server was found without any error\n 4. If there is error , we don't need to send registration\n 5. Otherwise send registration\n */\n\n let useDefault = false;\n\n let clientRegion: string;\n let countryCode: string;\n\n if (this.sdkConfig?.discovery?.country && this.sdkConfig?.discovery?.region) {\n log.log('Updating region and country from the SDK config', {\n file: CALLING_CLIENT_FILE,\n method: GET_MOBIUS_SERVERS_UTIL,\n });\n clientRegion = this.sdkConfig?.discovery?.region;\n countryCode = this.sdkConfig?.discovery?.country;\n this.mobiusHost =\n this.webex.internal.services._serviceUrls?.mobius ||\n this.webex.internal.services.get(this.webex.internal.services._activeServices.mobius);\n } else {\n log.log('Updating region and country through Region discovery', {\n file: CALLING_CLIENT_FILE,\n method: GET_MOBIUS_SERVERS_UTIL,\n });\n\n const regionInfo = await this.getClientRegionInfo();\n\n clientRegion = regionInfo.clientRegion;\n countryCode = regionInfo.countryCode;\n }\n\n if (clientRegion && countryCode) {\n log.log(\n `Found Region: ${clientRegion} and country: ${countryCode}, going to fetch Mobius server`,\n {\n file: CALLING_CLIENT_FILE,\n method: GET_MOBIUS_SERVERS_UTIL,\n }\n );\n\n for (const mobius of this.mobiusClusters) {\n if (mobius.host) {\n this.mobiusHost = `https://${mobius.host}${API_V1}`;\n } else {\n this.mobiusHost = mobius as unknown as string;\n }\n try {\n // eslint-disable-next-line no-await-in-loop\n const response = <WebexRequestPayload>await this.webex.request({\n uri: `${this.mobiusHost}${URL_ENDPOINT}?regionCode=${clientRegion}&countryCode=${countryCode}`,\n method: HTTP_METHODS.GET,\n headers: {\n [CISCO_DEVICE_URL]: this.webex.internal.device.url,\n [SPARK_USER_AGENT]: CALLING_USER_AGENT,\n },\n service: ALLOWED_SERVICES.MOBIUS,\n });\n\n log.log(\n `Mobius Server found for the region. Response trackingId: ${response?.headers?.trackingid}`,\n {\n file: CALLING_CLIENT_FILE,\n method: GET_MOBIUS_SERVERS_UTIL,\n }\n );\n\n const mobiusServers = response.body as MobiusServers;\n\n // Metrics for mobius servers\n this.metricManager.submitMobiusServersMetric(\n METRIC_EVENT.MOBIUS_DISCOVERY,\n MOBIUS_SERVER_ACTION.MOBIUS_SERVERS,\n METRIC_TYPE.BEHAVIORAL,\n mobiusServers,\n response?.headers?.trackingid ?? ''\n );\n\n /* update arrays of Mobius Uris. */\n const mobiusUris = filterMobiusUris(mobiusServers, this.mobiusHost);\n this.primaryMobiusUris = mobiusUris.primary;\n this.backupMobiusUris = mobiusUris.backup;\n this.primaryWssMobiusUris = mobiusUris.primaryWss;\n this.backupWssMobiusUris = mobiusUris.backupWss;\n\n log.log(\n `Final list of Mobius Servers, primary: ${mobiusUris.primary} and backup: ${mobiusUris.backup}`,\n {\n file: CALLING_CLIENT_FILE,\n method: GET_MOBIUS_SERVERS_UTIL,\n }\n );\n\n break;\n } catch (err: unknown) {\n log.error(`Failed to get Mobius servers: ${JSON.stringify(err)}`, {\n method: METHODS.GET_MOBIUS_SERVERS,\n file: CALLING_CLIENT_FILE,\n });\n\n // eslint-disable-next-line no-await-in-loop\n const abort = await handleCallingClientErrors(\n err as WebexRequestPayload,\n (clientError) => {\n this.metricManager.submitRegistrationMetric(\n METRIC_EVENT.REGISTRATION_ERROR,\n REG_ACTION.REGISTER,\n METRIC_TYPE.BEHAVIORAL,\n GET_MOBIUS_SERVERS_UTIL,\n 'UNKNOWN',\n (err as WebexRequestPayload).headers?.trackingId ?? '',\n undefined,\n clientError\n );\n this.emit(CALLING_CLIENT_EVENT_KEYS.ERROR, clientError);\n },\n {method: GET_MOBIUS_SERVERS_UTIL, file: CALLING_CLIENT_FILE}\n );\n\n if (abort) {\n useDefault = true;\n // eslint-disable-next-line no-await-in-loop\n await uploadLogs();\n break;\n }\n }\n }\n } else {\n /* Setting this to true because region info is possibly undefined */\n useDefault = true;\n }\n\n /* Use a default URL if Mobius discovery fails either because of region info failure\n * or because the discovered Mobius couldn't be reached\n */\n\n if (useDefault) {\n log.warn(\n `Couldn't resolve the region and country code. Defaulting to the catalog entries to discover mobius servers`,\n {\n file: CALLING_CLIENT_FILE,\n method: GET_MOBIUS_SERVERS_UTIL,\n }\n );\n this.mobiusHost = `https://${this.mobiusClusters[0].host}${API_V1}`;\n this.primaryMobiusUris = [`${this.mobiusHost}${URL_ENDPOINT}`];\n }\n }\n\n /**\n * Connects to the Mobius WebSocket using WSS URIs discovered during Mobius server discovery.\n * Attempts primary WSS URIs first, then falls back to backup WSS URIs.\n * If all attempts fail, logs a warning and continues without a socket connection.\n */\n private async connectToMobiusSocket(): Promise<void> {\n const loggerContext = {\n file: CALLING_CLIENT_FILE,\n method: METHODS.CONNECT_TO_MOBIUS_SOCKET,\n };\n\n log.info(METHOD_START_MESSAGE, loggerContext);\n\n if (!this.primaryWssMobiusUris.length && !this.backupWssMobiusUris.length) {\n log.warn(\n 'No WSS URIs available from Mobius discovery, skipping socket connection',\n loggerContext\n );\n\n return;\n }\n\n if (this.primaryWssMobiusUris.length) {\n log.log(\n `Attempting Mobius socket connection using primary WSS URIs (${this.primaryWssMobiusUris.length} available)`,\n loggerContext\n );\n\n for (const wssUri of this.primaryWssMobiusUris) {\n try {\n log.log(`Trying primary WSS URI: ${wssUri}`, loggerContext);\n // eslint-disable-next-line no-await-in-loop\n await this.mobiusSocket.connect(wssUri);\n log.log(\n `Successfully connected to Mobius socket on primary WSS URI: ${wssUri}`,\n loggerContext\n );\n\n return;\n } catch (err: unknown) {\n log.warn(`Primary WSS URI connection failed for ${wssUri}: ${err}`, loggerContext);\n }\n }\n\n log.warn('All primary WSS URI connection attempts failed', loggerContext);\n } else {\n log.warn('No primary WSS URIs available, skipping to backup', loggerContext);\n }\n\n if (this.backupWssMobiusUris.length) {\n log.log(\n `Attempting Mobius socket connection using backup WSS URIs (${this.backupWssMobiusUris.length} available)`,\n loggerContext\n );\n\n for (const wssUri of this.backupWssMobiusUris) {\n try {\n log.log(`Trying backup WSS URI: ${wssUri}`, loggerContext);\n // eslint-disable-next-line no-await-in-loop\n await this.mobiusSocket.connect(wssUri);\n log.log(\n `Successfully connected to Mobius socket on backup WSS URI: ${wssUri}`,\n loggerContext\n );\n\n return;\n } catch (err: unknown) {\n log.warn(`Backup WSS URI connection failed for ${wssUri}: ${err}`, loggerContext);\n }\n }\n\n log.warn('All backup WSS URI connection attempts failed', loggerContext);\n } else {\n log.warn('No backup WSS URIs available', loggerContext);\n }\n\n // Throwing an error is not required here. Connection will be attempted again during registration if no connection is established.\n // We might remove this connection attempt logic during optimization since we are anyway going to try to connect to Mobius during\n // registration and without registration the connection will be closed automatically by the mobius server.\n log.warn(\n 'All Mobius socket connection attempts exhausted for both primary and backup, continuing without socket',\n loggerContext\n );\n log.warn(\n 'All Mobius socket connection attempts exhausted for both primary and backup, continuing without socket',\n loggerContext\n );\n }\n\n private registerMobiusSocketListener() {\n log.info(METHOD_START_MESSAGE, {\n file: CALLING_CLIENT_FILE,\n method: METHODS.REGISTER_MOBIUS_SOCKET_LISTENER,\n });\n this.sdkConnector.registerMobiusSocketListener<MobiusAsyncEvent>('async_event', (event) => {\n this.handleMobiusAsyncEvent(event);\n });\n\n log.info('Successfully registered listener for Mobius events', {\n file: CALLING_CLIENT_FILE,\n method: METHODS.REGISTER_MOBIUS_SOCKET_LISTENER,\n });\n }\n\n // private unregisterMobiusSocketListener() {\n // log.info(METHOD_START_MESSAGE, {\n // file: CALLING_CLIENT_FILE,\n // method: METHODS.UNREGISTER_MOBIUS_SOCKET_LISTENER,\n // });\n // this.sdkConnector.unregisterMobiusSocketListener('async_event');\n // }\n\n private handleMobiusAsyncEvent = async (event?: MobiusAsyncEvent) => {\n log.info(METHOD_START_MESSAGE, {\n file: CALLING_CLIENT_FILE,\n method: METHODS.HANDLE_MOBIUS_ASYNC_EVENT,\n });\n\n const eventType = event?.data.eventType;\n\n if (!eventType) {\n log.warn('Dropping unsupported mobius socket payload', {\n file: CALLING_CLIENT_FILE,\n method: METHODS.HANDLE_MOBIUS_ASYNC_EVENT,\n });\n\n return;\n }\n\n if (eventType === MobiusEventType.REGISTRATION_DOWN) {\n // const line = Object.values(this.lineDict)[0];\n // line.registration.handleRegistrationDownEvent(event);\n\n return;\n }\n\n if (eventType.startsWith('mobius.')) {\n this.callManager.dequeueWsEvents(event);\n }\n };\n\n /**\n * Registers a listener/handler for ALL_CALLS_CLEARED\n * event emitted by callManager when all the calls\n * present on sdk are cleaned up.\n */\n private registerCallsClearedListener() {\n log.info(METHOD_START_MESSAGE, {\n file: CALLING_CLIENT_FILE,\n method: METHODS.REGISTER_CALLS_CLEARED_LISTENER,\n });\n\n this.callManager.on(CALLING_CLIENT_EVENT_KEYS.ALL_CALLS_CLEARED, this.callsClearedHandler);\n }\n\n /**\n * Handler registered for ALL_CALLS_CLEARED event emitted by callManager.\n *\n * If re-register attempt was deferred earlier due to active call(s), then it\n * will be attempted here on receiving a notification from callManager that all\n * calls are cleaned up.\n */\n private callsClearedHandler = async () => {\n log.info(METHOD_START_MESSAGE, {\n file: CALLING_CLIENT_FILE,\n method: METHODS.CALLS_CLEARED_HANDLER,\n });\n // this is a temporary logic to get registration obj\n // it will change once we have proper lineId and multiple lines as well\n const {registration} = Object.values(this.lineDict)[0];\n\n if (!registration.isDeviceRegistered()) {\n await this.mutex.runExclusive(async () => {\n if (registration.isReconnectPending()) {\n log.info('All calls cleared, reconnecting', {\n file: CALLING_CLIENT_FILE,\n method: CALLS_CLEARED_HANDLER_UTIL,\n });\n await registration.reconnectOnFailure(CALLS_CLEARED_HANDLER_UTIL);\n }\n });\n }\n };\n\n /**\n * To get the current log Level.\n * @ignore\n */\n public getLoggingLevel(): LOGGER {\n return log.getLogLevel();\n }\n\n /**\n * To return the `sdkConnector` instance that was used during sdk initialisation.\n * @ignore\n */\n public getSDKConnector(): ISDKConnector {\n return this.sdkConnector;\n }\n\n private registerSessionsListener() {\n log.info(METHOD_START_MESSAGE, {\n file: CALLING_CLIENT_FILE,\n method: METHODS.REGISTER_SESSIONS_LISTENER,\n });\n this.sdkConnector.registerListener<CallSessionEvent>(\n MOBIUS_EVENT_KEYS.CALL_SESSION_EVENT_INCLUSIVE,\n async (event?: CallSessionEvent) => {\n if (event && event.data.userSessions.userSessions) {\n const sessionArr = event?.data.userSessions.userSessions;\n\n if (sessionArr.length === 1) {\n if (sessionArr[0].sessionType !== SessionType.WEBEX_CALLING) {\n return;\n }\n }\n\n for (let i = 0; i < sessionArr.length; i += 1) {\n if (sessionArr[i].sessionType !== SessionType.WEBEX_CALLING) {\n sessionArr.splice(i, 1);\n }\n }\n this.emit(CALLING_CLIENT_EVENT_KEYS.USER_SESSION_INFO, event as CallSessionEvent);\n }\n }\n );\n }\n\n /**\n * Creates line object inside calling client per user\n * NOTE: currently multiple lines are not supported\n */\n private async createLine(): Promise<void> {\n log.info(METHOD_START_MESSAGE, {\n file: CALLING_CLIENT_FILE,\n method: METHODS.CREATE_LINE,\n });\n const line = new Line(\n this.webex.internal.device.userId,\n this.webex.internal.device.url,\n this.mutex,\n this.apiRequest.isSocketEnabled()\n ? normalizeMobiusUris(this.primaryWssMobiusUris)\n : this.primaryMobiusUris,\n this.apiRequest.isSocketEnabled()\n ? normalizeMobiusUris(this.backupWssMobiusUris)\n : this.backupMobiusUris,\n this.getLoggingLevel(),\n this.sdkConfig?.serviceData,\n this.sdkConfig?.jwe\n );\n\n this.lineDict[line.lineId] = line;\n }\n\n /**\n * Retrieves details of all the Line objects belonging to a User\n * NOTE: currently multiple lines are not supported\n */\n public getLines(): Record<string, ILine> {\n return this.lineDict;\n }\n\n /**\n * Fetches the list of devices for a given user from Mobius.\n */\n public async getDevices(userId?: string): Promise<DeviceType[]> {\n const userid = userId || this.webex.internal.device.userId;\n if (!userid) {\n throw new Error('userId is required to fetch devices');\n }\n\n log.info(METHOD_START_MESSAGE, {file: CALLING_CLIENT_FILE, method: METHODS.GET_DEVICES});\n\n const mobiusUrls = [...this.primaryMobiusUris, ...this.backupMobiusUris];\n if (mobiusUrls.length === 0) {\n throw new Error('Mobius URLs are not available');\n }\n\n let finalError;\n for (const mobiusUrl of mobiusUrls) {\n const normalizedMobiusUrl = mobiusUrl.replace(/\\/+$/, '/');\n const uri = `${normalizedMobiusUrl}${DEVICES_ENDPOINT_RESOURCE}?userid=${encodeURIComponent(\n userid\n )}`;\n try {\n // eslint-disable-next-line no-await-in-loop\n const response = (await this.webex.request({\n uri,\n method: HTTP_METHODS.GET,\n service: ALLOWED_SERVICES.MOBIUS,\n headers: {\n [CISCO_DEVICE_URL]: this.webex.internal.device.url,\n [SPARK_USER_AGENT]: CALLING_USER_AGENT,\n },\n })) as WebexRequestPayload;\n\n if (response.statusCode !== 200) {\n throw new Error(`API call failed with ${response.statusCode}`);\n }\n\n const body = response.body as Devices;\n\n // Hydrate registration deviceInfo for deregister/restore flows\n Object.values(this.lineDict)[0].registration.setDeviceInfo(body);\n Object.values(this.lineDict)[0].registration.setActiveMobiusUrl(normalizedMobiusUrl);\n\n return body.devices ?? [];\n } catch (error) {\n finalError = error;\n }\n }\n\n log.error(`Failed to fetch devices for userId ${userId}: ${JSON.stringify(finalError)}`, {\n file: CALLING_CLIENT_FILE,\n method: METHODS.GET_DEVICES,\n });\n\n throw finalError;\n }\n\n /**\n * Retrieves call objects for all the active calls present in the client\n */\n public getActiveCalls(): Record<string, ICall[]> {\n const activeCalls: Record<string, ICall[]> = {};\n const calls = this.callManager.getActiveCalls();\n Object.keys(calls).forEach((correlationId) => {\n const call = calls[correlationId];\n if (!activeCalls[call.lineId]) {\n activeCalls[call.lineId] = [];\n }\n activeCalls[call.lineId].push(call);\n });\n\n return activeCalls;\n }\n\n /**\n * Retrieves call object for the connected call in the client\n */\n public getConnectedCall(): ICall | undefined {\n let connectCall;\n const calls = this.callManager.getActiveCalls();\n\n Object.keys(calls).forEach((correlationId) => {\n if (calls[correlationId].isConnected() && !calls[correlationId].isHeld()) {\n connectCall = calls[correlationId];\n }\n });\n\n return connectCall;\n }\n\n /**\n * Uploads logs to help troubleshoot SDK issues.\n *\n * This method collects the current SDK logs including network requests, WebSocket\n * messages, and client-side events, then securely submits them to Webex's diagnostics\n * service. The returned tracking ID, feedbackID can be provided to Webex support for faster\n * issue resolution.\n * @returns Promise<UploadLogsResponse>\n * @throws Error\n */\n public async uploadLogs(): Promise<UploadLogsResponse> {\n const result = await uploadLogs({}, true);\n if (!result) {\n throw new Error('Failed to upload logs: No response received.');\n }\n\n return result;\n }\n}\n\n/**\n * Create the `CallingClient` instance using the `webex` object and callingSdk `config`\n * @param webex - A webex instance.\n * @param config - Config to start the CallingClient with.\n */\nexport const createClient = async (\n webex: WebexSDK,\n config?: CallingClientConfig\n): Promise<ICallingClient> => {\n const callingClientInstance = new CallingClient(webex, config);\n await callingClientInstance.init();\n\n return callingClientInstance;\n};\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["Media","_interopRequireWildcard","require","_internalPluginMobiusSocket","_asyncMutex","_constants","_Utils","_types","_SDKConnector","_interopRequireDefault","_impl","_types2","_types3","_types4","_Logger","_callManager","_constants2","_line","_types5","_Metrics","_windowsChromiumIceWarmupUtils","_request","_utils","e","t","_WeakMap","r","n","__esModule","o","i","f","__proto__","default","_typeof","has","get","set","_t11","hasOwnProperty","call","_Object$defineProperty","_Object$getOwnPropertyDescriptor","_createForOfIteratorHelper","_Symbol","_Symbol$iterator","_Array$isArray","_unsupportedIterableToArray","length","_n","F","s","done","value","TypeError","a","u","next","return","_arrayLikeToArray","toString","slice","constructor","name","_Array$from","test","Array","_callSuper","_getPrototypeOf2","_possibleConstructorReturn2","_isNativeReflectConstruct","_Reflect$construct","apply","Boolean","prototype","valueOf","CallingClient","exports","_Eventing","webex","config","_this$sdkConfig","_this$sdkConfig$servi","_this$sdkConfig2","_this$sdkConfig2$logg","_config$isMobiusSocke","_this","_classCallCheck2","_defineProperty2","_asyncToGenerator2","_regenerator","mark","_callee","line","wrap","_context","prev","networkDownTimestamp","Date","toISOString","checkNetworkReachability","isNetworkDown","sent","log","warn","file","CALLING_CLIENT_FILE","method","METHODS","NETWORK_OFFLINE","_values","lineDict","registration","clearKeepaliveTimer","stop","info","METHOD_START_MESSAGE","NETWORK_ONLINE","networkUpTimestamp","MERCURY_OFFLINE","mercuryDownTimestamp","metricManager","submitConnectionMetrics","METRIC_EVENT","CONNECTION_ERROR","CONNECTION_ACTION","MERCURY_DOWN","METRIC_TYPE","BEHAVIORAL","mercuryUpTimestamp","_callee3","callCheckInterval","_context3","MERCURY_ONLINE","setInterval","_callee2","_context2","_keys","callManager","getActiveCalls","clearInterval","getStatus","RegistrationStatus","IDLE","handleConnectionRestoration","NETWORK_FLAP_TIMEOUT","checkCallStatus","NETWORK_FLAP","MERCURY_UP","_ref4","_callee4","event","eventType","_context4","HANDLE_MOBIUS_ASYNC_EVENT","data","abrupt","MobiusEventType","REGISTRATION_DOWN","startsWith","dequeueWsEvents","_x","arguments","_callee6","_context6","CALLS_CLEARED_HANDLER","isDeviceRegistered","mutex","runExclusive","_callee5","_context5","isReconnectPending","CALLS_CLEARED_HANDLER_UTIL","reconnectOnFailure","sdkConnector","SDKConnector","getWebex","_config$logger","setWebex","logger","level","setWebexLogger","Mutex","sdkConfig","serviceData","indicator","ServiceIndicator","CALLING","domain","logLevel","LOGGER","ERROR","setLogger","validateServiceData","isMobiusSocketEnabled","isMobiusWssEnabled","getCallManager","getMetricManager","mediaEngine","adaptedLogger","_len","args","_key","join","error","_len2","_key2","_len3","_key3","_len4","_key4","trace","_len5","_key5","debug","_len6","_key6","primaryMobiusUris","backupMobiusUris","primaryWssMobiusUris","backupWssMobiusUris","mobiusClusters","internal","services","getMobiusClusters","mobiusHost","mobiusSocket","getMobiusSocketInstance","apiRequest","APIRequest","getInstance","registerSessionsListener","registerCallsClearedListener","_inherits2","_createClass2","key","_init","_callee7","_window","_window$navigator","ua","_t","_context7","window","navigator","userAgent","toLowerCase","includes","windowsChromiumIceWarmup","iceServers","timeoutMs","concat","getMobiusServers","connectToMobiusSocket","registerMobiusSocketListener","createLine","setupNetworkEventListeners","init","_checkNetworkReachability","_callee8","controller","timeoutId","_t2","_context8","AbortController","setTimeout","abort","fetch","cache","mode","signal","clearTimeout","_checkCallStatus","_callee9","loggerContext","calls","_iterator","_step","_loop","_t3","_context0","_context9","postStatus","then","catch","err","sendCallStateMachineEvt","type","delegateYield","finish","_this2","addEventListener","handleNetworkOnline","handleNetworkOffline","mercury","on","handleMercuryOffline","handleMercuryOnline","_getClientRegionInfo","_callee0","_this3","regionInfo","_response$headers","_response$headers$tra","_response$headers2","response","clientRegionInfo","_t4","_context1","GET_CLIENT_REGION_INFO","request","uri","DISCOVERY_URL","HTTP_METHODS","GET","addAuthHeader","headers","SPARK_USER_AGENT","body","clientRegion","countryCode","trackingid","submitRegionInfoMetric","MOBIUS_DISCOVERY","MOBIUS_SERVER_ACTION","REGION_INFO","_stringify","handleCallingClientErrors","clientError","_headers$trackingId","_headers2","submitRegistrationMetric","REGISTRATION_ERROR","REG_ACTION","REGISTER","GET_MOBIUS_SERVERS_UTIL","trackingId","undefined","emit","CALLING_CLIENT_EVENT_KEYS","uploadLogs","getClientRegionInfo","_getMobiusServers","_callee1","_this$sdkConfig3","_this$sdkConfig3$disc","_this$sdkConfig4","_this$sdkConfig4$disc","_this4","useDefault","_this$sdkConfig5","_this$sdkConfig5$disc","_this$sdkConfig6","_this$sdkConfig6$disc","_this$webex$internal$","_iterator2","_step2","_loop2","_ret","_t6","_context11","GET_MOBIUS_SERVERS","discovery","country","region","_serviceUrls","mobius","_activeServices","_response$headers3","_response$headers$tra2","_response$headers4","mobiusServers","mobiusUris","_t5","_context10","host","API_V1","URL_ENDPOINT","CISCO_DEVICE_URL","device","url","CALLING_USER_AGENT","service","ALLOWED_SERVICES","MOBIUS","submitMobiusServersMetric","MOBIUS_SERVERS","filterMobiusUris","primary","backup","primaryWss","backupWss","_headers$trackingId2","_headers4","t0","_connectToMobiusSocket","_callee10","_iterator3","_step3","wssUri","_iterator4","_step4","_wssUri","_t7","_t8","_t9","_t0","_context12","CONNECT_TO_MOBIUS_SOCKET","connect","_this5","REGISTER_MOBIUS_SOCKET_LISTENER","handleMobiusAsyncEvent","REGISTER_CALLS_CLEARED_LISTENER","ALL_CALLS_CLEARED","callsClearedHandler","getLoggingLevel","getLogLevel","getSDKConnector","_this6","REGISTER_SESSIONS_LISTENER","registerListener","MOBIUS_EVENT_KEYS","CALL_SESSION_EVENT_INCLUSIVE","_ref7","_callee11","sessionArr","_context13","userSessions","sessionType","SessionType","WEBEX_CALLING","splice","USER_SESSION_INFO","_x2","_createLine","_callee12","_this$sdkConfig7","_this$sdkConfig8","_context14","CREATE_LINE","Line","userId","isSocketEnabled","normalizeMobiusUris","jwe","lineId","getLines","_getDevices","_callee13","userid","mobiusUrls","finalError","_iterator5","_step5","mobiusUrl","normalizedMobiusUrl","_body$devices","_t1","_t10","_context15","Error","GET_DEVICES","_toConsumableArray2","replace","DEVICES_ENDPOINT_RESOURCE","encodeURIComponent","statusCode","setDeviceInfo","setActiveMobiusUrl","devices","getDevices","_x3","activeCalls","forEach","correlationId","push","getConnectedCall","connectCall","isConnected","isHeld","_uploadLogs2","_callee14","result","_context16","Eventing","createClient","_ref8","_callee15","callingClientInstance","_context17","_x4","_x5"],"sources":["CallingClient.ts"],"sourcesContent":["/* eslint-disable no-underscore-dangle */\n/* eslint-disable valid-jsdoc */\n/* eslint-disable @typescript-eslint/no-shadow */\nimport * as Media from '@webex/internal-media-core';\n// @ts-ignore - JS module without type declarations\nimport {getMobiusSocketInstance} from '@webex/internal-plugin-mobius-socket';\nimport {Mutex} from 'async-mutex';\nimport {METHOD_START_MESSAGE} from '../common/constants';\nimport {\n filterMobiusUris,\n handleCallingClientErrors,\n normalizeMobiusUris,\n uploadLogs,\n validateServiceData,\n} from '../common/Utils';\nimport {LOGGER} from '../Logger/types';\nimport SDKConnector from '../SDKConnector';\nimport {ClientRegionInfo, ISDKConnector, ServiceHost, WebexSDK} from '../SDKConnector/types';\nimport {Eventing} from '../Events/impl';\nimport {\n CallingClientEventTypes,\n MOBIUS_EVENT_KEYS,\n CallSessionEvent,\n SessionType,\n CALLING_CLIENT_EVENT_KEYS,\n} from '../Events/types';\nimport {\n ServiceIndicator,\n RegionInfo,\n ALLOWED_SERVICES,\n HTTP_METHODS,\n MobiusServers,\n WebexRequestPayload,\n RegistrationStatus,\n UploadLogsResponse,\n DeviceType,\n Devices,\n} from '../common/types';\nimport {ICallingClient, CallingClientConfig} from './types';\nimport {ICall, ICallManager, MobiusAsyncEvent, MobiusEventType} from './calling/types';\nimport log from '../Logger';\nimport {getCallManager} from './calling/callManager';\nimport {\n CALLING_CLIENT_FILE,\n CALLS_CLEARED_HANDLER_UTIL,\n CALLING_USER_AGENT,\n CISCO_DEVICE_URL,\n DISCOVERY_URL,\n GET_MOBIUS_SERVERS_UTIL,\n SPARK_USER_AGENT,\n URL_ENDPOINT,\n API_V1,\n METHODS,\n NETWORK_FLAP_TIMEOUT,\n DEVICES_ENDPOINT_RESOURCE,\n} from './constants';\nimport Line from './line';\nimport {ILine} from './line/types';\nimport {\n METRIC_EVENT,\n REG_ACTION,\n METRIC_TYPE,\n IMetricManager,\n CONNECTION_ACTION,\n MOBIUS_SERVER_ACTION,\n} from '../Metrics/types';\nimport {getMetricManager} from '../Metrics';\nimport windowsChromiumIceWarmup from './windowsChromiumIceWarmupUtils';\nimport {APIRequest} from './utils/request';\nimport {isMobiusWssEnabled} from './utils';\n\n/**\n * The `CallingClient` module provides a set of APIs for line registration and calling functionalities within the SDK.\n *\n * The following code snippet demonstrates how to create an instance of `CallingClient` using a `webex` instance and `callingConfig`:\n *\n * @example\n * ```javascript\n * const callingClient = createClient(webex, callingConfig);\n * ```\n */\n\nexport class CallingClient extends Eventing<CallingClientEventTypes> implements ICallingClient {\n private sdkConnector: ISDKConnector;\n\n private webex: WebexSDK;\n\n private mutex: Mutex;\n\n private callManager: ICallManager;\n\n private metricManager: IMetricManager;\n\n private sdkConfig?: CallingClientConfig;\n\n private primaryMobiusUris: string[];\n\n private backupMobiusUris: string[];\n\n private primaryWssMobiusUris: string[];\n\n private backupWssMobiusUris: string[];\n\n private mobiusClusters: ServiceHost[];\n\n private mobiusHost: string;\n\n public mediaEngine: typeof Media;\n\n private lineDict: Record<string, ILine> = {};\n\n private apiRequest: APIRequest;\n\n private isMobiusSocketEnabled: boolean;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private mobiusSocket: any;\n\n private isNetworkDown = false;\n\n private networkDownTimestamp = '';\n\n private networkUpTimestamp = '';\n\n private mercuryDownTimestamp = '';\n\n private mercuryUpTimestamp = '';\n\n /**\n * @ignore\n */\n constructor(webex: WebexSDK, config?: CallingClientConfig) {\n super();\n this.sdkConnector = SDKConnector;\n\n if (!this.sdkConnector.getWebex()) {\n SDKConnector.setWebex(webex);\n if (config?.logger?.level && webex.logger.config) {\n webex.logger.config.level = config.logger.level; // override the webex logger level\n }\n log.setWebexLogger(webex.logger);\n }\n this.mutex = new Mutex();\n this.webex = this.sdkConnector.getWebex();\n\n this.sdkConfig = config;\n const serviceData = this.sdkConfig?.serviceData?.indicator\n ? this.sdkConfig.serviceData\n : {indicator: ServiceIndicator.CALLING, domain: ''};\n\n const logLevel = this.sdkConfig?.logger?.level ? this.sdkConfig.logger.level : LOGGER.ERROR;\n log.setLogger(logLevel, CALLING_CLIENT_FILE);\n validateServiceData(serviceData);\n\n this.isMobiusSocketEnabled =\n isMobiusWssEnabled(this.webex) || (config?.isMobiusSocketEnabled ?? false);\n\n this.callManager = getCallManager(\n this.webex,\n serviceData.indicator,\n this.isMobiusSocketEnabled\n );\n this.metricManager = getMetricManager(this.webex, serviceData.indicator);\n\n this.mediaEngine = Media;\n\n const adaptedLogger: Media.Logger = {\n log: (...args) => webex.logger.log(args.join(' : ')),\n error: (...args) => webex.logger.error(args.join(' : ')),\n warn: (...args) => webex.logger.warn(args.join(' : ')),\n info: (...args) => webex.logger.info(args.join(' : ')),\n trace: (...args) => webex.logger.trace(args.join(' : ')),\n debug: (...args) => webex.logger.debug(args.join(' : ')),\n };\n\n this.mediaEngine.setLogger(adaptedLogger);\n\n this.primaryMobiusUris = [];\n this.backupMobiusUris = [];\n this.primaryWssMobiusUris = [];\n this.backupWssMobiusUris = [];\n this.mobiusClusters = this.webex.internal.services.getMobiusClusters();\n this.mobiusHost = '';\n\n if (this.isMobiusSocketEnabled) {\n this.mobiusSocket = getMobiusSocketInstance(this.webex);\n }\n\n this.apiRequest = APIRequest.getInstance({\n webex: this.webex,\n isMobiusSocketEnabled: this.isMobiusSocketEnabled,\n });\n\n this.registerSessionsListener();\n\n this.registerCallsClearedListener();\n }\n\n /**\n * Initializes the `CallingClient` by performing the following steps:\n *\n * 1. Retrieves list of servers.\n * 2. Creates a line.\n * 3. Sets up network change detection.\n *\n * This method should be called once to initialize the `callingClient`.\n *\n * @returns A promise that resolves when the initialization is complete.\n * @ignore\n */\n public async init() {\n // Only for Windows Chromium based browsers we need to do the ICE warmup\n if (typeof window !== 'undefined' && window?.navigator?.userAgent) {\n const ua = window.navigator.userAgent;\n if (ua.toLowerCase().includes('windows')) {\n log.info('Starting ICE warmup for Windows Chromium based browser', {\n file: CALLING_CLIENT_FILE,\n method: 'init',\n });\n try {\n await windowsChromiumIceWarmup({\n iceServers: [],\n timeoutMs: 1000,\n });\n log.info(`ICE warmup completed`, {\n file: CALLING_CLIENT_FILE,\n method: 'init',\n });\n } catch (err) {\n log.warn(`ICE warmup failed: ${err}`, {\n file: CALLING_CLIENT_FILE,\n method: 'init',\n });\n }\n }\n }\n\n await this.getMobiusServers();\n\n if (this.isMobiusSocketEnabled) {\n await this.connectToMobiusSocket();\n this.registerMobiusSocketListener();\n }\n\n await this.createLine();\n\n this.setupNetworkEventListeners();\n }\n\n /**\n * Ping a reliable external endpoint with a short timeout to infer connectivity.\n */\n private async checkNetworkReachability(): Promise<boolean> {\n try {\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), 3000);\n\n // Using a common connectivity check endpoint that returns 204 with minimal payload.\n // no-cors mode yields an opaque response but a successful fetch implies reachability.\n await fetch('https://www.google.com/generate_204', {\n method: 'GET',\n cache: 'no-cache',\n mode: 'no-cors',\n signal: controller.signal,\n });\n\n clearTimeout(timeoutId);\n\n return true;\n } catch (error) {\n log.warn(`Network connectivity probe failed: ${error}`, {\n file: CALLING_CLIENT_FILE,\n method: 'pingExternal',\n });\n\n return false;\n }\n }\n\n private async checkCallStatus() {\n const loggerContext = {\n file: CALLING_CLIENT_FILE,\n method: 'checkCallStatus',\n };\n const calls = Object.values(this.callManager.getActiveCalls());\n for (const call of calls) {\n call\n .postStatus()\n .then(() => {\n log.info(`Call is active`, loggerContext);\n /*\n * Media Renegotiation Possibility if call keepalive succeeds,\n * for cases like WebRTC disconnect and media inactivity.\n */\n })\n .catch((err) => {\n log.warn(`Call Keepalive failed: ${err}`, loggerContext);\n\n call.sendCallStateMachineEvt({type: 'E_SEND_CALL_DISCONNECT'});\n });\n }\n }\n\n private handleNetworkOffline = async () => {\n this.networkDownTimestamp = new Date().toISOString();\n this.isNetworkDown = !(await this.checkNetworkReachability());\n log.warn(`Network has gone down, wait for it to come back up`, {\n file: CALLING_CLIENT_FILE,\n method: METHODS.NETWORK_OFFLINE,\n });\n\n if (this.isNetworkDown) {\n const line = Object.values(this.lineDict)[0];\n line.registration.clearKeepaliveTimer();\n }\n };\n\n // Wondering if we should keep this for timestamp recording purpose\n private handleNetworkOnline = () => {\n log.info(METHOD_START_MESSAGE, {\n file: CALLING_CLIENT_FILE,\n method: METHODS.NETWORK_ONLINE,\n });\n this.networkUpTimestamp = new Date().toISOString();\n };\n\n private handleMercuryOffline = () => {\n log.warn(`Mercury down, waiting for connection to be up`, {\n file: CALLING_CLIENT_FILE,\n method: METHODS.MERCURY_OFFLINE,\n });\n this.mercuryDownTimestamp = new Date().toISOString();\n this.metricManager.submitConnectionMetrics(\n METRIC_EVENT.CONNECTION_ERROR,\n CONNECTION_ACTION.MERCURY_DOWN,\n METRIC_TYPE.BEHAVIORAL,\n this.mercuryDownTimestamp,\n this.mercuryUpTimestamp\n );\n };\n\n private handleMercuryOnline = async () => {\n log.info(METHOD_START_MESSAGE, {\n file: CALLING_CLIENT_FILE,\n method: METHODS.MERCURY_ONLINE,\n });\n this.mercuryUpTimestamp = new Date().toISOString();\n if (this.isNetworkDown) {\n const callCheckInterval = setInterval(async () => {\n if (!Object.keys(this.callManager.getActiveCalls()).length) {\n clearInterval(callCheckInterval);\n const line = Object.values(this.lineDict)[0];\n\n if (line.getStatus() !== RegistrationStatus.IDLE) {\n this.isNetworkDown = await line.registration.handleConnectionRestoration(\n this.isNetworkDown\n );\n } else {\n this.isNetworkDown = false;\n }\n }\n }, NETWORK_FLAP_TIMEOUT);\n\n if (Object.keys(this.callManager.getActiveCalls()).length) {\n await this.checkCallStatus();\n }\n\n this.metricManager.submitConnectionMetrics(\n METRIC_EVENT.CONNECTION_ERROR,\n CONNECTION_ACTION.NETWORK_FLAP,\n METRIC_TYPE.BEHAVIORAL,\n this.networkDownTimestamp,\n this.networkUpTimestamp\n );\n } else {\n if (Object.keys(this.callManager.getActiveCalls()).length) {\n await this.checkCallStatus();\n }\n this.metricManager.submitConnectionMetrics(\n METRIC_EVENT.CONNECTION_ERROR,\n CONNECTION_ACTION.MERCURY_UP,\n METRIC_TYPE.BEHAVIORAL,\n this.mercuryDownTimestamp,\n this.mercuryUpTimestamp\n );\n }\n };\n\n private setupNetworkEventListeners(): void {\n if (typeof window !== 'undefined' && window.addEventListener) {\n window.addEventListener('online', this.handleNetworkOnline);\n\n window.addEventListener('offline', this.handleNetworkOffline);\n }\n\n this.webex.internal.mercury.on('offline', () => {\n this.handleMercuryOffline();\n });\n\n this.webex.internal.mercury.on('online', () => {\n this.handleMercuryOnline();\n });\n }\n\n /**\n * Fetches countryCode and region of the client.\n */\n private async getClientRegionInfo(): Promise<RegionInfo> {\n let abort;\n log.info(METHOD_START_MESSAGE, {\n file: CALLING_CLIENT_FILE,\n method: METHODS.GET_CLIENT_REGION_INFO,\n });\n const regionInfo = {} as RegionInfo;\n\n try {\n const response = <WebexRequestPayload>await this.webex.request({\n uri: `${DISCOVERY_URL}`,\n method: HTTP_METHODS.GET,\n addAuthHeader: false,\n headers: {\n [SPARK_USER_AGENT]: null,\n },\n });\n\n const clientRegionInfo = response.body as ClientRegionInfo;\n\n regionInfo.clientRegion = clientRegionInfo?.clientRegion || '';\n\n regionInfo.countryCode = clientRegionInfo?.countryCode || '';\n\n log.log(\n `Successfully fetched Client region info: ${regionInfo.clientRegion}, countryCode: ${regionInfo.countryCode}, and response trackingid: ${response?.headers?.trackingid}`,\n {\n file: CALLING_CLIENT_FILE,\n method: METHODS.GET_CLIENT_REGION_INFO,\n }\n );\n\n this.metricManager.submitRegionInfoMetric(\n METRIC_EVENT.MOBIUS_DISCOVERY,\n MOBIUS_SERVER_ACTION.REGION_INFO,\n METRIC_TYPE.BEHAVIORAL,\n this.mobiusHost,\n clientRegionInfo.clientRegion,\n clientRegionInfo.countryCode,\n response?.headers?.trackingid ?? ''\n );\n } catch (err: unknown) {\n log.error(`Failed to get client region info: ${JSON.stringify(err)}`, {\n method: METHODS.GET_CLIENT_REGION_INFO,\n file: CALLING_CLIENT_FILE,\n });\n\n // eslint-disable-next-line no-await-in-loop\n abort = await handleCallingClientErrors(\n err as WebexRequestPayload,\n (clientError) => {\n this.metricManager.submitRegistrationMetric(\n METRIC_EVENT.REGISTRATION_ERROR,\n REG_ACTION.REGISTER,\n METRIC_TYPE.BEHAVIORAL,\n GET_MOBIUS_SERVERS_UTIL,\n 'UNKNOWN',\n (err as WebexRequestPayload).headers?.trackingId ?? '',\n undefined,\n clientError\n );\n this.emit(CALLING_CLIENT_EVENT_KEYS.ERROR, clientError);\n },\n {method: GET_MOBIUS_SERVERS_UTIL, file: CALLING_CLIENT_FILE}\n );\n\n regionInfo.clientRegion = '';\n regionInfo.countryCode = '';\n\n if (abort) {\n await uploadLogs();\n\n return regionInfo;\n }\n }\n\n return regionInfo;\n }\n\n /**\n * Local method for finding the mobius servers.\n */\n private async getMobiusServers() {\n log.info(METHOD_START_MESSAGE, {\n file: CALLING_CLIENT_FILE,\n method: METHODS.GET_MOBIUS_SERVERS,\n });\n /* Following operations are performed in a synchronous way ->\n\n 1. Get RegionInfo\n 2. Get Mobius Server with that RegionInfo\n 3. Check whether Mobius server was found without any error\n 4. If there is error , we don't need to send registration\n 5. Otherwise send registration\n */\n\n let useDefault = false;\n\n let clientRegion: string;\n let countryCode: string;\n\n if (this.sdkConfig?.discovery?.country && this.sdkConfig?.discovery?.region) {\n log.log('Updating region and country from the SDK config', {\n file: CALLING_CLIENT_FILE,\n method: GET_MOBIUS_SERVERS_UTIL,\n });\n clientRegion = this.sdkConfig?.discovery?.region;\n countryCode = this.sdkConfig?.discovery?.country;\n this.mobiusHost =\n this.webex.internal.services._serviceUrls?.mobius ||\n this.webex.internal.services.get(this.webex.internal.services._activeServices.mobius);\n } else {\n log.log('Updating region and country through Region discovery', {\n file: CALLING_CLIENT_FILE,\n method: GET_MOBIUS_SERVERS_UTIL,\n });\n\n const regionInfo = await this.getClientRegionInfo();\n\n clientRegion = regionInfo.clientRegion;\n countryCode = regionInfo.countryCode;\n }\n\n if (clientRegion && countryCode) {\n log.log(\n `Found Region: ${clientRegion} and country: ${countryCode}, going to fetch Mobius server`,\n {\n file: CALLING_CLIENT_FILE,\n method: GET_MOBIUS_SERVERS_UTIL,\n }\n );\n\n for (const mobius of this.mobiusClusters) {\n if (mobius.host) {\n this.mobiusHost = `https://${mobius.host}${API_V1}`;\n } else {\n this.mobiusHost = mobius as unknown as string;\n }\n try {\n // eslint-disable-next-line no-await-in-loop\n const response = <WebexRequestPayload>await this.webex.request({\n uri: `${this.mobiusHost}${URL_ENDPOINT}?regionCode=${clientRegion}&countryCode=${countryCode}`,\n method: HTTP_METHODS.GET,\n headers: {\n [CISCO_DEVICE_URL]: this.webex.internal.device.url,\n [SPARK_USER_AGENT]: CALLING_USER_AGENT,\n },\n service: ALLOWED_SERVICES.MOBIUS,\n });\n\n log.log(\n `Mobius Server found for the region. Response trackingId: ${response?.headers?.trackingid}`,\n {\n file: CALLING_CLIENT_FILE,\n method: GET_MOBIUS_SERVERS_UTIL,\n }\n );\n\n const mobiusServers = response.body as MobiusServers;\n\n // Metrics for mobius servers\n this.metricManager.submitMobiusServersMetric(\n METRIC_EVENT.MOBIUS_DISCOVERY,\n MOBIUS_SERVER_ACTION.MOBIUS_SERVERS,\n METRIC_TYPE.BEHAVIORAL,\n mobiusServers,\n response?.headers?.trackingid ?? ''\n );\n\n /* update arrays of Mobius Uris. */\n const mobiusUris = filterMobiusUris(mobiusServers, this.mobiusHost);\n this.primaryMobiusUris = mobiusUris.primary;\n this.backupMobiusUris = mobiusUris.backup;\n this.primaryWssMobiusUris = mobiusUris.primaryWss;\n this.backupWssMobiusUris = mobiusUris.backupWss;\n\n log.log(\n `Final list of Mobius Servers, primary: ${mobiusUris.primary} and backup: ${mobiusUris.backup}`,\n {\n file: CALLING_CLIENT_FILE,\n method: GET_MOBIUS_SERVERS_UTIL,\n }\n );\n\n break;\n } catch (err: unknown) {\n log.error(`Failed to get Mobius servers: ${JSON.stringify(err)}`, {\n method: METHODS.GET_MOBIUS_SERVERS,\n file: CALLING_CLIENT_FILE,\n });\n\n // eslint-disable-next-line no-await-in-loop\n const abort = await handleCallingClientErrors(\n err as WebexRequestPayload,\n (clientError) => {\n this.metricManager.submitRegistrationMetric(\n METRIC_EVENT.REGISTRATION_ERROR,\n REG_ACTION.REGISTER,\n METRIC_TYPE.BEHAVIORAL,\n GET_MOBIUS_SERVERS_UTIL,\n 'UNKNOWN',\n (err as WebexRequestPayload).headers?.trackingId ?? '',\n undefined,\n clientError\n );\n this.emit(CALLING_CLIENT_EVENT_KEYS.ERROR, clientError);\n },\n {method: GET_MOBIUS_SERVERS_UTIL, file: CALLING_CLIENT_FILE}\n );\n\n if (abort) {\n useDefault = true;\n // eslint-disable-next-line no-await-in-loop\n await uploadLogs();\n break;\n }\n }\n }\n } else {\n /* Setting this to true because region info is possibly undefined */\n useDefault = true;\n }\n\n /* Use a default URL if Mobius discovery fails either because of region info failure\n * or because the discovered Mobius couldn't be reached\n */\n\n if (useDefault) {\n log.warn(\n `Couldn't resolve the region and country code. Defaulting to the catalog entries to discover mobius servers`,\n {\n file: CALLING_CLIENT_FILE,\n method: GET_MOBIUS_SERVERS_UTIL,\n }\n );\n this.mobiusHost = `https://${this.mobiusClusters[0].host}${API_V1}`;\n this.primaryMobiusUris = [`${this.mobiusHost}${URL_ENDPOINT}`];\n }\n }\n\n /**\n * Connects to the Mobius WebSocket using WSS URIs discovered during Mobius server discovery.\n * Attempts primary WSS URIs first, then falls back to backup WSS URIs.\n * If all attempts fail, logs a warning and continues without a socket connection.\n */\n private async connectToMobiusSocket(): Promise<void> {\n const loggerContext = {\n file: CALLING_CLIENT_FILE,\n method: METHODS.CONNECT_TO_MOBIUS_SOCKET,\n };\n\n log.info(METHOD_START_MESSAGE, loggerContext);\n\n if (!this.primaryWssMobiusUris.length && !this.backupWssMobiusUris.length) {\n log.warn(\n 'No WSS URIs available from Mobius discovery, skipping socket connection',\n loggerContext\n );\n\n return;\n }\n\n if (this.primaryWssMobiusUris.length) {\n log.log(\n `Attempting Mobius socket connection using primary WSS URIs (${this.primaryWssMobiusUris.length} available)`,\n loggerContext\n );\n\n for (const wssUri of this.primaryWssMobiusUris) {\n try {\n log.log(`Trying primary WSS URI: ${wssUri}`, loggerContext);\n // eslint-disable-next-line no-await-in-loop\n await this.mobiusSocket.connect(wssUri);\n log.log(\n `Successfully connected to Mobius socket on primary WSS URI: ${wssUri}`,\n loggerContext\n );\n\n return;\n } catch (err: unknown) {\n log.warn(`Primary WSS URI connection failed for ${wssUri}: ${err}`, loggerContext);\n }\n }\n\n log.warn('All primary WSS URI connection attempts failed', loggerContext);\n } else {\n log.warn('No primary WSS URIs available, skipping to backup', loggerContext);\n }\n\n if (this.backupWssMobiusUris.length) {\n log.log(\n `Attempting Mobius socket connection using backup WSS URIs (${this.backupWssMobiusUris.length} available)`,\n loggerContext\n );\n\n for (const wssUri of this.backupWssMobiusUris) {\n try {\n log.log(`Trying backup WSS URI: ${wssUri}`, loggerContext);\n // eslint-disable-next-line no-await-in-loop\n await this.mobiusSocket.connect(wssUri);\n log.log(\n `Successfully connected to Mobius socket on backup WSS URI: ${wssUri}`,\n loggerContext\n );\n\n return;\n } catch (err: unknown) {\n log.warn(`Backup WSS URI connection failed for ${wssUri}: ${err}`, loggerContext);\n }\n }\n\n log.warn('All backup WSS URI connection attempts failed', loggerContext);\n } else {\n log.warn('No backup WSS URIs available', loggerContext);\n }\n\n // Throwing an error is not required here. Connection will be attempted again during registration if no connection is established.\n // We might remove this connection attempt logic during optimization since we are anyway going to try to connect to Mobius during\n // registration and without registration the connection will be closed automatically by the mobius server.\n log.warn(\n 'All Mobius socket connection attempts exhausted for both primary and backup, continuing without socket',\n loggerContext\n );\n log.warn(\n 'All Mobius socket connection attempts exhausted for both primary and backup, continuing without socket',\n loggerContext\n );\n }\n\n private registerMobiusSocketListener() {\n log.info(METHOD_START_MESSAGE, {\n file: CALLING_CLIENT_FILE,\n method: METHODS.REGISTER_MOBIUS_SOCKET_LISTENER,\n });\n this.sdkConnector.registerMobiusSocketListener<MobiusAsyncEvent>(\n 'event:async_event',\n (event) => {\n this.handleMobiusAsyncEvent(event);\n }\n );\n\n log.info('Successfully registered listener for Mobius events', {\n file: CALLING_CLIENT_FILE,\n method: METHODS.REGISTER_MOBIUS_SOCKET_LISTENER,\n });\n }\n\n // private unregisterMobiusSocketListener() {\n // log.info(METHOD_START_MESSAGE, {\n // file: CALLING_CLIENT_FILE,\n // method: METHODS.UNREGISTER_MOBIUS_SOCKET_LISTENER,\n // });\n // this.sdkConnector.unregisterMobiusSocketListener('async_event');\n // }\n\n private handleMobiusAsyncEvent = async (event?: MobiusAsyncEvent) => {\n log.info(METHOD_START_MESSAGE, {\n file: CALLING_CLIENT_FILE,\n method: METHODS.HANDLE_MOBIUS_ASYNC_EVENT,\n });\n\n const eventType = event?.data.eventType;\n\n if (!eventType) {\n log.warn('Dropping unsupported mobius socket payload', {\n file: CALLING_CLIENT_FILE,\n method: METHODS.HANDLE_MOBIUS_ASYNC_EVENT,\n });\n\n return;\n }\n\n if (eventType === MobiusEventType.REGISTRATION_DOWN) {\n // const line = Object.values(this.lineDict)[0];\n // line.registration.handleRegistrationDownEvent(event);\n\n return;\n }\n\n if (eventType.startsWith('mobius.')) {\n this.callManager.dequeueWsEvents(event);\n }\n };\n\n /**\n * Registers a listener/handler for ALL_CALLS_CLEARED\n * event emitted by callManager when all the calls\n * present on sdk are cleaned up.\n */\n private registerCallsClearedListener() {\n log.info(METHOD_START_MESSAGE, {\n file: CALLING_CLIENT_FILE,\n method: METHODS.REGISTER_CALLS_CLEARED_LISTENER,\n });\n\n this.callManager.on(CALLING_CLIENT_EVENT_KEYS.ALL_CALLS_CLEARED, this.callsClearedHandler);\n }\n\n /**\n * Handler registered for ALL_CALLS_CLEARED event emitted by callManager.\n *\n * If re-register attempt was deferred earlier due to active call(s), then it\n * will be attempted here on receiving a notification from callManager that all\n * calls are cleaned up.\n */\n private callsClearedHandler = async () => {\n log.info(METHOD_START_MESSAGE, {\n file: CALLING_CLIENT_FILE,\n method: METHODS.CALLS_CLEARED_HANDLER,\n });\n // this is a temporary logic to get registration obj\n // it will change once we have proper lineId and multiple lines as well\n const {registration} = Object.values(this.lineDict)[0];\n\n if (!registration.isDeviceRegistered()) {\n await this.mutex.runExclusive(async () => {\n if (registration.isReconnectPending()) {\n log.info('All calls cleared, reconnecting', {\n file: CALLING_CLIENT_FILE,\n method: CALLS_CLEARED_HANDLER_UTIL,\n });\n await registration.reconnectOnFailure(CALLS_CLEARED_HANDLER_UTIL);\n }\n });\n }\n };\n\n /**\n * To get the current log Level.\n * @ignore\n */\n public getLoggingLevel(): LOGGER {\n return log.getLogLevel();\n }\n\n /**\n * To return the `sdkConnector` instance that was used during sdk initialisation.\n * @ignore\n */\n public getSDKConnector(): ISDKConnector {\n return this.sdkConnector;\n }\n\n private registerSessionsListener() {\n log.info(METHOD_START_MESSAGE, {\n file: CALLING_CLIENT_FILE,\n method: METHODS.REGISTER_SESSIONS_LISTENER,\n });\n this.sdkConnector.registerListener<CallSessionEvent>(\n MOBIUS_EVENT_KEYS.CALL_SESSION_EVENT_INCLUSIVE,\n async (event?: CallSessionEvent) => {\n if (event && event.data.userSessions.userSessions) {\n const sessionArr = event?.data.userSessions.userSessions;\n\n if (sessionArr.length === 1) {\n if (sessionArr[0].sessionType !== SessionType.WEBEX_CALLING) {\n return;\n }\n }\n\n for (let i = 0; i < sessionArr.length; i += 1) {\n if (sessionArr[i].sessionType !== SessionType.WEBEX_CALLING) {\n sessionArr.splice(i, 1);\n }\n }\n this.emit(CALLING_CLIENT_EVENT_KEYS.USER_SESSION_INFO, event as CallSessionEvent);\n }\n }\n );\n }\n\n /**\n * Creates line object inside calling client per user\n * NOTE: currently multiple lines are not supported\n */\n private async createLine(): Promise<void> {\n log.info(METHOD_START_MESSAGE, {\n file: CALLING_CLIENT_FILE,\n method: METHODS.CREATE_LINE,\n });\n const line = new Line(\n this.webex.internal.device.userId,\n this.webex.internal.device.url,\n this.mutex,\n this.apiRequest.isSocketEnabled()\n ? normalizeMobiusUris(this.primaryWssMobiusUris)\n : this.primaryMobiusUris,\n this.apiRequest.isSocketEnabled()\n ? normalizeMobiusUris(this.backupWssMobiusUris)\n : this.backupMobiusUris,\n this.getLoggingLevel(),\n this.sdkConfig?.serviceData,\n this.sdkConfig?.jwe\n );\n\n this.lineDict[line.lineId] = line;\n }\n\n /**\n * Retrieves details of all the Line objects belonging to a User\n * NOTE: currently multiple lines are not supported\n */\n public getLines(): Record<string, ILine> {\n return this.lineDict;\n }\n\n /**\n * Fetches the list of devices for a given user from Mobius.\n */\n public async getDevices(userId?: string): Promise<DeviceType[]> {\n const userid = userId || this.webex.internal.device.userId;\n if (!userid) {\n throw new Error('userId is required to fetch devices');\n }\n\n log.info(METHOD_START_MESSAGE, {file: CALLING_CLIENT_FILE, method: METHODS.GET_DEVICES});\n\n const mobiusUrls = [...this.primaryMobiusUris, ...this.backupMobiusUris];\n if (mobiusUrls.length === 0) {\n throw new Error('Mobius URLs are not available');\n }\n\n let finalError;\n for (const mobiusUrl of mobiusUrls) {\n const normalizedMobiusUrl = mobiusUrl.replace(/\\/+$/, '/');\n const uri = `${normalizedMobiusUrl}${DEVICES_ENDPOINT_RESOURCE}?userid=${encodeURIComponent(\n userid\n )}`;\n try {\n // eslint-disable-next-line no-await-in-loop\n const response = (await this.webex.request({\n uri,\n method: HTTP_METHODS.GET,\n service: ALLOWED_SERVICES.MOBIUS,\n headers: {\n [CISCO_DEVICE_URL]: this.webex.internal.device.url,\n [SPARK_USER_AGENT]: CALLING_USER_AGENT,\n },\n })) as WebexRequestPayload;\n\n if (response.statusCode !== 200) {\n throw new Error(`API call failed with ${response.statusCode}`);\n }\n\n const body = response.body as Devices;\n\n // Hydrate registration deviceInfo for deregister/restore flows\n Object.values(this.lineDict)[0].registration.setDeviceInfo(body);\n Object.values(this.lineDict)[0].registration.setActiveMobiusUrl(normalizedMobiusUrl);\n\n return body.devices ?? [];\n } catch (error) {\n finalError = error;\n }\n }\n\n log.error(`Failed to fetch devices for userId ${userId}: ${JSON.stringify(finalError)}`, {\n file: CALLING_CLIENT_FILE,\n method: METHODS.GET_DEVICES,\n });\n\n throw finalError;\n }\n\n /**\n * Retrieves call objects for all the active calls present in the client\n */\n public getActiveCalls(): Record<string, ICall[]> {\n const activeCalls: Record<string, ICall[]> = {};\n const calls = this.callManager.getActiveCalls();\n Object.keys(calls).forEach((correlationId) => {\n const call = calls[correlationId];\n if (!activeCalls[call.lineId]) {\n activeCalls[call.lineId] = [];\n }\n activeCalls[call.lineId].push(call);\n });\n\n return activeCalls;\n }\n\n /**\n * Retrieves call object for the connected call in the client\n */\n public getConnectedCall(): ICall | undefined {\n let connectCall;\n const calls = this.callManager.getActiveCalls();\n\n Object.keys(calls).forEach((correlationId) => {\n if (calls[correlationId].isConnected() && !calls[correlationId].isHeld()) {\n connectCall = calls[correlationId];\n }\n });\n\n return connectCall;\n }\n\n /**\n * Uploads logs to help troubleshoot SDK issues.\n *\n * This method collects the current SDK logs including network requests, WebSocket\n * messages, and client-side events, then securely submits them to Webex's diagnostics\n * service. The returned tracking ID, feedbackID can be provided to Webex support for faster\n * issue resolution.\n * @returns Promise<UploadLogsResponse>\n * @throws Error\n */\n public async uploadLogs(): Promise<UploadLogsResponse> {\n const result = await uploadLogs({}, true);\n if (!result) {\n throw new Error('Failed to upload logs: No response received.');\n }\n\n return result;\n }\n}\n\n/**\n * Create the `CallingClient` instance using the `webex` object and callingSdk `config`\n * @param webex - A webex instance.\n * @param config - Config to start the CallingClient with.\n */\nexport const createClient = async (\n webex: WebexSDK,\n config?: CallingClientConfig\n): Promise<ICallingClient> => {\n const callingClientInstance = new CallingClient(webex, config);\n await callingClientInstance.init();\n\n return callingClientInstance;\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1101,7 +1101,7 @@ describe('CallingClient Tests', function () {
|
|
|
1101
1101
|
case 1:
|
|
1102
1102
|
callingClient = _context30.sent;
|
|
1103
1103
|
asyncEventOnCall = mobiusSocketMock.on.mock.calls.find(function (call) {
|
|
1104
|
-
return call[0] === 'async_event';
|
|
1104
|
+
return call[0] === 'event:async_event';
|
|
1105
1105
|
});
|
|
1106
1106
|
asyncEventCallback = asyncEventOnCall[1];
|
|
1107
1107
|
case 2:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_asyncMutex","require","Media","_interopRequireWildcard","_types","_testUtil","_types2","_types3","_Logger","_interopRequireDefault","_CallingClient","_Utils","utils","_callManager","_constants","_callRecordFixtures","_callingClientFixtures","_line","_registerFixtures","_constants2","_types4","_windowsChromiumIceWarmupUtils","_request","e","t","_WeakMap","r","n","__esModule","o","i","f","__proto__","default","_typeof","has","get","set","_t5","hasOwnProperty","call","_Object$defineProperty","_Object$getOwnPropertyDescriptor","ownKeys","_Object$keys2","_Object$getOwnPropertySymbols","filter","enumerable","push","apply","_objectSpread","arguments","length","Object","forEach","_defineProperty2","_Object$getOwnPropertyDescriptors","_Object$defineProperties","jest","mock","getMobiusSocketInstance","fn","mockReturnValue","sendWssRequest","connect","on","off","global","crypto","randomUUID","spyOn","mockResolvedValue","undefined","describe","handleErrorSpy","setLoggerSpy","webex","getTestUtilsWebex","internal","services","mockCatalogUS","getMobiusClusters","mockUSServiceHosts","defaultServiceIndicator","ServiceIndicator","CALLING","callManager","getCallManager","infoSpy","log","logSpy","warnSpy","originalProcessNextTick","process","nextTick","flushPromises","_promise","resolve","beforeEach","APIRequest","resetInstance","getInstance","isMobiusSocketEnabled","afterAll","removeAllListeners","it","_asyncToGenerator2","_regenerator","mark","_callee","callingClient","wrap","_context","prev","next","_hostCatalog","_serviceUrls","mobius","createClient","logger","level","LOGGER","INFO","sent","expect","toHaveBeenCalledTimes","toStrictEqual","stop","_callee2","_context2","mockCatalogEU","mockEUServiceHosts","toBe","afterEach","_callee4","_context4","_callee3","_context3","toBeTruthy","not","toThrow","Error","_callee6","serviceDataObj","_context6","indicator","domain","_callee5","_context5","serviceData","_callee7","_t","_context7","message","toEqual","assertions","_callee8","_t2","_context8","_callee0","_context0","_callee9","_context9","_callee1","_t3","_context1","CONTACT_CENTER","_callee11","_context11","_callee10","_context10","_callee12","_context12","getLoggingLevel","clearAllTimers","clearAllMocks","useRealTimers","_callee13","_context13","request","mockResolvedValueOnce","regionPayload","discoveryPayload","toBeCalledTimes","primaryMobiusUris","primaryUrl","toBeCalled","nthCalledWith","method","uri","concat","DISCOVERY_URL","addAuthHeader","headers","SPARK_USER_AGENT","getMockRequestTemplate","URL_ENDPOINT","regionBody","clientRegion","countryCode","_callee14","failurePayload","_context14","statusCode","mockRejectedValueOnce","toBeCalledWith","anything","file","CALLING_CLIENT_FILE","objectContaining","_callee15","_context15","mockReset","discovery","region","country","toHaveBeenCalledWith","METHOD_START_MESSAGE","toBeCalledOnceWith","toHaveBeenCalled","mobiusCluster","checkCluster","_ref16","_callee16","mockServiceHosts","mockCatalog","_context16","_x","_x2","each","_ref17","_callee17","clusterName","_t4","_context17","abrupt","mockIntServiceHosts","mockCatalogUSInt","mockEUIntServiceHosts","mockCatalogEUInt","_x3","line","_callee18","_context18","_values","lineDict","_keys","getLines","reg","windowEventSpy","deRegSpy","restoreSpy","restartRegisterSpy","registerSpy","metricSpy","_callee19","_context19","useFakeTimers","registrationPayload","window","registration","register","callCollection","_callee20","g","clearKeepaliveSpy","offlineCb","_context20","fetch","calls","stringContaining","_callee21","_context21","any","_callee22","onlineCb","_context22","String","_callee23","mercuryOfflineCb","_context23","mercury","METRIC_EVENT","CONNECTION_ERROR","CONNECTION_ACTION","MERCURY_DOWN","METRIC_TYPE","BEHAVIORAL","_callee24","handleConnectionRestoreSpy","mercuryOnlineCb","_context24","advanceTimersByTime","NETWORK_FLAP_TIMEOUT","REGISTRATION_FILE","getActiveMobiusUrl","NETWORK_FLAP","_callee25","_context25","setStatus","RegistrationStatus","IDLE","_callee26","callKeepaliveSpy","deleteSpy","_context26","createCall","getActiveCalls","state","value","_callee27","_context27","MERCURY_UP","mutex","Mutex","userId","device","clientDeviceUri","url","mobiusUris","filterMobiusUris","getMobiusDiscoveryResponse","URL","primary","backupMobiusUris","backup","beforeAll","_callee28","_context28","Line","end","getSDKConnector","getWebex","makeCall","address","type","CallType","URI","getConnectedCall","mockCall","mockCall2","mockActiveCalls","mockCorrelationId","mockCorrelationId2","mockDeviceId","lineId","mockDeviceId2","mockCall3","mockCorrelationId3","mockLineId","mockLineId2","mockOn","_callee29","_context29","done","CALLING_CLIENT_EVENT_KEYS","USER_SESSION_INFO","event","data","MOCK_SESSION_EVENT","MOBIUS_EVENT_KEYS","CALL_SESSION_EVENT_INCLUSIVE","callSessionCallback","userSessions","MOCK_MULTIPLE_SESSIONS_EVENT","asyncEventCallback","mobiusSocketMock","_callee30","asyncEventOnCall","_context30","requireMock","mockClear","find","_callee31","callEventSpy","_context31","mockImplementation","eventType","callId","callUrl","deviceId","correlationId","primaryMobius","backupMobius","_callee32","_context32","_callee33","devices","responsePayload","response","_context33","status","lastSeen","addresses","body","getDevices","HTTP_METHODS","GET","service","ALLOWED_SERVICES","MOBIUS","CISCO_DEVICE_URL","CALLING_USER_AGENT","_callee34","requestCalls","_context34","origRTCPeerConnection","_Class","RTCPeerConnection","_classCallCheck2","constructor","instances","_createClass2","key","createDataChannel","addTransceiver","createOffer","sdp","setLocalDescription","desc","localDescription","setRemoteDescription","remoteDescription","createAnswer","addIceCandidate","close","addEventListener","removeEventListener","_callee35","_context35","windowsChromiumIceWarmup","resolves"],"sources":["CallingClient.test.ts"],"sourcesContent":["import {Mutex} from 'async-mutex';\nimport * as Media from '@webex/internal-media-core';\nimport {LOGGER} from '../Logger/types';\nimport {\n getTestUtilsWebex,\n getMockRequestTemplate,\n getMobiusDiscoveryResponse,\n} from '../common/testUtil';\nimport {\n CallType,\n RegistrationStatus,\n ServiceIndicator,\n ALLOWED_SERVICES,\n HTTP_METHODS,\n WebexRequestPayload,\n} from '../common/types';\n/* eslint-disable dot-notation */\nimport {CALLING_CLIENT_EVENT_KEYS, CallSessionEvent, MOBIUS_EVENT_KEYS} from '../Events/types';\nimport log from '../Logger';\nimport {createClient} from './CallingClient';\nimport {ICallingClient} from './types';\nimport * as utils from '../common/Utils';\nimport {getCallManager} from './calling/callManager';\nimport {\n CALLING_CLIENT_FILE,\n DISCOVERY_URL,\n NETWORK_FLAP_TIMEOUT,\n REGISTRATION_FILE,\n CALLING_USER_AGENT,\n CISCO_DEVICE_URL,\n SPARK_USER_AGENT,\n URL_ENDPOINT,\n} from './constants';\nimport {MOCK_MULTIPLE_SESSIONS_EVENT, MOCK_SESSION_EVENT} from './callRecordFixtures';\nimport {ILine} from './line/types';\nimport {\n regionBody,\n regionPayload,\n primaryUrl,\n discoveryPayload,\n registrationPayload,\n mockEUServiceHosts,\n mockIntServiceHosts,\n mockEUIntServiceHosts,\n mockCatalogEU,\n mockCatalogUSInt,\n mockCatalogUS,\n mockCatalogEUInt,\n mockUSServiceHosts,\n} from './callingClientFixtures';\nimport Line from './line';\nimport {filterMobiusUris} from '../common/Utils';\nimport {URL} from './registration/registerFixtures';\nimport {ICall} from './calling/types';\nimport {ServiceHost} from '../SDKConnector/types';\nimport {METHOD_START_MESSAGE} from '../common/constants';\nimport {METRIC_EVENT, CONNECTION_ACTION, METRIC_TYPE} from '../Metrics/types';\nimport windowsChromiumIceWarmup from './windowsChromiumIceWarmupUtils';\nimport {APIRequest} from './utils/request';\n\njest.mock('@webex/internal-plugin-mobius-socket', () => ({\n getMobiusSocketInstance: jest.fn().mockReturnValue({\n sendWssRequest: jest.fn(),\n connect: jest.fn(),\n on: jest.fn(),\n off: jest.fn(),\n }),\n}));\n\nglobal.crypto = {\n randomUUID: () => '12345678-1234-5678-1234-567812345678',\n} as unknown as Crypto;\n\njest.spyOn(utils, 'uploadLogs').mockResolvedValue(undefined);\n\ndescribe('CallingClient Tests', () => {\n // Common initializers\n\n const handleErrorSpy = jest.spyOn(utils, 'handleCallingClientErrors');\n const setLoggerSpy = jest.spyOn(Media, 'setLogger');\n const webex = getTestUtilsWebex();\n webex.internal.services['_hostCatalog'] = mockCatalogUS;\n webex.internal.services.getMobiusClusters = jest.fn().mockReturnValue(mockUSServiceHosts);\n const defaultServiceIndicator = ServiceIndicator.CALLING;\n const callManager = getCallManager(webex, defaultServiceIndicator);\n\n const infoSpy = jest.spyOn(log, 'info');\n const logSpy = jest.spyOn(log, 'log');\n const warnSpy = jest.spyOn(log, 'warn');\n\n const originalProcessNextTick = process.nextTick;\n function flushPromises() {\n return new Promise((resolve) => {\n originalProcessNextTick(resolve);\n });\n }\n\n beforeEach(() => {\n APIRequest.resetInstance();\n APIRequest.getInstance({webex, isMobiusSocketEnabled: false});\n });\n\n describe('CallingClient pick Mobius cluster using Service Host Tests', () => {\n afterAll(() => {\n callManager.removeAllListeners();\n webex.internal.services['_serviceUrls']['mobius'] =\n 'https://mobius.aintgen-a-1.int.infra.webex.com/api/v1';\n webex.internal.services['_hostCatalog'] = mockCatalogUS;\n });\n\n it('should use default mobius service host when Service URL is invalid', async () => {\n webex.internal.services._hostCatalog = mockCatalogUS;\n webex.internal.services._serviceUrls.mobius = 'invalid-url';\n\n const callingClient = await createClient(webex, {logger: {level: LOGGER.INFO}});\n expect(setLoggerSpy).toHaveBeenCalledTimes(1);\n expect(callingClient['mobiusClusters']).toStrictEqual(mockUSServiceHosts);\n });\n\n it('should set mobiusServiceHost correctly when URL is valid', async () => {\n webex.internal.services._hostCatalog = mockCatalogEU;\n webex.internal.services.getMobiusClusters = jest.fn().mockReturnValue(mockEUServiceHosts);\n webex.internal.services['_serviceUrls']['mobius'] =\n 'https://mobius-eu-central-1.prod.infra.webex.com/api/v1';\n\n const callingClient = await createClient(webex, {logger: {level: LOGGER.INFO}});\n\n expect(callingClient['mobiusHost']).toBe(\n 'https://mobius-eu-central-1.prod.infra.webex.com/api/v1'\n );\n expect(callingClient['mobiusClusters']).toStrictEqual(mockEUServiceHosts);\n });\n });\n\n describe('ServiceData tests', () => {\n let callingClient: ICallingClient | undefined;\n\n afterEach(() => {\n callManager.removeAllListeners();\n callingClient = undefined;\n });\n\n /**\n * No input sdk config to callingClient, it should default to service type\n * calling and empty domain value.\n */\n it('Verify valid calling serviceData with no input sdk config', async () => {\n expect(async () => {\n callingClient = await createClient(webex);\n expect(callingClient).toBeTruthy();\n }).not.toThrow(Error);\n });\n\n /**\n * Input sdk config to callingClient with serviceData carrying empty string for\n * both indicator and domain in it.\n *\n * It should default to service type calling and empty domain value.\n *\n */\n it('Verify invalid empty service indicator, empty domain', async () => {\n /* eslint-disable @typescript-eslint/no-explicit-any */\n const serviceDataObj: any = {indicator: '', domain: ''};\n\n expect(async () => {\n callingClient = await createClient(webex, {serviceData: serviceDataObj});\n expect(callingClient).toBeTruthy();\n }).not.toThrow(Error);\n });\n\n /**\n * Input sdk config to callingClient with serviceData carrying invalid value for indicator\n * and valid domain type string for domain field in it.\n *\n * It should throw error and abort execution as indicator value is invalid.\n *\n * INDICATOR value MUST MATCH with one of the values in ServiceIndicator enum.\n */\n it('Verify invalid service indicator, valid domain', async () => {\n /* eslint-disable @typescript-eslint/no-explicit-any */\n const serviceDataObj: any = {indicator: 'test', domain: 'test.example.com'};\n\n try {\n callingClient = await createClient(webex, {serviceData: serviceDataObj});\n } catch (e) {\n expect(e.message).toEqual(\n 'Invalid service indicator, Allowed values are: calling, contactcenter and guestcalling'\n );\n }\n expect.assertions(1);\n });\n\n /**\n * Input sdk config to callingClient with serviceData carrying valid value for indicator\n * 'calling', but an invalid domain type string for domain field in it.\n *\n * It should throw error and abort execution as domain value is invalid.\n *\n * DOMAIN field for service type calling is allowed to be empty but if it carries a non-empty\n * string then it must be of valid domain type.\n */\n it('CALLING: verify invalid service domain', async () => {\n const serviceDataObj = {indicator: ServiceIndicator.CALLING, domain: 'test'};\n\n try {\n callingClient = await createClient(webex, {serviceData: serviceDataObj});\n } catch (e) {\n expect(e.message).toEqual('Invalid service domain.');\n }\n expect.assertions(1);\n });\n\n /**\n * Input sdk config to callingClient with serviceData carrying valid value for indicator\n * 'calling', and an empty string for domain field in it.\n *\n * Execution should proceed properly and createRegistration should be called with same serviceData.\n *\n * DOMAIN field for service type 'calling' is allowed to be empty.\n */\n it('CALLING: verify valid empty service domain', async () => {\n const serviceDataObj = {indicator: ServiceIndicator.CALLING, domain: ''};\n\n expect(async () => {\n callingClient = await createClient(webex, {serviceData: serviceDataObj});\n expect(callingClient).toBeTruthy();\n }).not.toThrow(Error);\n });\n\n /**\n * Input sdk config to callingClient with serviceData carrying valid value for indicator\n * 'contactcenter', but an empty string for domain field in it.\n *\n * It should throw error and abort execution as domain value is invalid.\n *\n * DOMAIN field for service type 'contactcenter' must carry a non-empty valid domain type string.\n */\n it('ContactCenter: verify empty invalid service domain', async () => {\n const serviceDataObj = {indicator: ServiceIndicator.CONTACT_CENTER, domain: ''};\n\n try {\n callingClient = await createClient(webex, {serviceData: serviceDataObj});\n } catch (e) {\n expect(e.message).toEqual('Invalid service domain.');\n }\n expect.assertions(1);\n });\n\n /**\n * Input sdk config to callingClient with serviceData carrying valid value for indicator\n * 'contactcenter' , and a valid domain type string for domain field in it.\n *\n * Execution should proceed properly and createRegistration should be called with same serviceData.\n *\n * DOMAIN field for service type 'contactcenter' must carry a non-empty valid domain type string.\n */\n it('ContactCenter: verify valid service domain', async () => {\n const serviceDataObj = {\n indicator: ServiceIndicator.CONTACT_CENTER,\n domain: 'test.example.com',\n };\n\n expect(async () => {\n callingClient = await createClient(webex, {serviceData: serviceDataObj});\n expect(callingClient).toBeTruthy();\n }).not.toThrow(Error);\n });\n\n it('Get current log level', async () => {\n callingClient = await createClient(webex, {logger: {level: LOGGER.INFO}});\n expect(callingClient).toBeTruthy();\n expect(callingClient.getLoggingLevel).toBeTruthy();\n expect(callingClient.getLoggingLevel()).toEqual(LOGGER.INFO);\n });\n });\n\n describe('Mobius Server discovery tests', () => {\n let callingClient;\n\n afterEach(() => {\n jest.clearAllTimers();\n jest.clearAllMocks();\n callingClient.removeAllListeners();\n callManager.removeAllListeners();\n callingClient = undefined;\n jest.useRealTimers();\n });\n\n it('verify successful mobius server url discovery', async () => {\n webex.request.mockResolvedValueOnce(regionPayload).mockResolvedValueOnce(discoveryPayload);\n\n callingClient = await createClient(webex, {logger: {level: LOGGER.INFO}});\n\n expect(webex.request).toBeCalledTimes(2);\n expect(callingClient.primaryMobiusUris).toEqual([primaryUrl]);\n expect(handleErrorSpy).not.toBeCalled();\n\n expect(webex.request).nthCalledWith(1, {\n method: 'GET',\n uri: `${DISCOVERY_URL}`,\n addAuthHeader: false,\n headers: {\n [SPARK_USER_AGENT]: null,\n },\n });\n\n expect(webex.request).nthCalledWith(2, {\n method: 'GET',\n ...getMockRequestTemplate(),\n uri: `${callingClient['mobiusHost']}${URL_ENDPOINT}?regionCode=${regionBody.clientRegion}&countryCode=${regionBody.countryCode}`,\n });\n });\n\n it('when region discovery succeeds but region based mobius url discovery fails with final error', async () => {\n const failurePayload = {\n statusCode: 401,\n };\n\n webex.request.mockResolvedValueOnce(regionPayload).mockRejectedValueOnce(failurePayload);\n\n callingClient = await createClient(webex, {logger: {level: LOGGER.INFO}});\n\n expect(handleErrorSpy).toBeCalledWith(failurePayload, expect.anything(), {\n file: CALLING_CLIENT_FILE,\n method: 'getMobiusServers',\n });\n expect(webex.request).toBeCalledTimes(2);\n\n expect(callingClient.primaryMobiusUris).toEqual([\n `${callingClient['mobiusHost']}${URL_ENDPOINT}`,\n ]);\n\n expect(webex.request).nthCalledWith(1, {\n method: 'GET',\n uri: `${DISCOVERY_URL}`,\n addAuthHeader: false,\n headers: {\n [SPARK_USER_AGENT]: null,\n },\n });\n\n expect(warnSpy).toBeCalledWith(\n `Couldn't resolve the region and country code. Defaulting to the catalog entries to discover mobius servers`,\n expect.objectContaining({\n file: CALLING_CLIENT_FILE,\n method: 'getMobiusServers',\n })\n );\n });\n\n it('Verify successful mobius server url discovery after initializing callingClient through a config', async () => {\n infoSpy.mockReset();\n webex.request.mockResolvedValueOnce(discoveryPayload);\n\n callingClient = await createClient(webex, {\n discovery: {\n region: 'AP-SOUTHEAST',\n country: 'IN',\n },\n logger: {\n level: LOGGER.INFO,\n },\n });\n\n expect(callingClient.primaryMobiusUris).toEqual([primaryUrl]);\n\n expect(infoSpy).toHaveBeenCalledWith(METHOD_START_MESSAGE, {\n file: 'CallingClient',\n method: 'getMobiusServers',\n });\n\n expect(webex.request).toBeCalledOnceWith({\n ...getMockRequestTemplate(),\n uri: `${callingClient['mobiusHost']}${URL_ENDPOINT}?regionCode=${regionBody.clientRegion}&countryCode=${regionBody.countryCode}`,\n method: 'GET',\n });\n\n expect(handleErrorSpy).not.toHaveBeenCalled();\n });\n });\n\n describe('Testing each cluster present withing host catalog', () => {\n const mobiusCluster = [\n 'mobius-eu-central-1.prod.infra.webex.com',\n 'mobius-us-east-1.int.infra.webex.com',\n 'mobius-eu-central-1.int.infra.webex.com',\n ];\n\n const checkCluster = async (\n mockServiceHosts: ServiceHost[],\n mockCatalog: Record<string, ServiceHost[]>\n ) => {\n webex.internal.services._hostCatalog = mockCatalog;\n webex.internal.services.getMobiusClusters = jest.fn().mockReturnValue(mockServiceHosts);\n const callingClient = await createClient(webex, {logger: {level: LOGGER.INFO}});\n\n expect(callingClient['mobiusClusters']).toStrictEqual(mockServiceHosts);\n };\n\n it.each(mobiusCluster)('%s', async (clusterName) => {\n switch (clusterName) {\n case 'mobius-eu-central-1.prod.infra.webex.com':\n checkCluster(mockEUServiceHosts, mockCatalogEU);\n break;\n case 'mobius-us-east-1.int.infra.webex.com':\n checkCluster(mockIntServiceHosts, mockCatalogUSInt);\n break;\n case 'mobius-eu-central-1.int.infra.webex.com':\n checkCluster(mockEUIntServiceHosts, mockCatalogEUInt);\n break;\n default:\n break;\n }\n });\n });\n\n describe('Line creation tests', () => {\n let callingClient;\n let line;\n\n beforeEach(async () => {\n callingClient = await createClient(webex);\n line = Object.values(callingClient.lineDict)[0];\n });\n\n afterEach(() => {\n jest.clearAllTimers();\n jest.clearAllMocks();\n callingClient.removeAllListeners();\n callManager.removeAllListeners();\n callingClient = undefined;\n jest.useRealTimers();\n });\n\n it('verify line dict successfully created', () => {\n expect(callingClient.lineDict).toBeTruthy();\n expect(line).toBeTruthy();\n expect(Object.keys(callingClient.lineDict).length).toEqual(1);\n });\n\n it('verify getLines response', () => {\n expect(callingClient.getLines).toBeTruthy();\n expect(callingClient.getLines()).toEqual(callingClient.lineDict);\n });\n });\n\n describe('Connectivity and Mercury event handlers', () => {\n let callingClient: ICallingClient;\n let line;\n let reg;\n let windowEventSpy: jest.SpyInstance;\n let deRegSpy;\n let restoreSpy;\n let restartRegisterSpy;\n let registerSpy;\n let metricSpy;\n\n beforeEach(async () => {\n jest.useFakeTimers();\n webex.request\n .mockResolvedValueOnce(regionPayload)\n .mockResolvedValueOnce(discoveryPayload)\n .mockResolvedValueOnce(registrationPayload);\n\n windowEventSpy = jest.spyOn(window, 'addEventListener');\n callingClient = await createClient(webex, {logger: {level: LOGGER.INFO}});\n line = Object.values(callingClient.lineDict)[0] as ILine;\n reg = line.registration;\n await line.register();\n\n deRegSpy = jest.spyOn(reg, 'deregister');\n restoreSpy = jest.spyOn(reg, 'restorePreviousRegistration');\n restartRegisterSpy = jest.spyOn(reg, 'restartRegistration');\n registerSpy = jest.spyOn(reg, 'attemptRegistrationWithServers');\n metricSpy = jest.spyOn(callingClient['metricManager'], 'submitConnectionMetrics');\n });\n\n afterEach(() => {\n jest.clearAllTimers();\n jest.clearAllMocks();\n callingClient.removeAllListeners();\n callingClient['callManager'].callCollection = {};\n callManager.removeAllListeners();\n callingClient = undefined;\n jest.useRealTimers();\n });\n\n it('window offline handler sets networkDown and clears keepalive when network is unreachable', async () => {\n const g = global;\n g.fetch = jest.fn().mockRejectedValueOnce(new Error('network fail'));\n\n const clearKeepaliveSpy = jest.spyOn(reg, 'clearKeepaliveTimer');\n\n const offlineCb = windowEventSpy.mock.calls[1][1];\n await offlineCb();\n\n expect(warnSpy).toHaveBeenCalledWith(\n expect.stringContaining('Network connectivity probe failed'),\n {\n file: CALLING_CLIENT_FILE,\n method: 'pingExternal',\n }\n );\n expect(callingClient['isNetworkDown']).toBe(true);\n expect(clearKeepaliveSpy).toHaveBeenCalled();\n });\n\n it('window offline handler does not clear keepalive when network is reachable', async () => {\n const g = global;\n g.fetch = jest.fn().mockResolvedValueOnce({});\n\n const clearKeepaliveSpy = jest.spyOn(reg, 'clearKeepaliveTimer');\n\n const offlineCb = windowEventSpy.mock.calls[1][1];\n await offlineCb();\n\n expect(g.fetch).toHaveBeenCalledWith(\n 'https://www.google.com/generate_204',\n expect.any(Object)\n );\n expect(callingClient['isNetworkDown']).toBe(false);\n expect(clearKeepaliveSpy).not.toHaveBeenCalled();\n });\n\n it('window online handler sets networkUpTimestamp and logs', async () => {\n const onlineCb = windowEventSpy.mock.calls[0][1];\n await onlineCb();\n\n expect(callingClient['networkUpTimestamp']).toEqual(expect.any(String));\n expect(infoSpy).toHaveBeenCalledWith(METHOD_START_MESSAGE, {\n file: CALLING_CLIENT_FILE,\n method: 'handleNetworkOnline',\n });\n });\n\n it('mercury offline submits metrics and sets timestamp', async () => {\n const mercuryOfflineCb = webex.internal.mercury.on.mock.calls[1][1];\n await mercuryOfflineCb();\n\n expect(warnSpy).toHaveBeenCalledWith(\n expect.stringContaining('Mercury down, waiting for connection to be up'),\n {\n file: CALLING_CLIENT_FILE,\n method: 'handleMercuryOffline',\n }\n );\n expect(callingClient['mercuryDownTimestamp']).toEqual(expect.any(String));\n expect(metricSpy).toHaveBeenCalledWith(\n METRIC_EVENT.CONNECTION_ERROR,\n CONNECTION_ACTION.MERCURY_DOWN,\n METRIC_TYPE.BEHAVIORAL,\n expect.any(String),\n ''\n );\n });\n\n it('handles reconnection with no active calls after network flap, once mercury comes back up', async () => {\n const handleConnectionRestoreSpy = jest.spyOn(reg, 'handleConnectionRestoration');\n\n callingClient['isNetworkDown'] = true;\n callingClient['networkDownTimestamp'] = '2023-01-01T00:00:00.000Z';\n callingClient['networkUpTimestamp'] = '2023-01-01T00:01:00.000Z';\n\n const mercuryOnlineCb = webex.internal.mercury.on.mock.calls[2][1];\n await mercuryOnlineCb();\n\n // Run the interval once\n jest.advanceTimersByTime(NETWORK_FLAP_TIMEOUT + 100);\n\n await flushPromises();\n\n expect(handleConnectionRestoreSpy).toHaveBeenCalledWith(true);\n expect(logSpy).toHaveBeenCalledWith(\n 'Network is up again, re-registering with Webex Calling if needed',\n {\n file: REGISTRATION_FILE,\n method: 'handleConnectionRestoration',\n }\n );\n expect(deRegSpy).toHaveBeenCalledWith();\n expect(restoreSpy).toHaveBeenCalledWith('handleConnectionRestoration');\n expect(restartRegisterSpy).toHaveBeenCalledWith('handleConnectionRestoration');\n expect(registerSpy).toHaveBeenCalledWith('handleConnectionRestoration', [\n reg.getActiveMobiusUrl(),\n ]);\n expect(registerSpy).toHaveBeenCalledWith('handleConnectionRestoration', [primaryUrl]);\n expect(metricSpy).toHaveBeenCalledWith(\n METRIC_EVENT.CONNECTION_ERROR,\n CONNECTION_ACTION.NETWORK_FLAP,\n METRIC_TYPE.BEHAVIORAL,\n '2023-01-01T00:00:00.000Z',\n '2023-01-01T00:01:00.000Z'\n );\n });\n\n it('no reconnection for idle registration with no active calls after network flap, once mercury comes back up', async () => {\n const handleConnectionRestoreSpy = jest.spyOn(reg, 'handleConnectionRestoration');\n\n callingClient['isNetworkDown'] = true;\n callingClient['networkDownTimestamp'] = '2023-01-01T00:00:00.000Z';\n callingClient['networkUpTimestamp'] = '2023-01-01T00:01:00.000Z';\n reg.setStatus(RegistrationStatus.IDLE);\n\n const mercuryOnlineCb = webex.internal.mercury.on.mock.calls[2][1];\n await mercuryOnlineCb();\n\n // Run the interval once\n jest.advanceTimersByTime(NETWORK_FLAP_TIMEOUT + 100);\n\n await flushPromises();\n\n expect(handleConnectionRestoreSpy).not.toHaveBeenCalledWith(true);\n expect(logSpy).not.toHaveBeenCalledWith(\n 'Network is up again, re-registering with Webex Calling if needed',\n {\n file: REGISTRATION_FILE,\n method: 'handleConnectionRestoration',\n }\n );\n expect(deRegSpy).not.toHaveBeenCalledWith();\n expect(restoreSpy).not.toHaveBeenCalledWith('handleConnectionRestoration');\n expect(restartRegisterSpy).not.toHaveBeenCalledWith('handleConnectionRestoration');\n expect(registerSpy).not.toHaveBeenCalledWith('handleConnectionRestoration', [\n reg.getActiveMobiusUrl(),\n ]);\n expect(registerSpy).not.toHaveBeenCalledWith('handleConnectionRestoration', [primaryUrl]);\n expect(metricSpy).toHaveBeenCalledWith(\n METRIC_EVENT.CONNECTION_ERROR,\n CONNECTION_ACTION.NETWORK_FLAP,\n METRIC_TYPE.BEHAVIORAL,\n '2023-01-01T00:00:00.000Z',\n '2023-01-01T00:01:00.000Z'\n );\n });\n\n it('handle calls status check once mercury comes back up after a network flap', async () => {\n callingClient['isNetworkDown'] = true;\n const call = callingClient['callManager'].createCall();\n const callKeepaliveSpy = jest\n .spyOn(call, 'postStatus')\n .mockRejectedValueOnce(new Error('keepalive fail'));\n const deleteSpy = jest.spyOn(call, 'delete');\n expect(Object.keys(callingClient['callManager'].getActiveCalls()).length).toBe(1);\n\n const mercuryOnlineCb = webex.internal.mercury.on.mock.calls[2][1];\n await mercuryOnlineCb();\n\n expect(callKeepaliveSpy).toHaveBeenCalled();\n\n await flushPromises();\n\n expect(warnSpy).toHaveBeenCalledWith(expect.stringContaining('Call Keepalive failed'), {\n file: CALLING_CLIENT_FILE,\n method: 'checkCallStatus',\n });\n expect(call['callStateMachine'].state.value).toBe('S_CALL_CLEARED');\n expect(deleteSpy).toHaveBeenCalled();\n\n expect(Object.keys(reg.callManager.getActiveCalls()).length).toBe(0);\n expect(metricSpy).toHaveBeenCalledWith(\n METRIC_EVENT.CONNECTION_ERROR,\n CONNECTION_ACTION.NETWORK_FLAP,\n METRIC_TYPE.BEHAVIORAL,\n expect.any(String),\n expect.any(String)\n );\n });\n\n it('handle calls status check once mercury comes back up with stable network', async () => {\n const call = callingClient['callManager'].createCall();\n const callKeepaliveSpy = jest\n .spyOn(call, 'postStatus')\n .mockRejectedValueOnce(new Error('keepalive fail'));\n const deleteSpy = jest.spyOn(call, 'delete');\n expect(Object.keys(callingClient['callManager'].getActiveCalls()).length).toBe(1);\n\n const mercuryOnlineCb = webex.internal.mercury.on.mock.calls[2][1];\n await mercuryOnlineCb();\n\n expect(callKeepaliveSpy).toHaveBeenCalled();\n\n await flushPromises();\n\n expect(warnSpy).toHaveBeenCalledWith(expect.stringContaining('Call Keepalive failed'), {\n file: CALLING_CLIENT_FILE,\n method: 'checkCallStatus',\n });\n expect(call['callStateMachine'].state.value).toBe('S_CALL_CLEARED');\n expect(deleteSpy).toHaveBeenCalled();\n\n expect(Object.keys(reg.callManager.getActiveCalls()).length).toBe(0);\n expect(metricSpy).toHaveBeenCalledWith(\n METRIC_EVENT.CONNECTION_ERROR,\n CONNECTION_ACTION.MERCURY_UP,\n METRIC_TYPE.BEHAVIORAL,\n expect.any(String),\n expect.any(String)\n );\n });\n });\n\n // Calling related test cases\n describe('Calling tests', () => {\n const mutex = new Mutex();\n const userId = webex.internal.device.userId;\n const clientDeviceUri = webex.internal.device.url;\n const mobiusUris = filterMobiusUris(getMobiusDiscoveryResponse(), URL);\n const primaryMobiusUris = jest.fn(() => mobiusUris.primary);\n const backupMobiusUris = jest.fn(() => mobiusUris.backup);\n\n let callingClient;\n let line: Line;\n\n beforeAll(async () => {\n callingClient = await createClient(webex);\n line = new Line(\n userId,\n clientDeviceUri,\n mutex,\n primaryMobiusUris(),\n backupMobiusUris(),\n LOGGER.INFO\n );\n const calls = Object.values(callManager.getActiveCalls());\n calls.forEach((call) => {\n call.end();\n });\n });\n\n afterAll(() => {\n callingClient.removeAllListeners();\n callManager.removeAllListeners();\n });\n\n it('verify calling client object', () => {\n expect(callingClient.getSDKConnector().getWebex().internal.device.userId).toBe(\n '8a67806f-fc4d-446b-a131-31e71ea5b0e9'\n );\n });\n\n it('returns undefined when there is no connected call', () => {\n line.register();\n line.makeCall({address: '123456', type: CallType.URI});\n expect(callingClient.getConnectedCall()).toEqual(undefined);\n });\n\n it('returns the connected call', () => {\n line.register();\n const mockCall = line.makeCall({address: '1234', type: CallType.URI});\n const mockCall2 = line.makeCall({address: '5678', type: CallType.URI});\n // Connected call\n mockCall['connected'] = true;\n mockCall['earlyMedia'] = false;\n mockCall['callStateMachine'].state.value = 'S_CALL_ESTABLISHED';\n\n // Held call\n mockCall2['connected'] = true;\n mockCall2['held'] = true;\n mockCall2['earlyMedia'] = false;\n mockCall2['callStateMachine'].state.value = 'S_CALL_HOLD';\n\n const mockActiveCalls: Record<string, ICall> = {\n mockCorrelationId: mockCall as ICall,\n mockCorrelationId2: mockCall2 as ICall,\n };\n\n jest.spyOn(callManager, 'getActiveCalls').mockReturnValue(mockActiveCalls);\n expect(callingClient.getConnectedCall()).toEqual(mockCall);\n });\n it('returns all active calls', () => {\n callingClient.lineDict = {\n mockDeviceId: {lineId: 'mockLineId'} as ILine,\n mockDeviceId2: {lineId: 'mockLineId2'} as ILine,\n };\n\n const mockCall = line.makeCall({address: '1234', type: CallType.URI});\n const mockCall2 = line.makeCall({address: '5678', type: CallType.URI});\n const mockCall3 = line.makeCall({address: '9101', type: CallType.URI});\n\n mockCall.lineId = 'mockLineId';\n mockCall2.lineId = 'mockLineId2';\n mockCall3.lineId = 'mockLineId2';\n\n const mockActiveCalls: Record<string, ICall> = {\n mockCorrelationId: mockCall as ICall,\n mockCorrelationId2: mockCall2 as ICall,\n mockCorrelationId3: mockCall3 as ICall,\n };\n\n jest.spyOn(callManager, 'getActiveCalls').mockReturnValue(mockActiveCalls);\n expect(callingClient.getActiveCalls()).toEqual({\n mockLineId: [mockCall],\n mockLineId2: [mockCall2, mockCall3],\n });\n });\n });\n\n describe('Call Session Event test', () => {\n const mockOn = webex.internal.mercury.on;\n let callingClient: ICallingClient;\n\n beforeEach(async () => {\n callingClient = await createClient(webex, {logger: {level: LOGGER.INFO}});\n });\n\n afterEach(() => {\n callingClient.removeAllListeners();\n callManager.removeAllListeners();\n });\n\n it('verify the recent user session event ', (done) => {\n expect.assertions(2);\n callingClient.on(CALLING_CLIENT_EVENT_KEYS.USER_SESSION_INFO, (event: CallSessionEvent) => {\n expect(event.data).toEqual(MOCK_SESSION_EVENT.data);\n done();\n });\n\n expect(mockOn.mock.calls[0][0]).toEqual(MOBIUS_EVENT_KEYS.CALL_SESSION_EVENT_INCLUSIVE);\n const callSessionCallback = mockOn.mock.calls[0][1];\n\n callSessionCallback(MOCK_SESSION_EVENT);\n });\n\n it('drop the recent user session if there is no webex calling type', (done) => {\n expect.assertions(2);\n callingClient.on(CALLING_CLIENT_EVENT_KEYS.USER_SESSION_INFO, (event: CallSessionEvent) => {\n expect(event.data.userSessions.userSessions.length).toEqual(1);\n done();\n });\n\n expect(mockOn.mock.calls[0][0]).toEqual(MOBIUS_EVENT_KEYS.CALL_SESSION_EVENT_INCLUSIVE);\n const callSessionCallback = mockOn.mock.calls[0][1];\n\n callSessionCallback(MOCK_MULTIPLE_SESSIONS_EVENT);\n });\n });\n\n describe('Mobius async_event routing', () => {\n let callingClient: ICallingClient;\n let asyncEventCallback;\n let mobiusSocketMock;\n\n beforeEach(async () => {\n mobiusSocketMock = (\n jest.requireMock('@webex/internal-plugin-mobius-socket') as {\n getMobiusSocketInstance: (w: unknown) => unknown;\n }\n ).getMobiusSocketInstance(webex) as {\n on: jest.Mock;\n off: jest.Mock;\n };\n (mobiusSocketMock.on as jest.Mock).mockClear();\n (mobiusSocketMock.off as jest.Mock).mockClear();\n\n callingClient = await createClient(webex, {\n logger: {level: LOGGER.INFO},\n isMobiusSocketEnabled: true,\n });\n\n const asyncEventOnCall = (mobiusSocketMock.on as jest.Mock).mock.calls.find(\n (call) => call[0] === 'async_event'\n );\n asyncEventCallback = asyncEventOnCall[1];\n });\n\n afterEach(() => {\n callingClient.removeAllListeners();\n callManager.removeAllListeners();\n });\n\n it('routes mobius.* async events to callManager', async () => {\n const callEventSpy = jest\n .spyOn(callingClient['callManager'], 'dequeueWsEvents')\n .mockImplementation(() => undefined);\n\n await asyncEventCallback({\n type: 'async_event',\n data: {\n eventType: 'mobius.call',\n callId: 'fcf86aa5-5539-4c9f-8b72-667786ae9b6c',\n callUrl: 'https://mobius-a.wbx2.com/api/v1/calling/web/devices/d1/calls/c1',\n deviceId: 'd1',\n correlationId: 'corr-1',\n },\n });\n\n expect(callEventSpy).toHaveBeenCalledWith(\n expect.objectContaining({\n type: 'async_event',\n data: expect.objectContaining({\n eventType: 'mobius.call',\n }),\n })\n );\n });\n });\n\n describe('getDevices', () => {\n let callingClient: ICallingClient;\n const primaryMobius = 'https://mobius.primary/api/v1/calling/web/';\n const backupMobius = 'https://mobius.backup/api/v1/calling/web/';\n\n beforeEach(async () => {\n callingClient = await createClient(webex, {logger: {level: LOGGER.INFO}});\n callingClient.primaryMobiusUris = [primaryMobius];\n callingClient.backupMobiusUris = [backupMobius];\n (webex.request as jest.Mock).mockClear();\n });\n\n afterEach(() => {\n callingClient.removeAllListeners();\n });\n\n it('fetches devices for the provided userId', async () => {\n const devices = [\n {\n deviceId: 'device-1',\n uri: 'https://mobius.test/api/v1/calling/web/devices/device-1',\n status: 'ACTIVE',\n lastSeen: '2024-01-01T00:00:00Z',\n addresses: [],\n clientDeviceUri: 'client-device-uri',\n },\n ];\n\n const responsePayload = <WebexRequestPayload>(<unknown>{\n statusCode: 200,\n body: {userId: 'user-123', devices},\n });\n\n (webex.request as jest.Mock).mockResolvedValue(responsePayload);\n\n const response = await callingClient.getDevices('user-123');\n\n expect(webex.request).toHaveBeenCalledWith({\n uri: 'https://mobius.primary/api/v1/calling/web/devices?userid=user-123',\n method: HTTP_METHODS.GET,\n service: ALLOWED_SERVICES.MOBIUS,\n headers: {\n [CISCO_DEVICE_URL]: webex.internal.device.url,\n [SPARK_USER_AGENT]: CALLING_USER_AGENT,\n },\n });\n\n expect(response).toEqual(devices);\n });\n\n it('falls back to backup Mobius when primary fails', async () => {\n const devices = [\n {\n deviceId: 'device-2',\n uri: 'https://mobius.backup/api/v1/calling/web/devices/device-2',\n status: 'ACTIVE',\n lastSeen: '2024-01-01T00:00:00Z',\n addresses: [],\n clientDeviceUri: 'client-device-uri',\n },\n ];\n\n const failurePayload = {\n statusCode: 404,\n };\n\n const responsePayload = <WebexRequestPayload>(<unknown>{\n statusCode: 200,\n body: {userId: 'user-123', devices},\n });\n\n (webex.request as jest.Mock)\n .mockRejectedValueOnce(failurePayload)\n .mockResolvedValueOnce(responsePayload);\n\n const response = await callingClient.getDevices('user-123');\n\n const requestCalls = (webex.request as jest.Mock).mock.calls;\n expect(requestCalls[0][0]).toEqual({\n uri: 'https://mobius.primary/api/v1/calling/web/devices?userid=user-123',\n method: HTTP_METHODS.GET,\n service: ALLOWED_SERVICES.MOBIUS,\n headers: {\n [CISCO_DEVICE_URL]: webex.internal.device.url,\n [SPARK_USER_AGENT]: CALLING_USER_AGENT,\n },\n });\n\n expect(requestCalls[1][0]).toEqual({\n uri: 'https://mobius.backup/api/v1/calling/web/devices?userid=user-123',\n method: HTTP_METHODS.GET,\n service: ALLOWED_SERVICES.MOBIUS,\n headers: {\n [CISCO_DEVICE_URL]: webex.internal.device.url,\n [SPARK_USER_AGENT]: CALLING_USER_AGENT,\n },\n });\n\n expect(response).toEqual(devices);\n });\n });\n\n describe('windowsChromiumIceWarmup', () => {\n let origRTCPeerConnection: any;\n\n beforeAll(() => {\n origRTCPeerConnection = global.RTCPeerConnection;\n // Minimal mock for RTCPeerConnection\n global.RTCPeerConnection = class {\n static instances: any[] = [];\n iceGatheringState = 'complete';\n localDescription = null;\n remoteDescription = null;\n onicecandidate: ((e: any) => void) | null = null;\n constructor() {\n (this.constructor as any).instances.push(this);\n }\n\n createDataChannel() {\n return {};\n }\n\n addTransceiver() {\n return {};\n }\n\n createOffer() {\n return Promise.resolve({sdp: 'offer', type: 'offer'});\n }\n\n setLocalDescription(desc: any) {\n this.localDescription = desc;\n\n return Promise.resolve();\n }\n\n setRemoteDescription(desc: any) {\n this.remoteDescription = desc;\n\n return Promise.resolve();\n }\n\n createAnswer() {\n return Promise.resolve({sdp: 'answer', type: 'answer'});\n }\n\n addIceCandidate() {\n return Promise.resolve();\n }\n\n close() {}\n addEventListener() {}\n removeEventListener() {}\n };\n });\n\n afterAll(() => {\n global.RTCPeerConnection = origRTCPeerConnection;\n });\n\n it('should complete without throwing', async () => {\n await expect(windowsChromiumIceWarmup({})).resolves.not.toThrow();\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_asyncMutex","require","Media","_interopRequireWildcard","_types","_testUtil","_types2","_types3","_Logger","_interopRequireDefault","_CallingClient","_Utils","utils","_callManager","_constants","_callRecordFixtures","_callingClientFixtures","_line","_registerFixtures","_constants2","_types4","_windowsChromiumIceWarmupUtils","_request","e","t","_WeakMap","r","n","__esModule","o","i","f","__proto__","default","_typeof","has","get","set","_t5","hasOwnProperty","call","_Object$defineProperty","_Object$getOwnPropertyDescriptor","ownKeys","_Object$keys2","_Object$getOwnPropertySymbols","filter","enumerable","push","apply","_objectSpread","arguments","length","Object","forEach","_defineProperty2","_Object$getOwnPropertyDescriptors","_Object$defineProperties","jest","mock","getMobiusSocketInstance","fn","mockReturnValue","sendWssRequest","connect","on","off","global","crypto","randomUUID","spyOn","mockResolvedValue","undefined","describe","handleErrorSpy","setLoggerSpy","webex","getTestUtilsWebex","internal","services","mockCatalogUS","getMobiusClusters","mockUSServiceHosts","defaultServiceIndicator","ServiceIndicator","CALLING","callManager","getCallManager","infoSpy","log","logSpy","warnSpy","originalProcessNextTick","process","nextTick","flushPromises","_promise","resolve","beforeEach","APIRequest","resetInstance","getInstance","isMobiusSocketEnabled","afterAll","removeAllListeners","it","_asyncToGenerator2","_regenerator","mark","_callee","callingClient","wrap","_context","prev","next","_hostCatalog","_serviceUrls","mobius","createClient","logger","level","LOGGER","INFO","sent","expect","toHaveBeenCalledTimes","toStrictEqual","stop","_callee2","_context2","mockCatalogEU","mockEUServiceHosts","toBe","afterEach","_callee4","_context4","_callee3","_context3","toBeTruthy","not","toThrow","Error","_callee6","serviceDataObj","_context6","indicator","domain","_callee5","_context5","serviceData","_callee7","_t","_context7","message","toEqual","assertions","_callee8","_t2","_context8","_callee0","_context0","_callee9","_context9","_callee1","_t3","_context1","CONTACT_CENTER","_callee11","_context11","_callee10","_context10","_callee12","_context12","getLoggingLevel","clearAllTimers","clearAllMocks","useRealTimers","_callee13","_context13","request","mockResolvedValueOnce","regionPayload","discoveryPayload","toBeCalledTimes","primaryMobiusUris","primaryUrl","toBeCalled","nthCalledWith","method","uri","concat","DISCOVERY_URL","addAuthHeader","headers","SPARK_USER_AGENT","getMockRequestTemplate","URL_ENDPOINT","regionBody","clientRegion","countryCode","_callee14","failurePayload","_context14","statusCode","mockRejectedValueOnce","toBeCalledWith","anything","file","CALLING_CLIENT_FILE","objectContaining","_callee15","_context15","mockReset","discovery","region","country","toHaveBeenCalledWith","METHOD_START_MESSAGE","toBeCalledOnceWith","toHaveBeenCalled","mobiusCluster","checkCluster","_ref16","_callee16","mockServiceHosts","mockCatalog","_context16","_x","_x2","each","_ref17","_callee17","clusterName","_t4","_context17","abrupt","mockIntServiceHosts","mockCatalogUSInt","mockEUIntServiceHosts","mockCatalogEUInt","_x3","line","_callee18","_context18","_values","lineDict","_keys","getLines","reg","windowEventSpy","deRegSpy","restoreSpy","restartRegisterSpy","registerSpy","metricSpy","_callee19","_context19","useFakeTimers","registrationPayload","window","registration","register","callCollection","_callee20","g","clearKeepaliveSpy","offlineCb","_context20","fetch","calls","stringContaining","_callee21","_context21","any","_callee22","onlineCb","_context22","String","_callee23","mercuryOfflineCb","_context23","mercury","METRIC_EVENT","CONNECTION_ERROR","CONNECTION_ACTION","MERCURY_DOWN","METRIC_TYPE","BEHAVIORAL","_callee24","handleConnectionRestoreSpy","mercuryOnlineCb","_context24","advanceTimersByTime","NETWORK_FLAP_TIMEOUT","REGISTRATION_FILE","getActiveMobiusUrl","NETWORK_FLAP","_callee25","_context25","setStatus","RegistrationStatus","IDLE","_callee26","callKeepaliveSpy","deleteSpy","_context26","createCall","getActiveCalls","state","value","_callee27","_context27","MERCURY_UP","mutex","Mutex","userId","device","clientDeviceUri","url","mobiusUris","filterMobiusUris","getMobiusDiscoveryResponse","URL","primary","backupMobiusUris","backup","beforeAll","_callee28","_context28","Line","end","getSDKConnector","getWebex","makeCall","address","type","CallType","URI","getConnectedCall","mockCall","mockCall2","mockActiveCalls","mockCorrelationId","mockCorrelationId2","mockDeviceId","lineId","mockDeviceId2","mockCall3","mockCorrelationId3","mockLineId","mockLineId2","mockOn","_callee29","_context29","done","CALLING_CLIENT_EVENT_KEYS","USER_SESSION_INFO","event","data","MOCK_SESSION_EVENT","MOBIUS_EVENT_KEYS","CALL_SESSION_EVENT_INCLUSIVE","callSessionCallback","userSessions","MOCK_MULTIPLE_SESSIONS_EVENT","asyncEventCallback","mobiusSocketMock","_callee30","asyncEventOnCall","_context30","requireMock","mockClear","find","_callee31","callEventSpy","_context31","mockImplementation","eventType","callId","callUrl","deviceId","correlationId","primaryMobius","backupMobius","_callee32","_context32","_callee33","devices","responsePayload","response","_context33","status","lastSeen","addresses","body","getDevices","HTTP_METHODS","GET","service","ALLOWED_SERVICES","MOBIUS","CISCO_DEVICE_URL","CALLING_USER_AGENT","_callee34","requestCalls","_context34","origRTCPeerConnection","_Class","RTCPeerConnection","_classCallCheck2","constructor","instances","_createClass2","key","createDataChannel","addTransceiver","createOffer","sdp","setLocalDescription","desc","localDescription","setRemoteDescription","remoteDescription","createAnswer","addIceCandidate","close","addEventListener","removeEventListener","_callee35","_context35","windowsChromiumIceWarmup","resolves"],"sources":["CallingClient.test.ts"],"sourcesContent":["import {Mutex} from 'async-mutex';\nimport * as Media from '@webex/internal-media-core';\nimport {LOGGER} from '../Logger/types';\nimport {\n getTestUtilsWebex,\n getMockRequestTemplate,\n getMobiusDiscoveryResponse,\n} from '../common/testUtil';\nimport {\n CallType,\n RegistrationStatus,\n ServiceIndicator,\n ALLOWED_SERVICES,\n HTTP_METHODS,\n WebexRequestPayload,\n} from '../common/types';\n/* eslint-disable dot-notation */\nimport {CALLING_CLIENT_EVENT_KEYS, CallSessionEvent, MOBIUS_EVENT_KEYS} from '../Events/types';\nimport log from '../Logger';\nimport {createClient} from './CallingClient';\nimport {ICallingClient} from './types';\nimport * as utils from '../common/Utils';\nimport {getCallManager} from './calling/callManager';\nimport {\n CALLING_CLIENT_FILE,\n DISCOVERY_URL,\n NETWORK_FLAP_TIMEOUT,\n REGISTRATION_FILE,\n CALLING_USER_AGENT,\n CISCO_DEVICE_URL,\n SPARK_USER_AGENT,\n URL_ENDPOINT,\n} from './constants';\nimport {MOCK_MULTIPLE_SESSIONS_EVENT, MOCK_SESSION_EVENT} from './callRecordFixtures';\nimport {ILine} from './line/types';\nimport {\n regionBody,\n regionPayload,\n primaryUrl,\n discoveryPayload,\n registrationPayload,\n mockEUServiceHosts,\n mockIntServiceHosts,\n mockEUIntServiceHosts,\n mockCatalogEU,\n mockCatalogUSInt,\n mockCatalogUS,\n mockCatalogEUInt,\n mockUSServiceHosts,\n} from './callingClientFixtures';\nimport Line from './line';\nimport {filterMobiusUris} from '../common/Utils';\nimport {URL} from './registration/registerFixtures';\nimport {ICall} from './calling/types';\nimport {ServiceHost} from '../SDKConnector/types';\nimport {METHOD_START_MESSAGE} from '../common/constants';\nimport {METRIC_EVENT, CONNECTION_ACTION, METRIC_TYPE} from '../Metrics/types';\nimport windowsChromiumIceWarmup from './windowsChromiumIceWarmupUtils';\nimport {APIRequest} from './utils/request';\n\njest.mock('@webex/internal-plugin-mobius-socket', () => ({\n getMobiusSocketInstance: jest.fn().mockReturnValue({\n sendWssRequest: jest.fn(),\n connect: jest.fn(),\n on: jest.fn(),\n off: jest.fn(),\n }),\n}));\n\nglobal.crypto = {\n randomUUID: () => '12345678-1234-5678-1234-567812345678',\n} as unknown as Crypto;\n\njest.spyOn(utils, 'uploadLogs').mockResolvedValue(undefined);\n\ndescribe('CallingClient Tests', () => {\n // Common initializers\n\n const handleErrorSpy = jest.spyOn(utils, 'handleCallingClientErrors');\n const setLoggerSpy = jest.spyOn(Media, 'setLogger');\n const webex = getTestUtilsWebex();\n webex.internal.services['_hostCatalog'] = mockCatalogUS;\n webex.internal.services.getMobiusClusters = jest.fn().mockReturnValue(mockUSServiceHosts);\n const defaultServiceIndicator = ServiceIndicator.CALLING;\n const callManager = getCallManager(webex, defaultServiceIndicator);\n\n const infoSpy = jest.spyOn(log, 'info');\n const logSpy = jest.spyOn(log, 'log');\n const warnSpy = jest.spyOn(log, 'warn');\n\n const originalProcessNextTick = process.nextTick;\n function flushPromises() {\n return new Promise((resolve) => {\n originalProcessNextTick(resolve);\n });\n }\n\n beforeEach(() => {\n APIRequest.resetInstance();\n APIRequest.getInstance({webex, isMobiusSocketEnabled: false});\n });\n\n describe('CallingClient pick Mobius cluster using Service Host Tests', () => {\n afterAll(() => {\n callManager.removeAllListeners();\n webex.internal.services['_serviceUrls']['mobius'] =\n 'https://mobius.aintgen-a-1.int.infra.webex.com/api/v1';\n webex.internal.services['_hostCatalog'] = mockCatalogUS;\n });\n\n it('should use default mobius service host when Service URL is invalid', async () => {\n webex.internal.services._hostCatalog = mockCatalogUS;\n webex.internal.services._serviceUrls.mobius = 'invalid-url';\n\n const callingClient = await createClient(webex, {logger: {level: LOGGER.INFO}});\n expect(setLoggerSpy).toHaveBeenCalledTimes(1);\n expect(callingClient['mobiusClusters']).toStrictEqual(mockUSServiceHosts);\n });\n\n it('should set mobiusServiceHost correctly when URL is valid', async () => {\n webex.internal.services._hostCatalog = mockCatalogEU;\n webex.internal.services.getMobiusClusters = jest.fn().mockReturnValue(mockEUServiceHosts);\n webex.internal.services['_serviceUrls']['mobius'] =\n 'https://mobius-eu-central-1.prod.infra.webex.com/api/v1';\n\n const callingClient = await createClient(webex, {logger: {level: LOGGER.INFO}});\n\n expect(callingClient['mobiusHost']).toBe(\n 'https://mobius-eu-central-1.prod.infra.webex.com/api/v1'\n );\n expect(callingClient['mobiusClusters']).toStrictEqual(mockEUServiceHosts);\n });\n });\n\n describe('ServiceData tests', () => {\n let callingClient: ICallingClient | undefined;\n\n afterEach(() => {\n callManager.removeAllListeners();\n callingClient = undefined;\n });\n\n /**\n * No input sdk config to callingClient, it should default to service type\n * calling and empty domain value.\n */\n it('Verify valid calling serviceData with no input sdk config', async () => {\n expect(async () => {\n callingClient = await createClient(webex);\n expect(callingClient).toBeTruthy();\n }).not.toThrow(Error);\n });\n\n /**\n * Input sdk config to callingClient with serviceData carrying empty string for\n * both indicator and domain in it.\n *\n * It should default to service type calling and empty domain value.\n *\n */\n it('Verify invalid empty service indicator, empty domain', async () => {\n /* eslint-disable @typescript-eslint/no-explicit-any */\n const serviceDataObj: any = {indicator: '', domain: ''};\n\n expect(async () => {\n callingClient = await createClient(webex, {serviceData: serviceDataObj});\n expect(callingClient).toBeTruthy();\n }).not.toThrow(Error);\n });\n\n /**\n * Input sdk config to callingClient with serviceData carrying invalid value for indicator\n * and valid domain type string for domain field in it.\n *\n * It should throw error and abort execution as indicator value is invalid.\n *\n * INDICATOR value MUST MATCH with one of the values in ServiceIndicator enum.\n */\n it('Verify invalid service indicator, valid domain', async () => {\n /* eslint-disable @typescript-eslint/no-explicit-any */\n const serviceDataObj: any = {indicator: 'test', domain: 'test.example.com'};\n\n try {\n callingClient = await createClient(webex, {serviceData: serviceDataObj});\n } catch (e) {\n expect(e.message).toEqual(\n 'Invalid service indicator, Allowed values are: calling, contactcenter and guestcalling'\n );\n }\n expect.assertions(1);\n });\n\n /**\n * Input sdk config to callingClient with serviceData carrying valid value for indicator\n * 'calling', but an invalid domain type string for domain field in it.\n *\n * It should throw error and abort execution as domain value is invalid.\n *\n * DOMAIN field for service type calling is allowed to be empty but if it carries a non-empty\n * string then it must be of valid domain type.\n */\n it('CALLING: verify invalid service domain', async () => {\n const serviceDataObj = {indicator: ServiceIndicator.CALLING, domain: 'test'};\n\n try {\n callingClient = await createClient(webex, {serviceData: serviceDataObj});\n } catch (e) {\n expect(e.message).toEqual('Invalid service domain.');\n }\n expect.assertions(1);\n });\n\n /**\n * Input sdk config to callingClient with serviceData carrying valid value for indicator\n * 'calling', and an empty string for domain field in it.\n *\n * Execution should proceed properly and createRegistration should be called with same serviceData.\n *\n * DOMAIN field for service type 'calling' is allowed to be empty.\n */\n it('CALLING: verify valid empty service domain', async () => {\n const serviceDataObj = {indicator: ServiceIndicator.CALLING, domain: ''};\n\n expect(async () => {\n callingClient = await createClient(webex, {serviceData: serviceDataObj});\n expect(callingClient).toBeTruthy();\n }).not.toThrow(Error);\n });\n\n /**\n * Input sdk config to callingClient with serviceData carrying valid value for indicator\n * 'contactcenter', but an empty string for domain field in it.\n *\n * It should throw error and abort execution as domain value is invalid.\n *\n * DOMAIN field for service type 'contactcenter' must carry a non-empty valid domain type string.\n */\n it('ContactCenter: verify empty invalid service domain', async () => {\n const serviceDataObj = {indicator: ServiceIndicator.CONTACT_CENTER, domain: ''};\n\n try {\n callingClient = await createClient(webex, {serviceData: serviceDataObj});\n } catch (e) {\n expect(e.message).toEqual('Invalid service domain.');\n }\n expect.assertions(1);\n });\n\n /**\n * Input sdk config to callingClient with serviceData carrying valid value for indicator\n * 'contactcenter' , and a valid domain type string for domain field in it.\n *\n * Execution should proceed properly and createRegistration should be called with same serviceData.\n *\n * DOMAIN field for service type 'contactcenter' must carry a non-empty valid domain type string.\n */\n it('ContactCenter: verify valid service domain', async () => {\n const serviceDataObj = {\n indicator: ServiceIndicator.CONTACT_CENTER,\n domain: 'test.example.com',\n };\n\n expect(async () => {\n callingClient = await createClient(webex, {serviceData: serviceDataObj});\n expect(callingClient).toBeTruthy();\n }).not.toThrow(Error);\n });\n\n it('Get current log level', async () => {\n callingClient = await createClient(webex, {logger: {level: LOGGER.INFO}});\n expect(callingClient).toBeTruthy();\n expect(callingClient.getLoggingLevel).toBeTruthy();\n expect(callingClient.getLoggingLevel()).toEqual(LOGGER.INFO);\n });\n });\n\n describe('Mobius Server discovery tests', () => {\n let callingClient;\n\n afterEach(() => {\n jest.clearAllTimers();\n jest.clearAllMocks();\n callingClient.removeAllListeners();\n callManager.removeAllListeners();\n callingClient = undefined;\n jest.useRealTimers();\n });\n\n it('verify successful mobius server url discovery', async () => {\n webex.request.mockResolvedValueOnce(regionPayload).mockResolvedValueOnce(discoveryPayload);\n\n callingClient = await createClient(webex, {logger: {level: LOGGER.INFO}});\n\n expect(webex.request).toBeCalledTimes(2);\n expect(callingClient.primaryMobiusUris).toEqual([primaryUrl]);\n expect(handleErrorSpy).not.toBeCalled();\n\n expect(webex.request).nthCalledWith(1, {\n method: 'GET',\n uri: `${DISCOVERY_URL}`,\n addAuthHeader: false,\n headers: {\n [SPARK_USER_AGENT]: null,\n },\n });\n\n expect(webex.request).nthCalledWith(2, {\n method: 'GET',\n ...getMockRequestTemplate(),\n uri: `${callingClient['mobiusHost']}${URL_ENDPOINT}?regionCode=${regionBody.clientRegion}&countryCode=${regionBody.countryCode}`,\n });\n });\n\n it('when region discovery succeeds but region based mobius url discovery fails with final error', async () => {\n const failurePayload = {\n statusCode: 401,\n };\n\n webex.request.mockResolvedValueOnce(regionPayload).mockRejectedValueOnce(failurePayload);\n\n callingClient = await createClient(webex, {logger: {level: LOGGER.INFO}});\n\n expect(handleErrorSpy).toBeCalledWith(failurePayload, expect.anything(), {\n file: CALLING_CLIENT_FILE,\n method: 'getMobiusServers',\n });\n expect(webex.request).toBeCalledTimes(2);\n\n expect(callingClient.primaryMobiusUris).toEqual([\n `${callingClient['mobiusHost']}${URL_ENDPOINT}`,\n ]);\n\n expect(webex.request).nthCalledWith(1, {\n method: 'GET',\n uri: `${DISCOVERY_URL}`,\n addAuthHeader: false,\n headers: {\n [SPARK_USER_AGENT]: null,\n },\n });\n\n expect(warnSpy).toBeCalledWith(\n `Couldn't resolve the region and country code. Defaulting to the catalog entries to discover mobius servers`,\n expect.objectContaining({\n file: CALLING_CLIENT_FILE,\n method: 'getMobiusServers',\n })\n );\n });\n\n it('Verify successful mobius server url discovery after initializing callingClient through a config', async () => {\n infoSpy.mockReset();\n webex.request.mockResolvedValueOnce(discoveryPayload);\n\n callingClient = await createClient(webex, {\n discovery: {\n region: 'AP-SOUTHEAST',\n country: 'IN',\n },\n logger: {\n level: LOGGER.INFO,\n },\n });\n\n expect(callingClient.primaryMobiusUris).toEqual([primaryUrl]);\n\n expect(infoSpy).toHaveBeenCalledWith(METHOD_START_MESSAGE, {\n file: 'CallingClient',\n method: 'getMobiusServers',\n });\n\n expect(webex.request).toBeCalledOnceWith({\n ...getMockRequestTemplate(),\n uri: `${callingClient['mobiusHost']}${URL_ENDPOINT}?regionCode=${regionBody.clientRegion}&countryCode=${regionBody.countryCode}`,\n method: 'GET',\n });\n\n expect(handleErrorSpy).not.toHaveBeenCalled();\n });\n });\n\n describe('Testing each cluster present withing host catalog', () => {\n const mobiusCluster = [\n 'mobius-eu-central-1.prod.infra.webex.com',\n 'mobius-us-east-1.int.infra.webex.com',\n 'mobius-eu-central-1.int.infra.webex.com',\n ];\n\n const checkCluster = async (\n mockServiceHosts: ServiceHost[],\n mockCatalog: Record<string, ServiceHost[]>\n ) => {\n webex.internal.services._hostCatalog = mockCatalog;\n webex.internal.services.getMobiusClusters = jest.fn().mockReturnValue(mockServiceHosts);\n const callingClient = await createClient(webex, {logger: {level: LOGGER.INFO}});\n\n expect(callingClient['mobiusClusters']).toStrictEqual(mockServiceHosts);\n };\n\n it.each(mobiusCluster)('%s', async (clusterName) => {\n switch (clusterName) {\n case 'mobius-eu-central-1.prod.infra.webex.com':\n checkCluster(mockEUServiceHosts, mockCatalogEU);\n break;\n case 'mobius-us-east-1.int.infra.webex.com':\n checkCluster(mockIntServiceHosts, mockCatalogUSInt);\n break;\n case 'mobius-eu-central-1.int.infra.webex.com':\n checkCluster(mockEUIntServiceHosts, mockCatalogEUInt);\n break;\n default:\n break;\n }\n });\n });\n\n describe('Line creation tests', () => {\n let callingClient;\n let line;\n\n beforeEach(async () => {\n callingClient = await createClient(webex);\n line = Object.values(callingClient.lineDict)[0];\n });\n\n afterEach(() => {\n jest.clearAllTimers();\n jest.clearAllMocks();\n callingClient.removeAllListeners();\n callManager.removeAllListeners();\n callingClient = undefined;\n jest.useRealTimers();\n });\n\n it('verify line dict successfully created', () => {\n expect(callingClient.lineDict).toBeTruthy();\n expect(line).toBeTruthy();\n expect(Object.keys(callingClient.lineDict).length).toEqual(1);\n });\n\n it('verify getLines response', () => {\n expect(callingClient.getLines).toBeTruthy();\n expect(callingClient.getLines()).toEqual(callingClient.lineDict);\n });\n });\n\n describe('Connectivity and Mercury event handlers', () => {\n let callingClient: ICallingClient;\n let line;\n let reg;\n let windowEventSpy: jest.SpyInstance;\n let deRegSpy;\n let restoreSpy;\n let restartRegisterSpy;\n let registerSpy;\n let metricSpy;\n\n beforeEach(async () => {\n jest.useFakeTimers();\n webex.request\n .mockResolvedValueOnce(regionPayload)\n .mockResolvedValueOnce(discoveryPayload)\n .mockResolvedValueOnce(registrationPayload);\n\n windowEventSpy = jest.spyOn(window, 'addEventListener');\n callingClient = await createClient(webex, {logger: {level: LOGGER.INFO}});\n line = Object.values(callingClient.lineDict)[0] as ILine;\n reg = line.registration;\n await line.register();\n\n deRegSpy = jest.spyOn(reg, 'deregister');\n restoreSpy = jest.spyOn(reg, 'restorePreviousRegistration');\n restartRegisterSpy = jest.spyOn(reg, 'restartRegistration');\n registerSpy = jest.spyOn(reg, 'attemptRegistrationWithServers');\n metricSpy = jest.spyOn(callingClient['metricManager'], 'submitConnectionMetrics');\n });\n\n afterEach(() => {\n jest.clearAllTimers();\n jest.clearAllMocks();\n callingClient.removeAllListeners();\n callingClient['callManager'].callCollection = {};\n callManager.removeAllListeners();\n callingClient = undefined;\n jest.useRealTimers();\n });\n\n it('window offline handler sets networkDown and clears keepalive when network is unreachable', async () => {\n const g = global;\n g.fetch = jest.fn().mockRejectedValueOnce(new Error('network fail'));\n\n const clearKeepaliveSpy = jest.spyOn(reg, 'clearKeepaliveTimer');\n\n const offlineCb = windowEventSpy.mock.calls[1][1];\n await offlineCb();\n\n expect(warnSpy).toHaveBeenCalledWith(\n expect.stringContaining('Network connectivity probe failed'),\n {\n file: CALLING_CLIENT_FILE,\n method: 'pingExternal',\n }\n );\n expect(callingClient['isNetworkDown']).toBe(true);\n expect(clearKeepaliveSpy).toHaveBeenCalled();\n });\n\n it('window offline handler does not clear keepalive when network is reachable', async () => {\n const g = global;\n g.fetch = jest.fn().mockResolvedValueOnce({});\n\n const clearKeepaliveSpy = jest.spyOn(reg, 'clearKeepaliveTimer');\n\n const offlineCb = windowEventSpy.mock.calls[1][1];\n await offlineCb();\n\n expect(g.fetch).toHaveBeenCalledWith(\n 'https://www.google.com/generate_204',\n expect.any(Object)\n );\n expect(callingClient['isNetworkDown']).toBe(false);\n expect(clearKeepaliveSpy).not.toHaveBeenCalled();\n });\n\n it('window online handler sets networkUpTimestamp and logs', async () => {\n const onlineCb = windowEventSpy.mock.calls[0][1];\n await onlineCb();\n\n expect(callingClient['networkUpTimestamp']).toEqual(expect.any(String));\n expect(infoSpy).toHaveBeenCalledWith(METHOD_START_MESSAGE, {\n file: CALLING_CLIENT_FILE,\n method: 'handleNetworkOnline',\n });\n });\n\n it('mercury offline submits metrics and sets timestamp', async () => {\n const mercuryOfflineCb = webex.internal.mercury.on.mock.calls[1][1];\n await mercuryOfflineCb();\n\n expect(warnSpy).toHaveBeenCalledWith(\n expect.stringContaining('Mercury down, waiting for connection to be up'),\n {\n file: CALLING_CLIENT_FILE,\n method: 'handleMercuryOffline',\n }\n );\n expect(callingClient['mercuryDownTimestamp']).toEqual(expect.any(String));\n expect(metricSpy).toHaveBeenCalledWith(\n METRIC_EVENT.CONNECTION_ERROR,\n CONNECTION_ACTION.MERCURY_DOWN,\n METRIC_TYPE.BEHAVIORAL,\n expect.any(String),\n ''\n );\n });\n\n it('handles reconnection with no active calls after network flap, once mercury comes back up', async () => {\n const handleConnectionRestoreSpy = jest.spyOn(reg, 'handleConnectionRestoration');\n\n callingClient['isNetworkDown'] = true;\n callingClient['networkDownTimestamp'] = '2023-01-01T00:00:00.000Z';\n callingClient['networkUpTimestamp'] = '2023-01-01T00:01:00.000Z';\n\n const mercuryOnlineCb = webex.internal.mercury.on.mock.calls[2][1];\n await mercuryOnlineCb();\n\n // Run the interval once\n jest.advanceTimersByTime(NETWORK_FLAP_TIMEOUT + 100);\n\n await flushPromises();\n\n expect(handleConnectionRestoreSpy).toHaveBeenCalledWith(true);\n expect(logSpy).toHaveBeenCalledWith(\n 'Network is up again, re-registering with Webex Calling if needed',\n {\n file: REGISTRATION_FILE,\n method: 'handleConnectionRestoration',\n }\n );\n expect(deRegSpy).toHaveBeenCalledWith();\n expect(restoreSpy).toHaveBeenCalledWith('handleConnectionRestoration');\n expect(restartRegisterSpy).toHaveBeenCalledWith('handleConnectionRestoration');\n expect(registerSpy).toHaveBeenCalledWith('handleConnectionRestoration', [\n reg.getActiveMobiusUrl(),\n ]);\n expect(registerSpy).toHaveBeenCalledWith('handleConnectionRestoration', [primaryUrl]);\n expect(metricSpy).toHaveBeenCalledWith(\n METRIC_EVENT.CONNECTION_ERROR,\n CONNECTION_ACTION.NETWORK_FLAP,\n METRIC_TYPE.BEHAVIORAL,\n '2023-01-01T00:00:00.000Z',\n '2023-01-01T00:01:00.000Z'\n );\n });\n\n it('no reconnection for idle registration with no active calls after network flap, once mercury comes back up', async () => {\n const handleConnectionRestoreSpy = jest.spyOn(reg, 'handleConnectionRestoration');\n\n callingClient['isNetworkDown'] = true;\n callingClient['networkDownTimestamp'] = '2023-01-01T00:00:00.000Z';\n callingClient['networkUpTimestamp'] = '2023-01-01T00:01:00.000Z';\n reg.setStatus(RegistrationStatus.IDLE);\n\n const mercuryOnlineCb = webex.internal.mercury.on.mock.calls[2][1];\n await mercuryOnlineCb();\n\n // Run the interval once\n jest.advanceTimersByTime(NETWORK_FLAP_TIMEOUT + 100);\n\n await flushPromises();\n\n expect(handleConnectionRestoreSpy).not.toHaveBeenCalledWith(true);\n expect(logSpy).not.toHaveBeenCalledWith(\n 'Network is up again, re-registering with Webex Calling if needed',\n {\n file: REGISTRATION_FILE,\n method: 'handleConnectionRestoration',\n }\n );\n expect(deRegSpy).not.toHaveBeenCalledWith();\n expect(restoreSpy).not.toHaveBeenCalledWith('handleConnectionRestoration');\n expect(restartRegisterSpy).not.toHaveBeenCalledWith('handleConnectionRestoration');\n expect(registerSpy).not.toHaveBeenCalledWith('handleConnectionRestoration', [\n reg.getActiveMobiusUrl(),\n ]);\n expect(registerSpy).not.toHaveBeenCalledWith('handleConnectionRestoration', [primaryUrl]);\n expect(metricSpy).toHaveBeenCalledWith(\n METRIC_EVENT.CONNECTION_ERROR,\n CONNECTION_ACTION.NETWORK_FLAP,\n METRIC_TYPE.BEHAVIORAL,\n '2023-01-01T00:00:00.000Z',\n '2023-01-01T00:01:00.000Z'\n );\n });\n\n it('handle calls status check once mercury comes back up after a network flap', async () => {\n callingClient['isNetworkDown'] = true;\n const call = callingClient['callManager'].createCall();\n const callKeepaliveSpy = jest\n .spyOn(call, 'postStatus')\n .mockRejectedValueOnce(new Error('keepalive fail'));\n const deleteSpy = jest.spyOn(call, 'delete');\n expect(Object.keys(callingClient['callManager'].getActiveCalls()).length).toBe(1);\n\n const mercuryOnlineCb = webex.internal.mercury.on.mock.calls[2][1];\n await mercuryOnlineCb();\n\n expect(callKeepaliveSpy).toHaveBeenCalled();\n\n await flushPromises();\n\n expect(warnSpy).toHaveBeenCalledWith(expect.stringContaining('Call Keepalive failed'), {\n file: CALLING_CLIENT_FILE,\n method: 'checkCallStatus',\n });\n expect(call['callStateMachine'].state.value).toBe('S_CALL_CLEARED');\n expect(deleteSpy).toHaveBeenCalled();\n\n expect(Object.keys(reg.callManager.getActiveCalls()).length).toBe(0);\n expect(metricSpy).toHaveBeenCalledWith(\n METRIC_EVENT.CONNECTION_ERROR,\n CONNECTION_ACTION.NETWORK_FLAP,\n METRIC_TYPE.BEHAVIORAL,\n expect.any(String),\n expect.any(String)\n );\n });\n\n it('handle calls status check once mercury comes back up with stable network', async () => {\n const call = callingClient['callManager'].createCall();\n const callKeepaliveSpy = jest\n .spyOn(call, 'postStatus')\n .mockRejectedValueOnce(new Error('keepalive fail'));\n const deleteSpy = jest.spyOn(call, 'delete');\n expect(Object.keys(callingClient['callManager'].getActiveCalls()).length).toBe(1);\n\n const mercuryOnlineCb = webex.internal.mercury.on.mock.calls[2][1];\n await mercuryOnlineCb();\n\n expect(callKeepaliveSpy).toHaveBeenCalled();\n\n await flushPromises();\n\n expect(warnSpy).toHaveBeenCalledWith(expect.stringContaining('Call Keepalive failed'), {\n file: CALLING_CLIENT_FILE,\n method: 'checkCallStatus',\n });\n expect(call['callStateMachine'].state.value).toBe('S_CALL_CLEARED');\n expect(deleteSpy).toHaveBeenCalled();\n\n expect(Object.keys(reg.callManager.getActiveCalls()).length).toBe(0);\n expect(metricSpy).toHaveBeenCalledWith(\n METRIC_EVENT.CONNECTION_ERROR,\n CONNECTION_ACTION.MERCURY_UP,\n METRIC_TYPE.BEHAVIORAL,\n expect.any(String),\n expect.any(String)\n );\n });\n });\n\n // Calling related test cases\n describe('Calling tests', () => {\n const mutex = new Mutex();\n const userId = webex.internal.device.userId;\n const clientDeviceUri = webex.internal.device.url;\n const mobiusUris = filterMobiusUris(getMobiusDiscoveryResponse(), URL);\n const primaryMobiusUris = jest.fn(() => mobiusUris.primary);\n const backupMobiusUris = jest.fn(() => mobiusUris.backup);\n\n let callingClient;\n let line: Line;\n\n beforeAll(async () => {\n callingClient = await createClient(webex);\n line = new Line(\n userId,\n clientDeviceUri,\n mutex,\n primaryMobiusUris(),\n backupMobiusUris(),\n LOGGER.INFO\n );\n const calls = Object.values(callManager.getActiveCalls());\n calls.forEach((call) => {\n call.end();\n });\n });\n\n afterAll(() => {\n callingClient.removeAllListeners();\n callManager.removeAllListeners();\n });\n\n it('verify calling client object', () => {\n expect(callingClient.getSDKConnector().getWebex().internal.device.userId).toBe(\n '8a67806f-fc4d-446b-a131-31e71ea5b0e9'\n );\n });\n\n it('returns undefined when there is no connected call', () => {\n line.register();\n line.makeCall({address: '123456', type: CallType.URI});\n expect(callingClient.getConnectedCall()).toEqual(undefined);\n });\n\n it('returns the connected call', () => {\n line.register();\n const mockCall = line.makeCall({address: '1234', type: CallType.URI});\n const mockCall2 = line.makeCall({address: '5678', type: CallType.URI});\n // Connected call\n mockCall['connected'] = true;\n mockCall['earlyMedia'] = false;\n mockCall['callStateMachine'].state.value = 'S_CALL_ESTABLISHED';\n\n // Held call\n mockCall2['connected'] = true;\n mockCall2['held'] = true;\n mockCall2['earlyMedia'] = false;\n mockCall2['callStateMachine'].state.value = 'S_CALL_HOLD';\n\n const mockActiveCalls: Record<string, ICall> = {\n mockCorrelationId: mockCall as ICall,\n mockCorrelationId2: mockCall2 as ICall,\n };\n\n jest.spyOn(callManager, 'getActiveCalls').mockReturnValue(mockActiveCalls);\n expect(callingClient.getConnectedCall()).toEqual(mockCall);\n });\n it('returns all active calls', () => {\n callingClient.lineDict = {\n mockDeviceId: {lineId: 'mockLineId'} as ILine,\n mockDeviceId2: {lineId: 'mockLineId2'} as ILine,\n };\n\n const mockCall = line.makeCall({address: '1234', type: CallType.URI});\n const mockCall2 = line.makeCall({address: '5678', type: CallType.URI});\n const mockCall3 = line.makeCall({address: '9101', type: CallType.URI});\n\n mockCall.lineId = 'mockLineId';\n mockCall2.lineId = 'mockLineId2';\n mockCall3.lineId = 'mockLineId2';\n\n const mockActiveCalls: Record<string, ICall> = {\n mockCorrelationId: mockCall as ICall,\n mockCorrelationId2: mockCall2 as ICall,\n mockCorrelationId3: mockCall3 as ICall,\n };\n\n jest.spyOn(callManager, 'getActiveCalls').mockReturnValue(mockActiveCalls);\n expect(callingClient.getActiveCalls()).toEqual({\n mockLineId: [mockCall],\n mockLineId2: [mockCall2, mockCall3],\n });\n });\n });\n\n describe('Call Session Event test', () => {\n const mockOn = webex.internal.mercury.on;\n let callingClient: ICallingClient;\n\n beforeEach(async () => {\n callingClient = await createClient(webex, {logger: {level: LOGGER.INFO}});\n });\n\n afterEach(() => {\n callingClient.removeAllListeners();\n callManager.removeAllListeners();\n });\n\n it('verify the recent user session event ', (done) => {\n expect.assertions(2);\n callingClient.on(CALLING_CLIENT_EVENT_KEYS.USER_SESSION_INFO, (event: CallSessionEvent) => {\n expect(event.data).toEqual(MOCK_SESSION_EVENT.data);\n done();\n });\n\n expect(mockOn.mock.calls[0][0]).toEqual(MOBIUS_EVENT_KEYS.CALL_SESSION_EVENT_INCLUSIVE);\n const callSessionCallback = mockOn.mock.calls[0][1];\n\n callSessionCallback(MOCK_SESSION_EVENT);\n });\n\n it('drop the recent user session if there is no webex calling type', (done) => {\n expect.assertions(2);\n callingClient.on(CALLING_CLIENT_EVENT_KEYS.USER_SESSION_INFO, (event: CallSessionEvent) => {\n expect(event.data.userSessions.userSessions.length).toEqual(1);\n done();\n });\n\n expect(mockOn.mock.calls[0][0]).toEqual(MOBIUS_EVENT_KEYS.CALL_SESSION_EVENT_INCLUSIVE);\n const callSessionCallback = mockOn.mock.calls[0][1];\n\n callSessionCallback(MOCK_MULTIPLE_SESSIONS_EVENT);\n });\n });\n\n describe('Mobius async_event routing', () => {\n let callingClient: ICallingClient;\n let asyncEventCallback;\n let mobiusSocketMock;\n\n beforeEach(async () => {\n mobiusSocketMock = (\n jest.requireMock('@webex/internal-plugin-mobius-socket') as {\n getMobiusSocketInstance: (w: unknown) => unknown;\n }\n ).getMobiusSocketInstance(webex) as {\n on: jest.Mock;\n off: jest.Mock;\n };\n (mobiusSocketMock.on as jest.Mock).mockClear();\n (mobiusSocketMock.off as jest.Mock).mockClear();\n\n callingClient = await createClient(webex, {\n logger: {level: LOGGER.INFO},\n isMobiusSocketEnabled: true,\n });\n\n const asyncEventOnCall = (mobiusSocketMock.on as jest.Mock).mock.calls.find(\n (call) => call[0] === 'event:async_event'\n );\n asyncEventCallback = asyncEventOnCall[1];\n });\n\n afterEach(() => {\n callingClient.removeAllListeners();\n callManager.removeAllListeners();\n });\n\n it('routes mobius.* async events to callManager', async () => {\n const callEventSpy = jest\n .spyOn(callingClient['callManager'], 'dequeueWsEvents')\n .mockImplementation(() => undefined);\n\n await asyncEventCallback({\n type: 'async_event',\n data: {\n eventType: 'mobius.call',\n callId: 'fcf86aa5-5539-4c9f-8b72-667786ae9b6c',\n callUrl: 'https://mobius-a.wbx2.com/api/v1/calling/web/devices/d1/calls/c1',\n deviceId: 'd1',\n correlationId: 'corr-1',\n },\n });\n\n expect(callEventSpy).toHaveBeenCalledWith(\n expect.objectContaining({\n type: 'async_event',\n data: expect.objectContaining({\n eventType: 'mobius.call',\n }),\n })\n );\n });\n });\n\n describe('getDevices', () => {\n let callingClient: ICallingClient;\n const primaryMobius = 'https://mobius.primary/api/v1/calling/web/';\n const backupMobius = 'https://mobius.backup/api/v1/calling/web/';\n\n beforeEach(async () => {\n callingClient = await createClient(webex, {logger: {level: LOGGER.INFO}});\n callingClient.primaryMobiusUris = [primaryMobius];\n callingClient.backupMobiusUris = [backupMobius];\n (webex.request as jest.Mock).mockClear();\n });\n\n afterEach(() => {\n callingClient.removeAllListeners();\n });\n\n it('fetches devices for the provided userId', async () => {\n const devices = [\n {\n deviceId: 'device-1',\n uri: 'https://mobius.test/api/v1/calling/web/devices/device-1',\n status: 'ACTIVE',\n lastSeen: '2024-01-01T00:00:00Z',\n addresses: [],\n clientDeviceUri: 'client-device-uri',\n },\n ];\n\n const responsePayload = <WebexRequestPayload>(<unknown>{\n statusCode: 200,\n body: {userId: 'user-123', devices},\n });\n\n (webex.request as jest.Mock).mockResolvedValue(responsePayload);\n\n const response = await callingClient.getDevices('user-123');\n\n expect(webex.request).toHaveBeenCalledWith({\n uri: 'https://mobius.primary/api/v1/calling/web/devices?userid=user-123',\n method: HTTP_METHODS.GET,\n service: ALLOWED_SERVICES.MOBIUS,\n headers: {\n [CISCO_DEVICE_URL]: webex.internal.device.url,\n [SPARK_USER_AGENT]: CALLING_USER_AGENT,\n },\n });\n\n expect(response).toEqual(devices);\n });\n\n it('falls back to backup Mobius when primary fails', async () => {\n const devices = [\n {\n deviceId: 'device-2',\n uri: 'https://mobius.backup/api/v1/calling/web/devices/device-2',\n status: 'ACTIVE',\n lastSeen: '2024-01-01T00:00:00Z',\n addresses: [],\n clientDeviceUri: 'client-device-uri',\n },\n ];\n\n const failurePayload = {\n statusCode: 404,\n };\n\n const responsePayload = <WebexRequestPayload>(<unknown>{\n statusCode: 200,\n body: {userId: 'user-123', devices},\n });\n\n (webex.request as jest.Mock)\n .mockRejectedValueOnce(failurePayload)\n .mockResolvedValueOnce(responsePayload);\n\n const response = await callingClient.getDevices('user-123');\n\n const requestCalls = (webex.request as jest.Mock).mock.calls;\n expect(requestCalls[0][0]).toEqual({\n uri: 'https://mobius.primary/api/v1/calling/web/devices?userid=user-123',\n method: HTTP_METHODS.GET,\n service: ALLOWED_SERVICES.MOBIUS,\n headers: {\n [CISCO_DEVICE_URL]: webex.internal.device.url,\n [SPARK_USER_AGENT]: CALLING_USER_AGENT,\n },\n });\n\n expect(requestCalls[1][0]).toEqual({\n uri: 'https://mobius.backup/api/v1/calling/web/devices?userid=user-123',\n method: HTTP_METHODS.GET,\n service: ALLOWED_SERVICES.MOBIUS,\n headers: {\n [CISCO_DEVICE_URL]: webex.internal.device.url,\n [SPARK_USER_AGENT]: CALLING_USER_AGENT,\n },\n });\n\n expect(response).toEqual(devices);\n });\n });\n\n describe('windowsChromiumIceWarmup', () => {\n let origRTCPeerConnection: any;\n\n beforeAll(() => {\n origRTCPeerConnection = global.RTCPeerConnection;\n // Minimal mock for RTCPeerConnection\n global.RTCPeerConnection = class {\n static instances: any[] = [];\n iceGatheringState = 'complete';\n localDescription = null;\n remoteDescription = null;\n onicecandidate: ((e: any) => void) | null = null;\n constructor() {\n (this.constructor as any).instances.push(this);\n }\n\n createDataChannel() {\n return {};\n }\n\n addTransceiver() {\n return {};\n }\n\n createOffer() {\n return Promise.resolve({sdp: 'offer', type: 'offer'});\n }\n\n setLocalDescription(desc: any) {\n this.localDescription = desc;\n\n return Promise.resolve();\n }\n\n setRemoteDescription(desc: any) {\n this.remoteDescription = desc;\n\n return Promise.resolve();\n }\n\n createAnswer() {\n return Promise.resolve({sdp: 'answer', type: 'answer'});\n }\n\n addIceCandidate() {\n return Promise.resolve();\n }\n\n close() {}\n addEventListener() {}\n removeEventListener() {}\n };\n });\n\n afterAll(() => {\n global.RTCPeerConnection = origRTCPeerConnection;\n });\n\n it('should complete without throwing', async () => {\n await expect(windowsChromiumIceWarmup({})).resolves.not.toThrow();\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -426,7 +426,7 @@ export class CallingClient extends Eventing {
|
|
|
426
426
|
file: CALLING_CLIENT_FILE,
|
|
427
427
|
method: METHODS.REGISTER_MOBIUS_SOCKET_LISTENER,
|
|
428
428
|
});
|
|
429
|
-
this.sdkConnector.registerMobiusSocketListener('async_event', (event) => {
|
|
429
|
+
this.sdkConnector.registerMobiusSocketListener('event:async_event', (event) => {
|
|
430
430
|
this.handleMobiusAsyncEvent(event);
|
|
431
431
|
});
|
|
432
432
|
log.info('Successfully registered listener for Mobius events', {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CallingClient.d.ts","sourceRoot":"","sources":["../../../src/CallingClient/CallingClient.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,4BAA4B,CAAC;AAYpD,OAAO,EAAC,MAAM,EAAC,MAAM,iBAAiB,CAAC;AAEvC,OAAO,EAAmB,aAAa,EAAe,QAAQ,EAAC,MAAM,uBAAuB,CAAC;AAC7F,OAAO,EAAC,QAAQ,EAAC,MAAM,gBAAgB,CAAC;AACxC,OAAO,EACL,uBAAuB,EAKxB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAQL,kBAAkB,EAClB,UAAU,EAEX,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAC,cAAc,EAAE,mBAAmB,EAAC,MAAM,SAAS,CAAC;AAC5D,OAAO,EAAC,KAAK,EAAkD,MAAM,iBAAiB,CAAC;AAkBvF,OAAO,EAAC,KAAK,EAAC,MAAM,cAAc,CAAC;AAyBnC,qBAAa,aAAc,SAAQ,QAAQ,CAAC,uBAAuB,CAAE,YAAW,cAAc;IAC5F,OAAO,CAAC,YAAY,CAAgB;IAEpC,OAAO,CAAC,KAAK,CAAW;IAExB,OAAO,CAAC,KAAK,CAAQ;IAErB,OAAO,CAAC,WAAW,CAAe;IAElC,OAAO,CAAC,aAAa,CAAiB;IAEtC,OAAO,CAAC,SAAS,CAAC,CAAsB;IAExC,OAAO,CAAC,iBAAiB,CAAW;IAEpC,OAAO,CAAC,gBAAgB,CAAW;IAEnC,OAAO,CAAC,oBAAoB,CAAW;IAEvC,OAAO,CAAC,mBAAmB,CAAW;IAEtC,OAAO,CAAC,cAAc,CAAgB;IAEtC,OAAO,CAAC,UAAU,CAAS;IAEpB,WAAW,EAAE,OAAO,KAAK,CAAC;IAEjC,OAAO,CAAC,QAAQ,CAA6B;IAE7C,OAAO,CAAC,UAAU,CAAa;IAE/B,OAAO,CAAC,qBAAqB,CAAU;IAGvC,OAAO,CAAC,YAAY,CAAM;IAE1B,OAAO,CAAC,aAAa,CAAS;IAE9B,OAAO,CAAC,oBAAoB,CAAM;IAElC,OAAO,CAAC,kBAAkB,CAAM;IAEhC,OAAO,CAAC,oBAAoB,CAAM;IAElC,OAAO,CAAC,kBAAkB,CAAM;gBAKpB,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,mBAAmB;IA+E5C,IAAI;YA0CH,wBAAwB;YA2BxB,eAAe;IAwB7B,OAAO,CAAC,oBAAoB,CAY1B;IAGF,OAAO,CAAC,mBAAmB,CAMzB;IAEF,OAAO,CAAC,oBAAoB,CAa1B;IAEF,OAAO,CAAC,mBAAmB,CA6CzB;IAEF,OAAO,CAAC,0BAA0B;YAmBpB,mBAAmB;YAkFnB,gBAAgB;YAmKhB,qBAAqB;IAoFnC,OAAO,CAAC,4BAA4B;
|
|
1
|
+
{"version":3,"file":"CallingClient.d.ts","sourceRoot":"","sources":["../../../src/CallingClient/CallingClient.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,4BAA4B,CAAC;AAYpD,OAAO,EAAC,MAAM,EAAC,MAAM,iBAAiB,CAAC;AAEvC,OAAO,EAAmB,aAAa,EAAe,QAAQ,EAAC,MAAM,uBAAuB,CAAC;AAC7F,OAAO,EAAC,QAAQ,EAAC,MAAM,gBAAgB,CAAC;AACxC,OAAO,EACL,uBAAuB,EAKxB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAQL,kBAAkB,EAClB,UAAU,EAEX,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAC,cAAc,EAAE,mBAAmB,EAAC,MAAM,SAAS,CAAC;AAC5D,OAAO,EAAC,KAAK,EAAkD,MAAM,iBAAiB,CAAC;AAkBvF,OAAO,EAAC,KAAK,EAAC,MAAM,cAAc,CAAC;AAyBnC,qBAAa,aAAc,SAAQ,QAAQ,CAAC,uBAAuB,CAAE,YAAW,cAAc;IAC5F,OAAO,CAAC,YAAY,CAAgB;IAEpC,OAAO,CAAC,KAAK,CAAW;IAExB,OAAO,CAAC,KAAK,CAAQ;IAErB,OAAO,CAAC,WAAW,CAAe;IAElC,OAAO,CAAC,aAAa,CAAiB;IAEtC,OAAO,CAAC,SAAS,CAAC,CAAsB;IAExC,OAAO,CAAC,iBAAiB,CAAW;IAEpC,OAAO,CAAC,gBAAgB,CAAW;IAEnC,OAAO,CAAC,oBAAoB,CAAW;IAEvC,OAAO,CAAC,mBAAmB,CAAW;IAEtC,OAAO,CAAC,cAAc,CAAgB;IAEtC,OAAO,CAAC,UAAU,CAAS;IAEpB,WAAW,EAAE,OAAO,KAAK,CAAC;IAEjC,OAAO,CAAC,QAAQ,CAA6B;IAE7C,OAAO,CAAC,UAAU,CAAa;IAE/B,OAAO,CAAC,qBAAqB,CAAU;IAGvC,OAAO,CAAC,YAAY,CAAM;IAE1B,OAAO,CAAC,aAAa,CAAS;IAE9B,OAAO,CAAC,oBAAoB,CAAM;IAElC,OAAO,CAAC,kBAAkB,CAAM;IAEhC,OAAO,CAAC,oBAAoB,CAAM;IAElC,OAAO,CAAC,kBAAkB,CAAM;gBAKpB,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,mBAAmB;IA+E5C,IAAI;YA0CH,wBAAwB;YA2BxB,eAAe;IAwB7B,OAAO,CAAC,oBAAoB,CAY1B;IAGF,OAAO,CAAC,mBAAmB,CAMzB;IAEF,OAAO,CAAC,oBAAoB,CAa1B;IAEF,OAAO,CAAC,mBAAmB,CA6CzB;IAEF,OAAO,CAAC,0BAA0B;YAmBpB,mBAAmB;YAkFnB,gBAAgB;YAmKhB,qBAAqB;IAoFnC,OAAO,CAAC,4BAA4B;IA0BpC,OAAO,CAAC,sBAAsB,CA2B5B;IAOF,OAAO,CAAC,4BAA4B;IAgBpC,OAAO,CAAC,mBAAmB,CAoBzB;IAMK,eAAe,IAAI,MAAM;IAQzB,eAAe,IAAI,aAAa;IAIvC,OAAO,CAAC,wBAAwB;YAgClB,UAAU;IA2BjB,QAAQ,IAAI,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC;IAO3B,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IA0DxD,cAAc,IAAI,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC;IAiBzC,gBAAgB,IAAI,KAAK,GAAG,SAAS;IAuB/B,UAAU,IAAI,OAAO,CAAC,kBAAkB,CAAC;CAQvD;AAOD,eAAO,MAAM,YAAY,UAChB,QAAQ,WACN,mBAAmB,KAC3B,QAAQ,cAAc,CAKxB,CAAC"}
|
package/package.json
CHANGED
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
"@types/platform": "1.3.4",
|
|
43
43
|
"@webex/internal-media-core": "2.23.3",
|
|
44
44
|
"@webex/internal-plugin-metrics": "3.12.0-mobius-socket.1",
|
|
45
|
-
"@webex/internal-plugin-mobius-socket": "1.0.0-mobius-socket.
|
|
45
|
+
"@webex/internal-plugin-mobius-socket": "1.0.0-mobius-socket.5",
|
|
46
46
|
"@webex/media-helpers": "3.12.0-mobius-socket.0",
|
|
47
47
|
"async-mutex": "0.4.0",
|
|
48
48
|
"buffer": "6.0.3",
|
|
@@ -136,5 +136,5 @@
|
|
|
136
136
|
"staticpath": "docs",
|
|
137
137
|
"noprompt": true
|
|
138
138
|
},
|
|
139
|
-
"version": "3.12.0-mobius-socket.
|
|
139
|
+
"version": "3.12.0-mobius-socket.5"
|
|
140
140
|
}
|