@webex/calling 3.12.0-task-refactor.1 → 3.12.0-webex-services-ready.1

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