@webex/calling 3.12.0-next.5 → 3.12.0-next.50

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (212) hide show
  1. package/dist/CallingClient/CallingClient.js +506 -223
  2. package/dist/CallingClient/CallingClient.js.map +1 -1
  3. package/dist/CallingClient/CallingClient.test.js +236 -77
  4. package/dist/CallingClient/CallingClient.test.js.map +1 -1
  5. package/dist/CallingClient/calling/call.js +589 -445
  6. package/dist/CallingClient/calling/call.js.map +1 -1
  7. package/dist/CallingClient/calling/call.test.js +695 -445
  8. package/dist/CallingClient/calling/call.test.js.map +1 -1
  9. package/dist/CallingClient/calling/callManager.js +53 -30
  10. package/dist/CallingClient/calling/callManager.js.map +1 -1
  11. package/dist/CallingClient/calling/callManager.test.js +35 -0
  12. package/dist/CallingClient/calling/callManager.test.js.map +1 -1
  13. package/dist/CallingClient/calling/types.js +2 -0
  14. package/dist/CallingClient/calling/types.js.map +1 -1
  15. package/dist/CallingClient/constants.js +27 -3
  16. package/dist/CallingClient/constants.js.map +1 -1
  17. package/dist/CallingClient/line/index.js +4 -1
  18. package/dist/CallingClient/line/index.js.map +1 -1
  19. package/dist/CallingClient/line/line.test.js +16 -1
  20. package/dist/CallingClient/line/line.test.js.map +1 -1
  21. package/dist/CallingClient/registration/register.js +714 -407
  22. package/dist/CallingClient/registration/register.js.map +1 -1
  23. package/dist/CallingClient/registration/register.test.js +311 -58
  24. package/dist/CallingClient/registration/register.test.js.map +1 -1
  25. package/dist/CallingClient/registration/types.js.map +1 -1
  26. package/dist/CallingClient/registration/webWorker.js +41 -104
  27. package/dist/CallingClient/registration/webWorker.js.map +1 -1
  28. package/dist/CallingClient/registration/webWorker.test.js +39 -153
  29. package/dist/CallingClient/registration/webWorker.test.js.map +1 -1
  30. package/dist/CallingClient/registration/webWorkerStr.js +1 -1
  31. package/dist/CallingClient/registration/webWorkerStr.js.map +1 -1
  32. package/dist/CallingClient/types.js.map +1 -1
  33. package/dist/CallingClient/utils/constants.js +58 -0
  34. package/dist/CallingClient/utils/constants.js.map +1 -0
  35. package/dist/CallingClient/utils/index.js +63 -0
  36. package/dist/CallingClient/utils/index.js.map +1 -0
  37. package/dist/CallingClient/utils/mobiusSocketMapper.js +122 -0
  38. package/dist/CallingClient/utils/mobiusSocketMapper.js.map +1 -0
  39. package/dist/CallingClient/utils/mobiusSocketMapper.test.js +221 -0
  40. package/dist/CallingClient/utils/mobiusSocketMapper.test.js.map +1 -0
  41. package/dist/CallingClient/utils/request.js +415 -0
  42. package/dist/CallingClient/utils/request.js.map +1 -0
  43. package/dist/CallingClient/utils/request.test.js +968 -0
  44. package/dist/CallingClient/utils/request.test.js.map +1 -0
  45. package/dist/CallingClient/utils/types.js +7 -0
  46. package/dist/CallingClient/utils/types.js.map +1 -0
  47. package/dist/CallingClient/utils/wsFeatureFlag.js +70 -0
  48. package/dist/CallingClient/utils/wsFeatureFlag.js.map +1 -0
  49. package/dist/CallingClient/utils/wsFeatureFlag.test.js +139 -0
  50. package/dist/CallingClient/utils/wsFeatureFlag.test.js.map +1 -0
  51. package/dist/Contacts/ContactsClient.js +13 -11
  52. package/dist/Contacts/ContactsClient.js.map +1 -1
  53. package/dist/Contacts/ContactsClient.test.js +3 -8
  54. package/dist/Contacts/ContactsClient.test.js.map +1 -1
  55. package/dist/Events/types.js +11 -11
  56. package/dist/Events/types.js.map +1 -1
  57. package/dist/Metrics/index.js +63 -2
  58. package/dist/Metrics/index.js.map +1 -1
  59. package/dist/Metrics/index.test.js +357 -1
  60. package/dist/Metrics/index.test.js.map +1 -1
  61. package/dist/Metrics/types.js +19 -1
  62. package/dist/Metrics/types.js.map +1 -1
  63. package/dist/SDKConnector/types.js.map +1 -1
  64. package/dist/common/Utils.js +138 -44
  65. package/dist/common/Utils.js.map +1 -1
  66. package/dist/common/testUtil.js +8 -4
  67. package/dist/common/testUtil.js.map +1 -1
  68. package/dist/common/types.js +2 -0
  69. package/dist/common/types.js.map +1 -1
  70. package/dist/index.js +12 -0
  71. package/dist/index.js.map +1 -1
  72. package/dist/mobius-socket/config.js +24 -0
  73. package/dist/mobius-socket/config.js.map +1 -0
  74. package/dist/mobius-socket/errors.js +143 -0
  75. package/dist/mobius-socket/errors.js.map +1 -0
  76. package/dist/mobius-socket/errors.test.js +20 -0
  77. package/dist/mobius-socket/errors.test.js.map +1 -0
  78. package/dist/mobius-socket/index.js +57 -0
  79. package/dist/mobius-socket/index.js.map +1 -0
  80. package/dist/mobius-socket/mobius-socket-events.test.js +492 -0
  81. package/dist/mobius-socket/mobius-socket-events.test.js.map +1 -0
  82. package/dist/mobius-socket/mobius-socket.js +849 -0
  83. package/dist/mobius-socket/mobius-socket.js.map +1 -0
  84. package/dist/mobius-socket/mobius-socket.test.js +1898 -0
  85. package/dist/mobius-socket/mobius-socket.test.js.map +1 -0
  86. package/dist/mobius-socket/socket/constants.js +55 -0
  87. package/dist/mobius-socket/socket/constants.js.map +1 -0
  88. package/dist/mobius-socket/socket/index.js +15 -0
  89. package/dist/mobius-socket/socket/index.js.map +1 -0
  90. package/dist/mobius-socket/socket/socket-base.js +604 -0
  91. package/dist/mobius-socket/socket/socket-base.js.map +1 -0
  92. package/dist/mobius-socket/socket/socket.js +19 -0
  93. package/dist/mobius-socket/socket/socket.js.map +1 -0
  94. package/dist/mobius-socket/socket/socket.shim.js +26 -0
  95. package/dist/mobius-socket/socket/socket.shim.js.map +1 -0
  96. package/dist/mobius-socket/socket/types.js +7 -0
  97. package/dist/mobius-socket/socket/types.js.map +1 -0
  98. package/dist/mobius-socket/socket.test.js +727 -0
  99. package/dist/mobius-socket/socket.test.js.map +1 -0
  100. package/dist/mobius-socket/test/mocha-helpers.js +23 -0
  101. package/dist/mobius-socket/test/mocha-helpers.js.map +1 -0
  102. package/dist/mobius-socket/test/promise-tick.js +28 -0
  103. package/dist/mobius-socket/test/promise-tick.js.map +1 -0
  104. package/dist/mobius-socket/types.js +7 -0
  105. package/dist/mobius-socket/types.js.map +1 -0
  106. package/dist/module/CallingClient/CallingClient.js +148 -10
  107. package/dist/module/CallingClient/calling/call.js +177 -61
  108. package/dist/module/CallingClient/calling/callManager.js +27 -7
  109. package/dist/module/CallingClient/calling/types.js +2 -0
  110. package/dist/module/CallingClient/constants.js +23 -0
  111. package/dist/module/CallingClient/line/index.js +2 -2
  112. package/dist/module/CallingClient/registration/register.js +236 -63
  113. package/dist/module/CallingClient/registration/webWorker.js +42 -61
  114. package/dist/module/CallingClient/registration/webWorkerStr.js +47 -82
  115. package/dist/module/CallingClient/utils/constants.js +36 -0
  116. package/dist/module/CallingClient/utils/index.js +5 -0
  117. package/dist/module/CallingClient/utils/mobiusSocketMapper.js +72 -0
  118. package/dist/module/CallingClient/utils/request.js +204 -0
  119. package/dist/module/CallingClient/utils/types.js +1 -0
  120. package/dist/module/CallingClient/utils/wsFeatureFlag.js +41 -0
  121. package/dist/module/Contacts/ContactsClient.js +1 -1
  122. package/dist/module/Events/types.js +4 -10
  123. package/dist/module/Metrics/index.js +48 -1
  124. package/dist/module/Metrics/types.js +18 -0
  125. package/dist/module/common/Utils.js +52 -12
  126. package/dist/module/common/testUtil.js +5 -1
  127. package/dist/module/common/types.js +2 -0
  128. package/dist/module/index.js +1 -1
  129. package/dist/module/mobius-socket/config.js +15 -0
  130. package/dist/module/mobius-socket/errors.js +58 -0
  131. package/dist/module/mobius-socket/index.js +24 -0
  132. package/dist/module/mobius-socket/mobius-socket.js +593 -0
  133. package/dist/module/mobius-socket/socket/constants.js +26 -0
  134. package/dist/module/mobius-socket/socket/index.js +4 -0
  135. package/dist/module/mobius-socket/socket/socket-base.js +368 -0
  136. package/dist/module/mobius-socket/socket/socket.js +9 -0
  137. package/dist/module/mobius-socket/socket/socket.shim.js +12 -0
  138. package/dist/module/mobius-socket/socket/types.js +1 -0
  139. package/dist/module/mobius-socket/types.js +1 -0
  140. package/dist/types/CallingClient/CallingClient.d.ts +8 -0
  141. package/dist/types/CallingClient/CallingClient.d.ts.map +1 -1
  142. package/dist/types/CallingClient/calling/call.d.ts +12 -0
  143. package/dist/types/CallingClient/calling/call.d.ts.map +1 -1
  144. package/dist/types/CallingClient/calling/callManager.d.ts +3 -2
  145. package/dist/types/CallingClient/calling/callManager.d.ts.map +1 -1
  146. package/dist/types/CallingClient/calling/types.d.ts +34 -9
  147. package/dist/types/CallingClient/calling/types.d.ts.map +1 -1
  148. package/dist/types/CallingClient/constants.d.ts +23 -0
  149. package/dist/types/CallingClient/constants.d.ts.map +1 -1
  150. package/dist/types/CallingClient/line/index.d.ts +1 -1
  151. package/dist/types/CallingClient/line/index.d.ts.map +1 -1
  152. package/dist/types/CallingClient/registration/register.d.ts +7 -1
  153. package/dist/types/CallingClient/registration/register.d.ts.map +1 -1
  154. package/dist/types/CallingClient/registration/types.d.ts +4 -2
  155. package/dist/types/CallingClient/registration/types.d.ts.map +1 -1
  156. package/dist/types/CallingClient/registration/webWorker.d.ts.map +1 -1
  157. package/dist/types/CallingClient/registration/webWorkerStr.d.ts +1 -1
  158. package/dist/types/CallingClient/registration/webWorkerStr.d.ts.map +1 -1
  159. package/dist/types/CallingClient/types.d.ts +1 -0
  160. package/dist/types/CallingClient/types.d.ts.map +1 -1
  161. package/dist/types/CallingClient/utils/constants.d.ts +35 -0
  162. package/dist/types/CallingClient/utils/constants.d.ts.map +1 -0
  163. package/dist/types/CallingClient/utils/index.d.ts +6 -0
  164. package/dist/types/CallingClient/utils/index.d.ts.map +1 -0
  165. package/dist/types/CallingClient/utils/mobiusSocketMapper.d.ts +5 -0
  166. package/dist/types/CallingClient/utils/mobiusSocketMapper.d.ts.map +1 -0
  167. package/dist/types/CallingClient/utils/request.d.ts +27 -0
  168. package/dist/types/CallingClient/utils/request.d.ts.map +1 -0
  169. package/dist/types/CallingClient/utils/types.d.ts +34 -0
  170. package/dist/types/CallingClient/utils/types.d.ts.map +1 -0
  171. package/dist/types/CallingClient/utils/wsFeatureFlag.d.ts +4 -0
  172. package/dist/types/CallingClient/utils/wsFeatureFlag.d.ts.map +1 -0
  173. package/dist/types/Events/types.d.ts +14 -13
  174. package/dist/types/Events/types.d.ts.map +1 -1
  175. package/dist/types/Metrics/index.d.ts.map +1 -1
  176. package/dist/types/Metrics/types.d.ts +19 -2
  177. package/dist/types/Metrics/types.d.ts.map +1 -1
  178. package/dist/types/SDKConnector/types.d.ts +24 -0
  179. package/dist/types/SDKConnector/types.d.ts.map +1 -1
  180. package/dist/types/common/Utils.d.ts +9 -2
  181. package/dist/types/common/Utils.d.ts.map +1 -1
  182. package/dist/types/common/testUtil.d.ts +4 -1
  183. package/dist/types/common/testUtil.d.ts.map +1 -1
  184. package/dist/types/common/types.d.ts +3 -0
  185. package/dist/types/common/types.d.ts.map +1 -1
  186. package/dist/types/index.d.ts +1 -1
  187. package/dist/types/index.d.ts.map +1 -1
  188. package/dist/types/mobius-socket/config.d.ts +17 -0
  189. package/dist/types/mobius-socket/config.d.ts.map +1 -0
  190. package/dist/types/mobius-socket/errors.d.ts +32 -0
  191. package/dist/types/mobius-socket/errors.d.ts.map +1 -0
  192. package/dist/types/mobius-socket/index.d.ts +14 -0
  193. package/dist/types/mobius-socket/index.d.ts.map +1 -0
  194. package/dist/types/mobius-socket/mobius-socket.d.ts +48 -0
  195. package/dist/types/mobius-socket/mobius-socket.d.ts.map +1 -0
  196. package/dist/types/mobius-socket/socket/constants.d.ts +27 -0
  197. package/dist/types/mobius-socket/socket/constants.d.ts.map +1 -0
  198. package/dist/types/mobius-socket/socket/index.d.ts +5 -0
  199. package/dist/types/mobius-socket/socket/index.d.ts.map +1 -0
  200. package/dist/types/mobius-socket/socket/socket-base.d.ts +43 -0
  201. package/dist/types/mobius-socket/socket/socket-base.d.ts.map +1 -0
  202. package/dist/types/mobius-socket/socket/socket.d.ts +6 -0
  203. package/dist/types/mobius-socket/socket/socket.d.ts.map +1 -0
  204. package/dist/types/mobius-socket/socket/socket.shim.d.ts +6 -0
  205. package/dist/types/mobius-socket/socket/socket.shim.d.ts.map +1 -0
  206. package/dist/types/mobius-socket/socket/types.d.ts +61 -0
  207. package/dist/types/mobius-socket/socket/types.d.ts.map +1 -0
  208. package/dist/types/mobius-socket/types.d.ts +21 -0
  209. package/dist/types/mobius-socket/types.d.ts.map +1 -0
  210. package/package.json +20 -5
  211. package/src/mobius-socket/socket/socket.shim.ts +22 -0
  212. package/src/mobius-socket/socket/socket.ts +14 -0
