@webex/calling 3.8.1 → 3.9.0-multi-llms.2

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 (193) hide show
  1. package/dist/CallHistory/CallHistory.js +51 -46
  2. package/dist/CallHistory/CallHistory.js.map +1 -1
  3. package/dist/CallHistory/CallHistory.test.js +146 -147
  4. package/dist/CallHistory/CallHistory.test.js.map +1 -1
  5. package/dist/CallHistory/callHistoryFixtures.js.map +1 -1
  6. package/dist/CallHistory/constants.js.map +1 -1
  7. package/dist/CallHistory/types.js.map +1 -1
  8. package/dist/CallSettings/CallSettings.js +8 -8
  9. package/dist/CallSettings/CallSettings.js.map +1 -1
  10. package/dist/CallSettings/CallSettings.test.js +1 -1
  11. package/dist/CallSettings/CallSettings.test.js.map +1 -1
  12. package/dist/CallSettings/UcmBackendConnector.js +12 -11
  13. package/dist/CallSettings/UcmBackendConnector.js.map +1 -1
  14. package/dist/CallSettings/UcmBackendConnector.test.js +9 -10
  15. package/dist/CallSettings/UcmBackendConnector.test.js.map +1 -1
  16. package/dist/CallSettings/WxCallBackendConnector.js +68 -61
  17. package/dist/CallSettings/WxCallBackendConnector.js.map +1 -1
  18. package/dist/CallSettings/WxCallBackendConnector.test.js +168 -102
  19. package/dist/CallSettings/WxCallBackendConnector.test.js.map +1 -1
  20. package/dist/CallSettings/constants.js.map +1 -1
  21. package/dist/CallSettings/testFixtures.js.map +1 -1
  22. package/dist/CallSettings/types.js.map +1 -1
  23. package/dist/CallingClient/CallingClient.js +530 -219
  24. package/dist/CallingClient/CallingClient.js.map +1 -1
  25. package/dist/CallingClient/CallingClient.test.js +500 -291
  26. package/dist/CallingClient/CallingClient.test.js.map +1 -1
  27. package/dist/CallingClient/callRecordFixtures.js.map +1 -1
  28. package/dist/CallingClient/calling/CallerId/index.js +2 -2
  29. package/dist/CallingClient/calling/CallerId/index.js.map +1 -1
  30. package/dist/CallingClient/calling/CallerId/index.test.js +8 -7
  31. package/dist/CallingClient/calling/CallerId/index.test.js.map +1 -1
  32. package/dist/CallingClient/calling/CallerId/types.js.map +1 -1
  33. package/dist/CallingClient/calling/call.js +369 -333
  34. package/dist/CallingClient/calling/call.js.map +1 -1
  35. package/dist/CallingClient/calling/call.test.js +411 -410
  36. package/dist/CallingClient/calling/call.test.js.map +1 -1
  37. package/dist/CallingClient/calling/callManager.js +3 -4
  38. package/dist/CallingClient/calling/callManager.js.map +1 -1
  39. package/dist/CallingClient/calling/callManager.test.js +67 -68
  40. package/dist/CallingClient/calling/callManager.test.js.map +1 -1
  41. package/dist/CallingClient/calling/index.js.map +1 -1
  42. package/dist/CallingClient/calling/types.js.map +1 -1
  43. package/dist/CallingClient/callingClientFixtures.js.map +1 -1
  44. package/dist/CallingClient/constants.js +11 -8
  45. package/dist/CallingClient/constants.js.map +1 -1
  46. package/dist/CallingClient/line/index.js +10 -11
  47. package/dist/CallingClient/line/index.js.map +1 -1
  48. package/dist/CallingClient/line/line.test.js +12 -17
  49. package/dist/CallingClient/line/line.test.js.map +1 -1
  50. package/dist/CallingClient/line/types.js.map +1 -1
  51. package/dist/CallingClient/registration/index.js.map +1 -1
  52. package/dist/CallingClient/registration/register.js +557 -442
  53. package/dist/CallingClient/registration/register.js.map +1 -1
  54. package/dist/CallingClient/registration/register.test.js +526 -395
  55. package/dist/CallingClient/registration/register.test.js.map +1 -1
  56. package/dist/CallingClient/registration/registerFixtures.js.map +1 -1
  57. package/dist/CallingClient/registration/types.js.map +1 -1
  58. package/dist/CallingClient/registration/webWorker.js +116 -0
  59. package/dist/CallingClient/registration/webWorker.js.map +1 -0
  60. package/dist/CallingClient/registration/webWorker.test.js +256 -0
  61. package/dist/CallingClient/registration/webWorker.test.js.map +1 -0
  62. package/dist/CallingClient/registration/webWorkerStr.js +15 -0
  63. package/dist/CallingClient/registration/webWorkerStr.js.map +1 -0
  64. package/dist/CallingClient/types.js.map +1 -1
  65. package/dist/CallingClient/windowsChromiumIceWarmupUtils.js +142 -0
  66. package/dist/CallingClient/windowsChromiumIceWarmupUtils.js.map +1 -0
  67. package/dist/Contacts/ContactsClient.js +244 -238
  68. package/dist/Contacts/ContactsClient.js.map +1 -1
  69. package/dist/Contacts/ContactsClient.test.js +89 -90
  70. package/dist/Contacts/ContactsClient.test.js.map +1 -1
  71. package/dist/Contacts/constants.js +2 -2
  72. package/dist/Contacts/constants.js.map +1 -1
  73. package/dist/Contacts/contactFixtures.js.map +1 -1
  74. package/dist/Contacts/types.js.map +1 -1
  75. package/dist/Errors/catalog/CallError.js +2 -2
  76. package/dist/Errors/catalog/CallError.js.map +1 -1
  77. package/dist/Errors/catalog/CallingDeviceError.js +2 -2
  78. package/dist/Errors/catalog/CallingDeviceError.js.map +1 -1
  79. package/dist/Errors/catalog/ExtendedError.js +3 -3
  80. package/dist/Errors/catalog/ExtendedError.js.map +1 -1
  81. package/dist/Errors/catalog/LineError.js +2 -2
  82. package/dist/Errors/catalog/LineError.js.map +1 -1
  83. package/dist/Errors/index.js.map +1 -1
  84. package/dist/Errors/types.js +2 -0
  85. package/dist/Errors/types.js.map +1 -1
  86. package/dist/Events/impl/index.js +2 -2
  87. package/dist/Events/impl/index.js.map +1 -1
  88. package/dist/Events/types.js.map +1 -1
  89. package/dist/Logger/index.js.map +1 -1
  90. package/dist/Logger/index.test.js.map +1 -1
  91. package/dist/Logger/types.js.map +1 -1
  92. package/dist/Metrics/index.js +175 -86
  93. package/dist/Metrics/index.js.map +1 -1
  94. package/dist/Metrics/index.test.js +70 -4
  95. package/dist/Metrics/index.test.js.map +1 -1
  96. package/dist/Metrics/types.js +15 -1
  97. package/dist/Metrics/types.js.map +1 -1
  98. package/dist/SDKConnector/index.js +0 -1
  99. package/dist/SDKConnector/index.js.map +1 -1
  100. package/dist/SDKConnector/index.test.js.map +1 -1
  101. package/dist/SDKConnector/types.js.map +1 -1
  102. package/dist/SDKConnector/utils.js.map +1 -1
  103. package/dist/SDKConnector/utils.test.js.map +1 -1
  104. package/dist/Voicemail/BroadworksBackendConnector.js +42 -39
  105. package/dist/Voicemail/BroadworksBackendConnector.js.map +1 -1
  106. package/dist/Voicemail/BroadworksBackendConnector.test.js +119 -120
  107. package/dist/Voicemail/BroadworksBackendConnector.test.js.map +1 -1
  108. package/dist/Voicemail/UcmBackendConnector.js +54 -47
  109. package/dist/Voicemail/UcmBackendConnector.js.map +1 -1
  110. package/dist/Voicemail/UcmBackendConnector.test.js +73 -74
  111. package/dist/Voicemail/UcmBackendConnector.test.js.map +1 -1
  112. package/dist/Voicemail/Voicemail.js +12 -11
  113. package/dist/Voicemail/Voicemail.js.map +1 -1
  114. package/dist/Voicemail/Voicemail.test.js +2 -2
  115. package/dist/Voicemail/Voicemail.test.js.map +1 -1
  116. package/dist/Voicemail/WxCallBackendConnector.js +78 -70
  117. package/dist/Voicemail/WxCallBackendConnector.js.map +1 -1
  118. package/dist/Voicemail/WxCallBackendConnector.test.js +184 -185
  119. package/dist/Voicemail/WxCallBackendConnector.test.js.map +1 -1
  120. package/dist/Voicemail/constants.js.map +1 -1
  121. package/dist/Voicemail/types.js.map +1 -1
  122. package/dist/Voicemail/voicemailFixture.js.map +1 -1
  123. package/dist/api.js.map +1 -1
  124. package/dist/common/Utils.js +125 -99
  125. package/dist/common/Utils.js.map +1 -1
  126. package/dist/common/Utils.test.js +283 -143
  127. package/dist/common/Utils.test.js.map +1 -1
  128. package/dist/common/constants.js.map +1 -1
  129. package/dist/common/index.js.map +1 -1
  130. package/dist/common/testUtil.js +1 -1
  131. package/dist/common/testUtil.js.map +1 -1
  132. package/dist/common/types.js +8 -1
  133. package/dist/common/types.js.map +1 -1
  134. package/dist/index.js +5 -5
  135. package/dist/index.js.map +1 -1
  136. package/dist/module/CallHistory/CallHistory.js +4 -0
  137. package/dist/module/CallSettings/UcmBackendConnector.js +1 -0
  138. package/dist/module/CallSettings/WxCallBackendConnector.js +8 -1
  139. package/dist/module/CallingClient/CallingClient.js +199 -42
  140. package/dist/module/CallingClient/calling/call.js +79 -43
  141. package/dist/module/CallingClient/constants.js +10 -6
  142. package/dist/module/CallingClient/line/index.js +3 -3
  143. package/dist/module/CallingClient/registration/register.js +111 -72
  144. package/dist/module/CallingClient/registration/webWorker.js +60 -0
  145. package/dist/module/CallingClient/registration/webWorkerStr.js +93 -0
  146. package/dist/module/CallingClient/windowsChromiumIceWarmupUtils.js +59 -0
  147. package/dist/module/Contacts/ContactsClient.js +23 -17
  148. package/dist/module/Contacts/constants.js +1 -1
  149. package/dist/module/Errors/types.js +2 -0
  150. package/dist/module/Metrics/index.js +94 -33
  151. package/dist/module/Metrics/types.js +14 -0
  152. package/dist/module/Voicemail/BroadworksBackendConnector.js +3 -0
  153. package/dist/module/Voicemail/UcmBackendConnector.js +6 -0
  154. package/dist/module/Voicemail/WxCallBackendConnector.js +8 -0
  155. package/dist/module/common/Utils.js +37 -12
  156. package/dist/module/common/types.js +7 -0
  157. package/dist/types/CallHistory/CallHistory.d.ts.map +1 -1
  158. package/dist/types/CallSettings/UcmBackendConnector.d.ts.map +1 -1
  159. package/dist/types/CallSettings/WxCallBackendConnector.d.ts.map +1 -1
  160. package/dist/types/CallSettings/types.d.ts +1 -1
  161. package/dist/types/CallSettings/types.d.ts.map +1 -1
  162. package/dist/types/CallingClient/CallingClient.d.ts +12 -1
  163. package/dist/types/CallingClient/CallingClient.d.ts.map +1 -1
  164. package/dist/types/CallingClient/calling/call.d.ts.map +1 -1
  165. package/dist/types/CallingClient/calling/types.d.ts +2 -1
  166. package/dist/types/CallingClient/calling/types.d.ts.map +1 -1
  167. package/dist/types/CallingClient/constants.d.ts +10 -6
  168. package/dist/types/CallingClient/constants.d.ts.map +1 -1
  169. package/dist/types/CallingClient/line/index.d.ts.map +1 -1
  170. package/dist/types/CallingClient/registration/register.d.ts +2 -2
  171. package/dist/types/CallingClient/registration/register.d.ts.map +1 -1
  172. package/dist/types/CallingClient/registration/types.d.ts.map +1 -1
  173. package/dist/types/CallingClient/registration/webWorker.d.ts +3 -0
  174. package/dist/types/CallingClient/registration/webWorker.d.ts.map +1 -0
  175. package/dist/types/CallingClient/registration/webWorkerStr.d.ts +3 -0
  176. package/dist/types/CallingClient/registration/webWorkerStr.d.ts.map +1 -0
  177. package/dist/types/CallingClient/windowsChromiumIceWarmupUtils.d.ts +5 -0
  178. package/dist/types/CallingClient/windowsChromiumIceWarmupUtils.d.ts.map +1 -0
  179. package/dist/types/Contacts/ContactsClient.d.ts.map +1 -1
  180. package/dist/types/Contacts/constants.d.ts +1 -1
  181. package/dist/types/Contacts/constants.d.ts.map +1 -1
  182. package/dist/types/Errors/types.d.ts +2 -0
  183. package/dist/types/Errors/types.d.ts.map +1 -1
  184. package/dist/types/Metrics/index.d.ts.map +1 -1
  185. package/dist/types/Metrics/types.d.ts +20 -4
  186. package/dist/types/Metrics/types.d.ts.map +1 -1
  187. package/dist/types/Voicemail/BroadworksBackendConnector.d.ts.map +1 -1
  188. package/dist/types/Voicemail/UcmBackendConnector.d.ts.map +1 -1
  189. package/dist/types/Voicemail/WxCallBackendConnector.d.ts.map +1 -1
  190. package/dist/types/common/Utils.d.ts.map +1 -1
  191. package/dist/types/common/types.d.ts +13 -0
  192. package/dist/types/common/types.d.ts.map +1 -1
  193. package/package.json +10 -8
