@webex/calling 3.0.0-next.15 → 3.0.0-next.17

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.
@@ -2,6 +2,10 @@
2
2
 
3
3
  var _typeof = require("@babel/runtime-corejs2/helpers/typeof");
4
4
  var _Reflect$construct = require("@babel/runtime-corejs2/core-js/reflect/construct");
5
+ var _Array$from = require("@babel/runtime-corejs2/core-js/array/from");
6
+ var _Symbol = require("@babel/runtime-corejs2/core-js/symbol");
7
+ var _Symbol$iterator = require("@babel/runtime-corejs2/core-js/symbol/iterator");
8
+ var _Array$isArray = require("@babel/runtime-corejs2/core-js/array/is-array");
5
9
  var _WeakMap = require("@babel/runtime-corejs2/core-js/weak-map");
6
10
  var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
7
11
  var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptor");
@@ -37,6 +41,9 @@ var _types4 = require("../Metrics/types");
37
41
  var _Metrics = require("../Metrics");
38
42
  function _getRequireWildcardCache(nodeInterop) { if (typeof _WeakMap !== "function") return null; var cacheBabelInterop = new _WeakMap(); var cacheNodeInterop = new _WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
39
43
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = _Object$defineProperty && _Object$getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? _Object$getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { _Object$defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
44
+ function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof _Symbol !== "undefined" && o[_Symbol$iterator] || o["@@iterator"]; if (!it) { if (_Array$isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, 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 normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
45
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return _Array$from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
46
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
40
47
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = _Reflect$construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
41
48
  function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !_Reflect$construct) return false; if (_Reflect$construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(_Reflect$construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
42
49
  /**
@@ -68,6 +75,8 @@ var CallingClient = /*#__PURE__*/function (_Eventing) {
68
75
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "sdkConfig", void 0);
69
76
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "primaryMobiusUris", void 0);
70
77
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "backupMobiusUris", void 0);
78
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "mobiusClusters", void 0);
79
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "mobiusHost", void 0);
71
80
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "mediaEngine", void 0);
72
81
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "lineDict", {});
73
82
  /**
@@ -134,6 +143,8 @@ var CallingClient = /*#__PURE__*/function (_Eventing) {
134
143
  _this.mediaEngine = Media;
135
144
  _this.primaryMobiusUris = [];
136
145
  _this.backupMobiusUris = [];
146
+ _this.mobiusClusters = _this.webex.internal.services._hostCatalog[_constants.MOBIUS_US_PROD] || _this.webex.internal.services._hostCatalog[_constants.MOBIUS_EU_PROD] || _this.webex.internal.services._hostCatalog[_constants.MOBIUS_US_INT] || _this.webex.internal.services._hostCatalog[_constants.MOBIUS_EU_INT];
147
+ _this.mobiusHost = '';
137
148
  _this.registerSessionsListener();
138
149
  _Logger.default.setLogger(logLevel, _constants.CALLING_CLIENT_FILE);
139
150
  _this.registerCallsClearedListener();
@@ -248,39 +259,48 @@ var CallingClient = /*#__PURE__*/function (_Eventing) {
248
259
  value: function () {
249
260
  var _getClientRegionInfo = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6() {
250
261
  var _this3 = this;
251
- var regionInfo, _headers, temp, myIP, response, clientRegionInfo;
262
+ var regionInfo, _iterator, _step, mobius, _headers, temp, myIP, response, clientRegionInfo;
252
263
  return _regenerator.default.wrap(function _callee6$(_context6) {
253
264
  while (1) switch (_context6.prev = _context6.next) {
254
265
  case 0:
255
266
  regionInfo = {};
256
- _context6.prev = 1;
257
- _context6.next = 4;
267
+ _iterator = _createForOfIteratorHelper(this.mobiusClusters);
268
+ _context6.prev = 2;
269
+ _iterator.s();
270
+ case 4:
271
+ if ((_step = _iterator.n()).done) {
272
+ _context6.next = 28;
273
+ break;
274
+ }
275
+ mobius = _step.value;
276
+ this.mobiusHost = "https://".concat(mobius.host).concat(_constants.API_V1);
277
+ _context6.prev = 7;
278
+ _context6.next = 10;
258
279
  return this.webex.request({
259
- uri: "".concat(this.webex.internal.services._serviceUrls.mobius).concat(_constants.URL_ENDPOINT).concat(_constants.IP_ENDPOINT),
280
+ uri: "".concat(this.mobiusHost).concat(_constants.URL_ENDPOINT).concat(_constants.IP_ENDPOINT),
260
281
  method: _types3.HTTP_METHODS.GET,
261
282
  headers: (_headers = {}, (0, _defineProperty2.default)(_headers, _constants.CISCO_DEVICE_URL, this.webex.internal.device.url), (0, _defineProperty2.default)(_headers, _constants.SPARK_USER_AGENT, _constants.CALLING_USER_AGENT), _headers),
262
283
  service: _types3.ALLOWED_SERVICES.MOBIUS
263
284
  });
264
- case 4:
285
+ case 10:
265
286
  temp = _context6.sent;
266
- myIP = temp.body.ipv4;
267
- _context6.next = 8;
287
+ myIP = temp.body.ipv4; // eslint-disable-next-line no-await-in-loop
288
+ _context6.next = 14;
268
289
  return this.webex.request({
269
290
  uri: "".concat(_constants.DISCOVERY_URL, "/").concat(myIP),
270
291
  method: _types3.HTTP_METHODS.GET,
271
292
  addAuthHeader: false,
272
293
  headers: (0, _defineProperty2.default)({}, _constants.SPARK_USER_AGENT, null)
273
294
  });
274
- case 8:
295
+ case 14:
275
296
  response = _context6.sent;
276
297
  clientRegionInfo = response.body;
277
298
  regionInfo.clientRegion = clientRegionInfo !== null && clientRegionInfo !== void 0 && clientRegionInfo.clientRegion ? clientRegionInfo.clientRegion : '';
278
299
  regionInfo.countryCode = clientRegionInfo !== null && clientRegionInfo !== void 0 && clientRegionInfo.countryCode ? clientRegionInfo.countryCode : '';
279
- _context6.next = 19;
280
- break;
281
- case 14:
282
- _context6.prev = 14;
283
- _context6.t0 = _context6["catch"](1);
300
+ return _context6.abrupt("break", 28);
301
+ case 21:
302
+ _context6.prev = 21;
303
+ _context6.t0 = _context6["catch"](7);
284
304
  (0, _Utils.handleCallingClientErrors)(_context6.t0, function (clientError) {
285
305
  _this3.metricManager.submitRegistrationMetric(_types4.METRIC_EVENT.REGISTRATION_ERROR, _types4.REG_ACTION.REGISTER, _types4.METRIC_TYPE.BEHAVIORAL, clientError);
286
306
  _this3.emit(_types2.CALLING_CLIENT_EVENT_KEYS.ERROR, clientError);
@@ -290,13 +310,27 @@ var CallingClient = /*#__PURE__*/function (_Eventing) {
290
310
  });
291
311
  regionInfo.clientRegion = '';
292
312
  regionInfo.countryCode = '';
293
- case 19:
313
+ case 26:
314
+ _context6.next = 4;
315
+ break;
316
+ case 28:
317
+ _context6.next = 33;
318
+ break;
319
+ case 30:
320
+ _context6.prev = 30;
321
+ _context6.t1 = _context6["catch"](2);
322
+ _iterator.e(_context6.t1);
323
+ case 33:
324
+ _context6.prev = 33;
325
+ _iterator.f();
326
+ return _context6.finish(33);
327
+ case 36:
294
328
  return _context6.abrupt("return", regionInfo);
295
- case 20:
329
+ case 37:
296
330
  case "end":
297
331
  return _context6.stop();
298
332
  }
299
- }, _callee6, this, [[1, 14]]);
333
+ }, _callee6, this, [[2, 30, 33, 36], [7, 21]]);
300
334
  }));
