@webex/calling 3.12.0-mobius-socket.7 → 3.12.0-mobius-socket.9

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.
Files changed (32) hide show
  1. package/dist/CallingClient/CallingClient.js +13 -28
  2. package/dist/CallingClient/CallingClient.js.map +1 -1
  3. package/dist/CallingClient/CallingClient.test.js +12 -4
  4. package/dist/CallingClient/CallingClient.test.js.map +1 -1
  5. package/dist/CallingClient/calling/callManager.js +8 -6
  6. package/dist/CallingClient/calling/callManager.js.map +1 -1
  7. package/dist/CallingClient/types.js.map +1 -1
  8. package/dist/CallingClient/utils/request.js +13 -2
  9. package/dist/CallingClient/utils/request.js.map +1 -1
  10. package/dist/CallingClient/utils/types.js.map +1 -1
  11. package/dist/SDKConnector/index.js +0 -32
  12. package/dist/SDKConnector/index.js.map +1 -1
  13. package/dist/SDKConnector/types.js.map +1 -1
  14. package/dist/module/CallingClient/CallingClient.js +7 -24
  15. package/dist/module/CallingClient/calling/callManager.js +7 -6
  16. package/dist/module/CallingClient/utils/request.js +9 -2
  17. package/dist/module/SDKConnector/index.js +0 -17
  18. package/dist/types/CallingClient/CallingClient.d.ts +0 -2
  19. package/dist/types/CallingClient/CallingClient.d.ts.map +1 -1
  20. package/dist/types/CallingClient/calling/callManager.d.ts +3 -3
  21. package/dist/types/CallingClient/calling/callManager.d.ts.map +1 -1
  22. package/dist/types/CallingClient/types.d.ts +0 -1
  23. package/dist/types/CallingClient/types.d.ts.map +1 -1
  24. package/dist/types/CallingClient/utils/request.d.ts +3 -1
  25. package/dist/types/CallingClient/utils/request.d.ts.map +1 -1
  26. package/dist/types/CallingClient/utils/types.d.ts +7 -1
  27. package/dist/types/CallingClient/utils/types.d.ts.map +1 -1
  28. package/dist/types/SDKConnector/index.d.ts +0 -2
  29. package/dist/types/SDKConnector/index.d.ts.map +1 -1
  30. package/dist/types/SDKConnector/types.d.ts +0 -2
  31. package/dist/types/SDKConnector/types.d.ts.map +1 -1
  32. package/package.json +2 -2
@@ -27,7 +27,6 @@ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime-corejs2/he
27
27
  var _inherits2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/inherits"));
28
28
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
29
29
  var Media = _interopRequireWildcard(require("@webex/internal-media-core"));
30
- var _internalPluginMobiusSocket = require("@webex/internal-plugin-mobius-socket");
31
30
  var _asyncMutex = require("async-mutex");
32
31
  var _constants = require("../common/constants");
33
32
  var _Utils = require("../common/Utils");
@@ -45,13 +44,12 @@ var _types5 = require("../Metrics/types");
45
44
  var _Metrics = require("../Metrics");
46
45
  var _windowsChromiumIceWarmupUtils = _interopRequireDefault(require("./windowsChromiumIceWarmupUtils"));
47
46
  var _request = require("./utils/request");
48
- var _utils = require("./utils");
49
47
  function _interopRequireWildcard(e, t) { if ("function" == typeof _WeakMap) var r = new _WeakMap(), n = new _WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t11 in e) "default" !== _t11 && {}.hasOwnProperty.call(e, _t11) && ((i = (o = _Object$defineProperty) && _Object$getOwnPropertyDescriptor(e, _t11)) && (i.get || i.set) ? o(f, _t11, i) : f[_t11] = e[_t11]); return f; })(e, t); }
50
48
  function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof _Symbol && r[_Symbol$iterator] || r["@@iterator"]; if (!t) { if (_Array$isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }
51
49
  function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? _Array$from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
52
50
  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
53
51
  function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2.default)(o), (0, _possibleConstructorReturn2.default)(t, _isNativeReflectConstruct() ? _Reflect$construct(o, e || [], (0, _getPrototypeOf2.default)(t).constructor) : o.apply(t, e)); }