@@ -25,6 +25,7 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/he
25
25
  var _uuid = require("uuid");
26
26
  var _constants = require("../../common/constants");
27
27
  var _common = require("../../common");
28
+ var _webWorkerStr = _interopRequireDefault(require("./webWorkerStr"));
28
29
  var _types = require("../../Metrics/types");
29
30
  var _Metrics = require("../../Metrics");
30
31
  var _calling = require("../calling");
@@ -33,9 +34,9 @@ var _SDKConnector = _interopRequireDefault(require("../../SDKConnector"));
33
34
  var _types2 = require("../../common/types");
34
35
  var _constants2 = require("../constants");
35
36
  var _types3 = require("../line/types");
36
- function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof _Symbol !== "undefined" && o[_Symbol$iterator] || o["@@iterator"]; if (!it) { if (_Array$isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
37
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return _Array$from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
38
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
37
+ 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; } } }; }
38
+ 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; } }
39
+ 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; }
39
40
  function ownKeys(e, r) { var t = _Object$keys2(e); if (_Object$getOwnPropertySymbols) { var o = _Object$getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return _Object$getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
40
41
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(e, _Object$getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { _Object$defineProperty(e, r, _Object$getOwnPropertyDescriptor(t, r)); }); } return e; }
41
42
  /**
@@ -54,7 +55,6 @@ var Registration = exports.Registration = /*#__PURE__*/function () {
54
55
  (0, _defineProperty2.default)(this, "registrationStatus", void 0);
55
56
  (0, _defineProperty2.default)(this, "failbackTimer", void 0);
56
57
  (0, _defineProperty2.default)(this, "activeMobiusUrl", void 0);
57
- (0, _defineProperty2.default)(this, "keepaliveTimer", void 0);
58
58
  (0, _defineProperty2.default)(this, "rehomingIntervalMin", void 0);
59
59
  (0, _defineProperty2.default)(this, "rehomingIntervalMax", void 0);
60
60
  (0, _defineProperty2.default)(this, "mutex", void 0);
@@ -71,6 +71,7 @@ var Registration = exports.Registration = /*#__PURE__*/function () {
71
71
  (0, _defineProperty2.default)(this, "failoverImmediately", false);
72
72
  (0, _defineProperty2.default)(this, "retryAfter", void 0);
73
73
  (0, _defineProperty2.default)(this, "scheduled429Retry", false);
74
+ (0, _defineProperty2.default)(this, "webWorker", void 0);
74
75
  this.jwe = jwe;
75
76
  this.sdkConnector = _SDKConnector.default;
76
77
  this.serviceData = serviceData;
@@ -118,94 +119,67 @@ var Registration = exports.Registration = /*#__PURE__*/function () {
118
119
  this.backupMobiusUris = backupMobiusUris;
119
120
  }
120
121
 
121
- /**
122
- * Implementation of sending keepalive.
123
- *
124
- */
125
- }, {
126
- key: "postKeepAlive",
127
- value: (function () {
128
- var _postKeepAlive = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(url) {
129
- return _regenerator.default.wrap(function _callee$(_context) {
130
- while (1) switch (_context.prev = _context.next) {
131
- case 0:
132
- return _context.abrupt("return", this.webex.request({
133
- uri: "".concat(url, "/status"),
134
- method: _types2.HTTP_METHODS.POST,
135
- headers: (0, _defineProperty2.default)((0, _defineProperty2.default)({}, _constants2.CISCO_DEVICE_URL, this.webex.internal.device.url), _constants2.SPARK_USER_AGENT, _constants2.CALLING_USER_AGENT),
136
- service: _types2.ALLOWED_SERVICES.MOBIUS
137
- }));
138
- case 1:
139
- case "end":
140
- return _context.stop();
141
- }
142
- }, _callee, this);
143
- }));
144
- function postKeepAlive(_x) {
145
- return _postKeepAlive.apply(this, arguments);
146
- }
147
- return postKeepAlive;
148
- }()
149
122
  /**
150
123
  * Implementation of delete device.
151
124
  *
152
125
  */
153
- )
154
126
  }, {
155
127
  key: "deleteRegistration",
156
128
  value: (function () {
157
- var _deleteRegistration = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(url, deviceId, deviceUrl) {
129
+ var _deleteRegistration = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee(url, deviceId, deviceUrl) {
158
130
  var _response;
159
131
  var response;
160
- return _regenerator.default.wrap(function _callee2$(_context2) {
161
- while (1) switch (_context2.prev = _context2.next) {
132
+ return _regenerator.default.wrap(function _callee$(_context) {
133
+ while (1) switch (_context.prev = _context.next) {
162
134
  case 0:
163
- _context2.prev = 0;
164
- _context2.t0 = fetch;
165
- _context2.t1 = "".concat(url).concat(_constants2.DEVICES_ENDPOINT_RESOURCE, "/").concat(deviceId);
166
- _context2.t2 = _types2.HTTP_METHODS.DELETE;
167
- _context2.t3 = _defineProperty2.default;
168
- _context2.t4 = _defineProperty2.default;
169
- _context2.t5 = _defineProperty2.default;
170
- _context2.t6 = (0, _defineProperty2.default)({}, _constants2.CISCO_DEVICE_URL, deviceUrl);
171
- _context2.next = 10;
135
+ _context.prev = 0;
136
+ _context.t0 = fetch;
137
+ _context.t1 = "".concat(url).concat(_constants2.DEVICES_ENDPOINT_RESOURCE, "/").concat(deviceId);
138
+ _context.t2 = _types2.HTTP_METHODS.DELETE;
139
+ _context.t3 = _defineProperty2.default;
140
+ _context.t4 = _defineProperty2.default;
141
+ _context.t5 = _defineProperty2.default;
142
+ _context.t6 = (0, _defineProperty2.default)({}, _constants2.CISCO_DEVICE_URL, deviceUrl);
143
+ _context.next = 10;
172
144
  return this.webex.credentials.getUserToken();
173
145
  case 10:
174
- _context2.t7 = _context2.sent;
175
- _context2.t8 = (0, _context2.t5)(_context2.t6, "Authorization", _context2.t7);
176
- _context2.t9 = "".concat(_constants2.WEBEX_WEB_CLIENT, "_").concat((0, _uuid.v4)());
177
- _context2.t10 = (0, _context2.t4)(_context2.t8, "trackingId", _context2.t9);
178
- _context2.t11 = _constants2.SPARK_USER_AGENT;
179
- _context2.t12 = _constants2.CALLING_USER_AGENT;
180
- _context2.t13 = (0, _context2.t3)(_context2.t10, _context2.t11, _context2.t12);
181
- _context2.t14 = {
182
- method: _context2.t2,
183
- headers: _context2.t13
146
+ _context.t7 = _context.sent;
147
+ _context.t8 = (0, _context.t5)(_context.t6, "Authorization", _context.t7);
148
+ _context.t9 = "".concat(_constants2.WEBEX_WEB_CLIENT, "_").concat((0, _uuid.v4)());
149
+ _context.t10 = (0, _context.t4)(_context.t8, "trackingId", _context.t9);
150
+ _context.t11 = _constants2.SPARK_USER_AGENT;
151
+ _context.t12 = _constants2.CALLING_USER_AGENT;
152
+ _context.t13 = (0, _context.t3)(_context.t10, _context.t11, _context.t12);
153
+ _context.t14 = {
154
+ method: _context.t2,
155
+ headers: _context.t13
184
156
  };
185
- _context2.next = 20;
186
- return (0, _context2.t0)(_context2.t1, _context2.t14);
157
+ _context.next = 20;
158
+ return (0, _context.t0)(_context.t1, _context.t14);
187
159
  case 20:
188
- response = _context2.sent;
189
- _context2.next = 26;
160
+ response = _context.sent;
161
+ _context.next = 28;
190
162
  break;
191
163
  case 23:
192
- _context2.prev = 23;
193
- _context2.t15 = _context2["catch"](0);
194
- _Logger.default.warn("Delete failed with Mobius ".concat(_context2.t15), {
164
+ _context.prev = 23;
165
+ _context.t15 = _context["catch"](0);
166
+ _Logger.default.warn("Delete failed with Mobius ".concat(_context.t15), {
195
167
  file: _constants2.REGISTRATION_FILE,
196
- method: _constants2.METHODS.DEREGISTER
168
+ method: _constants2.METHODS.DELETE_REGISTRATION
197
169
  });
198
- case 26:
170
+ _context.next = 28;
171
+ return (0, _common.uploadLogs)();
172
+ case 28:
199
173
  this.setStatus(_types2.RegistrationStatus.INACTIVE);
200
174
  this.lineEmitter(_types3.LINE_EVENTS.UNREGISTERED);
201
- return _context2.abrupt("return", (_response = response) === null || _response === void 0 ? void 0 : _response.json());
202
- case 29:
175
+ return _context.abrupt("return", (_response = response) === null || _response === void 0 ? void 0 : _response.json());
176
+ case 31:
203
177
  case "end":
204
- return _context2.stop();
178
+ return _context.stop();
205
179
  }
206
- }, _callee2, this, [[0, 23]]);
180
+ }, _callee, this, [[0, 23]]);
207
181
  }));
208
- function deleteRegistration(_x2, _x3, _x4) {
182
+ function deleteRegistration(_x, _x2, _x3) {
209
183
  return _deleteRegistration.apply(this, arguments);
210
184
  }
211
185
  return deleteRegistration;
@@ -218,10 +192,10 @@ var Registration = exports.Registration = /*#__PURE__*/function () {
218
192
  }, {
219
193
  key: "postRegistration",
220
194
  value: (function () {
221
- var _postRegistration = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(url) {
195
+ var _postRegistration = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee2(url) {
222
196
  var deviceInfo;
223
- return _regenerator.default.wrap(function _callee3$(_context3) {
224
- while (1) switch (_context3.prev = _context3.next) {
197
+ return _regenerator.default.wrap(function _callee2$(_context2) {
198
+ while (1) switch (_context2.prev = _context2.next) {
225
199
  case 0:
226
200
  deviceInfo = {
227
201
  userId: this.userId,
@@ -230,7 +204,7 @@ var Registration = exports.Registration = /*#__PURE__*/function () {
230
204
  jwe: this.jwe
231
205
  }) : this.serviceData
232
206
  };
233
- return _context3.abrupt("return", this.webex.request({
207
+ return _context2.abrupt("return", this.webex.request({
234
208
  uri: "".concat(url, "device"),
235
209
  method: _types2.HTTP_METHODS.POST,
236
210
  headers: (0, _defineProperty2.default)((0, _defineProperty2.default)({}, _constants2.CISCO_DEVICE_URL, deviceInfo.clientDeviceUri), _constants2.SPARK_USER_AGENT, _constants2.CALLING_USER_AGENT),
@@ -239,11 +213,11 @@ var Registration = exports.Registration = /*#__PURE__*/function () {
239
213
  }));
240
214
  case 2:
241
215
  case "end":
242
- return _context3.stop();
216
+ return _context2.stop();
243
217
  }
244
- }, _callee3, this);
218
+ }, _callee2, this);
245
219
  }));
246
- function postRegistration(_x5) {
220
+ function postRegistration(_x4) {
247
221
  return _postRegistration.apply(this, arguments);
248
222
  }
249
223
  return postRegistration;
@@ -256,29 +230,29 @@ var Registration = exports.Registration = /*#__PURE__*/function () {
256
230
  }, {
257
231
  key: "restorePreviousRegistration",
258
232
  value: (function () {
259
- var _restorePreviousRegistration = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4(caller) {
233
+ var _restorePreviousRegistration = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee3(caller) {
260
234
  var abort;
261
- return _regenerator.default.wrap(function _callee4$(_context4) {
262
- while (1) switch (_context4.prev = _context4.next) {
235
+ return _regenerator.default.wrap(function _callee3$(_context3) {
236
+ while (1) switch (_context3.prev = _context3.next) {
263
237
  case 0:
264
238
  abort = false;
265
239
  if (!this.activeMobiusUrl) {
266
- _context4.next = 5;
240
+ _context3.next = 5;
267
241
  break;
268
242
  }
269
- _context4.next = 4;
243
+ _context3.next = 4;
270
244
  return this.attemptRegistrationWithServers(caller, [this.activeMobiusUrl]);
271
245
  case 4:
272
- abort = _context4.sent;
246
+ abort = _context3.sent;
273
247
  case 5:
274
- return _context4.abrupt("return", abort);
248
+ return _context3.abrupt("return", abort);
275
249
  case 6:
276
250
  case "end":
277
- return _context4.stop();
251
+ return _context3.stop();
278
252
  }
279
- }, _callee4, this);
253
+ }, _callee3, this);
280
254
  }));
281
- function restorePreviousRegistration(_x6) {
255
+ function restorePreviousRegistration(_x5) {
282
256
  return _restorePreviousRegistration.apply(this, arguments);
283
257
  }
284
258
  return restorePreviousRegistration;
@@ -290,20 +264,20 @@ var Registration = exports.Registration = /*#__PURE__*/function () {
290
264
  }, {
291
265
  key: "handle429Retry",
292
266
  value: (function () {
293
- var _handle429Retry = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5(retryAfter, caller) {
267
+ var _handle429Retry = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee4(retryAfter, caller) {
294
268
  var interval, abort;
295
- return _regenerator.default.wrap(function _callee5$(_context5) {
296
- while (1) switch (_context5.prev = _context5.next) {
269
+ return _regenerator.default.wrap(function _callee4$(_context4) {
270
+ while (1) switch (_context4.prev = _context4.next) {
297
271
  case 0:
298
272
  if (!(caller === _constants2.FAILBACK_UTIL)) {
299
- _context5.next = 17;
273
+ _context4.next = 17;
300
274
  break;
301
275
  }
302
276
  if (!(this.failback429RetryAttempts >= _constants2.REG_FAILBACK_429_MAX_RETRIES)) {
303
- _context5.next = 3;
277
+ _context4.next = 3;
304
278
  break;
305
279
  }
306
- return _context5.abrupt("return");
280
+ return _context4.abrupt("return");
307
281
  case 3:
308
282
  this.clearFailbackTimer();
309
283
  this.failback429RetryAttempts += 1;
@@ -314,28 +288,28 @@ var Registration = exports.Registration = /*#__PURE__*/function () {
314
288
  interval = this.getRegRetryInterval(this.failback429RetryAttempts);
315
289
  this.startFailbackTimer(interval);
316
290
  this.scheduled429Retry = true;
317
- _context5.next = 11;
291
+ _context4.next = 11;
318
292
  return this.restorePreviousRegistration(_constants2.REG_429_RETRY_UTIL);
319
293
  case 11:
320
- abort = _context5.sent;
294
+ abort = _context4.sent;
321
295
  if (!(!abort && !this.isDeviceRegistered())) {
322
- _context5.next = 15;
296
+ _context4.next = 15;
323
297
  break;
324
298
  }
325
- _context5.next = 15;
299
+ _context4.next = 15;
326
300
  return this.restartRegistration(_constants2.REG_429_RETRY_UTIL);
327
301
  case 15:
328
- _context5.next = 18;
302
+ _context4.next = 18;
329
303
  break;
330
304
  case 17:
331
305
  this.retryAfter = retryAfter;
332
306
  case 18:
333
307
  case "end":
334
- return _context5.stop();
308
+ return _context4.stop();
335
309
  }
336
- }, _callee5, this);
310
+ }, _callee4, this);
337
311
  }));
338
- function handle429Retry(_x7, _x8) {
312
+ function handle429Retry(_x6, _x7) {
339
313
  return _handle429Retry.apply(this, arguments);
340
314
  }
341
315
  return handle429Retry;
@@ -364,7 +338,7 @@ var Registration = exports.Registration = /*#__PURE__*/function () {
364
338
  }, {
365
339
  key: "startFailoverTimer",
366
340
  value: (function () {
367
- var _startFailoverTimer = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee10() {
341
+ var _startFailoverTimer = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee9() {
368
342
  var _this = this;
369
343
  var attempt,
370
344
  timeElapsed,
@@ -374,18 +348,18 @@ var Registration = exports.Registration = /*#__PURE__*/function () {
374
348
  excessVal,
375
349
  abort,
376
350
  scheduledTime,
377
- _args10 = arguments;
378
- return _regenerator.default.wrap(function _callee10$(_context10) {
379
- while (1) switch (_context10.prev = _context10.next) {
351
+ _args9 = arguments;
352
+ return _regenerator.default.wrap(function _callee9$(_context9) {
353
+ while (1) switch (_context9.prev = _context9.next) {
380
354
  case 0:
381
- attempt = _args10.length > 0 && _args10[0] !== undefined ? _args10[0] : 1;
382
- timeElapsed = _args10.length > 1 && _args10[1] !== undefined ? _args10[1] : 0;
355
+ attempt = _args9.length > 0 && _args9[0] !== undefined ? _args9[0] : 1;
356
+ timeElapsed = _args9.length > 1 && _args9[1] !== undefined ? _args9[1] : 0;
383
357
  loggerContext = {
384
358
  file: _constants2.REGISTRATION_FILE,
385
359
  method: _constants2.FAILOVER_UTIL
386
360
  };
387
361
  interval = this.getRegRetryInterval(attempt);
388
- TIMER_THRESHOLD = this.isCCFlow ? _constants2.REG_TRY_BACKUP_TIMER_VAL_FOR_CC_IN_SEC : _constants2.REG_TRY_BACKUP_TIMER_VAL_IN_SEC;
362
+ TIMER_THRESHOLD = _constants2.REG_TRY_BACKUP_TIMER_VAL_IN_SEC;
389
363
  if (timeElapsed + interval > TIMER_THRESHOLD) {
390
364
  excessVal = timeElapsed + interval - TIMER_THRESHOLD;
391
365
  interval -= excessVal;
@@ -394,83 +368,83 @@ var Registration = exports.Registration = /*#__PURE__*/function () {
394
368
  this.failoverImmediately = this.retryAfter + timeElapsed > TIMER_THRESHOLD;
395
369
  }
396
370
  if (!(interval > _constants2.BASE_REG_RETRY_TIMER_VAL_IN_SEC && !this.failoverImmediately)) {
397
- _context10.next = 14;
371
+ _context9.next = 14;
398
372
  break;
399
373
  }
400
374
  scheduledTime = Math.floor((0, _now.default)() / 1000);
401
375
  if (this.retryAfter != null) {
402
376
  interval = Math.max(interval, this.retryAfter);
403
377
  }
404
- setTimeout( /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee7() {
405
- return _regenerator.default.wrap(function _callee7$(_context7) {
406
- while (1) switch (_context7.prev = _context7.next) {
378
+ setTimeout(/*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee6() {
379
+ return _regenerator.default.wrap(function _callee6$(_context6) {
380
+ while (1) switch (_context6.prev = _context6.next) {
407
381
  case 0:
408
- _context7.next = 2;
409
- return _this.mutex.runExclusive( /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6() {
382
+ _context6.next = 2;
383
+ return _this.mutex.runExclusive(/*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee5() {
410
384
  var currentTime;
411
- return _regenerator.default.wrap(function _callee6$(_context6) {
412
- while (1) switch (_context6.prev = _context6.next) {
385
+ return _regenerator.default.wrap(function _callee5$(_context5) {
386
+ while (1) switch (_context5.prev = _context5.next) {
413
387
  case 0:
414
- _context6.next = 2;
388
+ _context5.next = 2;
415
389
  return _this.attemptRegistrationWithServers(_constants2.FAILOVER_UTIL);
416
390
  case 2:
417
- abort = _context6.sent;
391
+ abort = _context5.sent;
418
392
  currentTime = Math.floor((0, _now.default)() / 1000);
419
393
  if (!(!abort && !_this.isDeviceRegistered())) {
420
- _context6.next = 7;
394
+ _context5.next = 7;
421
395
  break;
422
396
  }
423
- _context6.next = 7;
397
+ _context5.next = 7;
424
398
  return _this.startFailoverTimer(attempt + 1, timeElapsed + (currentTime - scheduledTime));
425
399
  case 7:
426
400
  case "end":
427
- return _context6.stop();
401
+ return _context5.stop();
428
402
  }
429
- }, _callee6);
403
+ }, _callee5);
430
404
  })));
431
405
  case 2:
432
406
  case "end":
433
- return _context7.stop();
407
+ return _context6.stop();
434
408
  }
435
- }, _callee7);
409
+ }, _callee6);
436
410
  })), interval * _constants2.SEC_TO_MSEC_MFACTOR);
437
411
  _Logger.default.log("Scheduled retry with primary in ".concat(interval, " seconds, number of attempts : ").concat(attempt), loggerContext);
438
- _context10.next = 26;
412
+ _context9.next = 26;
439
413
  break;
440
414
  case 14:
441
415
  if (!this.backupMobiusUris.length) {
442
- _context10.next = 23;
416
+ _context9.next = 23;
443
417
  break;
444
418
  }
445
419
  _Logger.default.info('Failing over to backup servers.', loggerContext);
446
420
  this.failoverImmediately = false;
447
- _context10.next = 19;
421
+ _context9.next = 19;
448
422
  return this.attemptRegistrationWithServers(_constants2.FAILOVER_UTIL, this.backupMobiusUris);
449
423
  case 19:
450
- abort = _context10.sent;
424
+ abort = _context9.sent;
451
425
  if (!abort && !this.isDeviceRegistered()) {
452
426
  interval = this.getRegRetryInterval();
453
427
  if (this.retryAfter != null && this.retryAfter < _constants2.RETRY_TIMER_UPPER_LIMIT) {
454
428
  interval = interval < this.retryAfter ? this.retryAfter : interval;
455
429
  }
456
- setTimeout( /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee9() {
457
- return _regenerator.default.wrap(function _callee9$(_context9) {
458
- while (1) switch (_context9.prev = _context9.next) {
430
+ setTimeout(/*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee8() {
431
+ return _regenerator.default.wrap(function _callee8$(_context8) {
432
+ while (1) switch (_context8.prev = _context8.next) {
459
433
  case 0:
460
- _context9.next = 2;
461
- return _this.mutex.runExclusive( /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee8() {
462
- return _regenerator.default.wrap(function _callee8$(_context8) {
463
- while (1) switch (_context8.prev = _context8.next) {
434
+ _context8.next = 2;
435
+ return _this.mutex.runExclusive(/*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee7() {
436
+ return _regenerator.default.wrap(function _callee7$(_context7) {
437
+ while (1) switch (_context7.prev = _context7.next) {
464
438
  case 0:
465
- _context8.next = 2;
439
+ _context7.next = 2;
466
440
  return _this.attemptRegistrationWithServers(_constants2.FAILOVER_UTIL, _this.backupMobiusUris);
467
441
  case 2:
468
- abort = _context8.sent;
442
+ abort = _context7.sent;
469
443
  if (!(!abort && !_this.isDeviceRegistered())) {
470
- _context8.next = 7;
444
+ _context7.next = 7;
471
445
  break;
472
446
  }
473
- _context8.next = 6;
447
+ _context7.next = 6;
474
448
  return (0, _common.uploadLogs)();
475
449
  case 6:
476
450
  (0, _common.emitFinalFailure)(function (clientError) {
@@ -478,22 +452,22 @@ var Registration = exports.Registration = /*#__PURE__*/function () {
478
452
  }, loggerContext);
479
453
  case 7:
480
454
  case "end":
481
- return _context8.stop();
455
+ return _context7.stop();
482
456
  }
483
- }, _callee8);
457
+ }, _callee7);
484
458
  })));
485
459
  case 2:
486
460
  case "end":
487
- return _context9.stop();
461
+ return _context8.stop();
488
462
  }
489
- }, _callee9);
463
+ }, _callee8);
490
464
  })), interval * _constants2.SEC_TO_MSEC_MFACTOR);
491
465
  _Logger.default.log("Scheduled retry with backup servers in ".concat(interval, " seconds."), loggerContext);
492
466
  }
493
- _context10.next = 26;
467
+ _context9.next = 26;
494
468
  break;
495
469
  case 23:
496
- _context10.next = 25;
470
+ _context9.next = 25;
497
471
  return (0, _common.uploadLogs)();
498
472
  case 25:
499
473
  (0, _common.emitFinalFailure)(function (clientError) {
@@ -501,9 +475,9 @@ var Registration = exports.Registration = /*#__PURE__*/function () {
501
475
  }, loggerContext);
502
476
  case 26:
503
477
  case "end":
504
- return _context10.stop();
478
+ return _context9.stop();
505
479
  }
506
- }, _callee10, this);
480
+ }, _callee9, this);
507
481
  }));
508
482
  function startFailoverTimer() {
509
483
  return _startFailoverTimer.apply(this, arguments);
@@ -522,7 +496,83 @@ var Registration = exports.Registration = /*#__PURE__*/function () {
522
496
  this.failbackTimer = undefined;
523
497
  }
524
498
  }
525
-
499
+ }, {
500
+ key: "isPrimaryActive",
501
+ value: function () {
502
+ var _isPrimaryActive = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee0() {
503
+ var status, _iterator, _step, mobiusUrl, baseUri, response, _ref5, statusCode;
504
+ return _regenerator.default.wrap(function _callee0$(_context0) {
505
+ while (1) switch (_context0.prev = _context0.next) {
506
+ case 0:
507
+ _iterator = _createForOfIteratorHelper(this.primaryMobiusUris);
508
+ _context0.prev = 1;
509
+ _iterator.s();
510
+ case 3:
511
+ if ((_step = _iterator.n()).done) {
512
+ _context0.next = 23;
513
+ break;
514
+ }
515
+ mobiusUrl = _step.value;
516
+ _context0.prev = 5;
517
+ baseUri = mobiusUrl.replace(_constants2.URL_ENDPOINT, '/'); // eslint-disable-next-line no-await-in-loop
518
+ _context0.next = 9;
519
+ return this.webex.request({
520
+ uri: "".concat(baseUri, "ping"),
521
+ method: _types2.HTTP_METHODS.GET,
522
+ headers: (0, _defineProperty2.default)((0, _defineProperty2.default)({}, _constants2.CISCO_DEVICE_URL, this.webex.internal.device.url), _constants2.SPARK_USER_AGENT, _constants2.CALLING_USER_AGENT),
523
+ service: _types2.ALLOWED_SERVICES.MOBIUS
524
+ });
525
+ case 9:
526
+ response = _context0.sent;
527
+ _ref5 = response, statusCode = _ref5.statusCode;
528
+ if (!(statusCode === 200)) {
529
+ _context0.next = 15;
530
+ break;
531
+ }
532
+ _Logger.default.info("Ping successful for primary Mobius: ".concat(mobiusUrl), {
533
+ file: _constants2.REGISTRATION_FILE,
534
+ method: _constants2.FAILBACK_UTIL
535
+ });
536
+ status = 'up';
537
+ return _context0.abrupt("break", 23);
538
+ case 15:
539
+ _context0.next = 21;
540
+ break;
541
+ case 17:
542
+ _context0.prev = 17;
543
+ _context0.t0 = _context0["catch"](5);
544
+ _Logger.default.warn("Ping failed for primary Mobius: ".concat(mobiusUrl, " with error: ").concat(_context0.t0), {
545
+ file: _constants2.REGISTRATION_FILE,
546
+ method: _constants2.FAILBACK_UTIL
547
+ });
548
+ status = 'down';
549
+ case 21:
550
+ _context0.next = 3;
551
+ break;
552
+ case 23:
553
+ _context0.next = 28;
554
+ break;
555
+ case 25:
556
+ _context0.prev = 25;
557
+ _context0.t1 = _context0["catch"](1);
558
+ _iterator.e(_context0.t1);
559
+ case 28:
560
+ _context0.prev = 28;
561
+ _iterator.f();
562
+ return _context0.finish(28);
563
+ case 31:
564
+ return _context0.abrupt("return", status === 'up');
565
+ case 32:
566
+ case "end":
567
+ return _context0.stop();
568
+ }
569
+ }, _callee0, this, [[1, 25, 28, 31], [5, 17]]);
570
+ }));
571
+ function isPrimaryActive() {
572
+ return _isPrimaryActive.apply(this, arguments);
573
+ }
574
+ return isPrimaryActive;
575
+ }()
526
576
  /**
527
577
  * Returns true if device is registered with a backup mobius.
528
578
  */
@@ -569,16 +619,16 @@ var Registration = exports.Registration = /*#__PURE__*/function () {
569
619
  key: "startFailbackTimer",
570
620
  value: function startFailbackTimer(intervalInSeconds) {
571
621
  var _this2 = this;
572
- this.failbackTimer = setTimeout( /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee11() {
573
- return _regenerator.default.wrap(function _callee11$(_context11) {
574
- while (1) switch (_context11.prev = _context11.next) {
622
+ this.failbackTimer = setTimeout(/*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee1() {
623
+ return _regenerator.default.wrap(function _callee1$(_context1) {
624
+ while (1) switch (_context1.prev = _context1.next) {
575
625
  case 0:
576
- return _context11.abrupt("return", _this2.executeFailback());
626
+ return _context1.abrupt("return", _this2.executeFailback());
577
627
  case 1:
578
628
  case "end":
579
- return _context11.stop();
629
+ return _context1.stop();
580
630
  }
581
- }, _callee11);
631
+ }, _callee1);
582
632
  })), intervalInSeconds * _constants2.SEC_TO_MSEC_MFACTOR);
583
633
  _Logger.default.log("Failback scheduled after ".concat(intervalInSeconds, " seconds."), {
584
634
  file: _constants2.REGISTRATION_FILE,
@@ -593,86 +643,90 @@ var Registration = exports.Registration = /*#__PURE__*/function () {
593
643
  }, {
594
644
  key: "executeFailback",
595
645
  value: (function () {
596
- var _executeFailback = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee13() {
646
+ var _executeFailback = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee11() {
597
647
  var _this3 = this;
598
- return _regenerator.default.wrap(function _callee13$(_context13) {
599
- while (1) switch (_context13.prev = _context13.next) {
648
+ return _regenerator.default.wrap(function _callee11$(_context11) {
649
+ while (1) switch (_context11.prev = _context11.next) {
600
650
  case 0:
601
- _context13.next = 2;
602
- return this.mutex.runExclusive( /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee12() {
603
- var abort, abortNew;
604
- return _regenerator.default.wrap(function _callee12$(_context12) {
605
- while (1) switch (_context12.prev = _context12.next) {
651
+ _context11.next = 2;
652
+ return this.mutex.runExclusive(/*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee10() {
653
+ var primaryServerStatus, abort, abortNew;
654
+ return _regenerator.default.wrap(function _callee10$(_context10) {
655
+ while (1) switch (_context10.prev = _context10.next) {
606
656
  case 0:
607
657
  if (!_this3.isFailbackRequired()) {
608
- _context12.next = 28;
658
+ _context10.next = 31;
609
659
  break;
610
660
  }
611
- if (!((0, _keys.default)(_this3.callManager.getActiveCalls()).length === 0)) {
612
- _context12.next = 25;
661
+ _context10.next = 3;
662
+ return _this3.isPrimaryActive();
663
+ case 3:
664
+ primaryServerStatus = _context10.sent;
665
+ if (!((0, _keys.default)(_this3.callManager.getActiveCalls()).length === 0 && primaryServerStatus)) {
666
+ _context10.next = 28;
613
667
  break;
614
668
  }
615
669
  _Logger.default.info("Attempting failback to primary.", {
616
670
  file: _constants2.REGISTRATION_FILE,
617
671
  method: _this3.executeFailback.name
618
672
  });
619
- _context12.next = 5;
673
+ _context10.next = 8;
620
674
  return _this3.deregister();
621
- case 5:
622
- _context12.next = 7;
675
+ case 8:
676
+ _context10.next = 10;
623
677
  return _this3.attemptRegistrationWithServers(_constants2.FAILBACK_UTIL);
624
- case 7:
625
- abort = _context12.sent;
678
+ case 10:
679
+ abort = _context10.sent;
626
680
  if (!(_this3.scheduled429Retry || abort || _this3.isDeviceRegistered())) {
627
- _context12.next = 10;
681
+ _context10.next = 13;
628
682
  break;
629
683
  }
630
- return _context12.abrupt("return");
631
- case 10:
632
- _context12.next = 12;
684
+ return _context10.abrupt("return");
685
+ case 13:
686
+ _context10.next = 15;
633
687
  return _this3.restorePreviousRegistration(_constants2.FAILBACK_UTIL);
634
- case 12:
635
- abortNew = _context12.sent;
688
+ case 15:
689
+ abortNew = _context10.sent;
636
690
  if (!abortNew) {
637
- _context12.next = 16;
691
+ _context10.next = 19;
638
692
  break;
639
693
  }
640
694
  _this3.clearFailbackTimer();
641
- return _context12.abrupt("return");
642
- case 16:
695
+ return _context10.abrupt("return");
696
+ case 19:
643
697
  if (_this3.isDeviceRegistered()) {
644
- _context12.next = 21;
698
+ _context10.next = 24;
645
699
  break;
646
700
  }
647
- _context12.next = 19;
701
+ _context10.next = 22;
648
702
  return _this3.restartRegistration(_this3.executeFailback.name);
649
- case 19:
650
- _context12.next = 23;
703
+ case 22:
704
+ _context10.next = 26;
651
705
  break;
652
- case 21:
706
+ case 24:
653
707
  _this3.failbackTimer = undefined;
654
708
  _this3.initiateFailback();
655
- case 23:
656
- _context12.next = 28;
709
+ case 26:
710
+ _context10.next = 31;
657
711
  break;
658
- case 25:
659
- _Logger.default.info('Active calls present, deferring failback to next cycle.', {
712
+ case 28:
713
+ _Logger.default.info('Active calls present or primary Mobius is down, deferring failback to next cycle.', {
660
714
  file: _constants2.REGISTRATION_FILE,
661
715
  method: _this3.executeFailback.name
662
716
  });
663
717
  _this3.failbackTimer = undefined;
664
718
  _this3.initiateFailback();
665
- case 28:
719
+ case 31:
666
720
  case "end":
667
- return _context12.stop();
721
+ return _context10.stop();
668
722
  }
669
- }, _callee12);
723
+ }, _callee10);
670
724
  })));
671
725
  case 2:
672
726
  case "end":
673
- return _context13.stop();
727
+ return _context11.stop();
674
728
  }
675
- }, _callee13, this);
729
+ }, _callee11, this);
676
730
  }));
677
731
  function executeFailback() {
678
732
  return _executeFailback.apply(this, arguments);
@@ -735,10 +789,10 @@ var Registration = exports.Registration = /*#__PURE__*/function () {
735
789
  }, {
736
790
  key: "restartRegistration",
737
791
  value: (function () {
738
- var _restartRegistration = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee14(caller) {
792
+ var _restartRegistration = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee12(caller) {
739
793
  var abort;
740
- return _regenerator.default.wrap(function _callee14$(_context14) {
741
- while (1) switch (_context14.prev = _context14.next) {
794
+ return _regenerator.default.wrap(function _callee12$(_context12) {
795
+ while (1) switch (_context12.prev = _context12.next) {
742
796
  case 0:
743
797
  /*
744
798
  * Cancel any failback timer running
@@ -746,23 +800,23 @@ var Registration = exports.Registration = /*#__PURE__*/function () {
746
800
  */
747
801
  this.clearFailbackTimer();
748
802
  this.failback429RetryAttempts = 0;
749
- _context14.next = 4;
803
+ _context12.next = 4;
750
804
  return this.attemptRegistrationWithServers(caller, this.primaryMobiusUris);
751
805
  case 4:
752
- abort = _context14.sent;
806
+ abort = _context12.sent;
753
807
  if (!(!abort && !this.isDeviceRegistered())) {
754
- _context14.next = 8;
808
+ _context12.next = 8;
755
809
  break;
756
810
  }
757
- _context14.next = 8;
811
+ _context12.next = 8;
758
812
  return this.startFailoverTimer();
759
813
  case 8:
760
814
  case "end":
761
- return _context14.stop();
815
+ return _context12.stop();
762
816
  }
763
- }, _callee14, this);
817
+ }, _callee12, this);
764
818
  }));
765
- function restartRegistration(_x9) {
819
+ function restartRegistration(_x8) {
766
820
  return _restartRegistration.apply(this, arguments);
767
821
  }
768
822
  return restartRegistration;
@@ -776,68 +830,68 @@ var Registration = exports.Registration = /*#__PURE__*/function () {
776
830
  }, {
777
831
  key: "handleConnectionRestoration",
778
832
  value: (function () {
779
- var _handleConnectionRestoration = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee16(retry) {
833
+ var _handleConnectionRestoration = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee14(retry) {
780
834
  var _this4 = this;
781
- return _regenerator.default.wrap(function _callee16$(_context16) {
782
- while (1) switch (_context16.prev = _context16.next) {
835
+ return _regenerator.default.wrap(function _callee14$(_context14) {
836
+ while (1) switch (_context14.prev = _context14.next) {
783
837
  case 0:
784
838
  _Logger.default.info(_constants.METHOD_START_MESSAGE, {
785
839
  method: _constants2.METHODS.HANDLE_CONNECTION_RESTORATION,
786
840
  file: _constants2.REGISTRATION_FILE
787
841
  });
788
- _context16.next = 3;
789
- return this.mutex.runExclusive( /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee15() {
842
+ _context14.next = 3;
843
+ return this.mutex.runExclusive(/*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee13() {
790
844
  var abort;
791
- return _regenerator.default.wrap(function _callee15$(_context15) {
792
- while (1) switch (_context15.prev = _context15.next) {
845
+ return _regenerator.default.wrap(function _callee13$(_context13) {
846
+ while (1) switch (_context13.prev = _context13.next) {
793
847
  case 0:
794
848
  if (!retry) {
795
- _context15.next = 14;
849
+ _context13.next = 14;
796
850
  break;
797
851
  }
798
- _Logger.default.log('Mercury connection is up again, re-registering with Webex Calling if needed', {
852
+ _Logger.default.log('Network is up again, re-registering with Webex Calling if needed', {
799
853
  file: _constants2.REGISTRATION_FILE,
800
- method: _this4.handleConnectionRestoration.name
854
+ method: _constants2.METHODS.HANDLE_CONNECTION_RESTORATION
801
855
  });
802
856
  _this4.clearKeepaliveTimer();
803
857
  if (!_this4.isDeviceRegistered()) {
804
- _context15.next = 6;
858
+ _context13.next = 6;
805
859
  break;
806
860
  }
807
- _context15.next = 6;
861
+ _context13.next = 6;
808
862
  return _this4.deregister();
809
863
  case 6:
810
864
  if (!_this4.activeMobiusUrl) {
811
- _context15.next = 13;
865
+ _context13.next = 13;
812
866
  break;
813
867
  }
814
- _context15.next = 9;
815
- return _this4.restorePreviousRegistration(_this4.handleConnectionRestoration.name);
868
+ _context13.next = 9;
869
+ return _this4.restorePreviousRegistration(_constants2.METHODS.HANDLE_CONNECTION_RESTORATION);
816
870
  case 9:
817
- abort = _context15.sent;
871
+ abort = _context13.sent;
818
872
  if (!(!abort && !_this4.isDeviceRegistered())) {
819
- _context15.next = 13;
873
+ _context13.next = 13;
820
874
  break;
821
875
  }
822
- _context15.next = 13;
823
- return _this4.restartRegistration(_this4.handleConnectionRestoration.name);
876
+ _context13.next = 13;
877
+ return _this4.restartRegistration(_constants2.METHODS.HANDLE_CONNECTION_RESTORATION);
824
878
  case 13:
825
879
  retry = false;
826
880
  case 14:
827
881
  case "end":
828
- return _context15.stop();
882
+ return _context13.stop();
829
883
  }
830
- }, _callee15);
884
+ }, _callee13);
831
885
  })));
832
886
  case 3:
833
- return _context16.abrupt("return", retry);
887
+ return _context14.abrupt("return", retry);
834
888
  case 4:
835
889
  case "end":
836
- return _context16.stop();
890
+ return _context14.stop();
837
891
  }
838
- }, _callee16, this);
892
+ }, _callee14, this);
839
893
  }));
840
- function handleConnectionRestoration(_x10) {
894
+ function handleConnectionRestoration(_x9) {
841
895
  return _handleConnectionRestoration.apply(this, arguments);
842
896
  }
843
897
  return handleConnectionRestoration;
@@ -853,54 +907,54 @@ var Registration = exports.Registration = /*#__PURE__*/function () {
853
907
  value: function restoreRegistrationCallBack() {
854
908
  var _this5 = this;
855
909
  return /*#__PURE__*/function () {
856
- var _ref8 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee17(restoreData, caller) {
910
+ var _ref9 = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee15(restoreData, caller) {
857
911
  var logContext, restore, finalError;
858
- return _regenerator.default.wrap(function _callee17$(_context17) {
859
- while (1) switch (_context17.prev = _context17.next) {
912
+ return _regenerator.default.wrap(function _callee15$(_context15) {
913
+ while (1) switch (_context15.prev = _context15.next) {
860
914
  case 0:
861
915
  logContext = {
862
916
  file: _constants2.REGISTRATION_FILE,
863
917
  method: caller
864
918
  };
865
919
  if (_this5.isRegRetry()) {
866
- _context17.next = 17;
920
+ _context15.next = 17;
867
921
  break;
868
922
  }
869
923
  _Logger.default.info('Registration restoration in progress.', logContext);
870
924
  restore = _this5.getExistingDevice(restoreData);
871
925
  if (!restore) {
872
- _context17.next = 14;
926
+ _context15.next = 14;
873
927
  break;
874
928
  }
875
929
  _this5.setRegRetry(true);
876
- _context17.next = 8;
930
+ _context15.next = 8;
877
931
  return _this5.deregister();
878
932
  case 8:
879
- _context17.next = 10;
933
+ _context15.next = 10;
880
934
  return _this5.restorePreviousRegistration(caller);
881
935
  case 10:
882
- finalError = _context17.sent;
936
+ finalError = _context15.sent;
883
937
  _this5.setRegRetry(false);
884
938
  if (_this5.isDeviceRegistered()) {
885
939
  _Logger.default.info('Registration restored successfully.', logContext);
886
940
  }
887
- return _context17.abrupt("return", finalError);
941
+ return _context15.abrupt("return", finalError);
888
942
  case 14:
889
943
  _this5.lineEmitter(_types3.LINE_EVENTS.UNREGISTERED);
890
- _context17.next = 18;
944
+ _context15.next = 18;
891
945
  break;
892
946
  case 17:
893
947
  _this5.lineEmitter(_types3.LINE_EVENTS.UNREGISTERED);
894
948
  case 18:
895
- return _context17.abrupt("return", false);
949
+ return _context15.abrupt("return", false);
896
950
  case 19:
897
951
  case "end":
898
- return _context17.stop();
952
+ return _context15.stop();
899
953
  }
900
- }, _callee17);
954
+ }, _callee15);
901
955
  }));
902
- return function (_x11, _x12) {
903
- return _ref8.apply(this, arguments);
956
+ return function (_x0, _x1) {
957
+ return _ref9.apply(this, arguments);
904
958
  };
905
959
  }();
906
960
  }
@@ -912,30 +966,30 @@ var Registration = exports.Registration = /*#__PURE__*/function () {
912
966
  }, {
913
967
  key: "triggerRegistration",
914
968
  value: (function () {
915
- var _triggerRegistration = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee18() {
969
+ var _triggerRegistration = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee16() {
916
970
  var abort;
917
- return _regenerator.default.wrap(function _callee18$(_context18) {
918
- while (1) switch (_context18.prev = _context18.next) {
971
+ return _regenerator.default.wrap(function _callee16$(_context16) {
972
+ while (1) switch (_context16.prev = _context16.next) {
919
973
  case 0:
920
974
  if (!(this.primaryMobiusUris.length > 0)) {
921
- _context18.next = 7;
975
+ _context16.next = 7;
922
976
  break;
923
977
  }
924
- _context18.next = 3;
925
- return this.attemptRegistrationWithServers(this.triggerRegistration.name, this.primaryMobiusUris);
978
+ _context16.next = 3;
979
+ return this.attemptRegistrationWithServers(_constants2.REGISTRATION_UTIL, this.primaryMobiusUris);
926
980
  case 3:
927
- abort = _context18.sent;
981
+ abort = _context16.sent;
928
982
  if (!(!this.isDeviceRegistered() && !abort)) {
929
- _context18.next = 7;
983
+ _context16.next = 7;
930
984
  break;
931
985
  }
932
- _context18.next = 7;
986
+ _context16.next = 7;
933
987
  return this.startFailoverTimer();
934
988
  case 7:
935
989
  case "end":
936
- return _context18.stop();
990
+ return _context16.stop();
937
991
  }
938
- }, _callee18, this);
992
+ }, _callee16, this);
939
993
  }));
940
994
  function triggerRegistration() {
941
995
  return _triggerRegistration.apply(this, arguments);
@@ -954,135 +1008,158 @@ var Registration = exports.Registration = /*#__PURE__*/function () {
954
1008
  }, {
955
1009
  key: "attemptRegistrationWithServers",
956
1010
  value: (function () {
957
- var _attemptRegistrationWithServers = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee19(caller) {
1011
+ var _attemptRegistrationWithServers = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee17(caller) {
958
1012
  var _this6 = this;
959
1013
  var servers,
960
1014
  abort,
961
- _iterator,
962
- _step,
963
- url,
964
- _this$deviceInfo$devi,
965
- _this$deviceInfo$devi2,
966
- resp,
967
- body,
968
- _args19 = arguments;
969
- return _regenerator.default.wrap(function _callee19$(_context19) {
970
- while (1) switch (_context19.prev = _context19.next) {
1015
+ _iterator2,
1016
+ _step2,
1017
+ _loop,
1018
+ _ret,
1019
+ _args18 = arguments;
1020
+ return _regenerator.default.wrap(function _callee17$(_context18) {
1021
+ while (1) switch (_context18.prev = _context18.next) {
971
1022
  case 0:
972
- servers = _args19.length > 1 && _args19[1] !== undefined ? _args19[1] : this.primaryMobiusUris;
1023
+ servers = _args18.length > 1 && _args18[1] !== undefined ? _args18[1] : this.primaryMobiusUris;
973
1024
  abort = false;
974
1025
  this.retryAfter = undefined;
975
1026
  if (!this.failoverImmediately) {
976
- _context19.next = 5;
1027
+ _context18.next = 5;
977
1028
  break;
978
1029
  }
979
- return _context19.abrupt("return", abort);
1030
+ return _context18.abrupt("return", abort);
980
1031
  case 5:
981
1032
  if (!this.isDeviceRegistered()) {
982
- _context19.next = 8;
1033
+ _context18.next = 8;
983
1034
  break;
984
1035
  }
985
1036
  _Logger.default.info("[".concat(caller, "] : Device already registered with : ").concat(this.activeMobiusUrl), {
986
1037
  file: _constants2.REGISTRATION_FILE,
987
1038
  method: _constants2.REGISTER_UTIL
988
1039
  });
989
- return _context19.abrupt("return", abort);
1040
+ return _context18.abrupt("return", abort);
990
1041
  case 8:
991
- _iterator = _createForOfIteratorHelper(servers);
992
- _context19.prev = 9;
993
- _iterator.s();
994
- case 11:
995
- if ((_step = _iterator.n()).done) {
996
- _context19.next = 48;
997
- break;
998
- }
999
- url = _step.value;
1000
- _context19.prev = 13;
1001
- abort = false;
1002
- this.registrationStatus = _types2.RegistrationStatus.INACTIVE;
1003
- this.lineEmitter(_types3.LINE_EVENTS.CONNECTING);
1004
- _Logger.default.info("[".concat(caller, "] : Mobius url to contact: ").concat(url), {
1005
- file: _constants2.REGISTRATION_FILE,
1006
- method: _constants2.REGISTER_UTIL
1007
- });
1008
- // eslint-disable-next-line no-await-in-loop
1009
- _context19.next = 20;
1010
- return this.postRegistration(url);
1011
- case 20:
1012
- resp = _context19.sent;
1013
- this.deviceInfo = resp.body;
1014
- this.registrationStatus = _types2.RegistrationStatus.ACTIVE;
1015
- this.lineEmitter(_types3.LINE_EVENTS.REGISTERED, resp.body);
1016
- _Logger.default.log("Registration successful for deviceId: ".concat((_this$deviceInfo$devi = this.deviceInfo.device) === null || _this$deviceInfo$devi === void 0 ? void 0 : _this$deviceInfo$devi.deviceId, " userId: ").concat(this.userId), {
1017
- file: _constants2.REGISTRATION_FILE,
1018
- method: _constants2.METHODS.REGISTER
1042
+ _iterator2 = _createForOfIteratorHelper(servers);
1043
+ _context18.prev = 9;
1044
+ _loop = /*#__PURE__*/_regenerator.default.mark(function _loop() {
1045
+ var _this6$backupMobiusUr;
1046
+ var url, serverType, _this6$deviceInfo$dev, _resp$headers, _resp$headers$trackin, _resp$headers2, _this6$deviceInfo$dev2, resp, body;
1047
+ return _regenerator.default.wrap(function _loop$(_context17) {
1048
+ while (1) switch (_context17.prev = _context17.next) {
1049
+ case 0:
1050
+ url = _step2.value;
1051
+ serverType = _this6.primaryMobiusUris.includes(url) && 'PRIMARY' || ((_this6$backupMobiusUr = _this6.backupMobiusUris) === null || _this6$backupMobiusUr === void 0 ? void 0 : _this6$backupMobiusUr.includes(url)) && 'BACKUP' || 'UNKNOWN';
1052
+ _context17.prev = 2;
1053
+ abort = false;
1054
+ _this6.registrationStatus = _types2.RegistrationStatus.INACTIVE;
1055
+ _this6.lineEmitter(_types3.LINE_EVENTS.CONNECTING);
1056
+ _Logger.default.info("[".concat(caller, "] : Mobius url to contact: ").concat(url), {
1057
+ file: _constants2.REGISTRATION_FILE,
1058
+ method: _constants2.REGISTER_UTIL
1059
+ });
1060
+ // eslint-disable-next-line no-await-in-loop
1061
+ _context17.next = 9;
1062
+ return _this6.postRegistration(url);
1063
+ case 9:
1064
+ resp = _context17.sent;
1065
+ _this6.deviceInfo = resp.body;
1066
+ _this6.registrationStatus = _types2.RegistrationStatus.ACTIVE;
1067
+ _this6.setActiveMobiusUrl(url);
1068
+ _this6.lineEmitter(_types3.LINE_EVENTS.REGISTERED, resp.body);
1069
+ _Logger.default.log("Registration successful for deviceId: ".concat((_this6$deviceInfo$dev = _this6.deviceInfo.device) === null || _this6$deviceInfo$dev === void 0 ? void 0 : _this6$deviceInfo$dev.deviceId, " userId: ").concat(_this6.userId, " responseTrackingId: ").concat((_resp$headers = resp.headers) === null || _resp$headers === void 0 ? void 0 : _resp$headers.trackingid), {
1070
+ file: _constants2.REGISTRATION_FILE,
1071
+ method: _constants2.METHODS.REGISTER
1072
+ });
1073
+ _this6.setIntervalValues(_this6.deviceInfo);
1074
+ _this6.metricManager.setDeviceInfo(_this6.deviceInfo);
1075
+ _this6.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);
1076
+ _this6.startKeepaliveTimer((_this6$deviceInfo$dev2 = _this6.deviceInfo.device) === null || _this6$deviceInfo$dev2 === void 0 ? void 0 : _this6$deviceInfo$dev2.uri, _this6.deviceInfo.keepaliveInterval, serverType);
1077
+ _this6.initiateFailback();
1078
+ return _context17.abrupt("return", 0);
1079
+ case 23:
1080
+ _context17.prev = 23;
1081
+ _context17.t0 = _context17["catch"](2);
1082
+ body = _context17.t0; // eslint-disable-next-line no-await-in-loop, @typescript-eslint/no-unused-vars
1083
+ _context17.next = 28;
1084
+ return (0, _common.handleRegistrationErrors)(body, function (clientError, finalError) {
1085
+ var _body$headers$trackin, _body$headers;
1086
+ if (finalError) {
1087
+ _this6.lineEmitter(_types3.LINE_EVENTS.ERROR, undefined, clientError);
1088
+ } else {
1089
+ _this6.lineEmitter(_types3.LINE_EVENTS.UNREGISTERED);
1090
+ }
1091
+ _this6.metricManager.submitRegistrationMetric(_types.METRIC_EVENT.REGISTRATION_ERROR, _types.REG_ACTION.REGISTER, _types.METRIC_TYPE.BEHAVIORAL, caller, serverType, (_body$headers$trackin = (_body$headers = body.headers) === null || _body$headers === void 0 ? void 0 : _body$headers.trackingid) !== null && _body$headers$trackin !== void 0 ? _body$headers$trackin : '', undefined, clientError);
1092
+ }, {
1093
+ method: caller,
1094
+ file: _constants2.REGISTRATION_FILE
1095
+ }, function (retryAfter, retryCaller) {
1096
+ return _this6.handle429Retry(retryAfter, retryCaller);
1097
+ }, _this6.restoreRegistrationCallBack());
1098
+ case 28:
1099
+ abort = _context17.sent;
1100
+ if (!(_this6.registrationStatus === _types2.RegistrationStatus.ACTIVE)) {
1101
+ _context17.next = 32;
1102
+ break;
1103
+ }
1104
+ _Logger.default.info("[".concat(caller, "] : Device is already restored, active mobius url: ").concat(_this6.activeMobiusUrl), {
1105
+ file: _constants2.REGISTRATION_FILE,
1106
+ method: _this6.attemptRegistrationWithServers.name
1107
+ });
1108
+ return _context17.abrupt("return", 0);
1109
+ case 32:
1110
+ if (!abort) {
1111
+ _context17.next = 37;
1112
+ break;
1113
+ }
1114
+ _this6.setStatus(_types2.RegistrationStatus.INACTIVE);
1115
+ // eslint-disable-next-line no-await-in-loop
1116
+ _context17.next = 36;
1117
+ return (0, _common.uploadLogs)();
1118
+ case 36:
1119
+ return _context17.abrupt("return", 0);
1120
+ case 37:
1121
+ case "end":
1122
+ return _context17.stop();
1123
+ }
1124
+ }, _loop, null, [[2, 23]]);
1019
1125
  });
1020
- this.setActiveMobiusUrl(url);
1021
- this.setIntervalValues(this.deviceInfo);
1022
- this.metricManager.setDeviceInfo(this.deviceInfo);
1023
- this.metricManager.submitRegistrationMetric(_types.METRIC_EVENT.REGISTRATION, _types.REG_ACTION.REGISTER, _types.METRIC_TYPE.BEHAVIORAL, undefined);
1024
- this.startKeepaliveTimer((_this$deviceInfo$devi2 = this.deviceInfo.device) === null || _this$deviceInfo$devi2 === void 0 ? void 0 : _this$deviceInfo$devi2.uri, this.deviceInfo.keepaliveInterval);
1025
- this.initiateFailback();
1026
- return _context19.abrupt("break", 48);
1027
- case 34:
1028
- _context19.prev = 34;
1029
- _context19.t0 = _context19["catch"](13);
1030
- body = _context19.t0; // eslint-disable-next-line no-await-in-loop, @typescript-eslint/no-unused-vars
1031
- _context19.next = 39;
1032
- return (0, _common.handleRegistrationErrors)(body, function (clientError, finalError) {
1033
- if (finalError) {
1034
- _this6.lineEmitter(_types3.LINE_EVENTS.ERROR, undefined, clientError);
1035
- } else {
1036
- _this6.lineEmitter(_types3.LINE_EVENTS.UNREGISTERED);
1037
- }
1038
- _this6.metricManager.submitRegistrationMetric(_types.METRIC_EVENT.REGISTRATION_ERROR, _types.REG_ACTION.REGISTER, _types.METRIC_TYPE.BEHAVIORAL, clientError);
1039
- }, {
1040
- method: caller,
1041
- file: _constants2.REGISTRATION_FILE
1042
- }, function (retryAfter, retryCaller) {
1043
- return _this6.handle429Retry(retryAfter, retryCaller);
1044
- }, this.restoreRegistrationCallBack());
1045
- case 39:
1046
- abort = _context19.sent;
1047
- if (!(this.registrationStatus === _types2.RegistrationStatus.ACTIVE)) {
1048
- _context19.next = 43;
1126
+ _iterator2.s();
1127
+ case 12:
1128
+ if ((_step2 = _iterator2.n()).done) {
1129
+ _context18.next = 19;
1049
1130
  break;
1050
1131
  }
1051
- _Logger.default.info("[".concat(caller, "] : Device is already restored, active mobius url: ").concat(this.activeMobiusUrl), {
1052
- file: _constants2.REGISTRATION_FILE,
1053
- method: this.attemptRegistrationWithServers.name
1054
- });
1055
- return _context19.abrupt("break", 48);
1056
- case 43:
1057
- if (!abort) {
1058
- _context19.next = 46;
1132
+ return _context18.delegateYield(_loop(), "t0", 14);
1133
+ case 14:
1134
+ _ret = _context18.t0;
1135
+ if (!(_ret === 0)) {
1136
+ _context18.next = 17;
1059
1137
  break;
1060
1138
  }
1061
- this.setStatus(_types2.RegistrationStatus.INACTIVE);
1062
- return _context19.abrupt("break", 48);
1063
- case 46:
1064
- _context19.next = 11;
1139
+ return _context18.abrupt("break", 19);
1140
+ case 17:
1141
+ _context18.next = 12;
1065
1142
  break;
1066
- case 48:
1067
- _context19.next = 53;
1143
+ case 19:
1144
+ _context18.next = 24;
1068
1145
  break;
1069
- case 50:
1070
- _context19.prev = 50;
1071
- _context19.t1 = _context19["catch"](9);
1072
- _iterator.e(_context19.t1);
1073
- case 53:
1074
- _context19.prev = 53;
1075
- _iterator.f();
1076
- return _context19.finish(53);
1077
- case 56:
1078
- return _context19.abrupt("return", abort);
1079
- case 57:
1146
+ case 21:
1147
+ _context18.prev = 21;
1148
+ _context18.t1 = _context18["catch"](9);
1149
+ _iterator2.e(_context18.t1);
1150
+ case 24:
1151
+ _context18.prev = 24;
1152
+ _iterator2.f();
1153
+ return _context18.finish(24);
1154
+ case 27:
1155
+ return _context18.abrupt("return", abort);
1156
+ case 28:
1080
1157
  case "end":
1081
- return _context19.stop();
1158
+ return _context18.stop();
1082
1159
  }
1083
- }, _callee19, this, [[9, 50, 53, 56], [13, 34]]);
1160
+ }, _callee17, this, [[9, 21, 24, 27]]);
1084
1161
  }));
1085
- function attemptRegistrationWithServers(_x13) {
1162
+ function attemptRegistrationWithServers(_x10) {
1086
1163
  return _attemptRegistrationWithServers.apply(this, arguments);
1087
1164
  }
1088
1165
  return attemptRegistrationWithServers;
@@ -1094,103 +1171,141 @@ var Registration = exports.Registration = /*#__PURE__*/function () {
1094
1171
  )
1095
1172
  }, {
1096
1173
  key: "startKeepaliveTimer",
1097
- value: function startKeepaliveTimer(url, interval) {
1098
- var _this7 = this;
1099
- var keepAliveRetryCount = 0;
1100
- this.clearKeepaliveTimer();
1101
- var RETRY_COUNT_THRESHOLD = this.isCCFlow ? 4 : 5;
1102
- this.keepaliveTimer = setInterval( /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee21() {
1103
- var logContext;
1104
- return _regenerator.default.wrap(function _callee21$(_context21) {
1174
+ value: (function () {
1175
+ var _startKeepaliveTimer = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee20(url, interval, serverType) {
1176
+ var _this7 = this;
1177
+ var RETRY_COUNT_THRESHOLD;
1178
+ return _regenerator.default.wrap(function _callee20$(_context21) {
1105
1179
  while (1) switch (_context21.prev = _context21.next) {
1106
1180
  case 0:
1107
- logContext = {
1108
- file: _constants2.REGISTRATION_FILE,
1109
- method: _this7.startKeepaliveTimer.name
1110
- };
1111
- _context21.next = 3;
1112
- return _this7.mutex.runExclusive( /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee20() {
1113
- var res, error, abort;
1114
- return _regenerator.default.wrap(function _callee20$(_context20) {
1181
+ this.clearKeepaliveTimer();
1182
+ RETRY_COUNT_THRESHOLD = this.isCCFlow ? 4 : 5;
1183
+ _context21.next = 4;
1184
+ return this.mutex.runExclusive(/*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee19() {
1185
+ var accessToken, blob, blobUrl;
1186
+ return _regenerator.default.wrap(function _callee19$(_context20) {
1115
1187
  while (1) switch (_context20.prev = _context20.next) {
1116
1188
  case 0:
1117
- if (!(_this7.isDeviceRegistered() && keepAliveRetryCount < RETRY_COUNT_THRESHOLD)) {
1118
- _context20.next = 30;
1189
+ if (!_this7.isDeviceRegistered()) {
1190
+ _context20.next = 5;
1119
1191
  break;
1120
1192
  }
1121
- _context20.prev = 1;
1122
- _context20.next = 4;
1123
- return _this7.postKeepAlive(url);
1124
- case 4:
1125
- res = _context20.sent;
1126
- _Logger.default.log("Sent Keepalive, status: ".concat(res.statusCode), logContext);
1127
- if (keepAliveRetryCount > 0) {
1128
- _this7.lineEmitter(_types3.LINE_EVENTS.RECONNECTED);
1129
- }
1130
- keepAliveRetryCount = 0;
1131
- _context20.next = 30;
1132
- break;
1133
- case 10:
1134
- _context20.prev = 10;
1135
- _context20.t0 = _context20["catch"](1);
1136
- keepAliveRetryCount += 1;
1137
- error = _context20.t0;
1138
- _Logger.default.warn("Keep-alive missed ".concat(keepAliveRetryCount, " times. Status -> ").concat(error.statusCode, " "), logContext);
1139
- _context20.next = 17;
1140
- return (0, _common.handleRegistrationErrors)(error, function (clientError, finalError) {
1141
- if (finalError) {
1142
- _this7.lineEmitter(_types3.LINE_EVENTS.ERROR, undefined, clientError);
1143
- }
1144
- _this7.metricManager.submitRegistrationMetric(_types.METRIC_EVENT.REGISTRATION, _types.REG_ACTION.KEEPALIVE_FAILURE, _types.METRIC_TYPE.BEHAVIORAL, clientError);
1145
- }, {
1146
- method: _this7.startKeepaliveTimer.name,
1147
- file: _constants2.REGISTRATION_FILE
1148
- });
1149
- case 17:
1150
- abort = _context20.sent;
1151
- if (!(abort || keepAliveRetryCount >= RETRY_COUNT_THRESHOLD)) {
1152
- _context20.next = 29;
1153
- break;
1154
- }
1155
- _this7.failoverImmediately = _this7.isCCFlow;
1156
- _this7.setStatus(_types2.RegistrationStatus.INACTIVE);
1157
- _this7.clearKeepaliveTimer();
1158
- _this7.clearFailbackTimer();
1159
- _this7.lineEmitter(_types3.LINE_EVENTS.UNREGISTERED);
1160
- if (abort) {
1161
- _context20.next = 27;
1162
- break;
1193
+ _context20.next = 3;
1194
+ return _this7.webex.credentials.getUserToken();
1195
+ case 3:
1196
+ accessToken = _context20.sent;
1197
+ if (!_this7.webWorker) {
1198
+ blob = new Blob([_webWorkerStr.default], {
1199
+ type: 'application/javascript'
1200
+ });
1201
+ blobUrl = URL.createObjectURL(blob);
1202
+ _this7.webWorker = new Worker(blobUrl);
1203
+ URL.revokeObjectURL(blobUrl);
1204
+ _this7.webWorker.postMessage({
1205
+ type: _types2.WorkerMessageType.START_KEEPALIVE,
1206
+ accessToken: String(accessToken),
1207
+ deviceUrl: String(_this7.webex.internal.device.url),
1208
+ interval: interval,
1209
+ retryCountThreshold: RETRY_COUNT_THRESHOLD,
1210
+ url: url
1211
+ });
1212
+ _this7.webWorker.onmessage = /*#__PURE__*/function () {
1213
+ var _ref1 = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee18(event) {
1214
+ var logContext, error, abort;
1215
+ return _regenerator.default.wrap(function _callee18$(_context19) {
1216
+ while (1) switch (_context19.prev = _context19.next) {
1217
+ case 0:
1218
+ logContext = {
1219
+ file: _constants2.REGISTRATION_FILE,
1220
+ method: _this7.startKeepaliveTimer.name
1221
+ };
1222
+ if (event.data.type === _types2.WorkerMessageType.KEEPALIVE_SUCCESS) {
1223
+ _Logger.default.info("Sent Keepalive, status: ".concat(event.data.statusCode), logContext);
1224
+ _this7.lineEmitter(_types3.LINE_EVENTS.RECONNECTED);
1225
+ }
1226
+ if (!(event.data.type === _types2.WorkerMessageType.KEEPALIVE_FAILURE)) {
1227
+ _context19.next = 22;
1228
+ break;
1229
+ }
1230
+ error = event.data.err;
1231
+ _Logger.default.warn("Keep-alive missed ".concat(event.data.keepAliveRetryCount, " times. Status -> ").concat(error.statusCode, " "), logContext);
1232
+ _context19.next = 7;
1233
+ return (0, _common.handleRegistrationErrors)(error, function (clientError, finalError) {
1234
+ var _error$headers$tracki, _error$headers;
1235
+ if (finalError) {
1236
+ _this7.lineEmitter(_types3.LINE_EVENTS.ERROR, undefined, clientError);
1237
+ }
1238
+ _this7.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);
1239
+ }, {
1240
+ method: _constants2.KEEPALIVE_UTIL,
1241
+ file: _constants2.REGISTRATION_FILE
1242
+ });
1243
+ case 7:
1244
+ abort = _context19.sent;
1245
+ if (!(abort || event.data.keepAliveRetryCount >= RETRY_COUNT_THRESHOLD)) {
1246
+ _context19.next = 21;
1247
+ break;
1248
+ }
1249
+ _this7.failoverImmediately = _this7.isCCFlow;
1250
+ _this7.setStatus(_types2.RegistrationStatus.INACTIVE);
1251
+ _this7.clearKeepaliveTimer();
1252
+ _this7.clearFailbackTimer();
1253
+ _this7.lineEmitter(_types3.LINE_EVENTS.UNREGISTERED);
1254
+ _context19.next = 16;
1255
+ return (0, _common.uploadLogs)();
1256
+ case 16:
1257
+ if (abort) {
1258
+ _context19.next = 19;
1259
+ break;
1260
+ }
1261
+ _context19.next = 19;
1262
+ return _this7.reconnectOnFailure(_constants2.KEEPALIVE_UTIL);
1263
+ case 19:
1264
+ _context19.next = 22;
1265
+ break;
1266
+ case 21:
1267
+ _this7.lineEmitter(_types3.LINE_EVENTS.RECONNECTING);
1268
+ case 22:
1269
+ case "end":
1270
+ return _context19.stop();
1271
+ }
1272
+ }, _callee18);
1273
+ }));
1274
+ return function (_x14) {
1275
+ return _ref1.apply(this, arguments);
1276
+ };
1277
+ }();
1163
1278
  }
1164
- _context20.next = 27;
1165
- return _this7.reconnectOnFailure(_this7.startKeepaliveTimer.name);
1166
- case 27:
1167
- _context20.next = 30;
1168
- break;
1169
- case 29:
1170
- _this7.lineEmitter(_types3.LINE_EVENTS.RECONNECTING);
1171
- case 30:
1279
+ case 5:
1172
1280
  case "end":
1173
1281
  return _context20.stop();
1174
1282
  }
1175
- }, _callee20, null, [[1, 10]]);
1283
+ }, _callee19);
1176
1284
  })));
1177
- case 3:
1285
+ case 4:
1178
1286
  case "end":
1179
1287
  return _context21.stop();
1180
1288
  }
1181
- }, _callee21);
1182
- })), interval * 1000);
1183
- }
1184
-
1289
+ }, _callee20, this);
1290
+ }));
1291
+ function startKeepaliveTimer(_x11, _x12, _x13) {
1292
+ return _startKeepaliveTimer.apply(this, arguments);
1293
+ }
1294
+ return startKeepaliveTimer;
1295
+ }()
1185
1296
  /**
1186
1297
  * Clears the keepalive timer if running.
1187
1298
  */
1299
+ )
1188
1300
  }, {
1189
1301
  key: "clearKeepaliveTimer",
1190
1302
  value: function clearKeepaliveTimer() {
1191
- if (this.keepaliveTimer) {
1192
- clearInterval(this.keepaliveTimer);
1193
- this.keepaliveTimer = undefined;
1303
+ if (this.webWorker) {
1304
+ this.webWorker.postMessage({
1305
+ type: _types2.WorkerMessageType.CLEAR_KEEPALIVE
1306
+ });
1307
+ this.webWorker.terminate();
1308
+ this.webWorker = undefined;
1194
1309
  }
1195
1310
  }
1196
1311
  }, {
@@ -1201,14 +1316,14 @@ var Registration = exports.Registration = /*#__PURE__*/function () {
1201
1316
  }, {
1202
1317
  key: "deregister",
1203
1318
  value: function () {
1204
- var _deregister = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee22() {
1205
- var _this$deviceInfo$devi3, _this$deviceInfo$devi4;
1206
- return _regenerator.default.wrap(function _callee22$(_context22) {
1319
+ var _deregister = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee21() {
1320
+ var _this$deviceInfo$devi, _this$deviceInfo$devi2;
1321
+ return _regenerator.default.wrap(function _callee21$(_context22) {
1207
1322
  while (1) switch (_context22.prev = _context22.next) {
1208
1323
  case 0:
1209
1324
  _context22.prev = 0;
1210
1325
  _context22.next = 3;
1211
- return this.deleteRegistration(this.activeMobiusUrl, (_this$deviceInfo$devi3 = this.deviceInfo.device) === null || _this$deviceInfo$devi3 === void 0 ? void 0 : _this$deviceInfo$devi3.deviceId, (_this$deviceInfo$devi4 = this.deviceInfo.device) === null || _this$deviceInfo$devi4 === void 0 ? void 0 : _this$deviceInfo$devi4.clientDeviceUri);
1326
+ 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);
1212
1327
  case 3:
1213
1328
  _Logger.default.log('Registration successfully deregistered', {
1214
1329
  file: _constants2.REGISTRATION_FILE,
@@ -1230,7 +1345,7 @@ var Registration = exports.Registration = /*#__PURE__*/function () {
1230
1345
  case "end":
1231
1346
  return _context22.stop();
1232
1347
  }
1233
- }, _callee22, this, [[0, 6]]);
1348
+ }, _callee21, this, [[0, 6]]);
1234
1349
  }));
1235
1350
  function deregister() {
1236
1351
  return _deregister.apply(this, arguments);
@@ -1238,8 +1353,8 @@ var Registration = exports.Registration = /*#__PURE__*/function () {
1238
1353
  return deregister;
1239
1354
  }()
1240
1355
  /**
1241
- * Indicates whether the calling client is in a mode
1242
- * to retry registration.
1356
+ * Indicates whether the calling client is in a mode
1357
+ * to retry registration.
1243
1358
  */
1244
1359
  }, {
1245
1360
  key: "isRegRetry",
@@ -1294,9 +1409,9 @@ var Registration = exports.Registration = /*#__PURE__*/function () {
1294
1409
  }, {
1295
1410
  key: "reconnectOnFailure",
1296
1411
  value: (function () {
1297
- var _reconnectOnFailure = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee23(caller) {
1412
+ var _reconnectOnFailure = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee22(caller) {
1298
1413
  var abort;
1299
- return _regenerator.default.wrap(function _callee23$(_context23) {
1414
+ return _regenerator.default.wrap(function _callee22$(_context23) {
1300
1415
  while (1) switch (_context23.prev = _context23.next) {
1301
1416
  case 0:
1302
1417
  _Logger.default.info(_constants.METHOD_START_MESSAGE, {
@@ -1335,9 +1450,9 @@ var Registration = exports.Registration = /*#__PURE__*/function () {
1335
1450
  case "end":
1336
1451
  return _context23.stop();
1337
1452
  }
1338
- }, _callee23, this);
1453
+ }, _callee22, this);
1339
1454
  }));
1340
- function reconnectOnFailure(_x14) {
1455
+ function reconnectOnFailure(_x15) {
1341
1456
  return _reconnectOnFailure.apply(this, arguments);
1342
1457
  }
1343
1458
  return reconnectOnFailure;