301
335
  function getClientRegionInfo() {
302
336
  return _getClientRegionInfo.apply(this, arguments);
@@ -328,7 +362,7 @@ var CallingClient = /*#__PURE__*/function (_Eventing) {
328
362
  */
329
363
  useDefault = false;
330
364
  if (!((_this$sdkConfig3 = this.sdkConfig) !== null && _this$sdkConfig3 !== void 0 && (_this$sdkConfig3$disc = _this$sdkConfig3.discovery) !== null && _this$sdkConfig3$disc !== void 0 && _this$sdkConfig3$disc.country && (_this$sdkConfig4 = this.sdkConfig) !== null && _this$sdkConfig4 !== void 0 && (_this$sdkConfig4$disc = _this$sdkConfig4.discovery) !== null && _this$sdkConfig4$disc !== void 0 && _this$sdkConfig4$disc.region)) {
331
- _context7.next = 7;
365
+ _context7.next = 8;
332
366
  break;
333
367
  }
334
368
  _Logger.default.info('Updating region and country from the SDK config', {
@@ -337,47 +371,48 @@ var CallingClient = /*#__PURE__*/function (_Eventing) {
337
371
  });
338
372
  clientRegion = (_this$sdkConfig5 = this.sdkConfig) === null || _this$sdkConfig5 === void 0 ? void 0 : (_this$sdkConfig5$disc = _this$sdkConfig5.discovery) === null || _this$sdkConfig5$disc === void 0 ? void 0 : _this$sdkConfig5$disc.region;
339
373
  countryCode = (_this$sdkConfig6 = this.sdkConfig) === null || _this$sdkConfig6 === void 0 ? void 0 : (_this$sdkConfig6$disc = _this$sdkConfig6.discovery) === null || _this$sdkConfig6$disc === void 0 ? void 0 : _this$sdkConfig6$disc.country;
340
- _context7.next = 13;
374
+ this.mobiusHost = this.webex.internal.services._serviceUrls.mobius;
375
+ _context7.next = 14;
341
376
  break;
342
- case 7:
377
+ case 8:
343
378
  _Logger.default.info('Updating region and country through Region discovery', {
344
379
  file: _constants.CALLING_CLIENT_FILE,
345
380
  method: _constants.GET_MOBIUS_SERVERS_UTIL
346
381
  });
347
- _context7.next = 10;
382
+ _context7.next = 11;
348
383
  return this.getClientRegionInfo();
349
- case 10:
384
+ case 11:
350
385
  regionInfo = _context7.sent;
351
386
  clientRegion = regionInfo.clientRegion;
352
387
  countryCode = regionInfo.countryCode;
353
- case 13:
388
+ case 14:
354
389
  if (!(clientRegion && countryCode)) {
355
- _context7.next = 33;
390
+ _context7.next = 34;
356
391
  break;
357
392
  }
358
393
  _Logger.default.log("Found Region: ".concat(clientRegion, " and country: ").concat(countryCode, ", going to fetch Mobius server"), '');
359
- _context7.prev = 15;
360
- _context7.next = 18;
394
+ _context7.prev = 16;
395
+ _context7.next = 19;
361
396
  return this.webex.request({
362
- uri: "".concat(this.webex.internal.services._serviceUrls.mobius).concat(_constants.URL_ENDPOINT, "?regionCode=").concat(clientRegion, "&countryCode=").concat(countryCode),
397
+ uri: "".concat(this.mobiusHost).concat(_constants.URL_ENDPOINT, "?regionCode=").concat(clientRegion, "&countryCode=").concat(countryCode),
363
398
  method: _types3.HTTP_METHODS.GET,
364
399
  headers: (_headers3 = {}, (0, _defineProperty2.default)(_headers3, _constants.CISCO_DEVICE_URL, this.webex.internal.device.url), (0, _defineProperty2.default)(_headers3, _constants.SPARK_USER_AGENT, _constants.CALLING_USER_AGENT), _headers3),
365
400
  service: _types3.ALLOWED_SERVICES.MOBIUS
366
401
  });
367
- case 18:
402
+ case 19:
368
403
  temp = _context7.sent;
369
404
  _Logger.default.log('Mobius Server found for the region', '');
370
405
  mobiusServers = temp.body;
371
406
  /* update arrays of Mobius Uris. */
372
- mobiusUris = (0, _Utils.filterMobiusUris)(mobiusServers, this.webex.internal.services._serviceUrls.mobius);
407
+ mobiusUris = (0, _Utils.filterMobiusUris)(mobiusServers, this.mobiusHost);
373
408
  this.primaryMobiusUris = mobiusUris.primary;
374
409
  this.backupMobiusUris = mobiusUris.backup;
375
410
  _Logger.default.info("Final list of Mobius Servers, primary: ".concat(mobiusUris.primary, " and backup: ").concat(mobiusUris.backup), '');
376
- _context7.next = 31;
411
+ _context7.next = 32;
377
412
  break;
378
- case 27:
379
- _context7.prev = 27;
380
- _context7.t0 = _context7["catch"](15);
413
+ case 28:
414
+ _context7.prev = 28;
415
+ _context7.t0 = _context7["catch"](16);
381
416
  (0, _Utils.handleCallingClientErrors)(_context7.t0, function (clientError) {
382
417
  _this4.metricManager.submitRegistrationMetric(_types4.METRIC_EVENT.REGISTRATION_ERROR, _types4.REG_ACTION.REGISTER, _types4.METRIC_TYPE.BEHAVIORAL, clientError);
383
418
  _this4.emit(_types2.CALLING_CLIENT_EVENT_KEYS.ERROR, clientError);
@@ -386,26 +421,27 @@ var CallingClient = /*#__PURE__*/function (_Eventing) {
386
421
  file: _constants.CALLING_CLIENT_FILE
387
422
  });
388
423
  useDefault = true;
389
- case 31:
390
- _context7.next = 34;
424
+ case 32:
425
+ _context7.next = 35;
391
426
  break;
392
- case 33:
427
+ case 34:
393
428
  /* Setting this to true because region info is possibly undefined */
394
429
  useDefault = true;
395
- case 34:
430
+ case 35:
396
431
  /* Use a default URL if Mobius discovery fails either because of region info failure
397
432
  * or because the discovered Mobius couldn't be reached
398
433
  */
399
434
 
400
435
  if (useDefault) {
401
- _Logger.default.warn('Error in finding Mobius Servers. Will use the default URL.', '');
402
- this.primaryMobiusUris = ["".concat(this.webex.internal.services._serviceUrls.mobius).concat(_constants.URL_ENDPOINT)];
436
+ _Logger.default.warn("Couldn't resolve the region and country code. Defaulting to the catalog entries to discover mobius servers", '');
437
+ this.mobiusHost = "https://".concat(this.mobiusClusters[0].host).concat(_constants.API_V1);
438
+ this.primaryMobiusUris = ["".concat(this.mobiusHost).concat(_constants.URL_ENDPOINT)];
403
439
  }
404
- case 35:
440
+ case 36:
405
441
  case "end":
406
442
  return _context7.stop();
407
443
  }
408
- }, _callee7, this, [[15, 27]]);
444
+ }, _callee7, this, [[16, 28]]);
409
445
  }));