54
- function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(_Reflect$construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } /* eslint-disable no-underscore-dangle */ /* eslint-disable valid-jsdoc */ /* eslint-disable @typescript-eslint/no-shadow */ // @ts-ignore - JS module without type declarations
52
+ function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(_Reflect$construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } /* eslint-disable no-underscore-dangle */ /* eslint-disable valid-jsdoc */ /* eslint-disable @typescript-eslint/no-shadow */
55
53
  /**
56
54
  * The `CallingClient` module provides a set of APIs for line registration and calling functionalities within the SDK.
57
55
  *
@@ -67,7 +65,7 @@ var CallingClient = exports.CallingClient = /*#__PURE__*/function (_Eventing) {
67
65
  * @ignore
68
66
  */
69
67
  function CallingClient(webex, config) {
70
- var _this$sdkConfig, _this$sdkConfig$servi, _this$sdkConfig2, _this$sdkConfig2$logg, _config$isMobiusSocke;
68
+ var _this$sdkConfig, _this$sdkConfig$servi, _this$sdkConfig2, _this$sdkConfig2$logg;
71
69
  var _this;
72
70
  (0, _classCallCheck2.default)(this, CallingClient);
73
71
  _this = _callSuper(this, CallingClient);
@@ -86,9 +84,6 @@ var CallingClient = exports.CallingClient = /*#__PURE__*/function (_Eventing) {
86
84
  (0, _defineProperty2.default)(_this, "mediaEngine", void 0);
87
85
  (0, _defineProperty2.default)(_this, "lineDict", {});
88
86
  (0, _defineProperty2.default)(_this, "apiRequest", void 0);
89
- (0, _defineProperty2.default)(_this, "isMobiusSocketEnabled", void 0);
90
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
91
- (0, _defineProperty2.default)(_this, "mobiusSocket", void 0);
92
87
  (0, _defineProperty2.default)(_this, "isNetworkDown", false);
93
88
  (0, _defineProperty2.default)(_this, "networkDownTimestamp", '');
94
89
  (0, _defineProperty2.default)(_this, "networkUpTimestamp", '');
@@ -202,12 +197,13 @@ var CallingClient = exports.CallingClient = /*#__PURE__*/function (_Eventing) {
202
197
  }
203
198
  }, _callee3);
204
199
  })));
200
+ // MOBIUS TODO: Check and remove this later. This might not be required.
205
201
  // private unregisterMobiusSocketListener() {
206
202
  // log.info(METHOD_START_MESSAGE, {
207
203
  // file: CALLING_CLIENT_FILE,
208
204
  // method: METHODS.UNREGISTER_MOBIUS_SOCKET_LISTENER,
209
205
  // });
210
- // this.sdkConnector.unregisterMobiusSocketListener('async_event');
206
+ // this.apiRequest.unregisterMobiusSocketListener();
211
207
  // }
