@webex/calling 3.12.0-next.27 → 3.12.0-next.29

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 (189) hide show
  1. package/dist/CallingClient/CallingClient.js +463 -205
  2. package/dist/CallingClient/CallingClient.js.map +1 -1
  3. package/dist/CallingClient/CallingClient.test.js +170 -77
  4. package/dist/CallingClient/CallingClient.test.js.map +1 -1
  5. package/dist/CallingClient/calling/call.js +11 -8
  6. package/dist/CallingClient/calling/call.js.map +1 -1
  7. package/dist/CallingClient/calling/call.test.js +45 -4
  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 +24 -3
  16. package/dist/CallingClient/constants.js.map +1 -1
  17. package/dist/CallingClient/line/line.test.js +16 -1
  18. package/dist/CallingClient/line/line.test.js.map +1 -1
  19. package/dist/CallingClient/registration/register.js +694 -406
  20. package/dist/CallingClient/registration/register.js.map +1 -1
  21. package/dist/CallingClient/registration/register.test.js +202 -21
  22. package/dist/CallingClient/registration/register.test.js.map +1 -1
  23. package/dist/CallingClient/registration/types.js.map +1 -1
  24. package/dist/CallingClient/registration/webWorker.js +41 -104
  25. package/dist/CallingClient/registration/webWorker.js.map +1 -1
  26. package/dist/CallingClient/registration/webWorker.test.js +39 -153
  27. package/dist/CallingClient/registration/webWorker.test.js.map +1 -1
  28. package/dist/CallingClient/registration/webWorkerStr.js +1 -1
  29. package/dist/CallingClient/registration/webWorkerStr.js.map +1 -1
  30. package/dist/CallingClient/utils/constants.js +46 -0
  31. package/dist/CallingClient/utils/constants.js.map +1 -0
  32. package/dist/CallingClient/utils/index.js +63 -0
  33. package/dist/CallingClient/utils/index.js.map +1 -0
  34. package/dist/CallingClient/utils/mobiusSocketMapper.js +122 -0
  35. package/dist/CallingClient/utils/mobiusSocketMapper.js.map +1 -0
  36. package/dist/CallingClient/utils/mobiusSocketMapper.test.js +211 -0
  37. package/dist/CallingClient/utils/mobiusSocketMapper.test.js.map +1 -0
  38. package/dist/CallingClient/utils/request.js +349 -0
  39. package/dist/CallingClient/utils/request.js.map +1 -0
  40. package/dist/CallingClient/utils/request.test.js +881 -0
  41. package/dist/CallingClient/utils/request.test.js.map +1 -0
  42. package/dist/CallingClient/utils/types.js +7 -0
  43. package/dist/CallingClient/utils/types.js.map +1 -0
  44. package/dist/CallingClient/utils/wsFeatureFlag.js +28 -0
  45. package/dist/CallingClient/utils/wsFeatureFlag.js.map +1 -0
  46. package/dist/CallingClient/utils/wsFeatureFlag.test.js +139 -0
  47. package/dist/CallingClient/utils/wsFeatureFlag.test.js.map +1 -0
  48. package/dist/Contacts/ContactsClient.test.js +3 -8
  49. package/dist/Contacts/ContactsClient.test.js.map +1 -1
  50. package/dist/Metrics/index.js +60 -0
  51. package/dist/Metrics/index.js.map +1 -1
  52. package/dist/Metrics/index.test.js +356 -0
  53. package/dist/Metrics/index.test.js.map +1 -1
  54. package/dist/Metrics/types.js +11 -1
  55. package/dist/Metrics/types.js.map +1 -1
  56. package/dist/SDKConnector/types.js.map +1 -1
  57. package/dist/common/Utils.js +138 -44
  58. package/dist/common/Utils.js.map +1 -1
  59. package/dist/common/testUtil.js +8 -4
  60. package/dist/common/testUtil.js.map +1 -1
  61. package/dist/common/types.js +2 -0
  62. package/dist/common/types.js.map +1 -1
  63. package/dist/mobius-socket/config.js +24 -0
  64. package/dist/mobius-socket/config.js.map +1 -0
  65. package/dist/mobius-socket/errors.js +150 -0
  66. package/dist/mobius-socket/errors.js.map +1 -0
  67. package/dist/mobius-socket/index.js +57 -0
  68. package/dist/mobius-socket/index.js.map +1 -0
  69. package/dist/mobius-socket/mobius-socket-events.test.js +485 -0
  70. package/dist/mobius-socket/mobius-socket-events.test.js.map +1 -0
  71. package/dist/mobius-socket/mobius-socket.js +804 -0
  72. package/dist/mobius-socket/mobius-socket.js.map +1 -0
  73. package/dist/mobius-socket/mobius-socket.test.js +1833 -0
  74. package/dist/mobius-socket/mobius-socket.test.js.map +1 -0
  75. package/dist/mobius-socket/socket/constants.js +34 -0
  76. package/dist/mobius-socket/socket/constants.js.map +1 -0
  77. package/dist/mobius-socket/socket/index.js +15 -0
  78. package/dist/mobius-socket/socket/index.js.map +1 -0
  79. package/dist/mobius-socket/socket/socket-base.js +604 -0
  80. package/dist/mobius-socket/socket/socket-base.js.map +1 -0
  81. package/dist/mobius-socket/socket/socket.js +19 -0
  82. package/dist/mobius-socket/socket/socket.js.map +1 -0
  83. package/dist/mobius-socket/socket/socket.shim.js +26 -0
  84. package/dist/mobius-socket/socket/socket.shim.js.map +1 -0
  85. package/dist/mobius-socket/socket/types.js +7 -0
  86. package/dist/mobius-socket/socket/types.js.map +1 -0
  87. package/dist/mobius-socket/socket.test.js +727 -0
  88. package/dist/mobius-socket/socket.test.js.map +1 -0
  89. package/dist/mobius-socket/test/mocha-helpers.js +23 -0
  90. package/dist/mobius-socket/test/mocha-helpers.js.map +1 -0
  91. package/dist/mobius-socket/test/promise-tick.js +28 -0
  92. package/dist/mobius-socket/test/promise-tick.js.map +1 -0
  93. package/dist/mobius-socket/types.js +7 -0
  94. package/dist/mobius-socket/types.js.map +1 -0
  95. package/dist/module/CallingClient/CallingClient.js +141 -10
  96. package/dist/module/CallingClient/calling/call.js +9 -6
  97. package/dist/module/CallingClient/calling/callManager.js +27 -7
  98. package/dist/module/CallingClient/calling/types.js +2 -0
  99. package/dist/module/CallingClient/constants.js +20 -0
  100. package/dist/module/CallingClient/registration/register.js +226 -62
  101. package/dist/module/CallingClient/registration/webWorker.js +42 -61
  102. package/dist/module/CallingClient/registration/webWorkerStr.js +47 -82
  103. package/dist/module/CallingClient/utils/constants.js +30 -0
  104. package/dist/module/CallingClient/utils/index.js +5 -0
  105. package/dist/module/CallingClient/utils/mobiusSocketMapper.js +72 -0
  106. package/dist/module/CallingClient/utils/request.js +162 -0
  107. package/dist/module/CallingClient/utils/types.js +1 -0
  108. package/dist/module/CallingClient/utils/wsFeatureFlag.js +12 -0
  109. package/dist/module/Metrics/index.js +46 -0
  110. package/dist/module/Metrics/types.js +10 -0
  111. package/dist/module/common/Utils.js +52 -12
  112. package/dist/module/common/testUtil.js +5 -1
  113. package/dist/module/common/types.js +2 -0
  114. package/dist/module/mobius-socket/config.js +15 -0
  115. package/dist/module/mobius-socket/errors.js +64 -0
  116. package/dist/module/mobius-socket/index.js +24 -0
  117. package/dist/module/mobius-socket/mobius-socket.js +571 -0
  118. package/dist/module/mobius-socket/socket/constants.js +10 -0
  119. package/dist/module/mobius-socket/socket/index.js +4 -0
  120. package/dist/module/mobius-socket/socket/socket-base.js +368 -0
  121. package/dist/module/mobius-socket/socket/socket.js +9 -0
  122. package/dist/module/mobius-socket/socket/socket.shim.js +12 -0
  123. package/dist/module/mobius-socket/socket/types.js +1 -0
  124. package/dist/module/mobius-socket/types.js +1 -0
  125. package/dist/types/CallingClient/CallingClient.d.ts +7 -0
  126. package/dist/types/CallingClient/CallingClient.d.ts.map +1 -1
  127. package/dist/types/CallingClient/calling/call.d.ts +1 -0
  128. package/dist/types/CallingClient/calling/call.d.ts.map +1 -1
  129. package/dist/types/CallingClient/calling/callManager.d.ts +3 -2
  130. package/dist/types/CallingClient/calling/callManager.d.ts.map +1 -1
  131. package/dist/types/CallingClient/calling/types.d.ts +21 -9
  132. package/dist/types/CallingClient/calling/types.d.ts.map +1 -1
  133. package/dist/types/CallingClient/constants.d.ts +20 -0
  134. package/dist/types/CallingClient/constants.d.ts.map +1 -1
  135. package/dist/types/CallingClient/registration/register.d.ts +6 -0
  136. package/dist/types/CallingClient/registration/register.d.ts.map +1 -1
  137. package/dist/types/CallingClient/registration/types.d.ts +3 -1
  138. package/dist/types/CallingClient/registration/types.d.ts.map +1 -1
  139. package/dist/types/CallingClient/registration/webWorker.d.ts.map +1 -1
  140. package/dist/types/CallingClient/registration/webWorkerStr.d.ts +1 -1
  141. package/dist/types/CallingClient/registration/webWorkerStr.d.ts.map +1 -1
  142. package/dist/types/CallingClient/utils/constants.d.ts +30 -0
  143. package/dist/types/CallingClient/utils/constants.d.ts.map +1 -0
  144. package/dist/types/CallingClient/utils/index.d.ts +6 -0
  145. package/dist/types/CallingClient/utils/index.d.ts.map +1 -0
  146. package/dist/types/CallingClient/utils/mobiusSocketMapper.d.ts +5 -0
  147. package/dist/types/CallingClient/utils/mobiusSocketMapper.d.ts.map +1 -0
  148. package/dist/types/CallingClient/utils/request.d.ts +23 -0
  149. package/dist/types/CallingClient/utils/request.d.ts.map +1 -0
  150. package/dist/types/CallingClient/utils/types.d.ts +29 -0
  151. package/dist/types/CallingClient/utils/types.d.ts.map +1 -0
  152. package/dist/types/CallingClient/utils/wsFeatureFlag.d.ts +4 -0
  153. package/dist/types/CallingClient/utils/wsFeatureFlag.d.ts.map +1 -0
  154. package/dist/types/Metrics/index.d.ts.map +1 -1
  155. package/dist/types/Metrics/types.d.ts +11 -1
  156. package/dist/types/Metrics/types.d.ts.map +1 -1
  157. package/dist/types/SDKConnector/types.d.ts +24 -0
  158. package/dist/types/SDKConnector/types.d.ts.map +1 -1
  159. package/dist/types/common/Utils.d.ts +9 -2
  160. package/dist/types/common/Utils.d.ts.map +1 -1
  161. package/dist/types/common/testUtil.d.ts +4 -1
  162. package/dist/types/common/testUtil.d.ts.map +1 -1
  163. package/dist/types/common/types.d.ts +3 -0
  164. package/dist/types/common/types.d.ts.map +1 -1
  165. package/dist/types/mobius-socket/config.d.ts +17 -0
  166. package/dist/types/mobius-socket/config.d.ts.map +1 -0
  167. package/dist/types/mobius-socket/errors.d.ts +32 -0
  168. package/dist/types/mobius-socket/errors.d.ts.map +1 -0
  169. package/dist/types/mobius-socket/index.d.ts +14 -0
  170. package/dist/types/mobius-socket/index.d.ts.map +1 -0
  171. package/dist/types/mobius-socket/mobius-socket.d.ts +48 -0
  172. package/dist/types/mobius-socket/mobius-socket.d.ts.map +1 -0
  173. package/dist/types/mobius-socket/socket/constants.d.ts +11 -0
  174. package/dist/types/mobius-socket/socket/constants.d.ts.map +1 -0
  175. package/dist/types/mobius-socket/socket/index.d.ts +5 -0
  176. package/dist/types/mobius-socket/socket/index.d.ts.map +1 -0
  177. package/dist/types/mobius-socket/socket/socket-base.d.ts +43 -0
  178. package/dist/types/mobius-socket/socket/socket-base.d.ts.map +1 -0
  179. package/dist/types/mobius-socket/socket/socket.d.ts +6 -0
  180. package/dist/types/mobius-socket/socket/socket.d.ts.map +1 -0
  181. package/dist/types/mobius-socket/socket/socket.shim.d.ts +6 -0
  182. package/dist/types/mobius-socket/socket/socket.shim.d.ts.map +1 -0
  183. package/dist/types/mobius-socket/socket/types.d.ts +61 -0
  184. package/dist/types/mobius-socket/socket/types.d.ts.map +1 -0
  185. package/dist/types/mobius-socket/types.d.ts +21 -0
  186. package/dist/types/mobius-socket/types.d.ts.map +1 -0
  187. package/package.json +16 -2
  188. package/src/mobius-socket/socket/socket.shim.ts +22 -0
  189. package/src/mobius-socket/socket/socket.ts +14 -0