410
446
  function getMobiusServers() {
411
447
  return _getMobiusServers.apply(this, arguments);
@@ -1 +1 @@
1
- {"version":3,"names":["Media","_interopRequireWildcard","require","_asyncMutex","_Utils","_types","_SDKConnector","_interopRequireDefault","_impl","_types2","_types3","_Logger","_callManager","_constants","_line","_types4","_Metrics","_getRequireWildcardCache","nodeInterop","_WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof","default","cache","has","get","newObj","hasPropertyDescriptor","_Object$defineProperty","_Object$getOwnPropertyDescriptor","key","Object","prototype","hasOwnProperty","call","desc","set","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","result","NewTarget","constructor","_Reflect$construct","arguments","apply","_possibleConstructorReturn2","Reflect","sham","Proxy","Boolean","valueOf","e","CallingClient","_Eventing","_inherits2","_super","webex","config","_this$sdkConfig","_this$sdkConfig$servi","_this$sdkConfig2","_this$sdkConfig2$logg","_this","_classCallCheck2","_defineProperty2","_assertThisInitialized2","_asyncToGenerator2","_regenerator","mark","_callee2","registration","wrap","_callee2$","_context2","prev","next","_values","lineDict","isDeviceRegistered","mutex","runExclusive","_callee","_callee$","_context","isReconnectPending","log","file","CALLING_CLIENT_FILE","method","CALLS_CLEARED_HANDLER_UTIL","reconnectOnFailure","stop","sdkConnector","SDKConnector","getWebex","setWebex","Mutex","sdkConfig","serviceData","indicator","ServiceIndicator","CALLING","domain","logLevel","logger","level","LOGGER","ERROR","validateServiceData","callManager","getCallManager","metricManager","getMetricManager","mediaEngine","primaryMobiusUris","backupMobiusUris","registerSessionsListener","setLogger","registerCallsClearedListener","_createClass2","value","_init","_callee3","_callee3$","_context3","getMobiusServers","createLine","detectNetworkChange","init","_detectNetworkChange","_callee5","_this2","retry","line","_callee5$","_context5","setInterval","_callee4","_callee4$","_context4","internal","mercury","connected","_keys","getActiveCalls","length","warn","name","clearKeepaliveTimer","getStatus","RegistrationStatus","IDLE","handleConnectionRestoration","sent","NETWORK_FLAP_TIMEOUT","_getClientRegionInfo","_callee6","_this3","regionInfo","_headers","temp","myIP","response","clientRegionInfo","_callee6$","_context6","request","uri","concat","services","_serviceUrls","mobius","URL_ENDPOINT","IP_ENDPOINT","HTTP_METHODS","GET","headers","CISCO_DEVICE_URL","device","url","SPARK_USER_AGENT","CALLING_USER_AGENT","service","ALLOWED_SERVICES","MOBIUS","body","ipv4","DISCOVERY_URL","addAuthHeader","clientRegion","countryCode","t0","handleCallingClientErrors","clientError","submitRegistrationMetric","METRIC_EVENT","REGISTRATION_ERROR","REG_ACTION","REGISTER","METRIC_TYPE","BEHAVIORAL","emit","CALLING_CLIENT_EVENT_KEYS","GET_MOBIUS_SERVERS_UTIL","abrupt","getClientRegionInfo","_getMobiusServers","_callee7","_this$sdkConfig3","_this$sdkConfig3$disc","_this$sdkConfig4","_this$sdkConfig4$disc","_this4","useDefault","_this$sdkConfig5","_this$sdkConfig5$disc","_this$sdkConfig6","_this$sdkConfig6$disc","_headers3","mobiusServers","mobiusUris","_callee7$","_context7","discovery","country","region","info","filterMobiusUris","primary","backup","logContext","on","ALL_CALLS_CLEARED","callsClearedHandler","getLoggingLevel","getLogLevel","getSDKConnector","_this5","registerListener","MOBIUS_EVENT_KEYS","CALL_SESSION_EVENT_INCLUSIVE","_ref4","_callee8","event","sessionArr","i","_callee8$","_context8","data","userSessions","sessionType","SessionType","WEBEX_CALLING","splice","USER_SESSION_INFO","_x","_createLine","_callee9","_this$sdkConfig7","_callee9$","_context9","Line","userId","lineId","getLines","activeCalls","calls","forEach","correlationId","push","getConnectedCall","connectCall","isConnected","isHeld","Eventing","exports","createClient","_ref5","_callee10","callingClientInstance","_callee10$","_context10","_x2","_x3"],"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 {filterMobiusUris, handleCallingClientErrors, validateServiceData} from '../common/Utils';\nimport {LOGGER, LogContext} from '../Logger/types';\nimport SDKConnector from '../SDKConnector';\nimport {ClientRegionInfo, ISDKConnector, 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 IpInfo,\n MobiusServers,\n WebexRequestPayload,\n RegistrationStatus,\n} from '../common/types';\nimport {ICallingClient, CallingClientConfig} from './types';\nimport {ICall, ICallManager} 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 IP_ENDPOINT,\n SPARK_USER_AGENT,\n URL_ENDPOINT,\n NETWORK_FLAP_TIMEOUT,\n} from './constants';\nimport Line from './line';\nimport {ILine, LINE_EVENTS} from './line/types';\nimport {METRIC_EVENT, REG_ACTION, METRIC_TYPE, IMetricManager} from '../Metrics/types';\nimport {getMetricManager} from '../Metrics';\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 public mediaEngine: typeof Media;\n\n private lineDict: Record<string, ILine> = {};\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 }\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 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 this.primaryMobiusUris = [];\n this.backupMobiusUris = [];\n\n this.registerSessionsListener();\n\n log.setLogger(logLevel, CALLING_CLIENT_FILE);\n\n this.registerCallsClearedListener();\n }\n\n // async calls required to run after constructor\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 await this.getMobiusServers();\n await this.createLine();\n\n /* Better to run the timer once rather than after every registration */\n this.detectNetworkChange();\n }\n\n /**\n * Register callbacks for network changes.\n */\n private async detectNetworkChange() {\n let retry = false;\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 line = Object.values(this.lineDict)[0];\n\n setInterval(async () => {\n if (\n !this.webex.internal.mercury.connected &&\n !retry &&\n !Object.keys(this.callManager.getActiveCalls()).length\n ) {\n log.warn(`Network has flapped, waiting for mercury connection to be up`, {\n file: CALLING_CLIENT_FILE,\n method: this.detectNetworkChange.name,\n });\n\n line.registration.clearKeepaliveTimer();\n\n retry = true;\n }\n\n if (retry && this.webex.internal.mercury.connected) {\n if (line.getStatus() !== RegistrationStatus.IDLE) {\n retry = await line.registration.handleConnectionRestoration(retry);\n } else {\n retry = false;\n }\n }\n }, NETWORK_FLAP_TIMEOUT);\n }\n\n /**\n * Fetches countryCode and region of the client.\n */\n private async getClientRegionInfo(): Promise<RegionInfo> {\n const regionInfo = {} as RegionInfo;\n\n try {\n const temp = <WebexRequestPayload>await this.webex.request({\n uri: `${this.webex.internal.services._serviceUrls.mobius}${URL_ENDPOINT}${IP_ENDPOINT}`,\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 const myIP = (temp.body as IpInfo).ipv4;\n const response = <WebexRequestPayload>await this.webex.request({\n uri: `${DISCOVERY_URL}/${myIP}`,\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 ? clientRegionInfo.clientRegion : '';\n\n regionInfo.countryCode = clientRegionInfo?.countryCode ? clientRegionInfo.countryCode : '';\n } catch (err: unknown) {\n 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 clientError\n );\n this.emit(CALLING_CLIENT_EVENT_KEYS.ERROR, clientError);\n },\n {method: GET_MOBIUS_SERVERS_UTIL, file: CALLING_CLIENT_FILE}\n );\n regionInfo.clientRegion = '';\n regionInfo.countryCode = '';\n }\n\n return regionInfo;\n }\n\n /**\n * Local method for finding the mobius servers.\n */\n private async getMobiusServers() {\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.info('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 } else {\n log.info('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 '' as LogContext\n );\n\n try {\n const temp = <WebexRequestPayload>await this.webex.request({\n uri: `${this.webex.internal.services._serviceUrls.mobius}${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('Mobius Server found for the region', '' as LogContext);\n const mobiusServers = temp.body as MobiusServers;\n\n /* update arrays of Mobius Uris. */\n const mobiusUris = filterMobiusUris(\n mobiusServers,\n this.webex.internal.services._serviceUrls.mobius\n );\n this.primaryMobiusUris = mobiusUris.primary;\n this.backupMobiusUris = mobiusUris.backup;\n log.info(\n `Final list of Mobius Servers, primary: ${mobiusUris.primary} and backup: ${mobiusUris.backup}`,\n '' as LogContext\n );\n } catch (err: unknown) {\n 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 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 useDefault = true;\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('Error in finding Mobius Servers. Will use the default URL.', '' as LogContext);\n this.primaryMobiusUris = [\n `${this.webex.internal.services._serviceUrls.mobius}${URL_ENDPOINT}`,\n ];\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 const logContext = {\n file: CALLING_CLIENT_FILE,\n method: this.registerCallsClearedListener.name,\n };\n\n log.log('Registering listener for all calls cleared event', logContext);\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 // 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.log('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 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 const line = new Line(\n this.webex.internal.device.userId,\n this.webex.internal.device.url,\n this.mutex,\n this.primaryMobiusUris,\n this.backupMobiusUris,\n this.getLoggingLevel(),\n this.sdkConfig?.serviceData\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 * Retrieves call objects for all the active calls present in the client\n */\n public getActiveCalls(): Record<string, ICall[]> {\n const activeCalls = {};\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/**\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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"}
1
+ {"version":3,"names":["Media","_interopRequireWildcard","require","_asyncMutex","_Utils","_types","_SDKConnector","_interopRequireDefault","_impl","_types2","_types3","_Logger","_callManager","_constants","_line","_types4","_Metrics","_getRequireWildcardCache","nodeInterop","_WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof","default","cache","has","get","newObj","hasPropertyDescriptor","_Object$defineProperty","_Object$getOwnPropertyDescriptor","key","Object","prototype","hasOwnProperty","call","desc","set","_createForOfIteratorHelper","o","allowArrayLike","it","_Symbol","_Symbol$iterator","_Array$isArray","_unsupportedIterableToArray","length","i","F","s","n","done","value","e","_e","f","TypeError","normalCompletion","didErr","err","step","next","_e2","return","minLen","_arrayLikeToArray","toString","slice","constructor","name","_Array$from","test","arr","len","arr2","Array","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","result","NewTarget","_Reflect$construct","arguments","apply","_possibleConstructorReturn2","Reflect","sham","Proxy","Boolean","valueOf","CallingClient","_Eventing","_inherits2","_super","webex","config","_this$sdkConfig","_this$sdkConfig$servi","_this$sdkConfig2","_this$sdkConfig2$logg","_this","_classCallCheck2","_defineProperty2","_assertThisInitialized2","_asyncToGenerator2","_regenerator","mark","_callee2","registration","wrap","_callee2$","_context2","prev","_values","lineDict","isDeviceRegistered","mutex","runExclusive","_callee","_callee$","_context","isReconnectPending","log","file","CALLING_CLIENT_FILE","method","CALLS_CLEARED_HANDLER_UTIL","reconnectOnFailure","stop","sdkConnector","SDKConnector","getWebex","setWebex","Mutex","sdkConfig","serviceData","indicator","ServiceIndicator","CALLING","domain","logLevel","logger","level","LOGGER","ERROR","validateServiceData","callManager","getCallManager","metricManager","getMetricManager","mediaEngine","primaryMobiusUris","backupMobiusUris","mobiusClusters","internal","services","_hostCatalog","MOBIUS_US_PROD","MOBIUS_EU_PROD","MOBIUS_US_INT","MOBIUS_EU_INT","mobiusHost","registerSessionsListener","setLogger","registerCallsClearedListener","_createClass2","_init","_callee3","_callee3$","_context3","getMobiusServers","createLine","detectNetworkChange","init","_detectNetworkChange","_callee5","_this2","retry","line","_callee5$","_context5","setInterval","_callee4","_callee4$","_context4","mercury","connected","_keys","getActiveCalls","warn","clearKeepaliveTimer","getStatus","RegistrationStatus","IDLE","handleConnectionRestoration","sent","NETWORK_FLAP_TIMEOUT","_getClientRegionInfo","_callee6","_this3","regionInfo","_iterator","_step","mobius","_headers","temp","myIP","response","clientRegionInfo","_callee6$","_context6","concat","host","API_V1","request","uri","URL_ENDPOINT","IP_ENDPOINT","HTTP_METHODS","GET","headers","CISCO_DEVICE_URL","device","url","SPARK_USER_AGENT","CALLING_USER_AGENT","service","ALLOWED_SERVICES","MOBIUS","body","ipv4","DISCOVERY_URL","addAuthHeader","clientRegion","countryCode","abrupt","t0","handleCallingClientErrors","clientError","submitRegistrationMetric","METRIC_EVENT","REGISTRATION_ERROR","REG_ACTION","REGISTER","METRIC_TYPE","BEHAVIORAL","emit","CALLING_CLIENT_EVENT_KEYS","GET_MOBIUS_SERVERS_UTIL","t1","finish","getClientRegionInfo","_getMobiusServers","_callee7","_this$sdkConfig3","_this$sdkConfig3$disc","_this$sdkConfig4","_this$sdkConfig4$disc","_this4","useDefault","_this$sdkConfig5","_this$sdkConfig5$disc","_this$sdkConfig6","_this$sdkConfig6$disc","_headers3","mobiusServers","mobiusUris","_callee7$","_context7","discovery","country","region","info","_serviceUrls","filterMobiusUris","primary","backup","logContext","on","ALL_CALLS_CLEARED","callsClearedHandler","getLoggingLevel","getLogLevel","getSDKConnector","_this5","registerListener","MOBIUS_EVENT_KEYS","CALL_SESSION_EVENT_INCLUSIVE","_ref4","_callee8","event","sessionArr","_callee8$","_context8","data","userSessions","sessionType","SessionType","WEBEX_CALLING","splice","USER_SESSION_INFO","_x","_createLine","_callee9","_this$sdkConfig7","_callee9$","_context9","Line","userId","lineId","getLines","activeCalls","calls","forEach","correlationId","push","getConnectedCall","connectCall","isConnected","isHeld","Eventing","exports","createClient","_ref5","_callee10","callingClientInstance","_callee10$","_context10","_x2","_x3"],"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 {filterMobiusUris, handleCallingClientErrors, validateServiceData} from '../common/Utils';\nimport {LOGGER, LogContext} 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 IpInfo,\n MobiusServers,\n WebexRequestPayload,\n RegistrationStatus,\n} from '../common/types';\nimport {ICallingClient, CallingClientConfig} from './types';\nimport {ICall, ICallManager} 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 IP_ENDPOINT,\n SPARK_USER_AGENT,\n URL_ENDPOINT,\n NETWORK_FLAP_TIMEOUT,\n API_V1,\n MOBIUS_US_PROD,\n MOBIUS_EU_PROD,\n MOBIUS_US_INT,\n MOBIUS_EU_INT,\n} from './constants';\nimport Line from './line';\nimport {ILine, LINE_EVENTS} from './line/types';\nimport {METRIC_EVENT, REG_ACTION, METRIC_TYPE, IMetricManager} from '../Metrics/types';\nimport {getMetricManager} from '../Metrics';\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 mobiusClusters: ServiceHost[];\n\n private mobiusHost: string;\n\n public mediaEngine: typeof Media;\n\n private lineDict: Record<string, ILine> = {};\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 }\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 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 this.primaryMobiusUris = [];\n this.backupMobiusUris = [];\n this.mobiusClusters =\n this.webex.internal.services._hostCatalog[MOBIUS_US_PROD] ||\n this.webex.internal.services._hostCatalog[MOBIUS_EU_PROD] ||\n this.webex.internal.services._hostCatalog[MOBIUS_US_INT] ||\n this.webex.internal.services._hostCatalog[MOBIUS_EU_INT];\n this.mobiusHost = '';\n\n this.registerSessionsListener();\n\n log.setLogger(logLevel, CALLING_CLIENT_FILE);\n\n this.registerCallsClearedListener();\n }\n\n // async calls required to run after constructor\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 await this.getMobiusServers();\n await this.createLine();\n\n /* Better to run the timer once rather than after every registration */\n this.detectNetworkChange();\n }\n\n /**\n * Register callbacks for network changes.\n */\n private async detectNetworkChange() {\n let retry = false;\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 line = Object.values(this.lineDict)[0];\n\n setInterval(async () => {\n if (\n !this.webex.internal.mercury.connected &&\n !retry &&\n !Object.keys(this.callManager.getActiveCalls()).length\n ) {\n log.warn(`Network has flapped, waiting for mercury connection to be up`, {\n file: CALLING_CLIENT_FILE,\n method: this.detectNetworkChange.name,\n });\n\n line.registration.clearKeepaliveTimer();\n\n retry = true;\n }\n\n if (retry && this.webex.internal.mercury.connected) {\n if (line.getStatus() !== RegistrationStatus.IDLE) {\n retry = await line.registration.handleConnectionRestoration(retry);\n } else {\n retry = false;\n }\n }\n }, NETWORK_FLAP_TIMEOUT);\n }\n\n /**\n * Fetches countryCode and region of the client.\n */\n private async getClientRegionInfo(): Promise<RegionInfo> {\n const regionInfo = {} as RegionInfo;\n\n for (const mobius of this.mobiusClusters) {\n this.mobiusHost = `https://${mobius.host}${API_V1}`;\n\n try {\n // eslint-disable-next-line no-await-in-loop\n const temp = <WebexRequestPayload>await this.webex.request({\n uri: `${this.mobiusHost}${URL_ENDPOINT}${IP_ENDPOINT}`,\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 const myIP = (temp.body as IpInfo).ipv4;\n // eslint-disable-next-line no-await-in-loop\n const response = <WebexRequestPayload>await this.webex.request({\n uri: `${DISCOVERY_URL}/${myIP}`,\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 ? clientRegionInfo.clientRegion\n : '';\n\n regionInfo.countryCode = clientRegionInfo?.countryCode ? clientRegionInfo.countryCode : '';\n break;\n } catch (err: unknown) {\n 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 clientError\n );\n this.emit(CALLING_CLIENT_EVENT_KEYS.ERROR, clientError);\n },\n {method: GET_MOBIUS_SERVERS_UTIL, file: CALLING_CLIENT_FILE}\n );\n regionInfo.clientRegion = '';\n regionInfo.countryCode = '';\n }\n }\n\n return regionInfo;\n }\n\n /**\n * Local method for finding the mobius servers.\n */\n private async getMobiusServers() {\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.info('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 = this.webex.internal.services._serviceUrls.mobius;\n } else {\n log.info('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 '' as LogContext\n );\n\n try {\n // eslint-disable-next-line no-await-in-loop\n const temp = <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('Mobius Server found for the region', '' as LogContext);\n const mobiusServers = temp.body as MobiusServers;\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 log.info(\n `Final list of Mobius Servers, primary: ${mobiusUris.primary} and backup: ${mobiusUris.backup}`,\n '' as LogContext\n );\n } catch (err: unknown) {\n 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 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 useDefault = true;\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 '' as LogContext\n );\n this.mobiusHost = `https://${this.mobiusClusters[0].host}${API_V1}`;\n this.primaryMobiusUris = [`${this.mobiusHost}${URL_ENDPOINT}`];\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 const logContext = {\n file: CALLING_CLIENT_FILE,\n method: this.registerCallsClearedListener.name,\n };\n\n log.log('Registering listener for all calls cleared event', logContext);\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 // 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.log('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 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 const line = new Line(\n this.webex.internal.device.userId,\n this.webex.internal.device.url,\n this.mutex,\n this.primaryMobiusUris,\n this.backupMobiusUris,\n this.getLoggingLevel(),\n this.sdkConfig?.serviceData\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 * Retrieves call objects for all the active calls present in the client\n */\n public getActiveCalls(): Record<string, ICall[]> {\n const activeCalls = {};\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/**\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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"}