@@ -35,14 +35,16 @@ var _SDKConnector = _interopRequireDefault(require("../SDKConnector"));
35
35
  var _impl = require("../Events/impl");
36
36
  var _types2 = require("../Events/types");
37
37
  var _types3 = require("../common/types");
38
+ var _types4 = require("./calling/types");
38
39
  var _Logger = _interopRequireDefault(require("../Logger"));
39
40
  var _callManager = require("./calling/callManager");
40
41
  var _constants2 = require("./constants");
41
42
  var _line = _interopRequireDefault(require("./line"));
42
- var _types4 = require("../Metrics/types");
43
+ var _types5 = require("../Metrics/types");
43
44
  var _Metrics = require("../Metrics");
44
45
  var _windowsChromiumIceWarmupUtils = _interopRequireDefault(require("./windowsChromiumIceWarmupUtils"));
45
- function _interopRequireWildcard(e, t) { if ("function" == typeof _WeakMap) var r = new _WeakMap(), n = new _WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t9 in e) "default" !== _t9 && {}.hasOwnProperty.call(e, _t9) && ((i = (o = _Object$defineProperty) && _Object$getOwnPropertyDescriptor(e, _t9)) && (i.get || i.set) ? o(f, _t9, i) : f[_t9] = e[_t9]); return f; })(e, t); }
46
+ var _request = require("./utils/request");
47
+ function _interopRequireWildcard(e, t) { if ("function" == typeof _WeakMap) var r = new _WeakMap(), n = new _WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t11 in e) "default" !== _t11 && {}.hasOwnProperty.call(e, _t11) && ((i = (o = _Object$defineProperty) && _Object$getOwnPropertyDescriptor(e, _t11)) && (i.get || i.set) ? o(f, _t11, i) : f[_t11] = e[_t11]); return f; })(e, t); }
46
48
  function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof _Symbol && r[_Symbol$iterator] || r["@@iterator"]; if (!t) { if (_Array$isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }
47
49
  function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? _Array$from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
48
50
  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
@@ -73,12 +75,16 @@ var CallingClient = exports.CallingClient = /*#__PURE__*/function (_Eventing) {
73
75
  (0, _defineProperty2.default)(_this, "callManager", void 0);
74
76
  (0, _defineProperty2.default)(_this, "metricManager", void 0);
75
77
  (0, _defineProperty2.default)(_this, "sdkConfig", void 0);
78
+ (0, _defineProperty2.default)(_this, "serviceData", void 0);
76
79
  (0, _defineProperty2.default)(_this, "primaryMobiusUris", void 0);
77
80
  (0, _defineProperty2.default)(_this, "backupMobiusUris", void 0);
81
+ (0, _defineProperty2.default)(_this, "primaryWssMobiusUris", void 0);
82
+ (0, _defineProperty2.default)(_this, "backupWssMobiusUris", void 0);
78
83
  (0, _defineProperty2.default)(_this, "mobiusClusters", void 0);
79
84
  (0, _defineProperty2.default)(_this, "mobiusHost", void 0);
80
85
  (0, _defineProperty2.default)(_this, "mediaEngine", void 0);
81
86
  (0, _defineProperty2.default)(_this, "lineDict", {});
87
+ (0, _defineProperty2.default)(_this, "apiRequest", void 0);
82
88
  (0, _defineProperty2.default)(_this, "isNetworkDown", false);
83
89
  (0, _defineProperty2.default)(_this, "networkDownTimestamp", '');
84
90
  (0, _defineProperty2.default)(_this, "networkUpTimestamp", '');
@@ -122,7 +128,7 @@ var CallingClient = exports.CallingClient = /*#__PURE__*/function (_Eventing) {
122
128
  method: _constants2.METHODS.MERCURY_OFFLINE
123
129
  });
124
130
  _this.mercuryDownTimestamp = new Date().toISOString();
125
- _this.metricManager.submitConnectionMetrics(_types4.METRIC_EVENT.CONNECTION_ERROR, _types4.CONNECTION_ACTION.MERCURY_DOWN, _types4.METRIC_TYPE.BEHAVIORAL, _this.mercuryDownTimestamp, _this.mercuryUpTimestamp);
131
+ _this.metricManager.submitConnectionMetrics(_types5.METRIC_EVENT.CONNECTION_ERROR, _types5.CONNECTION_ACTION.MERCURY_DOWN, _types5.METRIC_TYPE.BEHAVIORAL, _this.mercuryDownTimestamp, _this.mercuryUpTimestamp);
126
132
  });
127
133
  (0, _defineProperty2.default)(_this, "handleMercuryOnline", /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee3() {
128
134
  var callCheckInterval;
@@ -174,7 +180,7 @@ var CallingClient = exports.CallingClient = /*#__PURE__*/function (_Eventing) {
174
180
  _context3.next = 1;
175
181
  return _this.checkCallStatus();
176
182
  case 1:
177
- _this.metricManager.submitConnectionMetrics(_types4.METRIC_EVENT.CONNECTION_ERROR, _types4.CONNECTION_ACTION.NETWORK_FLAP, _types4.METRIC_TYPE.BEHAVIORAL, _this.networkDownTimestamp, _this.networkUpTimestamp);
183
+ _this.metricManager.submitConnectionMetrics(_types5.METRIC_EVENT.CONNECTION_ERROR, _types5.CONNECTION_ACTION.NETWORK_FLAP, _types5.METRIC_TYPE.BEHAVIORAL, _this.networkDownTimestamp, _this.networkUpTimestamp);
178
184
  _context3.next = 4;
179
185
  break;
180
186
  case 2:
@@ -185,13 +191,63 @@ var CallingClient = exports.CallingClient = /*#__PURE__*/function (_Eventing) {
185
191
  _context3.next = 3;
186
192
  return _this.checkCallStatus();
187
193
  case 3:
188
- _this.metricManager.submitConnectionMetrics(_types4.METRIC_EVENT.CONNECTION_ERROR, _types4.CONNECTION_ACTION.MERCURY_UP, _types4.METRIC_TYPE.BEHAVIORAL, _this.mercuryDownTimestamp, _this.mercuryUpTimestamp);
194
+ _this.metricManager.submitConnectionMetrics(_types5.METRIC_EVENT.CONNECTION_ERROR, _types5.CONNECTION_ACTION.MERCURY_UP, _types5.METRIC_TYPE.BEHAVIORAL, _this.mercuryDownTimestamp, _this.mercuryUpTimestamp);
189
195
  case 4:
190
196
  case "end":
191
197
  return _context3.stop();
192
198
  }
193
199
  }, _callee3);
194
200
  })));