212
208
  (0, _defineProperty2.default)(_this, "handleMobiusAsyncEvent", /*#__PURE__*/function () {
213
209
  var _ref4 = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee4(event) {
@@ -236,9 +232,7 @@ var CallingClient = exports.CallingClient = /*#__PURE__*/function (_Eventing) {
236
232
  }
237
233
  return _context4.abrupt("return");
238
234
  case 2:
239
- if (eventType.startsWith('mobius.')) {
240
- _this.callManager.dequeueWsEvents(event);
241
- }
235
+ _this.callManager.dequeueWsEvents(event);
242
236
  case 3:
243
237
  case "end":
244
238
  return _context4.stop();
@@ -318,8 +312,7 @@ var CallingClient = exports.CallingClient = /*#__PURE__*/function (_Eventing) {
318
312
  var logLevel = (_this$sdkConfig2 = _this.sdkConfig) !== null && _this$sdkConfig2 !== void 0 && (_this$sdkConfig2$logg = _this$sdkConfig2.logger) !== null && _this$sdkConfig2$logg !== void 0 && _this$sdkConfig2$logg.level ? _this.sdkConfig.logger.level : _types.LOGGER.ERROR;
319
313
  _Logger.default.setLogger(logLevel, _constants2.CALLING_CLIENT_FILE);
320
314
  (0, _Utils.validateServiceData)(serviceData);
321
- _this.isMobiusSocketEnabled = (0, _utils.isMobiusWssEnabled)(_this.webex) || ((_config$isMobiusSocke = config === null || config === void 0 ? void 0 : config.isMobiusSocketEnabled) !== null && _config$isMobiusSocke !== void 0 ? _config$isMobiusSocke : false);
322
- _this.callManager = (0, _callManager.getCallManager)(_this.webex, serviceData.indicator, _this.isMobiusSocketEnabled);
315
+ _this.callManager = (0, _callManager.getCallManager)(_this.webex, serviceData.indicator);
323
316
  _this.metricManager = (0, _Metrics.getMetricManager)(_this.webex, serviceData.indicator);
324
317
  _this.mediaEngine = Media;
325
318
  var adaptedLogger = {
@@ -367,12 +360,8 @@ var CallingClient = exports.CallingClient = /*#__PURE__*/function (_Eventing) {
367
360
  _this.backupWssMobiusUris = [];
368
361
  _this.mobiusClusters = _this.webex.internal.services.getMobiusClusters();
369
362
  _this.mobiusHost = '';
370
- if (_this.isMobiusSocketEnabled) {
371
- _this.mobiusSocket = (0, _internalPluginMobiusSocket.getMobiusSocketInstance)(_this.webex);
372
- }
373
363
  _this.apiRequest = _request.APIRequest.getInstance({
374
- webex: _this.webex,
375
- isMobiusSocketEnabled: _this.isMobiusSocketEnabled
364
+ webex: _this.webex
376
365
  });
377
366
  _this.registerSessionsListener();
378
367
  _this.registerCallsClearedListener();
@@ -438,7 +427,7 @@ var CallingClient = exports.CallingClient = /*#__PURE__*/function (_Eventing) {
438
427
  _context7.next = 5;
439
428
  return this.getMobiusServers();
440
429
  case 5:
441
- if (!this.isMobiusSocketEnabled) {
430
+ if (!this.apiRequest.isSocketEnabled()) {
442
431
  _context7.next = 7;
443
432
  break;
444
433
  }
@@ -917,7 +906,7 @@ var CallingClient = exports.CallingClient = /*#__PURE__*/function (_Eventing) {
917
906
  _Logger.default.log("Trying primary WSS URI: ".concat(wssUri), loggerContext);
918
907
  // eslint-disable-next-line no-await-in-loop
919
908
  _context12.next = 5;
920
- return this.mobiusSocket.connect(wssUri);
909
+ return this.apiRequest.connectToMobiusSocket(wssUri);
921
910
  case 5:
922
911
  _Logger.default.log("Successfully connected to Mobius socket on primary WSS URI: ".concat(wssUri), loggerContext);
923
912
  return _context12.abrupt("return");
@@ -964,7 +953,7 @@ var CallingClient = exports.CallingClient = /*#__PURE__*/function (_Eventing) {
964
953
  _Logger.default.log("Trying backup WSS URI: ".concat(_wssUri), loggerContext);
965
954
  // eslint-disable-next-line no-await-in-loop
966
955
  _context12.next = 17;
967
- return this.mobiusSocket.connect(_wssUri);
956
+ return this.apiRequest.connectToMobiusSocket(_wssUri);
968
957
  case 17:
969
958
  _Logger.default.log("Successfully connected to Mobius socket on backup WSS URI: ".concat(_wssUri), loggerContext);
970
959
  return _context12.abrupt("return");
@@ -997,7 +986,6 @@ var CallingClient = exports.CallingClient = /*#__PURE__*/function (_Eventing) {
997
986
  // We might remove this connection attempt logic during optimization since we are anyway going to try to connect to Mobius during
998
987
  // registration and without registration the connection will be closed automatically by the mobius server.
999
988
  _Logger.default.warn('All Mobius socket connection attempts exhausted for both primary and backup, continuing without socket', loggerContext);
1000
- _Logger.default.warn('All Mobius socket connection attempts exhausted for both primary and backup, continuing without socket', loggerContext);
1001
989
  case 26:
1002
990
  case "end":
1003
991
  return _context12.stop();
@@ -1012,14 +1000,11 @@ var CallingClient = exports.CallingClient = /*#__PURE__*/function (_Eventing) {
1012
1000
  }, {
1013
1001
  key: "registerMobiusSocketListener",
1014
1002
  value: function registerMobiusSocketListener() {
1015
- var _this5 = this;
1016
1003
  _Logger.default.info(_constants.METHOD_START_MESSAGE, {
1017
1004
  file: _constants2.CALLING_CLIENT_FILE,
1018
1005
  method: _constants2.METHODS.REGISTER_MOBIUS_SOCKET_LISTENER
1019
1006
  });
1020
- this.sdkConnector.registerMobiusSocketListener('event:async_event', function (event) {
1021
- _this5.handleMobiusAsyncEvent(event);
1022
- });
1007
+ this.apiRequest.registerMobiusSocketListener(this.handleMobiusAsyncEvent);
1023
1008
  _Logger.default.info('Successfully registered listener for Mobius events', {
1024
1009
  file: _constants2.CALLING_CLIENT_FILE,
1025
1010
  method: _constants2.METHODS.REGISTER_MOBIUS_SOCKET_LISTENER
@@ -1063,7 +1048,7 @@ var CallingClient = exports.CallingClient = /*#__PURE__*/function (_Eventing) {
1063
1048
  }, {
1064
1049
  key: "registerSessionsListener",
1065
1050
  value: function registerSessionsListener() {
1066
- var _this6 = this;
1051
+ var _this5 = this;
1067
1052
  _Logger.default.info(_constants.METHOD_START_MESSAGE, {
1068
1053
  file: _constants2.CALLING_CLIENT_FILE,
1069
1054
  method: _constants2.METHODS.REGISTER_SESSIONS_LISTENER
@@ -1094,7 +1079,7 @@ var CallingClient = exports.CallingClient = /*#__PURE__*/function (_Eventing) {
1094
1079
  sessionArr.splice(i, 1);
1095
1080
  }
1096
1081
  }
1097
- _this6.emit(_types2.CALLING_CLIENT_EVENT_KEYS.USER_SESSION_INFO, event);
1082
+ _this5.emit(_types2.CALLING_CLIENT_EVENT_KEYS.USER_SESSION_INFO, event);
1098
1083
  case 2:
1099
1084
  case "end":
1100
1085
  return _context13.stop();
@@ -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","CISCO_DEVICE_URL","device","url","CALLING_USER_AGENT","service","ALLOWED_SERVICES","MOBIUS","submitMobiusServersMetric","MOBIUS_SERVERS","filterMobiusUris","primary","backup","primaryWss","backupWss","_headers$trackingId2","_headers4","t0","URL_ENDPOINT","_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 // MOBIUS TODO: Remove this later. Added for testing purposes.\n // const regionInfo = await this.getClientRegionInfo();\n const regionInfo = {\n clientRegion: 'US-EAST',\n countryCode: 'WS-LOAD-TEST',\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 // MOBIUS TODO: Remove this later. Added for testing purposes.\n uri: 'https://mobius.aload-calling1.ciscospark.com/api/v1/calling/web/?regionCode=US-EAST&countryCode=WS-LOAD-TEST',\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":[]}
1
+ {"version":3,"names":["Media","_interopRequireWildcard","require","_asyncMutex","_constants","_Utils","_types","_SDKConnector","_interopRequireDefault","_impl","_types2","_types3","_types4","_Logger","_callManager","_constants2","_line","_types5","_Metrics","_windowsChromiumIceWarmupUtils","_request","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","_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","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","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","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","isSocketEnabled","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","CISCO_DEVICE_URL","device","url","CALLING_USER_AGENT","service","ALLOWED_SERVICES","MOBIUS","submitMobiusServersMetric","MOBIUS_SERVERS","filterMobiusUris","primary","backup","primaryWss","backupWss","_headers$trackingId2","_headers4","t0","URL_ENDPOINT","_connectToMobiusSocket","_callee10","_iterator3","_step3","wssUri","_iterator4","_step4","_wssUri","_t7","_t8","_t9","_t0","_context12","CONNECT_TO_MOBIUS_SOCKET","REGISTER_MOBIUS_SOCKET_LISTENER","handleMobiusAsyncEvent","REGISTER_CALLS_CLEARED_LISTENER","ALL_CALLS_CLEARED","callsClearedHandler","getLoggingLevel","getLogLevel","getSDKConnector","_this5","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","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';\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';\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 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.callManager = getCallManager(this.webex, serviceData.indicator);\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 this.apiRequest = APIRequest.getInstance({webex: this.webex});\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.apiRequest.isSocketEnabled()) {\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 // MOBIUS TODO: Remove this later. Added for testing purposes.\n // const regionInfo = await this.getClientRegionInfo();\n const regionInfo = {\n clientRegion: 'US-EAST',\n countryCode: 'WS-LOAD-TEST',\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 // MOBIUS TODO: Remove this later. Added for testing purposes.\n uri: 'https://mobius.aload-calling1.ciscospark.com/api/v1/calling/web/?regionCode=US-EAST&countryCode=WS-LOAD-TEST',\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.apiRequest.connectToMobiusSocket(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.apiRequest.connectToMobiusSocket(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 }\n\n private registerMobiusSocketListener() {\n log.info(METHOD_START_MESSAGE, {\n file: CALLING_CLIENT_FILE,\n method: METHODS.REGISTER_MOBIUS_SOCKET_LISTENER,\n });\n\n this.apiRequest.registerMobiusSocketListener(this.handleMobiusAsyncEvent);\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 // MOBIUS TODO: Check and remove this later. This might not be required.\n // private unregisterMobiusSocketListener() {\n // log.info(METHOD_START_MESSAGE, {\n // file: CALLING_CLIENT_FILE,\n // method: METHODS.UNREGISTER_MOBIUS_SOCKET_LISTENER,\n // });\n // this.apiRequest.unregisterMobiusSocketListener();\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 // TODO: check active calls and clean up the state and emit disconnect event\n\n return;\n }\n\n this.callManager.dequeueWsEvents(event);\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":[]}