@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.
- package/dist/CallingClient/CallingClient.js +76 -40
- package/dist/CallingClient/CallingClient.js.map +1 -1
- package/dist/CallingClient/CallingClient.test.js +138 -72
- package/dist/CallingClient/CallingClient.test.js.map +1 -1
- package/dist/CallingClient/callingClientFixtures.js +107 -1
- package/dist/CallingClient/callingClientFixtures.js.map +1 -1
- package/dist/CallingClient/constants.js +11 -1
- package/dist/CallingClient/constants.js.map +1 -1
- package/dist/SDKConnector/types.js.map +1 -1
- package/dist/common/testUtil.js +1 -0
- package/dist/common/testUtil.js.map +1 -1
- package/dist/module/CallingClient/CallingClient.js +51 -37
- package/dist/module/CallingClient/callingClientFixtures.js +119 -1
- package/dist/module/CallingClient/constants.js +5 -0
- package/dist/module/common/testUtil.js +1 -0
- package/dist/types/CallingClient/CallingClient.d.ts +2 -0
- package/dist/types/CallingClient/CallingClient.d.ts.map +1 -1
- package/dist/types/CallingClient/callingClientFixtures.d.ts +69 -1
- package/dist/types/CallingClient/callingClientFixtures.d.ts.map +1 -1
- package/dist/types/CallingClient/constants.d.ts +5 -0
- package/dist/types/CallingClient/constants.d.ts.map +1 -1
- package/dist/types/SDKConnector/types.d.ts +2 -1
- package/dist/types/SDKConnector/types.d.ts.map +1 -1
- package/dist/types/common/testUtil.d.ts +1 -0
- package/dist/types/common/testUtil.d.ts.map +1 -1
- package/package.json +3 -2
|
@@ -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
|
-
|
|
257
|
-
_context6.
|
|
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.
|
|
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
|
|
285
|
+
case 10:
|
|
265
286
|
temp = _context6.sent;
|
|
266
|
-
myIP = temp.body.ipv4;
|
|
267
|
-
_context6.next =
|
|
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
|
|
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.
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
_context6.
|
|
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
|
|
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
|
|
329
|
+
case 37:
|
|
296
330
|
case "end":
|
|
297
331
|
return _context6.stop();
|
|
298
332
|
}
|
|
299
|
-
}, _callee6, this, [[
|
|
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 =
|
|
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
|
-
|
|
374
|
+
this.mobiusHost = this.webex.internal.services._serviceUrls.mobius;
|
|
375
|
+
_context7.next = 14;
|
|
341
376
|
break;
|
|
342
|
-
case
|
|
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 =
|
|
382
|
+
_context7.next = 11;
|
|
348
383
|
return this.getClientRegionInfo();
|
|
349
|
-
case
|
|
384
|
+
case 11:
|
|
350
385
|
regionInfo = _context7.sent;
|
|
351
386
|
clientRegion = regionInfo.clientRegion;
|
|
352
387
|
countryCode = regionInfo.countryCode;
|
|
353
|
-
case
|
|
388
|
+
case 14:
|
|
354
389
|
if (!(clientRegion && countryCode)) {
|
|
355
|
-
_context7.next =
|
|
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 =
|
|
360
|
-
_context7.next =
|
|
394
|
+
_context7.prev = 16;
|
|
395
|
+
_context7.next = 19;
|
|
361
396
|
return this.webex.request({
|
|
362
|
-
uri: "".concat(this.
|
|
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
|
|
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.
|
|
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 =
|
|
411
|
+
_context7.next = 32;
|
|
377
412
|
break;
|
|
378
|
-
case
|
|
379
|
-
_context7.prev =
|
|
380
|
-
_context7.t0 = _context7["catch"](
|
|
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
|
|
390
|
-
_context7.next =
|
|
424
|
+
case 32:
|
|
425
|
+
_context7.next = 35;
|
|
391
426
|
break;
|
|
392
|
-
case
|
|
427
|
+
case 34:
|
|
393
428
|
/* Setting this to true because region info is possibly undefined */
|
|
394
429
|
useDefault = true;
|
|
395
|
-
case
|
|
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('
|
|
402
|
-
this.
|
|
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
|
|
440
|
+
case 36:
|
|
405
441
|
case "end":
|
|
406
442
|
return _context7.stop();
|
|
407
443
|
}
|
|
408
|
-
}, _callee7, this, [[
|
|
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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"}
|