201
+ (0, _defineProperty2.default)(_this, "handleMobiusAsyncEvent", /*#__PURE__*/function () {
202
+ var _ref4 = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee4(event) {
203
+ var loggerContext, eventType, line;
204
+ return _regenerator.default.wrap(function (_context4) {
205
+ while (1) switch (_context4.prev = _context4.next) {
206
+ case 0:
207
+ loggerContext = {
208
+ file: _constants2.CALLING_CLIENT_FILE,
209
+ method: _constants2.METHODS.HANDLE_MOBIUS_ASYNC_EVENT
210
+ };
211
+ eventType = event === null || event === void 0 ? void 0 : event.data.eventType;
212
+ _Logger.default.trace("Mobius async event received - eventType: ".concat(eventType !== null && eventType !== void 0 ? eventType : 'undefined'), loggerContext);
213
+ if (eventType) {
214
+ _context4.next = 1;
215
+ break;
216
+ }
217
+ _Logger.default.warn('Dropping unsupported mobius socket payload', loggerContext);
218
+ return _context4.abrupt("return");
219
+ case 1:
220
+ if (!(eventType === _types4.MobiusEventType.REGISTRATION_DOWN)) {
221
+ _context4.next = 4;
222
+ break;
223
+ }
224
+ _Logger.default.warn("Received ".concat(eventType, " event from Mobius."), loggerContext);
225
+ line = (0, _values.default)(_this.lineDict)[0];
226
+ if (line) {
227
+ _context4.next = 2;
228
+ break;
229
+ }
230
+ _Logger.default.warn('No line found, skipping registration down event', loggerContext);
231
+ return _context4.abrupt("return");
232
+ case 2:
233
+ _context4.next = 3;
234
+ return line.registration.handleRegistrationDownEvent(event);
235
+ case 3:
236
+ _this.metricManager.submitMobiusSocketMetric(_types5.METRIC_EVENT.MOBIUS_SOCKET_ERROR, _types5.MOBIUS_SOCKET_ACTION.REGISTRATION_DOWN, _types5.METRIC_TYPE.BEHAVIORAL, undefined, event === null || event === void 0 ? void 0 : event.trackingId, undefined, eventType);
237
+ return _context4.abrupt("return");
238
+ case 4:
239
+ _this.callManager.dequeueWsEvents(event);
240
+ _Logger.default.trace("Mobius async event dispatched to CallManager - eventType: ".concat(eventType), loggerContext);
241
+ case 5:
242
+ case "end":
243
+ return _context4.stop();
244
+ }
245
+ }, _callee4);
246
+ }));
247
+ return function (_x) {
248
+ return _ref4.apply(this, arguments);
249
+ };
250
+ }());
195
251
  /**
196
252
  * Handler registered for ALL_CALLS_CLEARED event emitted by callManager.
197
253
  *
@@ -199,10 +255,10 @@ var CallingClient = exports.CallingClient = /*#__PURE__*/function (_Eventing) {
199
255
  * will be attempted here on receiving a notification from callManager that all
200
256
  * calls are cleaned up.
201
257
  */
202
- (0, _defineProperty2.default)(_this, "callsClearedHandler", /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee5() {
258
+ (0, _defineProperty2.default)(_this, "callsClearedHandler", /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee6() {
203
259
  var registration;
204
- return _regenerator.default.wrap(function (_context5) {
205
- while (1) switch (_context5.prev = _context5.next) {
260
+ return _regenerator.default.wrap(function (_context6) {
261
+ while (1) switch (_context6.prev = _context6.next) {
206
262
  case 0:
207
263
  _Logger.default.info(_constants.METHOD_START_MESSAGE, {
208
264
  file: _constants2.CALLING_CLIENT_FILE,
@@ -212,35 +268,35 @@ var CallingClient = exports.CallingClient = /*#__PURE__*/function (_Eventing) {
212
268
  // it will change once we have proper lineId and multiple lines as well
213
269
  registration = (0, _values.default)(_this.lineDict)[0].registration;
214
270
  if (registration.isDeviceRegistered()) {
215
- _context5.next = 1;
271
+ _context6.next = 1;
216
272
  break;
217
273
  }
218
- _context5.next = 1;
219
- return _this.mutex.runExclusive(/*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee4() {
220
- return _regenerator.default.wrap(function (_context4) {
221
- while (1) switch (_context4.prev = _context4.next) {
274
+ _context6.next = 1;
275
+ return _this.mutex.runExclusive(/*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee5() {
276
+ return _regenerator.default.wrap(function (_context5) {
277
+ while (1) switch (_context5.prev = _context5.next) {
222
278
  case 0:
223
279
  if (!registration.isReconnectPending()) {
224
- _context4.next = 1;
280
+ _context5.next = 1;
225
281
  break;
226
282
  }
227
283
  _Logger.default.info('All calls cleared, reconnecting', {
228
284
  file: _constants2.CALLING_CLIENT_FILE,
229
285
  method: _constants2.CALLS_CLEARED_HANDLER_UTIL
230
286
  });
231
- _context4.next = 1;
287
+ _context5.next = 1;
232
288
  return registration.reconnectOnFailure(_constants2.CALLS_CLEARED_HANDLER_UTIL);
233
289
  case 1:
234
290
  case "end":
235
- return _context4.stop();
291
+ return _context5.stop();
236
292
  }
237
- }, _callee4);
293
+ }, _callee5);
238
294
  })));
239
295
  case 1:
240
296
  case "end":
241
- return _context5.stop();
297
+ return _context6.stop();
242
298
  }
243
- }, _callee5);
299
+ }, _callee6);
244
300
  })));
245
301
  _this.sdkConnector = _SDKConnector.default;
246
302
  if (!_this.sdkConnector.getWebex()) {
@@ -254,15 +310,15 @@ var CallingClient = exports.CallingClient = /*#__PURE__*/function (_Eventing) {
254
310
  _this.mutex = new _asyncMutex.Mutex();
255
311
  _this.webex = _this.sdkConnector.getWebex();
256
312
  _this.sdkConfig = config;
257
- var serviceData = (_this$sdkConfig = _this.sdkConfig) !== null && _this$sdkConfig !== void 0 && (_this$sdkConfig$servi = _this$sdkConfig.serviceData) !== null && _this$sdkConfig$servi !== void 0 && _this$sdkConfig$servi.indicator ? _this.sdkConfig.serviceData : {
313
+ _this.serviceData = (_this$sdkConfig = _this.sdkConfig) !== null && _this$sdkConfig !== void 0 && (_this$sdkConfig$servi = _this$sdkConfig.serviceData) !== null && _this$sdkConfig$servi !== void 0 && _this$sdkConfig$servi.indicator ? _this.sdkConfig.serviceData : {
258
314
  indicator: _types3.ServiceIndicator.CALLING,
259
315
  domain: ''
260
316
  };
261
317
  var logLevel = (_this$sdkConfig2 = _this.sdkConfig) !== null && _this$sdkConfig2 !== void 0 && (_this$sdkConfig2$logg = _this$sdkConfig2.logger) !== null && _this$sdkConfig2$logg !== void 0 && _this$sdkConfig2$logg.level ? _this.sdkConfig.logger.level : _types.LOGGER.ERROR;
262
318
  _Logger.default.setLogger(logLevel, _constants2.CALLING_CLIENT_FILE);
263
- (0, _Utils.validateServiceData)(serviceData);
264
- _this.callManager = (0, _callManager.getCallManager)(_this.webex, serviceData.indicator);
265
- _this.metricManager = (0, _Metrics.getMetricManager)(_this.webex, serviceData.indicator);
319
+ (0, _Utils.validateServiceData)(_this.serviceData);
320
+ _this.callManager = (0, _callManager.getCallManager)(_this.webex, _this.serviceData.indicator);
321
+ _this.metricManager = (0, _Metrics.getMetricManager)(_this.webex, _this.serviceData.indicator);
266
322
  _this.mediaEngine = Media;
267
323
  var adaptedLogger = {
268
324
  log: function log() {
@@ -305,8 +361,13 @@ var CallingClient = exports.CallingClient = /*#__PURE__*/function (_Eventing) {
305
361
  _this.mediaEngine.setLogger(adaptedLogger);
306
362
  _this.primaryMobiusUris = [];
307
363
  _this.backupMobiusUris = [];
364
+ _this.primaryWssMobiusUris = [];
365
+ _this.backupWssMobiusUris = [];
308
366
  _this.mobiusClusters = _this.webex.internal.services.getMobiusClusters();
309
367
  _this.mobiusHost = '';
368
+ _this.apiRequest = _request.APIRequest.getInstance({
369
+ webex: _this.webex
370
+ });
310
371
  _this.registerSessionsListener();
311
372
  _this.registerCallsClearedListener();
312
373
  return _this;
@@ -328,27 +389,36 @@ var CallingClient = exports.CallingClient = /*#__PURE__*/function (_Eventing) {
328
389
  return (0, _createClass2.default)(CallingClient, [{
329
390
  key: "init",
330
391
  value: (function () {
331
- var _init = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee6() {
332
- var _window, _window$navigator;
333
- var ua, _t;
334
- return _regenerator.default.wrap(function (_context6) {
335
- while (1) switch (_context6.prev = _context6.next) {
392
+ var _init = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee7() {
393
+ var _window,
394
+ _window$navigator,
395
+ _this2 = this;
396
+ var loggerContext, ua, _this$sdkConfig3, rtmsDomain, _t;
397
+ return _regenerator.default.wrap(function (_context7) {
398
+ while (1) switch (_context7.prev = _context7.next) {
336
399
  case 0:
400
+ loggerContext = {
401
+ file: _constants2.CALLING_CLIENT_FILE,
402
+ method: _constants2.METHODS.INIT
403
+ };
404
+ _Logger.default.info(_constants.METHOD_START_MESSAGE, loggerContext);
405
+
406
+ // Only for Windows Chromium based browsers we need to do the ICE warmup
337
407
  if (!(typeof window !== 'undefined' && (_window = window) !== null && _window !== void 0 && (_window$navigator = _window.navigator) !== null && _window$navigator !== void 0 && _window$navigator.userAgent)) {
338
- _context6.next = 4;
408
+ _context7.next = 4;
339
409
  break;
340
410
  }
341
411
  ua = window.navigator.userAgent;
342
412
  if (!ua.toLowerCase().includes('windows')) {
343
- _context6.next = 4;
413
+ _context7.next = 4;
344
414
  break;
345
415
  }
346
416
  _Logger.default.info('Starting ICE warmup for Windows Chromium based browser', {
347
417
  file: _constants2.CALLING_CLIENT_FILE,
348
418
  method: 'init'
349
419
  });
350
- _context6.prev = 1;
351
- _context6.next = 2;
420
+ _context7.prev = 1;
421
+ _context7.next = 2;
352
422
  return (0, _windowsChromiumIceWarmupUtils.default)({
353
423
  iceServers: [],
354
424
  timeoutMs: 1000
@@ -358,28 +428,62 @@ var CallingClient = exports.CallingClient = /*#__PURE__*/function (_Eventing) {
358
428
  file: _constants2.CALLING_CLIENT_FILE,
359
429
  method: 'init'
360
430
  });
361
- _context6.next = 4;
431
+ _context7.next = 4;
362
432
  break;
363
433
  case 3:
364
- _context6.prev = 3;
365
- _t = _context6["catch"](1);
434
+ _context7.prev = 3;
435
+ _t = _context7["catch"](1);
366
436
  _Logger.default.warn("ICE warmup failed: ".concat(_t), {
367
437
  file: _constants2.CALLING_CLIENT_FILE,
368
438
  method: 'init'
369
439
  });
370
440
  case 4:
371
- _context6.next = 5;
441
+ _context7.next = 5;
372
442
  return this.getMobiusServers();
373
443
  case 5:
374
- _context6.next = 6;
375
- return this.createLine();
444
+ if (!this.apiRequest.isSocketEnabled()) {
445
+ _context7.next = 7;
446
+ break;
447
+ }
448
+ this.apiRequest.registerMobiusSocketConnectionListener({
449
+ onConnected: function onConnected() {
450
+ return _this2.emit(_types2.CALLING_CLIENT_EVENT_KEYS.MOBIUS_SOCKET_CONNECTED);
451
+ },
452
+ onDisconnected: function onDisconnected(reason) {
453
+ return _this2.emit(_types2.CALLING_CLIENT_EVENT_KEYS.MOBIUS_SOCKET_DISCONNECTED, {
454
+ reason: reason
455
+ });
456
+ }
457
+ });
458
+ _context7.next = 6;
459
+ return this.connectToMobiusSocket();
376
460
  case 6:
377
- this.setupNetworkEventListeners();
461
+ this.apiRequest.registerMobiusSocketListener(this.handleMobiusAsyncEvent);
378
462
  case 7:
463
+ // Auto-fetch RTMS domain from service catalog for contact-center flows
464
+ if (this.serviceData.indicator === _types3.ServiceIndicator.CONTACT_CENTER && !this.serviceData.domain) {
465
+ rtmsDomain = this.getRTMSDomain();
466
+ this.serviceData.domain = rtmsDomain;
467
+ if ((_this$sdkConfig3 = this.sdkConfig) !== null && _this$sdkConfig3 !== void 0 && _this$sdkConfig3.serviceData) {
468
+ this.sdkConfig.serviceData.domain = this.serviceData.domain;
469
+ }
470
+ }
471
+ if ((0, _Utils.isValidServiceDomain)(this.serviceData)) {
472
+ _context7.next = 8;
473
+ break;
474
+ }
475
+ throw new Error('Invalid service domain.');
476
+ case 8:
477
+ _context7.next = 9;
478
+ return this.createLine();
479
+ case 9:
480
+ this.setupNetworkEventListeners();
481
+ _Logger.default.log('CallingClient initialization complete', loggerContext);
482
+ case 10:
379
483
  case "end":
380
- return _context6.stop();
484
+ return _context7.stop();
381
485
  }
382
- }, _callee6, this, [[1, 3]]);
486
+ }, _callee7, this, [[1, 3]]);
383
487
  }));
384
488
  function init() {
385
489
  return _init.apply(this, arguments);
@@ -387,24 +491,53 @@ var CallingClient = exports.CallingClient = /*#__PURE__*/function (_Eventing) {
387
491
  return init;
388
492
  }()
389
493
  /**
390
- * Ping a reliable external endpoint with a short timeout to infer connectivity.
494
+ * Retrieves the RTMS domain from the service catalog for contact-center flows.
495
+ *
496
+ * @returns The RTMS domain from catalog when available.
391
497
  */
392
498
  )
499
+ }, {
500
+ key: "getRTMSDomain",
501
+ value: function getRTMSDomain() {
502
+ _Logger.default.info('Fetching RTMS domain from service catalog', {
503
+ file: _constants2.CALLING_CLIENT_FILE,
504
+ method: _constants2.METHODS.GET_RTMS_DOMAIN
505
+ });
506
+ try {
507
+ var rtmsURL = this.webex.internal.services.get(_constants2.WCC_CALLING_RTMS_DOMAIN);
508
+ var url = new URL(rtmsURL);
509
+ _Logger.default.info("RTMS domain resolved from catalog: ".concat(url.hostname), {
510
+ file: _constants2.CALLING_CLIENT_FILE,
511
+ method: _constants2.METHODS.GET_RTMS_DOMAIN
512
+ });
513
+ return url.hostname;
514
+ } catch (error) {
515
+ _Logger.default.warn("Failed to fetch RTMS domain from service catalog: ".concat(error), {
516
+ file: _constants2.CALLING_CLIENT_FILE,
517
+ method: _constants2.METHODS.GET_RTMS_DOMAIN
518
+ });
519
+ return '';
520
+ }
521
+ }
522
+
523
+ /**
524
+ * Ping a reliable external endpoint with a short timeout to infer connectivity.
525
+ */
393
526
  }, {
394
527
  key: "checkNetworkReachability",
395
528
  value: (function () {
396
- var _checkNetworkReachability = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee7() {
529
+ var _checkNetworkReachability = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee8() {
397
530
  var controller, timeoutId, _t2;
398
- return _regenerator.default.wrap(function (_context7) {
399
- while (1) switch (_context7.prev = _context7.next) {
531
+ return _regenerator.default.wrap(function (_context8) {
532
+ while (1) switch (_context8.prev = _context8.next) {
400
533
  case 0:
401
- _context7.prev = 0;
534
+ _context8.prev = 0;
402
535
  controller = new AbortController();
403
536
  timeoutId = setTimeout(function () {
404
537
  return controller.abort();
405
538
  }, 3000); // Using a common connectivity check endpoint that returns 204 with minimal payload.
406
539
  // no-cors mode yields an opaque response but a successful fetch implies reachability.
407
- _context7.next = 1;
540
+ _context8.next = 1;
408
541
  return fetch('https://www.google.com/generate_204', {
409
542
  method: 'GET',
410
543
  cache: 'no-cache',
@@ -413,20 +546,20 @@ var CallingClient = exports.CallingClient = /*#__PURE__*/function (_Eventing) {
413
546
  });
414
547
  case 1:
415
548
  clearTimeout(timeoutId);
416
- return _context7.abrupt("return", true);
549
+ return _context8.abrupt("return", true);
417
550
  case 2:
418
- _context7.prev = 2;
419
- _t2 = _context7["catch"](0);
551
+ _context8.prev = 2;
552
+ _t2 = _context8["catch"](0);
420
553
  _Logger.default.warn("Network connectivity probe failed: ".concat(_t2), {
421
554
  file: _constants2.CALLING_CLIENT_FILE,
422
555
  method: 'pingExternal'
423
556
  });
424
- return _context7.abrupt("return", false);
557
+ return _context8.abrupt("return", false);
425
558
  case 3:
426
559
  case "end":
427
- return _context7.stop();
560
+ return _context8.stop();
428
561
  }
429
- }, _callee7, null, [[0, 2]]);
562
+ }, _callee8, null, [[0, 2]]);
430
563
  }));
431
564
  function checkNetworkReachability() {
432
565
  return _checkNetworkReachability.apply(this, arguments);
@@ -436,10 +569,10 @@ var CallingClient = exports.CallingClient = /*#__PURE__*/function (_Eventing) {
436
569
  }, {
437
570
  key: "checkCallStatus",
438
571
  value: function () {
439
- var _checkCallStatus = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee8() {
572
+ var _checkCallStatus = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee9() {
440
573
  var loggerContext, calls, _iterator, _step, _loop, _t3;
441
- return _regenerator.default.wrap(function (_context9) {
442
- while (1) switch (_context9.prev = _context9.next) {
574
+ return _regenerator.default.wrap(function (_context0) {
575
+ while (1) switch (_context0.prev = _context0.next) {
443
576
  case 0:
444
577
  loggerContext = {
445
578
  file: _constants2.CALLING_CLIENT_FILE,
@@ -447,11 +580,11 @@ var CallingClient = exports.CallingClient = /*#__PURE__*/function (_Eventing) {
447
580
  };
448
581
  calls = (0, _values.default)(this.callManager.getActiveCalls());
449
582
  _iterator = _createForOfIteratorHelper(calls);
450
- _context9.prev = 1;
583
+ _context0.prev = 1;
451
584
  _loop = /*#__PURE__*/_regenerator.default.mark(function _loop() {
452
585
  var call;
453
- return _regenerator.default.wrap(function (_context8) {
454
- while (1) switch (_context8.prev = _context8.next) {
586
+ return _regenerator.default.wrap(function (_context9) {
587
+ while (1) switch (_context9.prev = _context9.next) {
455
588
  case 0:
456
589
  call = _step.value;
457
590
  call.postStatus().then(function () {
@@ -468,36 +601,36 @@ var CallingClient = exports.CallingClient = /*#__PURE__*/function (_Eventing) {
468
601
  });
469
602
  case 1:
470
603
  case "end":
471
- return _context8.stop();
604
+ return _context9.stop();
472
605
  }
473
606
  }, _loop);
474
607
  });
475
608
  _iterator.s();
476
609
  case 2:
477
610
  if ((_step = _iterator.n()).done) {
478
- _context9.next = 4;
611
+ _context0.next = 4;
479
612
  break;
480
613
  }
481
- return _context9.delegateYield(_loop(), "t0", 3);
614
+ return _context0.delegateYield(_loop(), "t0", 3);
482
615
  case 3:
483
- _context9.next = 2;
616
+ _context0.next = 2;
484
617
  break;
485
618
  case 4:
486
- _context9.next = 6;
619
+ _context0.next = 6;
487
620
  break;
488
621
  case 5:
489
- _context9.prev = 5;
490
- _t3 = _context9["catch"](1);
622
+ _context0.prev = 5;
623
+ _t3 = _context0["catch"](1);
491
624
  _iterator.e(_t3);
492
625
  case 6:
493
- _context9.prev = 6;
626
+ _context0.prev = 6;
494
627
  _iterator.f();
495
- return _context9.finish(6);
628
+ return _context0.finish(6);
496
629
  case 7:
497
630
  case "end":
498
- return _context9.stop();
631
+ return _context0.stop();
499
632
  }
500
- }, _callee8, this, [[1, 5, 6, 7]]);
633
+ }, _callee9, this, [[1, 5, 6, 7]]);
501
634
  }));
502
635
  function checkCallStatus() {
503
636
  return _checkCallStatus.apply(this, arguments);
@@ -507,16 +640,16 @@ var CallingClient = exports.CallingClient = /*#__PURE__*/function (_Eventing) {
507
640
  }, {
508
641
  key: "setupNetworkEventListeners",
509
642
  value: function setupNetworkEventListeners() {
510
- var _this2 = this;
643
+ var _this3 = this;
511
644
  if (typeof window !== 'undefined' && window.addEventListener) {
512
645
  window.addEventListener('online', this.handleNetworkOnline);
513
646
  window.addEventListener('offline', this.handleNetworkOffline);
514
647
  }
515
648
  this.webex.internal.mercury.on('offline', function () {
516
- _this2.handleMercuryOffline();
649
+ _this3.handleMercuryOffline();
517
650
  });
518
651
  this.webex.internal.mercury.on('online', function () {
519
- _this2.handleMercuryOnline();
652
+ _this3.handleMercuryOnline();
520
653
  });
521
654
  }
522
655
 
@@ -526,19 +659,19 @@ var CallingClient = exports.CallingClient = /*#__PURE__*/function (_Eventing) {
526
659
  }, {
527
660
  key: "getClientRegionInfo",
528
661
  value: (function () {
529
- var _getClientRegionInfo = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee9() {
530
- var _this3 = this;
662
+ var _getClientRegionInfo = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee0() {
663
+ var _this4 = this;
531
664
  var abort, regionInfo, _response$headers, _response$headers$tra, _response$headers2, response, clientRegionInfo, _t4;
532
- return _regenerator.default.wrap(function (_context0) {
533
- while (1) switch (_context0.prev = _context0.next) {
665
+ return _regenerator.default.wrap(function (_context1) {
666
+ while (1) switch (_context1.prev = _context1.next) {
534
667
  case 0:
535
668
  _Logger.default.info(_constants.METHOD_START_MESSAGE, {
536
669
  file: _constants2.CALLING_CLIENT_FILE,
537
670
  method: _constants2.METHODS.GET_CLIENT_REGION_INFO
538
671
  });
539
672
  regionInfo = {};
540
- _context0.prev = 1;
541
- _context0.next = 2;
673
+ _context1.prev = 1;
674
+ _context1.next = 2;
542
675
  return this.webex.request({
543
676
  uri: "".concat(_constants2.DISCOVERY_URL),
544
677
  method: _types3.HTTP_METHODS.GET,
@@ -546,7 +679,7 @@ var CallingClient = exports.CallingClient = /*#__PURE__*/function (_Eventing) {
546
679
  headers: (0, _defineProperty2.default)({}, _constants2.SPARK_USER_AGENT, null)
547
680
  });
548
681
  case 2:
549
- response = _context0.sent;
682
+ response = _context1.sent;
550
683
  clientRegionInfo = response.body;
551
684
  regionInfo.clientRegion = (clientRegionInfo === null || clientRegionInfo === void 0 ? void 0 : clientRegionInfo.clientRegion) || '';
552
685
  regionInfo.countryCode = (clientRegionInfo === null || clientRegionInfo === void 0 ? void 0 : clientRegionInfo.countryCode) || '';
@@ -554,46 +687,46 @@ var CallingClient = exports.CallingClient = /*#__PURE__*/function (_Eventing) {
554
687
  file: _constants2.CALLING_CLIENT_FILE,
555
688
  method: _constants2.METHODS.GET_CLIENT_REGION_INFO
556
689
  });
557
- this.metricManager.submitRegionInfoMetric(_types4.METRIC_EVENT.MOBIUS_DISCOVERY, _types4.MOBIUS_SERVER_ACTION.REGION_INFO, _types4.METRIC_TYPE.BEHAVIORAL, this.mobiusHost, clientRegionInfo.clientRegion, clientRegionInfo.countryCode, (_response$headers$tra = response === null || response === void 0 ? void 0 : (_response$headers2 = response.headers) === null || _response$headers2 === void 0 ? void 0 : _response$headers2.trackingid) !== null && _response$headers$tra !== void 0 ? _response$headers$tra : '');
558
- _context0.next = 6;
690
+ this.metricManager.submitRegionInfoMetric(_types5.METRIC_EVENT.MOBIUS_DISCOVERY, _types5.MOBIUS_SERVER_ACTION.REGION_INFO, _types5.METRIC_TYPE.BEHAVIORAL, this.mobiusHost, clientRegionInfo.clientRegion, clientRegionInfo.countryCode, (_response$headers$tra = response === null || response === void 0 ? void 0 : (_response$headers2 = response.headers) === null || _response$headers2 === void 0 ? void 0 : _response$headers2.trackingid) !== null && _response$headers$tra !== void 0 ? _response$headers$tra : '');
691
+ _context1.next = 6;
559
692
  break;
560
693
  case 3:
561
- _context0.prev = 3;
562
- _t4 = _context0["catch"](1);
694
+ _context1.prev = 3;
695
+ _t4 = _context1["catch"](1);
563
696
  _Logger.default.error("Failed to get client region info: ".concat((0, _stringify.default)(_t4)), {
564
697
  method: _constants2.METHODS.GET_CLIENT_REGION_INFO,
565
698
  file: _constants2.CALLING_CLIENT_FILE
566
699
  });
567
700
 
568
701
  // eslint-disable-next-line no-await-in-loop
569
- _context0.next = 4;
702
+ _context1.next = 4;
570
703
  return (0, _Utils.handleCallingClientErrors)(_t4, function (clientError) {
571
704
  var _headers$trackingId, _headers2;
572
- _this3.metricManager.submitRegistrationMetric(_types4.METRIC_EVENT.REGISTRATION_ERROR, _types4.REG_ACTION.REGISTER, _types4.METRIC_TYPE.BEHAVIORAL, _constants2.GET_MOBIUS_SERVERS_UTIL, 'UNKNOWN', (_headers$trackingId = (_headers2 = _t4.headers) === null || _headers2 === void 0 ? void 0 : _headers2.trackingId) !== null && _headers$trackingId !== void 0 ? _headers$trackingId : '', undefined, clientError);
573
- _this3.emit(_types2.CALLING_CLIENT_EVENT_KEYS.ERROR, clientError);
705
+ _this4.metricManager.submitRegistrationMetric(_types5.METRIC_EVENT.REGISTRATION_ERROR, _types5.REG_ACTION.REGISTER, _types5.METRIC_TYPE.BEHAVIORAL, _constants2.GET_MOBIUS_SERVERS_UTIL, 'UNKNOWN', (_headers$trackingId = (_headers2 = _t4.headers) === null || _headers2 === void 0 ? void 0 : _headers2.trackingId) !== null && _headers$trackingId !== void 0 ? _headers$trackingId : '', undefined, clientError);
706
+ _this4.emit(_types2.CALLING_CLIENT_EVENT_KEYS.ERROR, clientError);
574
707
  }, {
575
708
  method: _constants2.GET_MOBIUS_SERVERS_UTIL,
576
709
  file: _constants2.CALLING_CLIENT_FILE
577
710
  });
578
711
  case 4:
579
- abort = _context0.sent;
712
+ abort = _context1.sent;
580
713
  regionInfo.clientRegion = '';
581
714
  regionInfo.countryCode = '';
582
715
  if (!abort) {
583
- _context0.next = 6;
716
+ _context1.next = 6;
584
717
  break;
585
718
  }
586
- _context0.next = 5;
719
+ _context1.next = 5;
587
720
  return (0, _Utils.uploadLogs)();
588
721
  case 5:
589
- return _context0.abrupt("return", regionInfo);
722
+ return _context1.abrupt("return", regionInfo);
590
723
  case 6:
591
- return _context0.abrupt("return", regionInfo);
724
+ return _context1.abrupt("return", regionInfo);
592
725
  case 7:
593
726
  case "end":
594
- return _context0.stop();
727
+ return _context1.stop();
595
728
  }
596
- }, _callee9, this, [[1, 3]]);
729
+ }, _callee0, this, [[1, 3]]);
597
730
  }));
598
731
  function getClientRegionInfo() {
599
732
  return _getClientRegionInfo.apply(this, arguments);
@@ -607,15 +740,15 @@ var CallingClient = exports.CallingClient = /*#__PURE__*/function (_Eventing) {
607
740
  }, {
608
741
  key: "getMobiusServers",
609
742
  value: (function () {
610
- var _getMobiusServers = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee0() {
611
- var _this$sdkConfig3,
612
- _this$sdkConfig3$disc,
613
- _this$sdkConfig4,
743
+ var _getMobiusServers = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee1() {
744
+ var _this$sdkConfig4,
614
745
  _this$sdkConfig4$disc,
615
- _this4 = this;
616
- var useDefault, clientRegion, countryCode, _this$sdkConfig5, _this$sdkConfig5$disc, _this$sdkConfig6, _this$sdkConfig6$disc, _this$webex$internal$, regionInfo, _iterator2, _step2, _loop2, _ret, _t6;
617
- return _regenerator.default.wrap(function (_context10) {
618
- while (1) switch (_context10.prev = _context10.next) {
746
+ _this$sdkConfig5,
747
+ _this$sdkConfig5$disc,
748
+ _this5 = this;
749
+ var useDefault, clientRegion, countryCode, _this$sdkConfig6, _this$sdkConfig6$disc, _this$sdkConfig7, _this$sdkConfig7$disc, _this$webex$internal$, regionInfo, _iterator2, _step2, _loop2, _ret, _t6;
750
+ return _regenerator.default.wrap(function (_context11) {
751
+ while (1) switch (_context11.prev = _context11.next) {
619
752
  case 0:
620
753
  _Logger.default.info(_constants.METHOD_START_MESSAGE, {
621
754
  file: _constants2.CALLING_CLIENT_FILE,
@@ -629,33 +762,33 @@ var CallingClient = exports.CallingClient = /*#__PURE__*/function (_Eventing) {
629
762
  5. Otherwise send registration
630
763
  */
631
764
  useDefault = false;
632
- 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)) {
633
- _context10.next = 1;
765
+ if (!((_this$sdkConfig4 = this.sdkConfig) !== null && _this$sdkConfig4 !== void 0 && (_this$sdkConfig4$disc = _this$sdkConfig4.discovery) !== null && _this$sdkConfig4$disc !== void 0 && _this$sdkConfig4$disc.country && (_this$sdkConfig5 = this.sdkConfig) !== null && _this$sdkConfig5 !== void 0 && (_this$sdkConfig5$disc = _this$sdkConfig5.discovery) !== null && _this$sdkConfig5$disc !== void 0 && _this$sdkConfig5$disc.region)) {
766
+ _context11.next = 1;
634
767
  break;
635
768
  }
636
769
  _Logger.default.log('Updating region and country from the SDK config', {
637
770
  file: _constants2.CALLING_CLIENT_FILE,
638
771
  method: _constants2.GET_MOBIUS_SERVERS_UTIL
639
772
  });
640
- 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;
641
- 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;
773
+ clientRegion = (_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.region;
774
+ countryCode = (_this$sdkConfig7 = this.sdkConfig) === null || _this$sdkConfig7 === void 0 ? void 0 : (_this$sdkConfig7$disc = _this$sdkConfig7.discovery) === null || _this$sdkConfig7$disc === void 0 ? void 0 : _this$sdkConfig7$disc.country;
642
775
  this.mobiusHost = ((_this$webex$internal$ = this.webex.internal.services._serviceUrls) === null || _this$webex$internal$ === void 0 ? void 0 : _this$webex$internal$.mobius) || this.webex.internal.services.get(this.webex.internal.services._activeServices.mobius);
643
- _context10.next = 3;
776
+ _context11.next = 3;
644
777
  break;
645
778
  case 1:
646
779
  _Logger.default.log('Updating region and country through Region discovery', {
647
780
  file: _constants2.CALLING_CLIENT_FILE,
648
781
  method: _constants2.GET_MOBIUS_SERVERS_UTIL
649
782
  });
650
- _context10.next = 2;
783
+ _context11.next = 2;
651
784
  return this.getClientRegionInfo();
652
785
  case 2:
653
- regionInfo = _context10.sent;
786
+ regionInfo = _context11.sent;
654
787
  clientRegion = regionInfo.clientRegion;
655
788
  countryCode = regionInfo.countryCode;
656
789
  case 3:
657
790
  if (!(clientRegion && countryCode)) {
658
- _context10.next = 12;
791
+ _context11.next = 12;
659
792
  break;
660
793
  }
661
794
  _Logger.default.log("Found Region: ".concat(clientRegion, " and country: ").concat(countryCode, ", going to fetch Mobius server"), {
@@ -663,110 +796,112 @@ var CallingClient = exports.CallingClient = /*#__PURE__*/function (_Eventing) {
663
796
  method: _constants2.GET_MOBIUS_SERVERS_UTIL
664
797
  });
665
798
  _iterator2 = _createForOfIteratorHelper(this.mobiusClusters);
666
- _context10.prev = 4;
799
+ _context11.prev = 4;
667
800
  _loop2 = /*#__PURE__*/_regenerator.default.mark(function _loop2() {
668
801
  var mobius, _response$headers3, _response$headers$tra2, _response$headers4, response, mobiusServers, mobiusUris, abort, _t5;
669
- return _regenerator.default.wrap(function (_context1) {
670
- while (1) switch (_context1.prev = _context1.next) {
802
+ return _regenerator.default.wrap(function (_context10) {
803
+ while (1) switch (_context10.prev = _context10.next) {
671
804
  case 0:
672
805
  mobius = _step2.value;
673
806
  if (mobius.host) {
674
- _this4.mobiusHost = "https://".concat(mobius.host).concat(_constants2.API_V1);
807
+ _this5.mobiusHost = "https://".concat(mobius.host).concat(_constants2.API_V1);
675
808
  } else {
676
- _this4.mobiusHost = mobius;
809
+ _this5.mobiusHost = mobius;
677
810
  }
678
- _context1.prev = 1;
679
- _context1.next = 2;
680
- return _this4.webex.request({
681
- uri: "".concat(_this4.mobiusHost).concat(_constants2.URL_ENDPOINT, "?regionCode=").concat(clientRegion, "&countryCode=").concat(countryCode),
811
+ _context10.prev = 1;
812
+ _context10.next = 2;
813
+ return _this5.webex.request({
814
+ uri: "".concat(_this5.mobiusHost).concat(_constants2.URL_ENDPOINT, "?regionCode=").concat(clientRegion, "&countryCode=").concat(countryCode),
682
815
  method: _types3.HTTP_METHODS.GET,
683
- headers: (0, _defineProperty2.default)((0, _defineProperty2.default)({}, _constants2.CISCO_DEVICE_URL, _this4.webex.internal.device.url), _constants2.SPARK_USER_AGENT, _constants2.CALLING_USER_AGENT),
816
+ headers: (0, _defineProperty2.default)((0, _defineProperty2.default)({}, _constants2.CISCO_DEVICE_URL, _this5.webex.internal.device.url), _constants2.SPARK_USER_AGENT, _constants2.CALLING_USER_AGENT),
684
817
  service: _types3.ALLOWED_SERVICES.MOBIUS
685
818
  });
686
819
  case 2:
687
- response = _context1.sent;
820
+ response = _context10.sent;
688
821
  _Logger.default.log("Mobius Server found for the region. Response trackingId: ".concat(response === null || response === void 0 ? void 0 : (_response$headers3 = response.headers) === null || _response$headers3 === void 0 ? void 0 : _response$headers3.trackingid), {
689
822
  file: _constants2.CALLING_CLIENT_FILE,
690
823
  method: _constants2.GET_MOBIUS_SERVERS_UTIL
691
824
  });
692
825
  mobiusServers = response.body; // Metrics for mobius servers
693
- _this4.metricManager.submitMobiusServersMetric(_types4.METRIC_EVENT.MOBIUS_DISCOVERY, _types4.MOBIUS_SERVER_ACTION.MOBIUS_SERVERS, _types4.METRIC_TYPE.BEHAVIORAL, mobiusServers, (_response$headers$tra2 = response === null || response === void 0 ? void 0 : (_response$headers4 = response.headers) === null || _response$headers4 === void 0 ? void 0 : _response$headers4.trackingid) !== null && _response$headers$tra2 !== void 0 ? _response$headers$tra2 : '');
826
+ _this5.metricManager.submitMobiusServersMetric(_types5.METRIC_EVENT.MOBIUS_DISCOVERY, _types5.MOBIUS_SERVER_ACTION.MOBIUS_SERVERS, _types5.METRIC_TYPE.BEHAVIORAL, mobiusServers, (_response$headers$tra2 = response === null || response === void 0 ? void 0 : (_response$headers4 = response.headers) === null || _response$headers4 === void 0 ? void 0 : _response$headers4.trackingid) !== null && _response$headers$tra2 !== void 0 ? _response$headers$tra2 : '');
694
827
 
695
828
  /* update arrays of Mobius Uris. */
696
- mobiusUris = (0, _Utils.filterMobiusUris)(mobiusServers, _this4.mobiusHost);
697
- _this4.primaryMobiusUris = mobiusUris.primary;
698
- _this4.backupMobiusUris = mobiusUris.backup;
829
+ mobiusUris = (0, _Utils.filterMobiusUris)(mobiusServers, _this5.mobiusHost);
830
+ _this5.primaryMobiusUris = mobiusUris.primary;
831
+ _this5.backupMobiusUris = mobiusUris.backup;
832
+ _this5.primaryWssMobiusUris = mobiusUris.primaryWss;
833
+ _this5.backupWssMobiusUris = mobiusUris.backupWss;
699
834
  _Logger.default.log("Final list of Mobius Servers, primary: ".concat(mobiusUris.primary, " and backup: ").concat(mobiusUris.backup), {
700
835
  file: _constants2.CALLING_CLIENT_FILE,
701
836
  method: _constants2.GET_MOBIUS_SERVERS_UTIL
702
837
  });
703
- return _context1.abrupt("return", 0);
838
+ return _context10.abrupt("return", 0);
704
839
  case 3:
705
- _context1.prev = 3;
706
- _t5 = _context1["catch"](1);
840
+ _context10.prev = 3;
841
+ _t5 = _context10["catch"](1);
707
842
  _Logger.default.error("Failed to get Mobius servers: ".concat((0, _stringify.default)(_t5)), {
708
843
  method: _constants2.METHODS.GET_MOBIUS_SERVERS,
709
844
  file: _constants2.CALLING_CLIENT_FILE
710
845
  });
711
846
 
712
847
  // eslint-disable-next-line no-await-in-loop
713
- _context1.next = 4;
848
+ _context10.next = 4;
714
849
  return (0, _Utils.handleCallingClientErrors)(_t5, function (clientError) {
715
850
  var _headers$trackingId2, _headers4;
716
- _this4.metricManager.submitRegistrationMetric(_types4.METRIC_EVENT.REGISTRATION_ERROR, _types4.REG_ACTION.REGISTER, _types4.METRIC_TYPE.BEHAVIORAL, _constants2.GET_MOBIUS_SERVERS_UTIL, 'UNKNOWN', (_headers$trackingId2 = (_headers4 = _t5.headers) === null || _headers4 === void 0 ? void 0 : _headers4.trackingId) !== null && _headers$trackingId2 !== void 0 ? _headers$trackingId2 : '', undefined, clientError);
717
- _this4.emit(_types2.CALLING_CLIENT_EVENT_KEYS.ERROR, clientError);
851
+ _this5.metricManager.submitRegistrationMetric(_types5.METRIC_EVENT.REGISTRATION_ERROR, _types5.REG_ACTION.REGISTER, _types5.METRIC_TYPE.BEHAVIORAL, _constants2.GET_MOBIUS_SERVERS_UTIL, 'UNKNOWN', (_headers$trackingId2 = (_headers4 = _t5.headers) === null || _headers4 === void 0 ? void 0 : _headers4.trackingId) !== null && _headers$trackingId2 !== void 0 ? _headers$trackingId2 : '', undefined, clientError);
852
+ _this5.emit(_types2.CALLING_CLIENT_EVENT_KEYS.ERROR, clientError);
718
853
  }, {
719
854
  method: _constants2.GET_MOBIUS_SERVERS_UTIL,
720
855
  file: _constants2.CALLING_CLIENT_FILE
721
856
  });
722
857
  case 4:
723
- abort = _context1.sent;
858
+ abort = _context10.sent;
724
859
  if (!abort) {
725
- _context1.next = 6;
860
+ _context10.next = 6;
726
861
  break;
727
862
  }
728
863
  useDefault = true;
729
864
  // eslint-disable-next-line no-await-in-loop
730
- _context1.next = 5;
865
+ _context10.next = 5;
731
866
  return (0, _Utils.uploadLogs)();
732
867
  case 5:
733
- return _context1.abrupt("return", 0);
868
+ return _context10.abrupt("return", 0);
734
869
  case 6:
735
870
  case "end":
736
- return _context1.stop();
871
+ return _context10.stop();
737
872
  }
738
873
  }, _loop2, null, [[1, 3]]);
739
874
  });
740
875
  _iterator2.s();
741
876
  case 5:
742
877
  if ((_step2 = _iterator2.n()).done) {
743
- _context10.next = 8;
878
+ _context11.next = 8;
744
879
  break;
745
880
  }
746
- return _context10.delegateYield(_loop2(), "t0", 6);
881
+ return _context11.delegateYield(_loop2(), "t0", 6);
747
882
  case 6:
748
- _ret = _context10.t0;
883
+ _ret = _context11.t0;
749
884
  if (!(_ret === 0)) {
750
- _context10.next = 7;
885
+ _context11.next = 7;
751
886
  break;
752
887
  }
753
- return _context10.abrupt("continue", 8);
888
+ return _context11.abrupt("continue", 8);
754
889
  case 7:
755
- _context10.next = 5;
890
+ _context11.next = 5;
756
891
  break;
757
892
  case 8:
758
- _context10.next = 10;
893
+ _context11.next = 10;
759
894
  break;
760
895
  case 9:
761
- _context10.prev = 9;
762
- _t6 = _context10["catch"](4);
896
+ _context11.prev = 9;
897
+ _t6 = _context11["catch"](4);
763
898
  _iterator2.e(_t6);
764
899
  case 10:
765
- _context10.prev = 10;
900
+ _context11.prev = 10;
766
901
  _iterator2.f();
767
- return _context10.finish(10);
902
+ return _context11.finish(10);
768
903
  case 11:
769
- _context10.next = 13;
904
+ _context11.next = 13;
770
905
  break;
771
906
  case 12:
772
907
  /* Setting this to true because region info is possibly undefined */
@@ -786,9 +921,9 @@ var CallingClient = exports.CallingClient = /*#__PURE__*/function (_Eventing) {
786
921
  }
787
922
  case 14:
788
923
  case "end":
789
- return _context10.stop();
924
+ return _context11.stop();
790
925
  }
791
- }, _callee0, this, [[4, 9, 10, 11]]);
926
+ }, _callee1, this, [[4, 9, 10, 11]]);
792
927
  }));
793
928
  function getMobiusServers() {
794
929
  return _getMobiusServers.apply(this, arguments);
@@ -796,14 +931,149 @@ var CallingClient = exports.CallingClient = /*#__PURE__*/function (_Eventing) {
796
931
  return getMobiusServers;
797
932
  }()
798
933
  /**
799
- * Registers a listener/handler for ALL_CALLS_CLEARED
800
- * event emitted by callManager when all the calls
801
- * present on sdk are cleaned up.
934
+ * Connects to the Mobius WebSocket using WSS URIs discovered during Mobius server discovery.
935
+ * Attempts primary WSS URIs first, then falls back to backup WSS URIs.
936
+ * If all attempts fail, logs a warning and continues without a socket connection.
802
937
  */
803
938
  )
939
+ }, {
940
+ key: "connectToMobiusSocket",
941
+ value: (function () {
942
+ var _connectToMobiusSocket = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee10() {
943
+ var loggerContext, _iterator3, _step3, wssUri, _iterator4, _step4, _wssUri, _t7, _t8, _t9, _t0;
944
+ return _regenerator.default.wrap(function (_context12) {
945
+ while (1) switch (_context12.prev = _context12.next) {
946
+ case 0:
947
+ loggerContext = {
948
+ file: _constants2.CALLING_CLIENT_FILE,
949
+ method: _constants2.METHODS.CONNECT_TO_MOBIUS_SOCKET
950
+ };
951
+ _Logger.default.info(_constants.METHOD_START_MESSAGE, loggerContext);
952
+ if (!(!this.primaryWssMobiusUris.length && !this.backupWssMobiusUris.length)) {
953
+ _context12.next = 1;
954
+ break;
955
+ }
956
+ _Logger.default.warn('No WSS URIs available from Mobius discovery, skipping socket connection', loggerContext);
957
+ return _context12.abrupt("return");
958
+ case 1:
959
+ if (!this.primaryWssMobiusUris.length) {
960
+ _context12.next = 12;
961
+ break;
962
+ }
963
+ _Logger.default.log("Attempting Mobius socket connection using primary WSS URIs (".concat(this.primaryWssMobiusUris.length, " available)"), loggerContext);
964
+ _iterator3 = _createForOfIteratorHelper(this.primaryWssMobiusUris);
965
+ _context12.prev = 2;
966
+ _iterator3.s();
967
+ case 3:
968
+ if ((_step3 = _iterator3.n()).done) {
969
+ _context12.next = 8;
970
+ break;
971
+ }
972
+ wssUri = _step3.value;
973
+ _context12.prev = 4;
974
+ _Logger.default.log("Trying primary WSS URI: ".concat(wssUri), loggerContext);
975
+ // eslint-disable-next-line no-await-in-loop
976
+ _context12.next = 5;
977
+ return this.apiRequest.connectToMobiusSocket(wssUri);
978
+ case 5:
979
+ _Logger.default.log("Successfully connected to Mobius socket on primary WSS URI: ".concat(wssUri), loggerContext);
980
+ return _context12.abrupt("return");
981
+ case 6:
982
+ _context12.prev = 6;
983
+ _t7 = _context12["catch"](4);
984
+ _Logger.default.warn("Primary WSS URI connection failed for ".concat(wssUri, ": ").concat(_t7), loggerContext);
985
+ case 7:
986
+ _context12.next = 3;
987
+ break;
988
+ case 8:
989
+ _context12.next = 10;
990
+ break;
991
+ case 9:
992
+ _context12.prev = 9;
993
+ _t8 = _context12["catch"](2);
994
+ _iterator3.e(_t8);
995
+ case 10:
996
+ _context12.prev = 10;
997
+ _iterator3.f();
998
+ return _context12.finish(10);
999
+ case 11:
1000
+ _Logger.default.warn('All primary WSS URI connection attempts failed', loggerContext);
1001
+ _context12.next = 13;
1002
+ break;
1003
+ case 12:
1004
+ _Logger.default.warn('No primary WSS URIs available, skipping to backup', loggerContext);
1005
+ case 13:
1006
+ if (!this.backupWssMobiusUris.length) {
1007
+ _context12.next = 24;
1008
+ break;
1009
+ }
1010
+ _Logger.default.log("Attempting Mobius socket connection using backup WSS URIs (".concat(this.backupWssMobiusUris.length, " available)"), loggerContext);
1011
+ _iterator4 = _createForOfIteratorHelper(this.backupWssMobiusUris);
1012
+ _context12.prev = 14;
1013
+ _iterator4.s();
1014
+ case 15:
1015
+ if ((_step4 = _iterator4.n()).done) {
1016
+ _context12.next = 20;
1017
+ break;
1018
+ }
1019
+ _wssUri = _step4.value;
1020
+ _context12.prev = 16;
1021
+ _Logger.default.log("Trying backup WSS URI: ".concat(_wssUri), loggerContext);
1022
+ // eslint-disable-next-line no-await-in-loop
1023
+ _context12.next = 17;
1024
+ return this.apiRequest.connectToMobiusSocket(_wssUri);
1025
+ case 17:
1026
+ _Logger.default.log("Successfully connected to Mobius socket on backup WSS URI: ".concat(_wssUri), loggerContext);
1027
+ return _context12.abrupt("return");
1028
+ case 18:
1029
+ _context12.prev = 18;
1030
+ _t9 = _context12["catch"](16);
1031
+ _Logger.default.warn("Backup WSS URI connection failed for ".concat(_wssUri, ": ").concat(_t9), loggerContext);
1032
+ case 19:
1033
+ _context12.next = 15;
1034
+ break;
1035
+ case 20:
1036
+ _context12.next = 22;
1037
+ break;
1038
+ case 21:
1039
+ _context12.prev = 21;
1040
+ _t0 = _context12["catch"](14);
1041
+ _iterator4.e(_t0);
1042
+ case 22:
1043
+ _context12.prev = 22;
1044
+ _iterator4.f();
1045
+ return _context12.finish(22);
1046
+ case 23:
1047
+ _Logger.default.warn('All backup WSS URI connection attempts failed', loggerContext);
1048
+ _context12.next = 25;
1049
+ break;
1050
+ case 24:
1051
+ _Logger.default.warn('No backup WSS URIs available', loggerContext);
1052
+ case 25:
1053
+ // Throwing an error is not required here. Connection will be attempted again during registration if no connection is established.
1054
+ // We might remove this connection attempt logic during optimization since we are anyway going to try to connect to Mobius during
1055
+ // registration and without registration the connection will be closed automatically by the mobius server.
1056
+ _Logger.default.warn('All Mobius socket connection attempts exhausted for both primary and backup, continuing without socket', loggerContext);
1057
+ case 26:
1058
+ case "end":
1059
+ return _context12.stop();
1060
+ }
1061
+ }, _callee10, this, [[2, 9, 10, 11], [4, 6], [14, 21, 22, 23], [16, 18]]);
1062
+ }));
1063
+ function connectToMobiusSocket() {
1064
+ return _connectToMobiusSocket.apply(this, arguments);
1065
+ }
1066
+ return connectToMobiusSocket;
1067
+ }())
804
1068
  }, {
805
1069
  key: "registerCallsClearedListener",
806
- value: function registerCallsClearedListener() {
1070
+ value:
1071
+ /**
1072
+ * Registers a listener/handler for ALL_CALLS_CLEARED
1073
+ * event emitted by callManager when all the calls
1074
+ * present on sdk are cleaned up.
1075
+ */
1076
+ function registerCallsClearedListener() {
807
1077
  _Logger.default.info(_constants.METHOD_START_MESSAGE, {
808
1078
  file: _constants2.CALLING_CLIENT_FILE,
809
1079
  method: _constants2.METHODS.REGISTER_CALLS_CLEARED_LISTENER
@@ -833,46 +1103,46 @@ var CallingClient = exports.CallingClient = /*#__PURE__*/function (_Eventing) {
833
1103
  }, {
834
1104
  key: "registerSessionsListener",
835
1105
  value: function registerSessionsListener() {
836
- var _this5 = this;
1106
+ var _this6 = this;
837
1107
  _Logger.default.info(_constants.METHOD_START_MESSAGE, {
838
1108
  file: _constants2.CALLING_CLIENT_FILE,
839
1109
  method: _constants2.METHODS.REGISTER_SESSIONS_LISTENER
840
1110
  });
841
1111
  this.sdkConnector.registerListener(_types2.MOBIUS_EVENT_KEYS.CALL_SESSION_EVENT_INCLUSIVE, /*#__PURE__*/function () {
842
- var _ref6 = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee1(event) {
1112
+ var _ref7 = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee11(event) {
843
1113
  var sessionArr, i;
844
- return _regenerator.default.wrap(function (_context11) {
845
- while (1) switch (_context11.prev = _context11.next) {
1114
+ return _regenerator.default.wrap(function (_context13) {
1115
+ while (1) switch (_context13.prev = _context13.next) {
846
1116
  case 0:
847
1117
  if (!(event && event.data.userSessions.userSessions)) {
848
- _context11.next = 2;
1118
+ _context13.next = 2;
849
1119
  break;
850
1120
  }
851
1121
  sessionArr = event === null || event === void 0 ? void 0 : event.data.userSessions.userSessions;
852
1122
  if (!(sessionArr.length === 1)) {
853
- _context11.next = 1;
1123
+ _context13.next = 1;
854
1124
  break;
855
1125
  }
856
1126
  if (!(sessionArr[0].sessionType !== _types2.SessionType.WEBEX_CALLING)) {
857
- _context11.next = 1;
1127
+ _context13.next = 1;
858
1128
  break;
859
1129
  }
860
- return _context11.abrupt("return");
1130
+ return _context13.abrupt("return");
861
1131
  case 1:
862
1132
  for (i = 0; i < sessionArr.length; i += 1) {
863
1133
  if (sessionArr[i].sessionType !== _types2.SessionType.WEBEX_CALLING) {
864
1134
  sessionArr.splice(i, 1);
865
1135
  }
866
1136
  }
867
- _this5.emit(_types2.CALLING_CLIENT_EVENT_KEYS.USER_SESSION_INFO, event);
1137
+ _this6.emit(_types2.CALLING_CLIENT_EVENT_KEYS.USER_SESSION_INFO, event);
868
1138
  case 2:
869
1139
  case "end":
870
- return _context11.stop();
1140
+ return _context13.stop();
871
1141
  }
872
- }, _callee1);
1142
+ }, _callee11);
873
1143
  }));
874
- return function (_x) {
875
- return _ref6.apply(this, arguments);
1144
+ return function (_x2) {
1145
+ return _ref7.apply(this, arguments);
876
1146
  };
877
1147
  }());
878
1148
  }
@@ -884,23 +1154,23 @@ var CallingClient = exports.CallingClient = /*#__PURE__*/function (_Eventing) {
884
1154
  }, {
885
1155
  key: "createLine",
886
1156
  value: (function () {
887
- var _createLine = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee10() {
888
- var _this$sdkConfig7, _this$sdkConfig8;
1157
+ var _createLine = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee12() {
1158
+ var _this$sdkConfig8;
889
1159
  var line;
890
- return _regenerator.default.wrap(function (_context12) {
891
- while (1) switch (_context12.prev = _context12.next) {
1160
+ return _regenerator.default.wrap(function (_context14) {
1161
+ while (1) switch (_context14.prev = _context14.next) {
892
1162
  case 0:
893
1163
  _Logger.default.info(_constants.METHOD_START_MESSAGE, {
894
1164
  file: _constants2.CALLING_CLIENT_FILE,
895
1165
  method: _constants2.METHODS.CREATE_LINE
896
1166
  });
897
- line = new _line.default(this.webex.internal.device.userId, this.webex.internal.device.url, this.mutex, this.primaryMobiusUris, this.backupMobiusUris, this.getLoggingLevel(), (_this$sdkConfig7 = this.sdkConfig) === null || _this$sdkConfig7 === void 0 ? void 0 : _this$sdkConfig7.serviceData, (_this$sdkConfig8 = this.sdkConfig) === null || _this$sdkConfig8 === void 0 ? void 0 : _this$sdkConfig8.jwe);
1167
+ line = new _line.default(this.webex.internal.device.userId, this.webex.internal.device.url, this.mutex, this.apiRequest.isSocketEnabled() ? (0, _Utils.normalizeMobiusUris)(this.primaryWssMobiusUris) : this.primaryMobiusUris, this.apiRequest.isSocketEnabled() ? (0, _Utils.normalizeMobiusUris)(this.backupWssMobiusUris) : this.backupMobiusUris, this.getLoggingLevel(), this.serviceData, (_this$sdkConfig8 = this.sdkConfig) === null || _this$sdkConfig8 === void 0 ? void 0 : _this$sdkConfig8.jwe);
898
1168
  this.lineDict[line.lineId] = line;
899
1169
  case 1:
900
1170
  case "end":
901
- return _context12.stop();
1171
+ return _context14.stop();
902
1172
  }
903
- }, _callee10, this);
1173
+ }, _callee12, this);
904
1174
  }));
905
1175
  function createLine() {
906
1176
  return _createLine.apply(this, arguments);
@@ -924,14 +1194,14 @@ var CallingClient = exports.CallingClient = /*#__PURE__*/function (_Eventing) {
924
1194
  }, {
925
1195
  key: "getDevices",
926
1196
  value: (function () {
927
- var _getDevices = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee11(userId) {
928
- var userid, mobiusUrls, finalError, _iterator3, _step3, mobiusUrl, normalizedMobiusUrl, uri, _body$devices, response, body, _t7, _t8;
929
- return _regenerator.default.wrap(function (_context13) {
930
- while (1) switch (_context13.prev = _context13.next) {
1197
+ var _getDevices = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee13(userId) {
1198
+ var userid, mobiusUrls, finalError, _iterator5, _step5, mobiusUrl, normalizedMobiusUrl, uri, _body$devices, response, body, _t1, _t10;
1199
+ return _regenerator.default.wrap(function (_context15) {
1200
+ while (1) switch (_context15.prev = _context15.next) {
931
1201
  case 0:
932
1202
  userid = userId || this.webex.internal.device.userId;
933
1203
  if (userid) {
934
- _context13.next = 1;
1204
+ _context15.next = 1;
935
1205
  break;
936
1206
  }
937
1207
  throw new Error('userId is required to fetch devices');
@@ -942,24 +1212,24 @@ var CallingClient = exports.CallingClient = /*#__PURE__*/function (_Eventing) {
942
1212
  });
943
1213
  mobiusUrls = [].concat((0, _toConsumableArray2.default)(this.primaryMobiusUris), (0, _toConsumableArray2.default)(this.backupMobiusUris));
944
1214
  if (!(mobiusUrls.length === 0)) {
945
- _context13.next = 2;
1215
+ _context15.next = 2;
946
1216
  break;
947
1217
  }
948
1218
  throw new Error('Mobius URLs are not available');
949
1219
  case 2:
950
- _iterator3 = _createForOfIteratorHelper(mobiusUrls);
951
- _context13.prev = 3;
952
- _iterator3.s();
1220
+ _iterator5 = _createForOfIteratorHelper(mobiusUrls);
1221
+ _context15.prev = 3;
1222
+ _iterator5.s();
953
1223
  case 4:
954
- if ((_step3 = _iterator3.n()).done) {
955
- _context13.next = 10;
1224
+ if ((_step5 = _iterator5.n()).done) {
1225
+ _context15.next = 10;
956
1226
  break;
957
1227
  }
958
- mobiusUrl = _step3.value;
1228
+ mobiusUrl = _step5.value;
959
1229
  normalizedMobiusUrl = mobiusUrl.replace(/\/+$/, '/');
960
1230
  uri = "".concat(normalizedMobiusUrl).concat(_constants2.DEVICES_ENDPOINT_RESOURCE, "?userid=").concat(encodeURIComponent(userid));
961
- _context13.prev = 5;
962
- _context13.next = 6;
1231
+ _context15.prev = 5;
1232
+ _context15.next = 6;
963
1233
  return this.webex.request({
964
1234
  uri: uri,
965
1235
  method: _types3.HTTP_METHODS.GET,
@@ -967,9 +1237,9 @@ var CallingClient = exports.CallingClient = /*#__PURE__*/function (_Eventing) {
967
1237
  headers: (0, _defineProperty2.default)((0, _defineProperty2.default)({}, _constants2.CISCO_DEVICE_URL, this.webex.internal.device.url), _constants2.SPARK_USER_AGENT, _constants2.CALLING_USER_AGENT)
968
1238
  });
969
1239
  case 6:
970
- response = _context13.sent;
1240
+ response = _context15.sent;
971
1241
  if (!(response.statusCode !== 200)) {
972
- _context13.next = 7;
1242
+ _context15.next = 7;
973
1243
  break;
974
1244
  }
975
1245
  throw new Error("API call failed with ".concat(response.statusCode));
@@ -977,25 +1247,25 @@ var CallingClient = exports.CallingClient = /*#__PURE__*/function (_Eventing) {
977
1247
  body = response.body; // Hydrate registration deviceInfo for deregister/restore flows
978
1248
  (0, _values.default)(this.lineDict)[0].registration.setDeviceInfo(body);
979
1249
  (0, _values.default)(this.lineDict)[0].registration.setActiveMobiusUrl(normalizedMobiusUrl);
980
- return _context13.abrupt("return", (_body$devices = body.devices) !== null && _body$devices !== void 0 ? _body$devices : []);
1250
+ return _context15.abrupt("return", (_body$devices = body.devices) !== null && _body$devices !== void 0 ? _body$devices : []);
981
1251
  case 8:
982
- _context13.prev = 8;
983
- _t7 = _context13["catch"](5);
984
- finalError = _t7;
1252
+ _context15.prev = 8;
1253
+ _t1 = _context15["catch"](5);
1254
+ finalError = _t1;
985
1255
  case 9:
986
- _context13.next = 4;
1256
+ _context15.next = 4;
987
1257
  break;
988
1258
  case 10:
989
- _context13.next = 12;
1259
+ _context15.next = 12;
990
1260
  break;
991
1261
  case 11:
992
- _context13.prev = 11;
993
- _t8 = _context13["catch"](3);
994
- _iterator3.e(_t8);
1262
+ _context15.prev = 11;
1263
+ _t10 = _context15["catch"](3);
1264
+ _iterator5.e(_t10);
995
1265
  case 12:
996
- _context13.prev = 12;
997
- _iterator3.f();
998
- return _context13.finish(12);
1266
+ _context15.prev = 12;
1267
+ _iterator5.f();
1268
+ return _context15.finish(12);
999
1269
  case 13:
1000
1270
  _Logger.default.error("Failed to fetch devices for userId ".concat(userId, ": ").concat((0, _stringify.default)(finalError)), {
1001
1271
  file: _constants2.CALLING_CLIENT_FILE,
@@ -1004,11 +1274,11 @@ var CallingClient = exports.CallingClient = /*#__PURE__*/function (_Eventing) {
1004
1274
  throw finalError;
1005
1275
  case 14:
1006
1276
  case "end":
1007
- return _context13.stop();
1277
+ return _context15.stop();
1008
1278
  }
1009
- }, _callee11, this, [[3, 11, 12, 13], [5, 8]]);
1279
+ }, _callee13, this, [[3, 11, 12, 13], [5, 8]]);
1010
1280
  }));
1011
- function getDevices(_x2) {
1281
+ function getDevices(_x3) {
1012
1282
  return _getDevices.apply(this, arguments);
1013
1283
  }
1014
1284
  return getDevices;
@@ -1048,6 +1318,19 @@ var CallingClient = exports.CallingClient = /*#__PURE__*/function (_Eventing) {
1048
1318
  return connectCall;
1049
1319
  }
1050
1320
 
1321
+ /**
1322
+ * Indicates whether the Mobius WebSocket transport is currently connected.
1323
+ *
1324
+ * The `MOBIUS_SOCKET_CONNECTED` event is emitted during `init()`, so consumers that
1325
+ * subscribe afterwards may miss it; this lets them reconcile the current state. Returns
1326
+ * `false` when the WebSocket transport is not enabled.
1327
+ */
1328
+ }, {
1329
+ key: "isMobiusSocketConnected",
1330
+ value: function isMobiusSocketConnected() {
1331
+ return this.apiRequest.isSocketEnabled() && this.apiRequest.isSocketConnected();
1332
+ }
1333
+
1051
1334
  /**
1052
1335
  * Uploads logs to help troubleshoot SDK issues.
1053
1336
  *
@@ -1061,27 +1344,27 @@ var CallingClient = exports.CallingClient = /*#__PURE__*/function (_Eventing) {
1061
1344
  }, {
1062
1345
  key: "uploadLogs",
1063
1346
  value: (function () {
1064
- var _uploadLogs2 = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee12() {
1347
+ var _uploadLogs2 = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee14() {
1065
1348
  var result;
1066
- return _regenerator.default.wrap(function (_context14) {
1067
- while (1) switch (_context14.prev = _context14.next) {
1349
+ return _regenerator.default.wrap(function (_context16) {
1350
+ while (1) switch (_context16.prev = _context16.next) {
1068
1351
  case 0:
1069
- _context14.next = 1;
1352
+ _context16.next = 1;
1070
1353
  return (0, _Utils.uploadLogs)({}, true);
1071
1354
  case 1:
1072
- result = _context14.sent;
1355
+ result = _context16.sent;
1073
1356
  if (result) {
1074
- _context14.next = 2;
1357
+ _context16.next = 2;
1075
1358
  break;
1076
1359
  }
1077
1360
  throw new Error('Failed to upload logs: No response received.');
1078
1361
  case 2:
1079
- return _context14.abrupt("return", result);
1362
+ return _context16.abrupt("return", result);
1080
1363
  case 3:
1081
1364
  case "end":
1082
- return _context14.stop();
1365
+ return _context16.stop();
1083
1366
  }
1084
- }, _callee12);
1367
+ }, _callee14);
1085
1368
  }));
1086
1369
  function uploadLogs() {
1087
1370
  return _uploadLogs2.apply(this, arguments);
@@ -1096,24 +1379,24 @@ var CallingClient = exports.CallingClient = /*#__PURE__*/function (_Eventing) {
1096
1379
  * @param config - Config to start the CallingClient with.
1097
1380
  */
1098
1381
  var createClient = exports.createClient = /*#__PURE__*/function () {
1099
- var _ref7 = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee13(webex, config) {
1382
+ var _ref8 = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee15(webex, config) {
1100
1383
  var callingClientInstance;
1101
- return _regenerator.default.wrap(function (_context15) {
1102
- while (1) switch (_context15.prev = _context15.next) {
1384
+ return _regenerator.default.wrap(function (_context17) {
1385
+ while (1) switch (_context17.prev = _context17.next) {
1103
1386
  case 0:
1104
1387
  callingClientInstance = new CallingClient(webex, config);
1105
- _context15.next = 1;
1388
+ _context17.next = 1;
1106
1389
  return callingClientInstance.init();
1107
1390
  case 1:
1108
- return _context15.abrupt("return", callingClientInstance);
1391
+ return _context17.abrupt("return", callingClientInstance);
1109
1392
  case 2:
1110
1393
  case "end":
1111
- return _context15.stop();
1394
+ return _context17.stop();
1112
1395
  }
1113
- }, _callee13);
1396
+ }, _callee15);
1114
1397
  }));
1115
- return function createClient(_x3, _x4) {
1116
- return _ref7.apply(this, arguments);
1398
+ return function createClient(_x4, _x5) {
1399
+ return _ref8.apply(this, arguments);
1117
1400
  };
1118
1401
  }();
1119
1402
  //# sourceMappingURL=CallingClient.js.map