@@ -19,12 +19,12 @@ var _regenerator = _interopRequireDefault(require("@babel/runtime-corejs2/regene
19
19
  var _stringify = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/json/stringify"));
20
20
  var _now = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/date/now"));
21
21
  var _keys = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/keys"));
22
+ var _values = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/values"));
22
23
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/slicedToArray"));
23
24
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/asyncToGenerator"));
24
25
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
25
26
  var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));
26
27
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
27
- var _uuid = require("uuid");
28
28
  var _constants = require("../../common/constants");
29
29
  var _common = require("../../common");
30
30
  var _webWorkerStr = _interopRequireDefault(require("./webWorkerStr"));
@@ -36,6 +36,7 @@ var _SDKConnector = _interopRequireDefault(require("../../SDKConnector"));
36
36
  var _types2 = require("../../common/types");
37
37
  var _constants2 = require("../constants");
38
38
  var _types3 = require("../line/types");
39
+ var _request = require("../utils/request");
39
40
  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; } } }; }
40
41
  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; } }
41
42
  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; }
@@ -74,6 +75,7 @@ var Registration = exports.Registration = /*#__PURE__*/function () {
74
75
  (0, _defineProperty2.default)(this, "retryAfter", void 0);
75
76
  (0, _defineProperty2.default)(this, "scheduled429Retry", false);
76
77
  (0, _defineProperty2.default)(this, "webWorker", void 0);
78
+ (0, _defineProperty2.default)(this, "apiRequest", void 0);
77
79
  this.jwe = jwe;
78
80
  this.sdkConnector = _SDKConnector.default;
79
81
  this.serviceData = serviceData;
@@ -94,8 +96,17 @@ var Registration = exports.Registration = /*#__PURE__*/function () {
94
96
  this.lineEmitter = lineEmitter;
95
97
  this.primaryMobiusUris = [];
96
98
  this.backupMobiusUris = [];
99
+ this.apiRequest = _request.APIRequest.getInstance({
100
+ webex: this.webex
101
+ });
97
102
  }
98
103
  return (0, _createClass2.default)(Registration, [{
104
+ key: "getServerType",
105
+ value: function getServerType(url) {
106
+ var _this$backupMobiusUri;
107
+ return this.primaryMobiusUris.includes(url) && 'PRIMARY' || ((_this$backupMobiusUri = this.backupMobiusUris) === null || _this$backupMobiusUri === void 0 ? void 0 : _this$backupMobiusUri.includes(url)) && 'BACKUP' || 'UNKNOWN';
108
+ }
109
+ }, {
99
110
  key: "getFailoverCacheKey",
100
111
  value: function getFailoverCacheKey() {
101
112
  return "".concat(_constants2.FAILOVER_CACHE_PREFIX, ".").concat(this.userId || 'unknown');
@@ -218,36 +229,33 @@ var Registration = exports.Registration = /*#__PURE__*/function () {
218
229
  key: "deleteRegistration",
219
230
  value: (function () {
220
231
  var _deleteRegistration = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee2(url, deviceId, deviceUrl) {
221
- var _response;
222
- var response, _t2, _t3, _t4, _t5, _t6, _t7, _t8, _t9, _t0;
232
+ var response, requestObj, _t2;
223
233
  return _regenerator.default.wrap(function (_context2) {
224
234
  while (1) switch (_context2.prev = _context2.next) {
225
235
  case 0:
226
- _context2.prev = 0;
227
- _t2 = fetch;
228
- _t3 = "".concat(url).concat(_constants2.DEVICES_ENDPOINT_RESOURCE, "/").concat(deviceId);
229
- _t4 = _types2.HTTP_METHODS.DELETE;
230
- _t5 = _defineProperty2.default;
231
- _t6 = _defineProperty2.default;
232
- _t7 = _defineProperty2.default;
233
- _t8 = (0, _defineProperty2.default)({}, _constants2.CISCO_DEVICE_URL, deviceUrl);
234
- _context2.next = 1;
235
- return this.webex.credentials.getUserToken();
236
- case 1:
237
- _t9 = _t5(_t6(_t7(_t8, "Authorization", _context2.sent), "trackingId", "".concat(_constants2.WEBEX_WEB_CLIENT, "_").concat((0, _uuid.v4)())), _constants2.SPARK_USER_AGENT, _constants2.CALLING_USER_AGENT);
236
+ requestObj = {
237
+ uri: "".concat(url).concat(_constants2.DEVICES_ENDPOINT_RESOURCE, "/").concat(deviceId),
238
+ method: _types2.HTTP_METHODS.DELETE,
239
+ headers: (0, _defineProperty2.default)((0, _defineProperty2.default)({}, _constants2.CISCO_DEVICE_URL, deviceUrl), _constants2.SPARK_USER_AGENT, _constants2.CALLING_USER_AGENT),
240
+ service: _types2.ALLOWED_SERVICES.MOBIUS
241
+ };
242
+ if (this.apiRequest.isSocketEnabled()) {
243
+ // @ts-ignore - body is added for mobius wss support, it is not used for mobius http
244
+ requestObj.body = {
245
+ deviceId: deviceId
246
+ };
247
+ }
248
+ _context2.prev = 1;
238
249
  _context2.next = 2;
239
- return _t2(_t3, {
240
- method: _t4,
241
- headers: _t9
242
- });
250
+ return this.apiRequest.makeRequest(requestObj);
243
251
  case 2:
244
252
  response = _context2.sent;
245
253
  _context2.next = 4;
246
254
  break;
247
255
  case 3:
248
256
  _context2.prev = 3;
249
- _t0 = _context2["catch"](0);
250
- _Logger.default.warn("Delete failed with Mobius: ".concat((0, _stringify.default)(_t0)), {
257
+ _t2 = _context2["catch"](1);
258
+ _Logger.default.warn("Delete failed with Mobius: ".concat((0, _stringify.default)(_t2)), {
251
259
  file: _constants2.REGISTRATION_FILE,
252
260
  method: _constants2.METHODS.DELETE_REGISTRATION
253
261
  });
@@ -256,12 +264,12 @@ var Registration = exports.Registration = /*#__PURE__*/function () {
256
264
  case 4:
257
265
  this.setStatus(_types2.RegistrationStatus.INACTIVE);
258
266
  this.lineEmitter(_types3.LINE_EVENTS.UNREGISTERED);
259
- return _context2.abrupt("return", (_response = response) === null || _response === void 0 ? void 0 : _response.json());
267
+ return _context2.abrupt("return", response);
260
268
  case 5:
261
269
  case "end":
262
270
  return _context2.stop();
263
271
  }
264
- }, _callee2, this, [[0, 3]]);
272
+ }, _callee2, this, [[1, 3]]);
265
273
  }));
266
274
  function deleteRegistration(_x, _x2, _x3) {
267
275
  return _deleteRegistration.apply(this, arguments);
@@ -288,7 +296,7 @@ var Registration = exports.Registration = /*#__PURE__*/function () {
288
296
  jwe: this.jwe
289
297
  }) : this.serviceData
290
298
  };
291
- return _context3.abrupt("return", this.webex.request({
299
+ return _context3.abrupt("return", this.apiRequest.makeRequest({
292
300
  uri: "".concat(url, "device"),
293
301
  method: _types2.HTTP_METHODS.POST,
294
302
  headers: (0, _defineProperty2.default)((0, _defineProperty2.default)({}, _constants2.CISCO_DEVICE_URL, deviceInfo.clientDeviceUri), _constants2.SPARK_USER_AGENT, _constants2.CALLING_USER_AGENT),
@@ -316,25 +324,44 @@ var Registration = exports.Registration = /*#__PURE__*/function () {
316
324
  value: (function () {
317
325
  var _restorePreviousRegistration = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee5(caller) {
318
326
  var _this = this;
319
- var abort;
327
+ var loggerContext, abort;
320
328
  return _regenerator.default.wrap(function (_context5) {
321
329
  while (1) switch (_context5.prev = _context5.next) {
322
330
  case 0:
331
+ loggerContext = {
332
+ file: _constants2.REGISTRATION_FILE,
333
+ method: _constants2.METHODS.RESTORE_PREVIOUS_REGISTRATION
334
+ };
335
+ _Logger.default.info("".concat(_constants.METHOD_START_MESSAGE, " - caller: ").concat(caller, ", activeMobiusUrl: ").concat(this.activeMobiusUrl), loggerContext);
323
336
  abort = false;
324
- if (!this.activeMobiusUrl) {
325
- _context5.next = 6;
337
+ if (!this.apiRequest.isSocketEnabled()) {
338
+ _context5.next = 1;
326
339
  break;
327
340
  }
341
+ _Logger.default.info("Disconnecting from Mobius socket to restore previous registration.", {
342
+ file: _constants2.REGISTRATION_FILE,
343
+ method: 'restorePreviousRegistration'
344
+ });
328
345
  _context5.next = 1;
329
- return this.attemptRegistrationWithServers(caller, [this.activeMobiusUrl]);
346
+ return this.apiRequest.disconnectFromMobiusSocket({
347
+ code: 3050,
348
+ reason: 'done (permanent)'
349
+ });
330
350
  case 1:
351
+ if (!this.activeMobiusUrl) {
352
+ _context5.next = 7;
353
+ break;
354
+ }
355
+ _context5.next = 2;
356
+ return this.attemptRegistrationWithServers(caller, [this.activeMobiusUrl]);
357
+ case 2:
331
358
  abort = _context5.sent;
332
359
  if (!this.retryAfter) {
333
- _context5.next = 6;
360
+ _context5.next = 7;
334
361
  break;
335
362
  }
336
363
  if (!(this.retryAfter < _constants2.RETRY_TIMER_UPPER_LIMIT)) {
337
- _context5.next = 2;
364
+ _context5.next = 3;
338
365
  break;
339
366
  }
340
367
  // If retry-after is less than threshold, honor it and schedule retry
@@ -350,28 +377,30 @@ var Registration = exports.Registration = /*#__PURE__*/function () {
350
377
  }
351
378
  }, _callee4);
352
379
  })), this.retryAfter * 1000);
353
- _context5.next = 5;
380
+ _context5.next = 6;
354
381
  break;
355
- case 2:
382
+ case 3:
356
383
  if (!(this.primaryMobiusUris.includes(this.activeMobiusUrl) && this.backupMobiusUris.length > 0)) {
357
- _context5.next = 4;
384
+ _context5.next = 5;
358
385
  break;
359
386
  }
360
- _context5.next = 3;
387
+ _context5.next = 4;
361
388
  return this.attemptRegistrationWithServers(caller, this.backupMobiusUris);
362
- case 3:
389
+ case 4:
363
390
  abort = _context5.sent;
364
- _context5.next = 5;
391
+ _context5.next = 6;
365
392
  break;
366
- case 4:
367
- // If we are using backup and got 429, restart registration
368
- this.restartRegistration(caller);
369
393
  case 5:
394
+ _context5.next = 6;
395
+ return this.restartRegistration(caller);
396
+ case 6:
370
397
  this.retryAfter = undefined;
398
+ _Logger.default.log("restorePreviousRegistration completed via 429 retry-after path - caller: ".concat(caller), loggerContext);
371
399
  return _context5.abrupt("return", true);
372
- case 6:
373
- return _context5.abrupt("return", abort);
374
400
  case 7:
401
+ _Logger.default.log("restorePreviousRegistration completed - caller: ".concat(caller, ", deviceRegistered: ").concat(this.isDeviceRegistered(), ", abort: ").concat(abort), loggerContext);
402
+ return _context5.abrupt("return", abort);
403
+ case 8:
375
404
  case "end":
376
405
  return _context5.stop();
377
406
  }
@@ -390,12 +419,17 @@ var Registration = exports.Registration = /*#__PURE__*/function () {
390
419
  key: "handle404KeepaliveFailure",
391
420
  value: (function () {
392
421
  var _handle404KeepaliveFailure = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee6(caller) {
393
- var abort;
422
+ var loggerContext, abort;
394
423
  return _regenerator.default.wrap(function (_context6) {
395
424
  while (1) switch (_context6.prev = _context6.next) {
396
425
  case 0:
426
+ loggerContext = {
427
+ file: _constants2.REGISTRATION_FILE,
428
+ method: _constants2.METHODS.HANDLE_404_KEEPALIVE_FAILURE
429
+ };
430
+ _Logger.default.info("".concat(_constants.METHOD_START_MESSAGE, " - caller: ").concat(caller), loggerContext);
397
431
  if (!(caller === _constants2.KEEPALIVE_UTIL)) {
398
- _context6.next = 2;
432
+ _context6.next = 4;
399
433
  break;
400
434
  }
401
435
  _context6.next = 1;
@@ -403,12 +437,18 @@ var Registration = exports.Registration = /*#__PURE__*/function () {
403
437
  case 1:
404
438
  abort = _context6.sent;
405
439
  if (!(!abort && !this.isDeviceRegistered())) {
406
- _context6.next = 2;
440
+ _context6.next = 3;
407
441
  break;
408
442
  }
443
+ _Logger.default.warn('Keepalive 404 recovery: re-registration did not complete, starting failover timer', loggerContext);
409
444
  _context6.next = 2;
410
445
  return this.startFailoverTimer();
411
446
  case 2:
447
+ _context6.next = 4;
448
+ break;
449
+ case 3:
450
+ _Logger.default.log("Keepalive 404 recovery handled - deviceRegistered: ".concat(this.isDeviceRegistered(), ", abort: ").concat(abort), loggerContext);
451
+ case 4:
412
452
  case "end":
413
453
  return _context6.stop();
414
454
  }
@@ -601,13 +641,26 @@ var Registration = exports.Registration = /*#__PURE__*/function () {
601
641
  }, _callee0);
602
642
  })), interval * _constants2.SEC_TO_MSEC_MFACTOR);
603
643
  _Logger.default.log("Scheduled retry with primary in ".concat(interval, " seconds, number of attempts : ").concat(attempt), loggerContext);
604
- _context11.next = 5;
644
+ _context11.next = 7;
605
645
  break;
606
646
  case 1:
607
647
  if (!this.backupMobiusUris.length) {
648
+ _context11.next = 5;
649
+ break;
650
+ }
651
+ if (!this.apiRequest.isSocketEnabled()) {
608
652
  _context11.next = 3;
609
653
  break;
610
654
  }
655
+ _Logger.default.info('Disconnecting from primary Mobius socket for failover to backup servers', loggerContext);
656
+ _context11.next = 2;
657
+ return this.apiRequest.disconnectFromMobiusSocket({
658
+ code: 3050,
659
+ reason: 'done (permanent)'
660
+ });
661
+ case 2:
662
+ _Logger.default.log('Mobius socket disconnect complete prior to backup failover', loggerContext);
663
+ case 3:
611
664
  this.saveFailoverState({
612
665
  attempt: attempt,
613
666
  timeElapsed: timeElapsed,
@@ -616,9 +669,9 @@ var Registration = exports.Registration = /*#__PURE__*/function () {
616
669
  });
617
670
  _Logger.default.info('Failing over to backup servers.', loggerContext);
618
671
  this.failoverImmediately = false;
619
- _context11.next = 2;
672
+ _context11.next = 4;
620
673
  return this.attemptRegistrationWithServers(_constants2.FAILOVER_UTIL, this.backupMobiusUris);
621
- case 2:
674
+ case 4:
622
675
  abort = _context11.sent;
623
676
  if (!abort && !this.isDeviceRegistered()) {
624
677
  interval = this.getRegRetryInterval();
@@ -662,16 +715,16 @@ var Registration = exports.Registration = /*#__PURE__*/function () {
662
715
  })), interval * _constants2.SEC_TO_MSEC_MFACTOR);
663
716
  _Logger.default.log("Scheduled retry with backup servers in ".concat(interval, " seconds."), loggerContext);
664
717
  }
665
- _context11.next = 5;
718
+ _context11.next = 7;
666
719
  break;
667
- case 3:
668
- _context11.next = 4;
720
+ case 5:
721
+ _context11.next = 6;
669
722
  return (0, _common.uploadLogs)();
670
- case 4:
723
+ case 6:
671
724
  (0, _common.emitFinalFailure)(function (clientError) {
672
725
  _this3.lineEmitter(_types3.LINE_EVENTS.ERROR, undefined, clientError);
673
- }, loggerContext);
674
- case 5:
726
+ }, loggerContext, interval < 0 ? 'Timer threshold exceeded during failover' : undefined);
727
+ case 7:
675
728
  case "end":
676
729
  return _context11.stop();
677
730
  }
@@ -695,25 +748,53 @@ var Registration = exports.Registration = /*#__PURE__*/function () {
695
748
  }
696
749
  }
697
750
  }, {
698
- key: "isPrimaryActive",
751
+ key: "postKeepAlive",
699
752
  value: function () {
700
- var _isPrimaryActive = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee12() {
701
- var status, _iterator, _step, mobiusUrl, baseUri, response, _ref7, statusCode, _t1, _t10;
753
+ var _postKeepAlive = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee12(deviceUrl, url) {
754
+ var _this$deviceInfo$devi;
702
755
  return _regenerator.default.wrap(function (_context12) {
703
756
  while (1) switch (_context12.prev = _context12.next) {
757
+ case 0:
758
+ return _context12.abrupt("return", this.apiRequest.makeRequest({
759
+ uri: "".concat(url, "/status"),
760
+ method: _types2.HTTP_METHODS.POST,
761
+ headers: (0, _defineProperty2.default)((0, _defineProperty2.default)({}, _constants2.CISCO_DEVICE_URL, deviceUrl), _constants2.SPARK_USER_AGENT, _constants2.CALLING_USER_AGENT),
762
+ body: {
763
+ deviceId: (_this$deviceInfo$devi = this.deviceInfo.device) === null || _this$deviceInfo$devi === void 0 ? void 0 : _this$deviceInfo$devi.deviceId
764
+ },
765
+ service: _types2.ALLOWED_SERVICES.MOBIUS
766
+ }));
767
+ case 1:
768
+ case "end":
769
+ return _context12.stop();
770
+ }
771
+ }, _callee12, this);
772
+ }));
773
+ function postKeepAlive(_x9, _x0) {
774
+ return _postKeepAlive.apply(this, arguments);
775
+ }
776
+ return postKeepAlive;
777
+ }()
778
+ }, {
779
+ key: "isPrimaryActive",
780
+ value: function () {
781
+ var _isPrimaryActive = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee13() {
782
+ var status, _iterator, _step, mobiusUrl, baseUri, response, _ref7, statusCode, _t3, _t4;
783
+ return _regenerator.default.wrap(function (_context13) {
784
+ while (1) switch (_context13.prev = _context13.next) {
704
785
  case 0:
705
786
  _iterator = _createForOfIteratorHelper(this.primaryMobiusUris);
706
- _context12.prev = 1;
787
+ _context13.prev = 1;
707
788
  _iterator.s();
708
789
  case 2:
709
790
  if ((_step = _iterator.n()).done) {
710
- _context12.next = 8;
791
+ _context13.next = 8;
711
792
  break;
712
793
  }
713
794
  mobiusUrl = _step.value;
714
- _context12.prev = 3;
715
- baseUri = mobiusUrl.replace(_constants2.URL_ENDPOINT, '/'); // eslint-disable-next-line no-await-in-loop
716
- _context12.next = 4;
795
+ _context13.prev = 3;
796
+ baseUri = mobiusUrl.replace(_constants2.URL_ENDPOINT, '/').replace('wss://', 'https://'); // eslint-disable-next-line no-await-in-loop
797
+ _context13.next = 4;
717
798
  return this.webex.request({
718
799
  uri: "".concat(baseUri, "ping"),
719
800
  method: _types2.HTTP_METHODS.GET,
@@ -721,10 +802,10 @@ var Registration = exports.Registration = /*#__PURE__*/function () {
721
802
  service: _types2.ALLOWED_SERVICES.MOBIUS
722
803
  });
723
804
  case 4:
724
- response = _context12.sent;
805
+ response = _context13.sent;
725
806
  _ref7 = response, statusCode = _ref7.statusCode;
726
807
  if (!(statusCode === 200)) {
727
- _context12.next = 5;
808
+ _context13.next = 5;
728
809
  break;
729
810
  }
730
811
  _Logger.default.info("Ping successful for primary Mobius: ".concat(mobiusUrl), {
@@ -732,39 +813,39 @@ var Registration = exports.Registration = /*#__PURE__*/function () {
732
813
  method: _constants2.FAILBACK_UTIL
733
814
  });
734
815
  status = 'up';
735
- return _context12.abrupt("continue", 8);
816
+ return _context13.abrupt("continue", 8);
736
817
  case 5:
737
- _context12.next = 7;
818
+ _context13.next = 7;
738
819
  break;
739
820
  case 6:
740
- _context12.prev = 6;
741
- _t1 = _context12["catch"](3);
742
- _Logger.default.warn("Ping failed for primary Mobius: ".concat(mobiusUrl, " with error: ").concat((0, _stringify.default)(_t1)), {
821
+ _context13.prev = 6;
822
+ _t3 = _context13["catch"](3);
823
+ _Logger.default.warn("Ping failed for primary Mobius: ".concat(mobiusUrl, " with error: ").concat((0, _stringify.default)(_t3)), {
743
824
  file: _constants2.REGISTRATION_FILE,
744
825
  method: _constants2.FAILBACK_UTIL
745
826
  });
746
827
  status = 'down';
747
828
  case 7:
748
- _context12.next = 2;
829
+ _context13.next = 2;
749
830
  break;
750
831
  case 8:
751
- _context12.next = 10;
832
+ _context13.next = 10;
752
833
  break;
753
834
  case 9:
754
- _context12.prev = 9;
755
- _t10 = _context12["catch"](1);
756
- _iterator.e(_t10);
835
+ _context13.prev = 9;
836
+ _t4 = _context13["catch"](1);
837
+ _iterator.e(_t4);
757
838
  case 10:
758
- _context12.prev = 10;
839
+ _context13.prev = 10;
759
840
  _iterator.f();
760
- return _context12.finish(10);
841
+ return _context13.finish(10);
761
842
  case 11:
762
- return _context12.abrupt("return", status === 'up');
843
+ return _context13.abrupt("return", status === 'up');
763
844
  case 12:
764
845
  case "end":
765
- return _context12.stop();
846
+ return _context13.stop();
766
847
  }
767
- }, _callee12, this, [[1, 9, 10, 11], [3, 6]]);
848
+ }, _callee13, this, [[1, 9, 10, 11], [3, 6]]);
768
849
  }));
769
850
  function isPrimaryActive() {
770
851
  return _isPrimaryActive.apply(this, arguments);
@@ -797,13 +878,21 @@ var Registration = exports.Registration = /*#__PURE__*/function () {
797
878
  }, {
798
879
  key: "initiateFailback",
799
880
  value: function initiateFailback() {
881
+ var loggerContext = {
882
+ file: _constants2.REGISTRATION_FILE,
883
+ method: _constants2.METHODS.INITIATE_FAILBACK
884
+ };
800
885
  if (this.isFailbackRequired()) {
801
886
  if (!this.failbackTimer) {
802
887
  this.failback429RetryAttempts = 0;
803
888
  var intervalInMinutes = this.getFailbackInterval();
889
+ _Logger.default.info("Scheduling failback to primary - intervalMinutes: ".concat(intervalInMinutes), loggerContext);
804
890
  this.startFailbackTimer(intervalInMinutes * _constants2.MINUTES_TO_SEC_MFACTOR);
891
+ } else {
892
+ _Logger.default.info('Failback timer already scheduled, skipping', loggerContext);
805
893
  }
806
894
  } else {
895
+ _Logger.default.info('Failback not required, clearing any pending failback timer', loggerContext);
807
896
  this.failback429RetryAttempts = 0;
808
897
  this.clearFailbackTimer();
809
898
  }
@@ -817,16 +906,16 @@ var Registration = exports.Registration = /*#__PURE__*/function () {
817
906
  key: "startFailbackTimer",
818
907
  value: function startFailbackTimer(intervalInSeconds) {
819
908
  var _this4 = this;
820
- this.failbackTimer = setTimeout(/*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee13() {
821
- return _regenerator.default.wrap(function (_context13) {
822
- while (1) switch (_context13.prev = _context13.next) {
909
+ this.failbackTimer = setTimeout(/*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee14() {
910
+ return _regenerator.default.wrap(function (_context14) {
911
+ while (1) switch (_context14.prev = _context14.next) {
823
912
  case 0:
824
- return _context13.abrupt("return", _this4.executeFailback());
913
+ return _context14.abrupt("return", _this4.executeFailback());
825
914
  case 1:
826
915
  case "end":
827
- return _context13.stop();
916
+ return _context14.stop();
828
917
  }
829
- }, _callee13);
918
+ }, _callee14);
830
919
  })), intervalInSeconds * _constants2.SEC_TO_MSEC_MFACTOR);
831
920
  _Logger.default.log("Failback scheduled after ".concat(intervalInSeconds, " seconds."), {
832
921
  file: _constants2.REGISTRATION_FILE,
@@ -841,90 +930,103 @@ var Registration = exports.Registration = /*#__PURE__*/function () {
841
930
  }, {
842
931
  key: "executeFailback",
843
932
  value: (function () {
844
- var _executeFailback = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee15() {
933
+ var _executeFailback = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee16() {
845
934
  var _this5 = this;
846
- return _regenerator.default.wrap(function (_context15) {
847
- while (1) switch (_context15.prev = _context15.next) {
935
+ var loggerContext;
936
+ return _regenerator.default.wrap(function (_context16) {
937
+ while (1) switch (_context16.prev = _context16.next) {
848
938
  case 0:
849
- _context15.next = 1;
850
- return this.mutex.runExclusive(/*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee14() {
939
+ loggerContext = {
940
+ file: _constants2.REGISTRATION_FILE,
941
+ method: _constants2.METHODS.EXECUTE_FAILBACK
942
+ };
943
+ _Logger.default.info(_constants.METHOD_START_MESSAGE, loggerContext);
944
+ _context16.next = 1;
945
+ return this.mutex.runExclusive(/*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee15() {
851
946
  var primaryServerStatus, abort, abortNew;
852
- return _regenerator.default.wrap(function (_context14) {
853
- while (1) switch (_context14.prev = _context14.next) {
947
+ return _regenerator.default.wrap(function (_context15) {
948
+ while (1) switch (_context15.prev = _context15.next) {
854
949
  case 0:
855
950
  if (!_this5.isFailbackRequired()) {
856
- _context14.next = 11;
951
+ _context15.next = 13;
857
952
  break;
858
953
  }
859
- _context14.next = 1;
954
+ _context15.next = 1;
860
955
  return _this5.isPrimaryActive();
861
956
  case 1:
862
- primaryServerStatus = _context14.sent;
957
+ primaryServerStatus = _context15.sent;
863
958
  if (!((0, _keys.default)(_this5.callManager.getActiveCalls()).length === 0 && primaryServerStatus)) {
864
- _context14.next = 10;
959
+ _context15.next = 12;
865
960
  break;
866
961
  }
867
- _Logger.default.info("Attempting failback to primary.", {
868
- file: _constants2.REGISTRATION_FILE,
869
- method: _this5.executeFailback.name
870
- });
871
- _context14.next = 2;
962
+ _Logger.default.info("Attempting failback to primary.", loggerContext);
963
+ _context15.next = 2;
872
964
  return _this5.deregister();
873
965
  case 2:
874
- _context14.next = 3;
875
- return _this5.attemptRegistrationWithServers(_constants2.FAILBACK_UTIL);
966
+ if (!_this5.apiRequest.isSocketEnabled()) {
967
+ _context15.next = 4;
968
+ break;
969
+ }
970
+ _Logger.default.info('Disconnecting from backup Mobius socket for failback to primary', loggerContext);
971
+ _context15.next = 3;
972
+ return _this5.apiRequest.disconnectFromMobiusSocket({
973
+ code: 3050,
974
+ reason: 'done (permanent)'
975
+ });
876
976
  case 3:
877
- abort = _context14.sent;
977
+ _Logger.default.log('Mobius socket disconnect complete prior to primary failback', loggerContext);
978
+ case 4:
979
+ _context15.next = 5;
980
+ return _this5.attemptRegistrationWithServers(_constants2.FAILBACK_UTIL);
981
+ case 5:
982
+ abort = _context15.sent;
878
983
  if (!(_this5.scheduled429Retry || abort || _this5.isDeviceRegistered())) {
879
- _context14.next = 4;
984
+ _context15.next = 6;
880
985
  break;
881
986
  }
882
- return _context14.abrupt("return");
883
- case 4:
884
- _context14.next = 5;
987
+ return _context15.abrupt("return");
988
+ case 6:
989
+ _context15.next = 7;
885
990
  return _this5.restorePreviousRegistration(_constants2.FAILBACK_UTIL);
886
- case 5:
887
- abortNew = _context14.sent;
991
+ case 7:
992
+ abortNew = _context15.sent;
888
993
  if (!abortNew) {
889
- _context14.next = 6;
994
+ _context15.next = 8;
890
995
  break;
891
996
  }
892
997
  _this5.clearFailbackTimer();
893
- return _context14.abrupt("return");
894
- case 6:
998
+ return _context15.abrupt("return");
999
+ case 8:
895
1000
  if (_this5.isDeviceRegistered()) {
896
- _context14.next = 8;
1001
+ _context15.next = 10;
897
1002
  break;
898
1003
  }
899
- _context14.next = 7;
900
- return _this5.restartRegistration(_this5.executeFailback.name);
901
- case 7:
902
- _context14.next = 9;
903
- break;
904
- case 8:
905
- _this5.failbackTimer = undefined;
906
- _this5.initiateFailback();
1004
+ _context15.next = 9;
1005
+ return _this5.restartRegistration(loggerContext.method);
907
1006
  case 9:
908
- _context14.next = 11;
1007
+ _context15.next = 11;
909
1008
  break;
910
1009
  case 10:
911
- _Logger.default.info('Active calls present or primary Mobius is down, deferring failback to next cycle.', {
912
- file: _constants2.REGISTRATION_FILE,
913
- method: _this5.executeFailback.name
914
- });
915
1010
  _this5.failbackTimer = undefined;
916
1011
  _this5.initiateFailback();
917
1012
  case 11:
1013
+ _context15.next = 13;
1014
+ break;
1015
+ case 12:
1016
+ _Logger.default.info('Active calls present or primary Mobius is down, deferring failback to next cycle.', loggerContext);
1017
+ _this5.failbackTimer = undefined;
1018
+ _this5.initiateFailback();
1019
+ case 13:
918
1020
  case "end":
919
- return _context14.stop();
1021
+ return _context15.stop();
920
1022
  }
921
- }, _callee14);
1023
+ }, _callee15);
922
1024
  })));
923
1025
  case 1:
924
1026
  case "end":
925
- return _context15.stop();
1027
+ return _context16.stop();
926
1028
  }
927
- }, _callee15, this);
1029
+ }, _callee16, this);
928
1030
  }));
929
1031
  function executeFailback() {
930
1032
  return _executeFailback.apply(this, arguments);
@@ -987,34 +1089,42 @@ var Registration = exports.Registration = /*#__PURE__*/function () {
987
1089
  }, {
988
1090
  key: "restartRegistration",
989
1091
  value: (function () {
990
- var _restartRegistration = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee16(caller) {
991
- var abort;
992
- return _regenerator.default.wrap(function (_context16) {
993
- while (1) switch (_context16.prev = _context16.next) {
1092
+ var _restartRegistration = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee17(caller) {
1093
+ var loggerContext, abort;
1094
+ return _regenerator.default.wrap(function (_context17) {
1095
+ while (1) switch (_context17.prev = _context17.next) {
994
1096
  case 0:
1097
+ loggerContext = {
1098
+ file: _constants2.REGISTRATION_FILE,
1099
+ method: _constants2.METHODS.RESTART_REGISTRATION
1100
+ };
1101
+ _Logger.default.info("".concat(_constants.METHOD_START_MESSAGE, " - caller: ").concat(caller), loggerContext);
1102
+
995
1103
  /*
996
1104
  * Cancel any failback timer running
997
1105
  * and start fresh registration attempt with retry as true.
998
1106
  */
999
1107
  this.clearFailbackTimer();
1000
1108
  this.failback429RetryAttempts = 0;
1001
- _context16.next = 1;
1109
+ _context17.next = 1;
1002
1110
  return this.attemptRegistrationWithServers(caller, this.primaryMobiusUris);
1003
1111
  case 1:
1004
- abort = _context16.sent;
1112
+ abort = _context17.sent;
1005
1113
  if (!(!abort && !this.isDeviceRegistered())) {
1006
- _context16.next = 2;
1114
+ _context17.next = 2;
1007
1115
  break;
1008
1116
  }
1009
- _context16.next = 2;
1117
+ _context17.next = 2;
1010
1118
  return this.startFailoverTimer();
1011
1119
  case 2:
1120
+ _Logger.default.log("restartRegistration completed - caller: ".concat(caller, ", deviceRegistered: ").concat(this.isDeviceRegistered(), ", abort: ").concat(abort), loggerContext);
1121
+ case 3:
1012
1122
  case "end":
1013
- return _context16.stop();
1123
+ return _context17.stop();
1014
1124
  }
1015
- }, _callee16, this);
1125
+ }, _callee17, this);
1016
1126
  }));
1017
- function restartRegistration(_x9) {
1127
+ function restartRegistration(_x1) {
1018
1128
  return _restartRegistration.apply(this, arguments);
1019
1129
  }
1020
1130
  return restartRegistration;
@@ -1028,23 +1138,23 @@ var Registration = exports.Registration = /*#__PURE__*/function () {
1028
1138
  }, {
1029
1139
  key: "handleConnectionRestoration",
1030
1140
  value: (function () {
1031
- var _handleConnectionRestoration = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee18(retry) {
1141
+ var _handleConnectionRestoration = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee19(retry) {
1032
1142
  var _this6 = this;
1033
- return _regenerator.default.wrap(function (_context18) {
1034
- while (1) switch (_context18.prev = _context18.next) {
1143
+ return _regenerator.default.wrap(function (_context19) {
1144
+ while (1) switch (_context19.prev = _context19.next) {
1035
1145
  case 0:
1036
1146
  _Logger.default.info(_constants.METHOD_START_MESSAGE, {
1037
1147
  method: _constants2.METHODS.HANDLE_CONNECTION_RESTORATION,
1038
1148
  file: _constants2.REGISTRATION_FILE
1039
1149
  });
1040
- _context18.next = 1;
1041
- return this.mutex.runExclusive(/*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee17() {
1150
+ _context19.next = 1;
1151
+ return this.mutex.runExclusive(/*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee18() {
1042
1152
  var abort;
1043
- return _regenerator.default.wrap(function (_context17) {
1044
- while (1) switch (_context17.prev = _context17.next) {
1153
+ return _regenerator.default.wrap(function (_context18) {
1154
+ while (1) switch (_context18.prev = _context18.next) {
1045
1155
  case 0:
1046
1156
  if (!retry) {
1047
- _context17.next = 4;
1157
+ _context18.next = 4;
1048
1158
  break;
1049
1159
  }
1050
1160
  _Logger.default.log('Network is up again, re-registering with Webex Calling if needed', {
@@ -1053,43 +1163,43 @@ var Registration = exports.Registration = /*#__PURE__*/function () {
1053
1163
  });
1054
1164
  _this6.clearKeepaliveTimer();
1055
1165
  if (!_this6.isDeviceRegistered()) {
1056
- _context17.next = 1;
1166
+ _context18.next = 1;
1057
1167
  break;
1058
1168
  }
1059
- _context17.next = 1;
1169
+ _context18.next = 1;
1060
1170
  return _this6.deregister();
1061
1171
  case 1:
1062
1172
  if (!_this6.activeMobiusUrl) {
1063
- _context17.next = 3;
1173
+ _context18.next = 3;
1064
1174
  break;
1065
1175
  }
1066
- _context17.next = 2;
1176
+ _context18.next = 2;
1067
1177
  return _this6.restorePreviousRegistration(_constants2.METHODS.HANDLE_CONNECTION_RESTORATION);
1068
1178
  case 2:
1069
- abort = _context17.sent;
1179
+ abort = _context18.sent;
1070
1180
  if (!(!abort && !_this6.isDeviceRegistered())) {
1071
- _context17.next = 3;
1181
+ _context18.next = 3;
1072
1182
  break;
1073
1183
  }
1074
- _context17.next = 3;
1184
+ _context18.next = 3;
1075
1185
  return _this6.restartRegistration(_constants2.METHODS.HANDLE_CONNECTION_RESTORATION);
1076
1186
  case 3:
1077
1187
  retry = false;
1078
1188
  case 4:
1079
1189
  case "end":
1080
- return _context17.stop();
1190
+ return _context18.stop();
1081
1191
  }
1082
- }, _callee17);
1192
+ }, _callee18);
1083
1193
  })));
1084
1194
  case 1:
1085
- return _context18.abrupt("return", retry);
1195
+ return _context19.abrupt("return", retry);
1086
1196
  case 2:
1087
1197
  case "end":
1088
- return _context18.stop();
1198
+ return _context19.stop();
1089
1199
  }
1090
- }, _callee18, this);
1200
+ }, _callee19, this);
1091
1201
  }));
1092
- function handleConnectionRestoration(_x0) {
1202
+ function handleConnectionRestoration(_x10) {
1093
1203
  return _handleConnectionRestoration.apply(this, arguments);
1094
1204
  }
1095
1205
  return handleConnectionRestoration;
@@ -1105,53 +1215,53 @@ var Registration = exports.Registration = /*#__PURE__*/function () {
1105
1215
  value: function restoreRegistrationCallBack() {
1106
1216
  var _this7 = this;
1107
1217
  return /*#__PURE__*/function () {
1108
- var _ref1 = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee19(restoreData, caller) {
1218
+ var _ref1 = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee20(restoreData, caller) {
1109
1219
  var logContext, restore, finalError;
1110
- return _regenerator.default.wrap(function (_context19) {
1111
- while (1) switch (_context19.prev = _context19.next) {
1220
+ return _regenerator.default.wrap(function (_context20) {
1221
+ while (1) switch (_context20.prev = _context20.next) {
1112
1222
  case 0:
1113
1223
  logContext = {
1114
1224
  file: _constants2.REGISTRATION_FILE,
1115
1225
  method: caller
1116
1226
  };
1117
1227
  if (_this7.isRegRetry()) {
1118
- _context19.next = 4;
1228
+ _context20.next = 4;
1119
1229
  break;
1120
1230
  }
1121
1231
  _Logger.default.info('Registration restoration in progress.', logContext);
1122
1232
  restore = _this7.getExistingDevice(restoreData);
1123
1233
  if (!restore) {
1124
- _context19.next = 3;
1234
+ _context20.next = 3;
1125
1235
  break;
1126
1236
  }
1127
1237
  _this7.setRegRetry(true);
1128
- _context19.next = 1;
1238
+ _context20.next = 1;
1129
1239
  return _this7.deregister();
1130
1240
  case 1:
1131
- _context19.next = 2;
1241
+ _context20.next = 2;
1132
1242
  return _this7.restorePreviousRegistration(caller);
1133
1243
  case 2:
1134
- finalError = _context19.sent;
1244
+ finalError = _context20.sent;
1135
1245
  _this7.setRegRetry(false);
1136
1246
  if (_this7.isDeviceRegistered()) {
1137
1247
  _Logger.default.info('Registration restored successfully.', logContext);
1138
1248
  }
1139
- return _context19.abrupt("return", finalError);
1249
+ return _context20.abrupt("return", finalError);
1140
1250
  case 3:
1141
1251
  _this7.lineEmitter(_types3.LINE_EVENTS.UNREGISTERED);
1142
- _context19.next = 5;
1252
+ _context20.next = 5;
1143
1253
  break;
1144
1254
  case 4:
1145
1255
  _this7.lineEmitter(_types3.LINE_EVENTS.UNREGISTERED);
1146
1256
  case 5:
1147
- return _context19.abrupt("return", false);
1257
+ return _context20.abrupt("return", false);
1148
1258
  case 6:
1149
1259
  case "end":
1150
- return _context19.stop();
1260
+ return _context20.stop();
1151
1261
  }
1152
- }, _callee19);
1262
+ }, _callee20);
1153
1263
  }));
1154
- return function (_x1, _x10) {
1264
+ return function (_x11, _x12) {
1155
1265
  return _ref1.apply(this, arguments);
1156
1266
  };
1157
1267
  }();
@@ -1164,39 +1274,51 @@ var Registration = exports.Registration = /*#__PURE__*/function () {
1164
1274
  }, {
1165
1275
  key: "triggerRegistration",
1166
1276
  value: (function () {
1167
- var _triggerRegistration = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee20() {
1168
- var abort;
1169
- return _regenerator.default.wrap(function (_context20) {
1170
- while (1) switch (_context20.prev = _context20.next) {
1277
+ var _triggerRegistration = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee21() {
1278
+ var loggerContext, abort;
1279
+ return _regenerator.default.wrap(function (_context21) {
1280
+ while (1) switch (_context21.prev = _context21.next) {
1171
1281
  case 0:
1172
- _context20.next = 1;
1282
+ loggerContext = {
1283
+ file: _constants2.REGISTRATION_FILE,
1284
+ method: _constants2.METHODS.TRIGGER_REGISTRATION
1285
+ };
1286
+ _Logger.default.info(_constants.METHOD_START_MESSAGE, loggerContext);
1287
+ _context21.next = 1;
1173
1288
  return this.resumeFailover();
1174
1289
  case 1:
1175
- if (!_context20.sent) {
1176
- _context20.next = 2;
1290
+ if (!_context21.sent) {
1291
+ _context21.next = 2;
1177
1292
  break;
1178
1293
  }
1179
- return _context20.abrupt("return");
1294
+ _Logger.default.info('Registration trigger handled by resumeFailover path', loggerContext);
1295
+ return _context21.abrupt("return");
1180
1296
  case 2:
1181
1297
  if (!(this.primaryMobiusUris.length > 0)) {
1182
- _context20.next = 4;
1298
+ _context21.next = 5;
1183
1299
  break;
1184
1300
  }
1185
- _context20.next = 3;
1301
+ _context21.next = 3;
1186
1302
  return this.attemptRegistrationWithServers(_constants2.REGISTRATION_UTIL, this.primaryMobiusUris);
1187
1303
  case 3:
1188
- abort = _context20.sent;
1304
+ abort = _context21.sent;
1189
1305
  if (!(!this.isDeviceRegistered() && !abort)) {
1190
- _context20.next = 4;
1306
+ _context21.next = 4;
1191
1307
  break;
1192
1308
  }
1193
- _context20.next = 4;
1309
+ _context21.next = 4;
1194
1310
  return this.startFailoverTimer();
1195
1311
  case 4:
1312
+ _Logger.default.log("triggerRegistration completed - deviceRegistered: ".concat(this.isDeviceRegistered(), ", abort: ").concat(abort), loggerContext);
1313
+ _context21.next = 6;
1314
+ break;
1315
+ case 5:
1316
+ _Logger.default.warn('triggerRegistration skipped: no primary Mobius URIs available', loggerContext);
1317
+ case 6:
1196
1318
  case "end":
1197
- return _context20.stop();
1319
+ return _context21.stop();
1198
1320
  }
1199
- }, _callee20, this);
1321
+ }, _callee21, this);
1200
1322
  }));
1201
1323
  function triggerRegistration() {
1202
1324
  return _triggerRegistration.apply(this, arguments);
@@ -1215,84 +1337,94 @@ var Registration = exports.Registration = /*#__PURE__*/function () {
1215
1337
  }, {
1216
1338
  key: "attemptRegistrationWithServers",
1217
1339
  value: (function () {
1218
- var _attemptRegistrationWithServers = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee21(caller) {
1340
+ var _attemptRegistrationWithServers = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee22(caller) {
1219
1341
  var _this8 = this;
1220
1342
  var servers,
1343
+ loggerContext,
1221
1344
  abort,
1345
+ connectedWebSocketUrl,
1222
1346
  _iterator2,
1223
1347
  _step2,
1224
1348
  _loop,
1225
1349
  _ret,
1226
- _args22 = arguments,
1227
- _t12;
1228
- return _regenerator.default.wrap(function (_context22) {
1229
- while (1) switch (_context22.prev = _context22.next) {
1350
+ _args23 = arguments,
1351
+ _t6;
1352
+ return _regenerator.default.wrap(function (_context23) {
1353
+ while (1) switch (_context23.prev = _context23.next) {
1230
1354
  case 0:
1231
- servers = _args22.length > 1 && _args22[1] !== undefined ? _args22[1] : this.primaryMobiusUris;
1355
+ servers = _args23.length > 1 && _args23[1] !== undefined ? _args23[1] : this.primaryMobiusUris;
1356
+ loggerContext = {
1357
+ file: _constants2.REGISTRATION_FILE,
1358
+ method: _constants2.REGISTER_UTIL
1359
+ };
1232
1360
  abort = false;
1233
1361
  this.retryAfter = undefined;
1234
1362
  if (!this.failoverImmediately) {
1235
- _context22.next = 1;
1363
+ _context23.next = 1;
1236
1364
  break;
1237
1365
  }
1238
- return _context22.abrupt("return", abort);
1366
+ return _context23.abrupt("return", abort);
1239
1367
  case 1:
1240
1368
  if (!this.isDeviceRegistered()) {
1241
- _context22.next = 2;
1369
+ _context23.next = 2;
1242
1370
  break;
1243
1371
  }
1244
- _Logger.default.info("[".concat(caller, "] : Device already registered with : ").concat(this.activeMobiusUrl), {
1245
- file: _constants2.REGISTRATION_FILE,
1246
- method: _constants2.REGISTER_UTIL
1247
- });
1248
- return _context22.abrupt("return", abort);
1372
+ _Logger.default.info("[".concat(caller, "] : Device already registered with : ").concat(this.activeMobiusUrl), loggerContext);
1373
+ return _context23.abrupt("return", abort);
1249
1374
  case 2:
1250
1375
  _iterator2 = _createForOfIteratorHelper(servers);
1251
- _context22.prev = 3;
1376
+ _context23.prev = 3;
1252
1377
  _loop = /*#__PURE__*/_regenerator.default.mark(function _loop() {
1253
- var _this8$backupMobiusUr;
1254
- var url, serverType, _this8$deviceInfo$dev, _resp$headers, _resp$headers$trackin, _resp$headers2, _this8$deviceInfo$dev2, resp, body, _t11;
1255
- return _regenerator.default.wrap(function (_context21) {
1256
- while (1) switch (_context21.prev = _context21.next) {
1378
+ var url, serverType, _this8$deviceInfo$dev, _resp$headers, _resp$headers$trackin, _resp$headers2, _this8$deviceInfo$dev2, wssNormalizedUrl, resp, body, _yield$handleRegistra, finalError, shouldDisconnect, _t5;
1379
+ return _regenerator.default.wrap(function (_context22) {
1380
+ while (1) switch (_context22.prev = _context22.next) {
1257
1381
  case 0:
1258
1382
  url = _step2.value;
1259
- serverType = _this8.primaryMobiusUris.includes(url) && 'PRIMARY' || ((_this8$backupMobiusUr = _this8.backupMobiusUris) === null || _this8$backupMobiusUr === void 0 ? void 0 : _this8$backupMobiusUr.includes(url)) && 'BACKUP' || 'UNKNOWN';
1260
- _context21.prev = 1;
1383
+ serverType = _this8.getServerType(url);
1384
+ _context22.prev = 1;
1261
1385
  abort = false;
1262
1386
  _this8.registrationStatus = _types2.RegistrationStatus.INACTIVE;
1263
1387
  _this8.lineEmitter(_types3.LINE_EVENTS.CONNECTING);
1264
- _Logger.default.info("[".concat(caller, "] : Mobius url to contact: ").concat(url), {
1265
- file: _constants2.REGISTRATION_FILE,
1266
- method: _constants2.REGISTER_UTIL
1267
- });
1388
+ _Logger.default.info("[".concat(caller, "] : Mobius url to contact: ").concat(url), loggerContext);
1389
+ if (!_this8.apiRequest.isSocketEnabled()) {
1390
+ _context22.next = 3;
1391
+ break;
1392
+ }
1393
+ wssNormalizedUrl = url.endsWith('/') ? url.slice(0, -1) : url;
1394
+ _Logger.default.info("[".concat(caller, "] : Connecting to Mobius WebSocket - serverType: ").concat(serverType, ", wssUrl: ").concat(wssNormalizedUrl), loggerContext);
1395
+
1268
1396
  // eslint-disable-next-line no-await-in-loop
1269
- _context21.next = 2;
1270
- return _this8.postRegistration(url);
1397
+ _context22.next = 2;
1398
+ return _this8.apiRequest.connectToMobiusSocket(wssNormalizedUrl);
1271
1399
  case 2:
1272
- resp = _context21.sent;
1400
+ connectedWebSocketUrl = _context22.sent;
1401
+ connectedWebSocketUrl = connectedWebSocketUrl ? "".concat(connectedWebSocketUrl, "/") : undefined;
1402
+ _Logger.default.log("[".concat(caller, "] : Mobius WebSocket connected - serverType: ").concat(serverType, ", connectedWebSocketUrl: ").concat(connectedWebSocketUrl), loggerContext);
1403
+ case 3:
1404
+ _context22.next = 4;
1405
+ return _this8.postRegistration(url);
1406
+ case 4:
1407
+ resp = _context22.sent;
1273
1408
  _this8.clearFailoverState();
1274
1409
  _this8.deviceInfo = resp.body;
1275
1410
  _this8.registrationStatus = _types2.RegistrationStatus.ACTIVE;
1276
- _this8.setActiveMobiusUrl(url);
1411
+ _this8.setActiveMobiusUrl(connectedWebSocketUrl || url);
1277
1412
  _this8.lineEmitter(_types3.LINE_EVENTS.REGISTERED, resp.body);
1278
- _Logger.default.log("Registration successful for deviceId: ".concat((_this8$deviceInfo$dev = _this8.deviceInfo.device) === null || _this8$deviceInfo$dev === void 0 ? void 0 : _this8$deviceInfo$dev.deviceId, " userId: ").concat(_this8.userId, " responseTrackingId: ").concat((_resp$headers = resp.headers) === null || _resp$headers === void 0 ? void 0 : _resp$headers.trackingid), {
1279
- file: _constants2.REGISTRATION_FILE,
1280
- method: _constants2.METHODS.REGISTER
1281
- });
1413
+ _Logger.default.log("Registration successful for deviceId: ".concat((_this8$deviceInfo$dev = _this8.deviceInfo.device) === null || _this8$deviceInfo$dev === void 0 ? void 0 : _this8$deviceInfo$dev.deviceId, " userId: ").concat(_this8.userId, " responseTrackingId: ").concat((_resp$headers = resp.headers) === null || _resp$headers === void 0 ? void 0 : _resp$headers.trackingid), loggerContext);
1282
1414
  _this8.setIntervalValues(_this8.deviceInfo);
1283
1415
  _this8.metricManager.setDeviceInfo(_this8.deviceInfo);
1284
1416
  _this8.metricManager.submitRegistrationMetric(_types.METRIC_EVENT.REGISTRATION, _types.REG_ACTION.REGISTER, _types.METRIC_TYPE.BEHAVIORAL, caller, serverType, (_resp$headers$trackin = (_resp$headers2 = resp.headers) === null || _resp$headers2 === void 0 ? void 0 : _resp$headers2.trackingid) !== null && _resp$headers$trackin !== void 0 ? _resp$headers$trackin : '', undefined, undefined);
1285
1417
  _this8.startKeepaliveTimer((_this8$deviceInfo$dev2 = _this8.deviceInfo.device) === null || _this8$deviceInfo$dev2 === void 0 ? void 0 : _this8$deviceInfo$dev2.uri, _this8.deviceInfo.keepaliveInterval, serverType);
1286
1418
  _this8.initiateFailback();
1287
- return _context21.abrupt("return", 0);
1288
- case 3:
1289
- _context21.prev = 3;
1290
- _t11 = _context21["catch"](1);
1291
- body = _t11; // eslint-disable-next-line no-await-in-loop, @typescript-eslint/no-unused-vars
1292
- _context21.next = 4;
1293
- return (0, _common.handleRegistrationErrors)(body, function (clientError, finalError) {
1419
+ return _context22.abrupt("return", 0);
1420
+ case 5:
1421
+ _context22.prev = 5;
1422
+ _t5 = _context22["catch"](1);
1423
+ body = _t5; // eslint-disable-next-line no-await-in-loop, @typescript-eslint/no-unused-vars
1424
+ _context22.next = 6;
1425
+ return (0, _common.handleRegistrationErrors)(body, function (clientError, isFinalError) {
1294
1426
  var _body$headers$trackin, _body$headers;
1295
- if (finalError) {
1427
+ if (isFinalError) {
1296
1428
  _this8.lineEmitter(_types3.LINE_EVENTS.ERROR, undefined, clientError);
1297
1429
  } else {
1298
1430
  _this8.lineEmitter(_types3.LINE_EVENTS.UNREGISTERED);
@@ -1303,72 +1435,88 @@ var Registration = exports.Registration = /*#__PURE__*/function () {
1303
1435
  file: _constants2.REGISTRATION_FILE
1304
1436
  }, function (retryAfter, retryCaller) {
1305
1437
  return _this8.handle429Retry(retryAfter, retryCaller);
1306
- }, _this8.restoreRegistrationCallBack());
1307
- case 4:
1308
- abort = _context21.sent;
1438
+ }, _this8.restoreRegistrationCallBack(), servers.length);
1439
+ case 6:
1440
+ _yield$handleRegistra = _context22.sent;
1441
+ finalError = _yield$handleRegistra.finalError;
1442
+ shouldDisconnect = _yield$handleRegistra.shouldDisconnect;
1443
+ abort = finalError;
1309
1444
  if (!(_this8.registrationStatus === _types2.RegistrationStatus.ACTIVE)) {
1310
- _context21.next = 5;
1445
+ _context22.next = 7;
1311
1446
  break;
1312
1447
  }
1313
- _Logger.default.info("[".concat(caller, "] : Device is already restored, active mobius url: ").concat(_this8.activeMobiusUrl), {
1314
- file: _constants2.REGISTRATION_FILE,
1315
- method: _this8.attemptRegistrationWithServers.name
1448
+ _Logger.default.info("[".concat(caller, "] : Device is already restored, active mobius url: ").concat(_this8.activeMobiusUrl), loggerContext);
1449
+ return _context22.abrupt("return", 0);
1450
+ case 7:
1451
+ if (!(shouldDisconnect && _this8.apiRequest.isSocketEnabled())) {
1452
+ _context22.next = 9;
1453
+ break;
1454
+ }
1455
+ connectedWebSocketUrl = undefined;
1456
+ _Logger.default.info("[".concat(caller, "] : Tearing down Mobius WebSocket after registration error - serverType: ").concat(serverType), loggerContext);
1457
+
1458
+ // eslint-disable-next-line no-await-in-loop
1459
+ _context22.next = 8;
1460
+ return _this8.apiRequest.disconnectFromMobiusSocket({
1461
+ code: 3050,
1462
+ reason: 'done (permanent)'
1316
1463
  });
1317
- return _context21.abrupt("return", 0);
1318
- case 5:
1464
+ case 8:
1465
+ _Logger.default.log("[".concat(caller, "] : Mobius WebSocket disconnect complete after registration error - serverType: ").concat(serverType), loggerContext);
1466
+ case 9:
1319
1467
  if (!abort) {
1320
- _context21.next = 7;
1468
+ _context22.next = 11;
1321
1469
  break;
1322
1470
  }
1323
1471
  _this8.setStatus(_types2.RegistrationStatus.INACTIVE);
1324
1472
  // eslint-disable-next-line no-await-in-loop
1325
- _context21.next = 6;
1473
+ _context22.next = 10;
1326
1474
  return (0, _common.uploadLogs)();
1327
- case 6:
1328
- return _context21.abrupt("return", 0);
1329
- case 7:
1475
+ case 10:
1476
+ return _context22.abrupt("return", 0);
1477
+ case 11:
1330
1478
  case "end":
1331
- return _context21.stop();
1479
+ return _context22.stop();
1332
1480
  }
1333
- }, _loop, null, [[1, 3]]);
1481
+ }, _loop, null, [[1, 5]]);
1334
1482
  });
1335
1483
  _iterator2.s();
1336
1484
  case 4:
1337
1485
  if ((_step2 = _iterator2.n()).done) {
1338
- _context22.next = 7;
1486
+ _context23.next = 7;
1339
1487
  break;
1340
1488
  }
1341
- return _context22.delegateYield(_loop(), "t0", 5);
1489
+ return _context23.delegateYield(_loop(), "t0", 5);
1342
1490
  case 5:
1343
- _ret = _context22.t0;
1491
+ _ret = _context23.t0;
1344
1492
  if (!(_ret === 0)) {
1345
- _context22.next = 6;
1493
+ _context23.next = 6;
1346
1494
  break;
1347
1495
  }
1348
- return _context22.abrupt("continue", 7);
1496
+ return _context23.abrupt("continue", 7);
1349
1497
  case 6:
1350
- _context22.next = 4;
1498
+ _context23.next = 4;
1351
1499
  break;
1352
1500
  case 7:
1353
- _context22.next = 9;
1501
+ _context23.next = 9;
1354
1502
  break;
1355
1503
  case 8:
1356
- _context22.prev = 8;
1357
- _t12 = _context22["catch"](3);
1358
- _iterator2.e(_t12);
1504
+ _context23.prev = 8;
1505
+ _t6 = _context23["catch"](3);
1506
+ _iterator2.e(_t6);
1359
1507
  case 9:
1360
- _context22.prev = 9;
1508
+ _context23.prev = 9;
1361
1509
  _iterator2.f();
1362
- return _context22.finish(9);
1510
+ return _context23.finish(9);
1363
1511
  case 10:
1364
- return _context22.abrupt("return", abort);
1512
+ return _context23.abrupt("return", abort);
1365
1513
  case 11:
1366
1514
  case "end":
1367
- return _context22.stop();
1515
+ return _context23.stop();
1368
1516
  }
1369
- }, _callee21, this, [[3, 8, 9, 10]]);
1517
+ }, _callee22, this, [[3, 8, 9, 10]]);
1370
1518
  }));
1371
- function attemptRegistrationWithServers(_x11) {
1519
+ function attemptRegistrationWithServers(_x13) {
1372
1520
  return _attemptRegistrationWithServers.apply(this, arguments);
1373
1521
  }
1374
1522
  return attemptRegistrationWithServers;
@@ -1381,132 +1529,156 @@ var Registration = exports.Registration = /*#__PURE__*/function () {
1381
1529
  }, {
1382
1530
  key: "startKeepaliveTimer",
1383
1531
  value: (function () {
1384
- var _startKeepaliveTimer = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee24(url, interval, serverType) {
1532
+ var _startKeepaliveTimer = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee25(url, interval, serverType) {
1385
1533
  var _this9 = this;
1386
1534
  var RETRY_COUNT_THRESHOLD;
1387
- return _regenerator.default.wrap(function (_context25) {
1388
- while (1) switch (_context25.prev = _context25.next) {
1535
+ return _regenerator.default.wrap(function (_context26) {
1536
+ while (1) switch (_context26.prev = _context26.next) {
1389
1537
  case 0:
1390
1538
  this.clearKeepaliveTimer();
1391
1539
  RETRY_COUNT_THRESHOLD = this.isCCFlow ? 4 : 5;
1392
- _context25.next = 1;
1393
- return this.mutex.runExclusive(/*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee23() {
1394
- var accessToken, blob, blobUrl;
1395
- return _regenerator.default.wrap(function (_context24) {
1396
- while (1) switch (_context24.prev = _context24.next) {
1540
+ _context26.next = 1;
1541
+ return this.mutex.runExclusive(/*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee24() {
1542
+ var blob, blobUrl;
1543
+ return _regenerator.default.wrap(function (_context25) {
1544
+ while (1) switch (_context25.prev = _context25.next) {
1397
1545
  case 0:
1398
- if (!_this9.isDeviceRegistered()) {
1399
- _context24.next = 2;
1400
- break;
1401
- }
1402
- _context24.next = 1;
1403
- return _this9.webex.credentials.getUserToken();
1404
- case 1:
1405
- accessToken = _context24.sent;
1406
- if (!_this9.webWorker) {
1407
- blob = new Blob([_webWorkerStr.default], {
1408
- type: 'application/javascript'
1409
- });
1410
- blobUrl = URL.createObjectURL(blob);
1411
- _this9.webWorker = new Worker(blobUrl);
1412
- URL.revokeObjectURL(blobUrl);
1413
- _this9.webWorker.postMessage({
1414
- type: _types2.WorkerMessageType.START_KEEPALIVE,
1415
- accessToken: String(accessToken),
1416
- deviceUrl: String(_this9.webex.internal.device.url),
1417
- interval: interval,
1418
- retryCountThreshold: RETRY_COUNT_THRESHOLD,
1419
- url: url
1420
- });
1421
- _this9.webWorker.onmessage = /*#__PURE__*/function () {
1422
- var _ref11 = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee22(event) {
1423
- var logContext, error, abort;
1424
- return _regenerator.default.wrap(function (_context23) {
1425
- while (1) switch (_context23.prev = _context23.next) {
1426
- case 0:
1427
- logContext = {
1428
- file: _constants2.REGISTRATION_FILE,
1429
- method: _constants2.KEEPALIVE_UTIL
1430
- };
1431
- if (event.data.type === _types2.WorkerMessageType.KEEPALIVE_SUCCESS) {
1432
- _Logger.default.info("Sent Keepalive, status: ".concat(event.data.statusCode), logContext);
1433
- _this9.lineEmitter(_types3.LINE_EVENTS.RECONNECTED);
1434
- }
1435
- if (!(event.data.type === _types2.WorkerMessageType.KEEPALIVE_FAILURE)) {
1436
- _context23.next = 7;
1546
+ if (_this9.isDeviceRegistered()) {
1547
+ if (!_this9.webWorker) {
1548
+ blob = new Blob([_webWorkerStr.default], {
1549
+ type: 'application/javascript'
1550
+ });
1551
+ blobUrl = URL.createObjectURL(blob);
1552
+ _this9.webWorker = new Worker(blobUrl);
1553
+ URL.revokeObjectURL(blobUrl);
1554
+ _this9.webWorker.postMessage({
1555
+ type: _types2.WorkerMessageType.START_KEEPALIVE,
1556
+ interval: interval,
1557
+ retryCountThreshold: RETRY_COUNT_THRESHOLD
1558
+ });
1559
+ _this9.webWorker.onmessage = /*#__PURE__*/function () {
1560
+ var _ref11 = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee23(event) {
1561
+ var logContext, _this9$webWorker, res, _err$headers, _this9$webWorker2, error, _error, _yield$handleRegistra2, abort, _t7;
1562
+ return _regenerator.default.wrap(function (_context24) {
1563
+ while (1) switch (_context24.prev = _context24.next) {
1564
+ case 0:
1565
+ logContext = {
1566
+ file: _constants2.REGISTRATION_FILE,
1567
+ method: _constants2.KEEPALIVE_UTIL
1568
+ };
1569
+ if (!(event.data.type === _types2.WorkerMessageType.SEND_KEEPALIVE)) {
1570
+ _context24.next = 4;
1571
+ break;
1572
+ }
1573
+ _context24.prev = 1;
1574
+ _context24.next = 2;
1575
+ return _this9.postKeepAlive(String(_this9.webex.internal.device.url), url);
1576
+ case 2:
1577
+ res = _context24.sent;
1578
+ (_this9$webWorker = _this9.webWorker) === null || _this9$webWorker === void 0 ? void 0 : _this9$webWorker.postMessage({
1579
+ type: _types2.WorkerMessageType.KEEPALIVE_RESULT,
1580
+ statusCode: res.statusCode
1581
+ });
1582
+ _context24.next = 4;
1437
1583
  break;
1438
- }
1439
- error = event.data.err;
1440
- _Logger.default.warn("Keep-alive missed ".concat(event.data.keepAliveRetryCount, " times. Status -> ").concat(error.statusCode, " "), logContext);
1441
- _context23.next = 1;
1442
- return (0, _common.handleRegistrationErrors)(error, function (clientError, finalError) {
1443
- var _error$headers$tracki, _error$headers;
1444
- if (finalError) {
1445
- _this9.lineEmitter(_types3.LINE_EVENTS.ERROR, undefined, clientError);
1584
+ case 3:
1585
+ _context24.prev = 3;
1586
+ _t7 = _context24["catch"](1);
1587
+ error = {
1588
+ headers: {
1589
+ trackingid: (_err$headers = _t7.headers) === null || _err$headers === void 0 ? void 0 : _err$headers.trackingid,
1590
+ 'retry-after': _t7.headers['retry-after']
1591
+ },
1592
+ statusCode: _t7.statusCode,
1593
+ statusText: _t7.statusText,
1594
+ type: _t7.type
1595
+ };
1596
+ (_this9$webWorker2 = _this9.webWorker) === null || _this9$webWorker2 === void 0 ? void 0 : _this9$webWorker2.postMessage({
1597
+ type: _types2.WorkerMessageType.KEEPALIVE_RESULT,
1598
+ err: error
1599
+ });
1600
+ case 4:
1601
+ if (event.data.type === _types2.WorkerMessageType.KEEPALIVE_SUCCESS) {
1602
+ _Logger.default.info("Sent Keepalive, status: ".concat(event.data.statusCode), logContext);
1603
+ _this9.lineEmitter(_types3.LINE_EVENTS.RECONNECTED);
1604
+ }
1605
+ if (!(event.data.type === _types2.WorkerMessageType.KEEPALIVE_FAILURE)) {
1606
+ _context24.next = 11;
1607
+ break;
1608
+ }
1609
+ _error = event.data.err;
1610
+ _Logger.default.warn("Keep-alive missed ".concat(event.data.keepAliveRetryCount, " times. Status -> ").concat(_error.statusCode, " "), logContext);
1611
+ _context24.next = 5;
1612
+ return (0, _common.handleRegistrationErrors)(_error, function (clientError, finalError) {
1613
+ var _error$headers$tracki, _error$headers;
1614
+ if (finalError) {
1615
+ _this9.lineEmitter(_types3.LINE_EVENTS.ERROR, undefined, clientError);
1616
+ }
1617
+ _this9.metricManager.submitRegistrationMetric(_types.METRIC_EVENT.KEEPALIVE_ERROR, _types.REG_ACTION.KEEPALIVE_FAILURE, _types.METRIC_TYPE.BEHAVIORAL, _constants2.KEEPALIVE_UTIL, serverType, (_error$headers$tracki = (_error$headers = _error.headers) === null || _error$headers === void 0 ? void 0 : _error$headers.trackingid) !== null && _error$headers$tracki !== void 0 ? _error$headers$tracki : '', event.data.keepAliveRetryCount, clientError);
1618
+ }, {
1619
+ method: _constants2.KEEPALIVE_UTIL,
1620
+ file: _constants2.REGISTRATION_FILE
1621
+ }, function (retryAfter, retryCaller) {
1622
+ return _this9.handle429Retry(retryAfter, retryCaller);
1623
+ });
1624
+ case 5:
1625
+ _yield$handleRegistra2 = _context24.sent;
1626
+ abort = _yield$handleRegistra2.finalError;
1627
+ if (!(abort || event.data.keepAliveRetryCount >= RETRY_COUNT_THRESHOLD)) {
1628
+ _context24.next = 10;
1629
+ break;
1630
+ }
1631
+ _this9.failoverImmediately = _this9.isCCFlow;
1632
+ _this9.setStatus(_types2.RegistrationStatus.INACTIVE);
1633
+ _this9.clearKeepaliveTimer();
1634
+ _this9.clearFailbackTimer();
1635
+ _this9.lineEmitter(_types3.LINE_EVENTS.UNREGISTERED);
1636
+ _context24.next = 6;
1637
+ return (0, _common.uploadLogs)();
1638
+ case 6:
1639
+ if (abort) {
1640
+ _context24.next = 8;
1641
+ break;
1446
1642
  }
1447
- _this9.metricManager.submitRegistrationMetric(_types.METRIC_EVENT.KEEPALIVE_ERROR, _types.REG_ACTION.KEEPALIVE_FAILURE, _types.METRIC_TYPE.BEHAVIORAL, _constants2.KEEPALIVE_UTIL, serverType, (_error$headers$tracki = (_error$headers = error.headers) === null || _error$headers === void 0 ? void 0 : _error$headers.trackingid) !== null && _error$headers$tracki !== void 0 ? _error$headers$tracki : '', event.data.keepAliveRetryCount, clientError);
1448
- }, {
1449
- method: _constants2.KEEPALIVE_UTIL,
1450
- file: _constants2.REGISTRATION_FILE
1451
- }, function (retryAfter, retryCaller) {
1452
- return _this9.handle429Retry(retryAfter, retryCaller);
1453
- });
1454
- case 1:
1455
- abort = _context23.sent;
1456
- if (!(abort || event.data.keepAliveRetryCount >= RETRY_COUNT_THRESHOLD)) {
1457
- _context23.next = 6;
1643
+ _context24.next = 7;
1644
+ return _this9.reconnectOnFailure(_constants2.RECONNECT_ON_FAILURE_UTIL);
1645
+ case 7:
1646
+ _context24.next = 9;
1458
1647
  break;
1459
- }
1460
- _this9.failoverImmediately = _this9.isCCFlow;
1461
- _this9.setStatus(_types2.RegistrationStatus.INACTIVE);
1462
- _this9.clearKeepaliveTimer();
1463
- _this9.clearFailbackTimer();
1464
- _this9.lineEmitter(_types3.LINE_EVENTS.UNREGISTERED);
1465
- _context23.next = 2;
1466
- return (0, _common.uploadLogs)();
1467
- case 2:
1468
- if (abort) {
1469
- _context23.next = 4;
1648
+ case 8:
1649
+ if (_error.statusCode === 404) {
1650
+ _this9.handle404KeepaliveFailure(_constants2.KEEPALIVE_UTIL);
1651
+ }
1652
+ case 9:
1653
+ _context24.next = 11;
1470
1654
  break;
1471
- }
1472
- _context23.next = 3;
1473
- return _this9.reconnectOnFailure(_constants2.RECONNECT_ON_FAILURE_UTIL);
1474
- case 3:
1475
- _context23.next = 5;
1476
- break;
1477
- case 4:
1478
- if (error.statusCode === 404) {
1479
- _this9.handle404KeepaliveFailure(_constants2.KEEPALIVE_UTIL);
1480
- }
1481
- case 5:
1482
- _context23.next = 7;
1483
- break;
1484
- case 6:
1485
- _this9.lineEmitter(_types3.LINE_EVENTS.RECONNECTING);
1486
- case 7:
1487
- case "end":
1488
- return _context23.stop();
1489
- }
1490
- }, _callee22);
1491
- }));
1492
- return function (_x15) {
1493
- return _ref11.apply(this, arguments);
1494
- };
1495
- }();
1655
+ case 10:
1656
+ _this9.lineEmitter(_types3.LINE_EVENTS.RECONNECTING);
1657
+ case 11:
1658
+ case "end":
1659
+ return _context24.stop();
1660
+ }
1661
+ }, _callee23, null, [[1, 3]]);
1662
+ }));
1663
+ return function (_x17) {
1664
+ return _ref11.apply(this, arguments);
1665
+ };
1666
+ }();
1667
+ }
1496
1668
  }
1497
- case 2:
1669
+ case 1:
1498
1670
  case "end":
1499
- return _context24.stop();
1671
+ return _context25.stop();
1500
1672
  }
1501
- }, _callee23);
1673
+ }, _callee24);
1502
1674
  })));
1503
1675
  case 1:
1504
1676
  case "end":
1505
- return _context25.stop();
1677
+ return _context26.stop();
1506
1678
  }
1507
- }, _callee24, this);
1679
+ }, _callee25, this);
1508
1680
  }));
1509
- function startKeepaliveTimer(_x12, _x13, _x14) {
1681
+ function startKeepaliveTimer(_x14, _x15, _x16) {
1510
1682
  return _startKeepaliveTimer.apply(this, arguments);
1511
1683
  }
1512
1684
  return startKeepaliveTimer;
@@ -1534,37 +1706,36 @@ var Registration = exports.Registration = /*#__PURE__*/function () {
1534
1706
  }, {
1535
1707
  key: "deregister",
1536
1708
  value: function () {
1537
- var _deregister = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee25() {
1538
- var _this$deviceInfo$devi, _this$deviceInfo$devi2, _t13;
1539
- return _regenerator.default.wrap(function (_context26) {
1540
- while (1) switch (_context26.prev = _context26.next) {
1709
+ var _deregister = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee26() {
1710
+ var loggerContext, _this$deviceInfo$devi2, _this$deviceInfo$devi3, _t8;
1711
+ return _regenerator.default.wrap(function (_context27) {
1712
+ while (1) switch (_context27.prev = _context27.next) {
1541
1713
  case 0:
1542
- _context26.prev = 0;
1543
- _context26.next = 1;
1544
- return this.deleteRegistration(this.activeMobiusUrl, (_this$deviceInfo$devi = this.deviceInfo.device) === null || _this$deviceInfo$devi === void 0 ? void 0 : _this$deviceInfo$devi.deviceId, (_this$deviceInfo$devi2 = this.deviceInfo.device) === null || _this$deviceInfo$devi2 === void 0 ? void 0 : _this$deviceInfo$devi2.clientDeviceUri);
1545
- case 1:
1546
- _Logger.default.log('Registration successfully deregistered', {
1714
+ loggerContext = {
1547
1715
  file: _constants2.REGISTRATION_FILE,
1548
1716
  method: _constants2.METHODS.DEREGISTER
1549
- });
1550
- _context26.next = 3;
1551
- break;
1717
+ };
1718
+ _Logger.default.info(_constants.METHOD_START_MESSAGE, loggerContext);
1719
+ _context27.prev = 1;
1720
+ _context27.next = 2;
1721
+ return this.deleteRegistration(this.activeMobiusUrl, (_this$deviceInfo$devi2 = this.deviceInfo.device) === null || _this$deviceInfo$devi2 === void 0 ? void 0 : _this$deviceInfo$devi2.deviceId, (_this$deviceInfo$devi3 = this.deviceInfo.device) === null || _this$deviceInfo$devi3 === void 0 ? void 0 : _this$deviceInfo$devi3.clientDeviceUri);
1552
1722
  case 2:
1553
- _context26.prev = 2;
1554
- _t13 = _context26["catch"](0);
1555
- _Logger.default.warn("Delete failed with Mobius: ".concat((0, _stringify.default)(_t13)), {
1556
- file: _constants2.REGISTRATION_FILE,
1557
- method: _constants2.METHODS.DEREGISTER
1558
- });
1723
+ _Logger.default.log('Registration successfully deregistered', loggerContext);
1724
+ _context27.next = 4;
1725
+ break;
1559
1726
  case 3:
1727
+ _context27.prev = 3;
1728
+ _t8 = _context27["catch"](1);
1729
+ _Logger.default.warn("Delete failed with Mobius: ".concat((0, _stringify.default)(_t8)), loggerContext);
1730
+ case 4:
1560
1731
  this.clearKeepaliveTimer();
1561
1732
  this.setStatus(_types2.RegistrationStatus.INACTIVE);
1562
1733
  this.clearFailoverState();
1563
- case 4:
1734
+ case 5:
1564
1735
  case "end":
1565
- return _context26.stop();
1736
+ return _context27.stop();
1566
1737
  }
1567
- }, _callee25, this, [[0, 2]]);
1738
+ }, _callee26, this, [[1, 3]]);
1568
1739
  }));
1569
1740
  function deregister() {
1570
1741
  return _deregister.apply(this, arguments);
@@ -1609,6 +1780,9 @@ var Registration = exports.Registration = /*#__PURE__*/function () {
1609
1780
  };
1610
1781
  var stringToReplace = "".concat(_constants2.DEVICES_ENDPOINT_RESOURCE, "/").concat(restoreData.devices[0].deviceId);
1611
1782
  var uri = restoreData.devices[0].uri.replace(stringToReplace, '');
1783
+ if (this.apiRequest.isSocketEnabled()) {
1784
+ uri = uri.replace('https://', 'wss://');
1785
+ }
1612
1786
  this.setActiveMobiusUrl(uri);
1613
1787
  this.registrationStatus = _types2.RegistrationStatus.ACTIVE;
1614
1788
  return true;
@@ -1628,10 +1802,10 @@ var Registration = exports.Registration = /*#__PURE__*/function () {
1628
1802
  }, {
1629
1803
  key: "reconnectOnFailure",
1630
1804
  value: (function () {
1631
- var _reconnectOnFailure = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee26(caller) {
1805
+ var _reconnectOnFailure = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee27(caller) {
1632
1806
  var abort;
1633
- return _regenerator.default.wrap(function (_context27) {
1634
- while (1) switch (_context27.prev = _context27.next) {
1807
+ return _regenerator.default.wrap(function (_context28) {
1808
+ while (1) switch (_context28.prev = _context28.next) {
1635
1809
  case 0:
1636
1810
  _Logger.default.info(_constants.METHOD_START_MESSAGE, {
1637
1811
  method: _constants2.METHODS.RECONNECT_ON_FAILURE,
@@ -1639,25 +1813,25 @@ var Registration = exports.Registration = /*#__PURE__*/function () {
1639
1813
  });
1640
1814
  this.reconnectPending = false;
1641
1815
  if (this.isDeviceRegistered()) {
1642
- _context27.next = 4;
1816
+ _context28.next = 4;
1643
1817
  break;
1644
1818
  }
1645
1819
  if (!((0, _keys.default)(this.callManager.getActiveCalls()).length === 0)) {
1646
- _context27.next = 3;
1820
+ _context28.next = 3;
1647
1821
  break;
1648
1822
  }
1649
- _context27.next = 1;
1823
+ _context28.next = 1;
1650
1824
  return this.restorePreviousRegistration(caller);
1651
1825
  case 1:
1652
- abort = _context27.sent;
1826
+ abort = _context28.sent;
1653
1827
  if (!(!abort && !this.isDeviceRegistered())) {
1654
- _context27.next = 2;
1828
+ _context28.next = 2;
1655
1829
  break;
1656
1830
  }
1657
- _context27.next = 2;
1831
+ _context28.next = 2;
1658
1832
  return this.restartRegistration(caller);
1659
1833
  case 2:
1660
- _context27.next = 4;
1834
+ _context28.next = 4;
1661
1835
  break;
1662
1836
  case 3:
1663
1837
  this.reconnectPending = true;
@@ -1667,14 +1841,128 @@ var Registration = exports.Registration = /*#__PURE__*/function () {
1667
1841
  });
1668
1842
  case 4:
1669
1843
  case "end":
1670
- return _context27.stop();
1844
+ return _context28.stop();
1671
1845
  }
1672
- }, _callee26, this);
1846
+ }, _callee27, this);
1673
1847
  }));
1674
- function reconnectOnFailure(_x16) {
1848
+ function reconnectOnFailure(_x18) {
1675
1849
  return _reconnectOnFailure.apply(this, arguments);
1676
1850
  }
1677
1851
  return reconnectOnFailure;
1852
+ }()
1853
+ /**
1854
+ * Handles an async REGISTRATION_DOWN event emitted by Mobius. Ends the first
1855
+ * active call (if any) and runs registration-side cleanup.
1856
+ *
1857
+ * @param event - The Mobius async event payload (trackingId/eventId used for logs).
1858
+ */
1859
+ )
1860
+ }, {
1861
+ key: "handleRegistrationDownEvent",
1862
+ value: (function () {
1863
+ var _handleRegistrationDownEvent = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee28(event) {
1864
+ var _event$trackingId, _event$eventId;
1865
+ var loggerContext, _Object$values, _Object$values2, activeCall;
1866
+ return _regenerator.default.wrap(function (_context29) {
1867
+ while (1) switch (_context29.prev = _context29.next) {
1868
+ case 0:
1869
+ loggerContext = {
1870
+ file: _constants2.REGISTRATION_FILE,
1871
+ method: _constants2.METHODS.HANDLE_REGISTRATION_DOWN_EVENT
1872
+ };
1873
+ _Logger.default.info("Registration down received - trackingId: ".concat((_event$trackingId = event === null || event === void 0 ? void 0 : event.trackingId) !== null && _event$trackingId !== void 0 ? _event$trackingId : 'unknown', ", eventId: ").concat((_event$eventId = event === null || event === void 0 ? void 0 : event.eventId) !== null && _event$eventId !== void 0 ? _event$eventId : 'unknown'), loggerContext);
1874
+ _Object$values = (0, _values.default)(this.callManager.getActiveCalls()), _Object$values2 = (0, _slicedToArray2.default)(_Object$values, 1), activeCall = _Object$values2[0];
1875
+ activeCall === null || activeCall === void 0 ? void 0 : activeCall.end();
1876
+ _context29.next = 1;
1877
+ return this.performRegistrationDownCleanup(_constants2.METHODS.HANDLE_REGISTRATION_DOWN_EVENT);
1878
+ case 1:
1879
+ case "end":
1880
+ return _context29.stop();
1881
+ }
1882
+ }, _callee28, this);
1883
+ }));
1884
+ function handleRegistrationDownEvent(_x19) {
1885
+ return _handleRegistrationDownEvent.apply(this, arguments);
1886
+ }
1887
+ return handleRegistrationDownEvent;
1888
+ }()
1889
+ /**
1890
+ * Cleans up registration-side state after a Mobius registration-down event.
1891
+ *
1892
+ * Stops timers, resets transient flags, clears failover cache, sets status to
1893
+ * INACTIVE, tears down the Mobius WebSocket (when enabled), and finally emits
1894
+ * `LINE_EVENTS.UNREGISTERED` so the SDK consumer is notified.
1895
+ *
1896
+ * Runs under the shared mutex to avoid racing with other registration flows.
1897
+ *
1898
+ * @param caller - Identifier of the caller, used for logs.
1899
+ */
1900
+ )
1901
+ }, {
1902
+ key: "performRegistrationDownCleanup",
1903
+ value: (function () {
1904
+ var _performRegistrationDownCleanup = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee30(caller) {
1905
+ var _this0 = this;
1906
+ var loggerContext;
1907
+ return _regenerator.default.wrap(function (_context31) {
1908
+ while (1) switch (_context31.prev = _context31.next) {
1909
+ case 0:
1910
+ loggerContext = {
1911
+ file: _constants2.REGISTRATION_FILE,
1912
+ method: _constants2.METHODS.HANDLE_REGISTRATION_DOWN_EVENT
1913
+ };
1914
+ _Logger.default.info("[".concat(caller, "] : Running registration-down cleanup"), loggerContext);
1915
+ _context31.next = 1;
1916
+ return this.mutex.runExclusive(/*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee29() {
1917
+ var _t9;
1918
+ return _regenerator.default.wrap(function (_context30) {
1919
+ while (1) switch (_context30.prev = _context30.next) {
1920
+ case 0:
1921
+ _this0.clearFailbackTimer();
1922
+ _this0.clearKeepaliveTimer();
1923
+ _this0.reconnectPending = false;
1924
+ _this0.scheduled429Retry = false;
1925
+ _this0.failoverImmediately = false;
1926
+ _this0.retryAfter = undefined;
1927
+ _this0.registerRetry = false;
1928
+ _this0.clearFailoverState();
1929
+ _this0.setStatus(_types2.RegistrationStatus.INACTIVE);
1930
+ if (!_this0.apiRequest.isSocketEnabled()) {
1931
+ _context30.next = 4;
1932
+ break;
1933
+ }
1934
+ _context30.prev = 1;
1935
+ _context30.next = 2;
1936
+ return _this0.apiRequest.disconnectFromMobiusSocket({
1937
+ code: 3050,
1938
+ reason: 'done (permanent)'
1939
+ });
1940
+ case 2:
1941
+ _Logger.default.log('Mobius socket disconnect complete after registration-down', loggerContext);
1942
+ _context30.next = 4;
1943
+ break;
1944
+ case 3:
1945
+ _context30.prev = 3;
1946
+ _t9 = _context30["catch"](1);
1947
+ _Logger.default.warn("Mobius socket disconnect failed after registration-down: ".concat(String(_t9)), loggerContext);
1948
+ case 4:
1949
+ _this0.lineEmitter(_types3.LINE_EVENTS.UNREGISTERED);
1950
+ case 5:
1951
+ case "end":
1952
+ return _context30.stop();
1953
+ }
1954
+ }, _callee29, null, [[1, 3]]);
1955
+ })));
1956
+ case 1:
1957
+ case "end":
1958
+ return _context31.stop();
1959
+ }
1960
+ }, _callee30, this);
1961
+ }));
1962
+ function performRegistrationDownCleanup(_x20) {
1963
+ return _performRegistrationDownCleanup.apply(this, arguments);
1964
+ }
1965
+ return performRegistrationDownCleanup;
1678
1966
  }())
1679
1967
  }]);
1680
1968
  }();