@webex/calling 3.11.0 → 3.12.0-llmrefactor.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 (368) hide show
  1. package/dist/CallHistory/CallHistory.js +596 -0
  2. package/dist/CallHistory/CallHistory.js.map +1 -0
  3. package/dist/CallHistory/CallHistory.test.js +916 -0
  4. package/dist/CallHistory/CallHistory.test.js.map +1 -0
  5. package/dist/CallHistory/callHistoryFixtures.js +650 -0
  6. package/dist/CallHistory/callHistoryFixtures.js.map +1 -0
  7. package/dist/CallHistory/constants.js +38 -0
  8. package/dist/CallHistory/constants.js.map +1 -0
  9. package/dist/CallHistory/types.js +7 -0
  10. package/dist/CallHistory/types.js.map +1 -0
  11. package/dist/CallRecording/CallRecording.js +160 -0
  12. package/dist/CallRecording/CallRecording.js.map +1 -0
  13. package/dist/CallRecording/CallRecording.test.js +257 -0
  14. package/dist/CallRecording/CallRecording.test.js.map +1 -0
  15. package/dist/CallRecording/WxcCallRecordingConnector.js +577 -0
  16. package/dist/CallRecording/WxcCallRecordingConnector.js.map +1 -0
  17. package/dist/CallRecording/WxcCallRecordingConnector.test.js +652 -0
  18. package/dist/CallRecording/WxcCallRecordingConnector.test.js.map +1 -0
  19. package/dist/CallRecording/callRecordingFixtures.js +235 -0
  20. package/dist/CallRecording/callRecordingFixtures.js.map +1 -0
  21. package/dist/CallRecording/constants.js +50 -0
  22. package/dist/CallRecording/constants.js.map +1 -0
  23. package/dist/CallRecording/types.js +137 -0
  24. package/dist/CallRecording/types.js.map +1 -0
  25. package/dist/CallRecording/utils.js +42 -0
  26. package/dist/CallRecording/utils.js.map +1 -0
  27. package/dist/CallRecording/utils.test.js +97 -0
  28. package/dist/CallRecording/utils.test.js.map +1 -0
  29. package/dist/CallSettings/CallSettings.js +311 -0
  30. package/dist/CallSettings/CallSettings.js.map +1 -0
  31. package/dist/CallSettings/CallSettings.test.js +122 -0
  32. package/dist/CallSettings/CallSettings.test.js.map +1 -0
  33. package/dist/CallSettings/UcmBackendConnector.js +308 -0
  34. package/dist/CallSettings/UcmBackendConnector.js.map +1 -0
  35. package/dist/CallSettings/UcmBackendConnector.test.js +411 -0
  36. package/dist/CallSettings/UcmBackendConnector.test.js.map +1 -0
  37. package/dist/CallSettings/WxCallBackendConnector.js +597 -0
  38. package/dist/CallSettings/WxCallBackendConnector.js.map +1 -0
  39. package/dist/CallSettings/WxCallBackendConnector.test.js +904 -0
  40. package/dist/CallSettings/WxCallBackendConnector.test.js.map +1 -0
  41. package/dist/CallSettings/constants.js +31 -0
  42. package/dist/CallSettings/constants.js.map +1 -0
  43. package/dist/CallSettings/testFixtures.js +68 -0
  44. package/dist/CallSettings/testFixtures.js.map +1 -0
  45. package/dist/CallSettings/types.js +7 -0
  46. package/dist/CallSettings/types.js.map +1 -0
  47. package/dist/CallingClient/CallingClient.js +1349 -0
  48. package/dist/CallingClient/CallingClient.js.map +1 -0
  49. package/dist/CallingClient/CallingClient.test.js +1625 -0
  50. package/dist/CallingClient/CallingClient.test.js.map +1 -0
  51. package/dist/CallingClient/callRecordFixtures.js +101 -0
  52. package/dist/CallingClient/callRecordFixtures.js.map +1 -0
  53. package/dist/CallingClient/calling/CallerId/index.js +275 -0
  54. package/dist/CallingClient/calling/CallerId/index.js.map +1 -0
  55. package/dist/CallingClient/calling/CallerId/index.test.js +275 -0
  56. package/dist/CallingClient/calling/CallerId/index.test.js.map +1 -0
  57. package/dist/CallingClient/calling/CallerId/types.js +7 -0
  58. package/dist/CallingClient/calling/CallerId/types.js.map +1 -0
  59. package/dist/CallingClient/calling/call.js +3666 -0
  60. package/dist/CallingClient/calling/call.js.map +1 -0
  61. package/dist/CallingClient/calling/call.test.js +3970 -0
  62. package/dist/CallingClient/calling/call.test.js.map +1 -0
  63. package/dist/CallingClient/calling/callManager.js +531 -0
  64. package/dist/CallingClient/calling/callManager.js.map +1 -0
  65. package/dist/CallingClient/calling/callManager.test.js +881 -0
  66. package/dist/CallingClient/calling/callManager.test.js.map +1 -0
  67. package/dist/CallingClient/calling/index.js +30 -0
  68. package/dist/CallingClient/calling/index.js.map +1 -0
  69. package/dist/CallingClient/calling/types.js +79 -0
  70. package/dist/CallingClient/calling/types.js.map +1 -0
  71. package/dist/CallingClient/callingClientFixtures.js +143 -0
  72. package/dist/CallingClient/callingClientFixtures.js.map +1 -0
  73. package/dist/CallingClient/constants.js +270 -0
  74. package/dist/CallingClient/constants.js.map +1 -0
  75. package/dist/CallingClient/line/index.js +335 -0
  76. package/dist/CallingClient/line/index.js.map +1 -0
  77. package/dist/CallingClient/line/line.test.js +342 -0
  78. package/dist/CallingClient/line/line.test.js.map +1 -0
  79. package/dist/CallingClient/line/types.js +21 -0
  80. package/dist/CallingClient/line/types.js.map +1 -0
  81. package/dist/CallingClient/registration/index.js +19 -0
  82. package/dist/CallingClient/registration/index.js.map +1 -0
  83. package/dist/CallingClient/registration/register.js +2003 -0
  84. package/dist/CallingClient/registration/register.js.map +1 -0
  85. package/dist/CallingClient/registration/register.test.js +2207 -0
  86. package/dist/CallingClient/registration/register.test.js.map +1 -0
  87. package/dist/CallingClient/registration/registerFixtures.js +36 -0
  88. package/dist/CallingClient/registration/registerFixtures.js.map +1 -0
  89. package/dist/CallingClient/registration/types.js +7 -0
  90. package/dist/CallingClient/registration/types.js.map +1 -0
  91. package/dist/CallingClient/registration/webWorker.js +67 -0
  92. package/dist/CallingClient/registration/webWorker.js.map +1 -0
  93. package/dist/CallingClient/registration/webWorker.test.js +189 -0
  94. package/dist/CallingClient/registration/webWorker.test.js.map +1 -0
  95. package/dist/CallingClient/registration/webWorkerStr.js +15 -0
  96. package/dist/CallingClient/registration/webWorkerStr.js.map +1 -0
  97. package/dist/CallingClient/types.js +14 -0
  98. package/dist/CallingClient/types.js.map +1 -0
  99. package/dist/CallingClient/utils/constants.js +58 -0
  100. package/dist/CallingClient/utils/constants.js.map +1 -0
  101. package/dist/CallingClient/utils/index.js +63 -0
  102. package/dist/CallingClient/utils/index.js.map +1 -0
  103. package/dist/CallingClient/utils/mobiusSocketMapper.js +122 -0
  104. package/dist/CallingClient/utils/mobiusSocketMapper.js.map +1 -0
  105. package/dist/CallingClient/utils/mobiusSocketMapper.test.js +221 -0
  106. package/dist/CallingClient/utils/mobiusSocketMapper.test.js.map +1 -0
  107. package/dist/CallingClient/utils/request.js +435 -0
  108. package/dist/CallingClient/utils/request.js.map +1 -0
  109. package/dist/CallingClient/utils/request.test.js +999 -0
  110. package/dist/CallingClient/utils/request.test.js.map +1 -0
  111. package/dist/CallingClient/utils/types.js +7 -0
  112. package/dist/CallingClient/utils/types.js.map +1 -0
  113. package/dist/CallingClient/utils/wsFeatureFlag.js +70 -0
  114. package/dist/CallingClient/utils/wsFeatureFlag.js.map +1 -0
  115. package/dist/CallingClient/utils/wsFeatureFlag.test.js +139 -0
  116. package/dist/CallingClient/utils/wsFeatureFlag.test.js.map +1 -0
  117. package/dist/CallingClient/windowsChromiumIceWarmupUtils.js +142 -0
  118. package/dist/CallingClient/windowsChromiumIceWarmupUtils.js.map +1 -0
  119. package/dist/Contacts/ContactsClient.js +1208 -0
  120. package/dist/Contacts/ContactsClient.js.map +1 -0
  121. package/dist/Contacts/ContactsClient.test.js +999 -0
  122. package/dist/Contacts/ContactsClient.test.js.map +1 -0
  123. package/dist/Contacts/constants.js +40 -0
  124. package/dist/Contacts/constants.js.map +1 -0
  125. package/dist/Contacts/contactFixtures.js +430 -0
  126. package/dist/Contacts/contactFixtures.js.map +1 -0
  127. package/dist/Contacts/types.js +43 -0
  128. package/dist/Contacts/types.js.map +1 -0
  129. package/dist/Errors/catalog/CallError.js +89 -0
  130. package/dist/Errors/catalog/CallError.js.map +1 -0
  131. package/dist/Errors/catalog/CallingDeviceError.js +83 -0
  132. package/dist/Errors/catalog/CallingDeviceError.js.map +1 -0
  133. package/dist/Errors/catalog/ExtendedError.js +42 -0
  134. package/dist/Errors/catalog/ExtendedError.js.map +1 -0
  135. package/dist/Errors/catalog/LineError.js +85 -0
  136. package/dist/Errors/catalog/LineError.js.map +1 -0
  137. package/dist/Errors/index.js +28 -0
  138. package/dist/Errors/index.js.map +1 -0
  139. package/dist/Errors/types.js +59 -0
  140. package/dist/Errors/types.js.map +1 -0
  141. package/dist/Events/impl/index.js +79 -0
  142. package/dist/Events/impl/index.js.map +1 -0
  143. package/dist/Events/types.js +134 -0
  144. package/dist/Events/types.js.map +1 -0
  145. package/dist/Logger/index.js +228 -0
  146. package/dist/Logger/index.js.map +1 -0
  147. package/dist/Logger/index.test.js +87 -0
  148. package/dist/Logger/index.test.js.map +1 -0
  149. package/dist/Logger/types.js +34 -0
  150. package/dist/Logger/types.js.map +1 -0
  151. package/dist/Metrics/index.js +595 -0
  152. package/dist/Metrics/index.js.map +1 -0
  153. package/dist/Metrics/index.test.js +819 -0
  154. package/dist/Metrics/index.test.js.map +1 -0
  155. package/dist/Metrics/types.js +82 -0
  156. package/dist/Metrics/types.js.map +1 -0
  157. package/dist/SDKConnector/index.js +102 -0
  158. package/dist/SDKConnector/index.js.map +1 -0
  159. package/dist/SDKConnector/index.test.js +9 -0
  160. package/dist/SDKConnector/index.test.js.map +1 -0
  161. package/dist/SDKConnector/types.js +7 -0
  162. package/dist/SDKConnector/types.js.map +1 -0
  163. package/dist/SDKConnector/utils.js +39 -0
  164. package/dist/SDKConnector/utils.js.map +1 -0
  165. package/dist/SDKConnector/utils.test.js +9 -0
  166. package/dist/SDKConnector/utils.test.js.map +1 -0
  167. package/dist/Voicemail/BroadworksBackendConnector.js +699 -0
  168. package/dist/Voicemail/BroadworksBackendConnector.js.map +1 -0
  169. package/dist/Voicemail/BroadworksBackendConnector.test.js +820 -0
  170. package/dist/Voicemail/BroadworksBackendConnector.test.js.map +1 -0
  171. package/dist/Voicemail/UcmBackendConnector.js +628 -0
  172. package/dist/Voicemail/UcmBackendConnector.js.map +1 -0
  173. package/dist/Voicemail/UcmBackendConnector.test.js +738 -0
  174. package/dist/Voicemail/UcmBackendConnector.test.js.map +1 -0
  175. package/dist/Voicemail/Voicemail.js +472 -0
  176. package/dist/Voicemail/Voicemail.js.map +1 -0
  177. package/dist/Voicemail/Voicemail.test.js +391 -0
  178. package/dist/Voicemail/Voicemail.test.js.map +1 -0
  179. package/dist/Voicemail/WxCallBackendConnector.js +657 -0
  180. package/dist/Voicemail/WxCallBackendConnector.js.map +1 -0
  181. package/dist/Voicemail/WxCallBackendConnector.test.js +1225 -0
  182. package/dist/Voicemail/WxCallBackendConnector.test.js.map +1 -0
  183. package/dist/Voicemail/constants.js +61 -0
  184. package/dist/Voicemail/constants.js.map +1 -0
  185. package/dist/Voicemail/types.js +7 -0
  186. package/dist/Voicemail/types.js.map +1 -0
  187. package/dist/Voicemail/voicemailFixture.js +524 -0
  188. package/dist/Voicemail/voicemailFixture.js.map +1 -0
  189. package/dist/api.js +213 -0
  190. package/dist/api.js.map +1 -0
  191. package/dist/common/Utils.js +1589 -0
  192. package/dist/common/Utils.js.map +1 -0
  193. package/dist/common/Utils.test.js +2150 -0
  194. package/dist/common/Utils.test.js.map +1 -0
  195. package/dist/common/constants.js +62 -0
  196. package/dist/common/constants.js.map +1 -0
  197. package/dist/common/index.js +19 -0
  198. package/dist/common/index.js.map +1 -0
  199. package/dist/common/testUtil.js +988 -0
  200. package/dist/common/testUtil.js.map +1 -0
  201. package/dist/common/types.js +78 -0
  202. package/dist/common/types.js.map +1 -0
  203. package/dist/index.js +452 -0
  204. package/dist/index.js.map +1 -0
  205. package/dist/mobius-socket/config.js +24 -0
  206. package/dist/mobius-socket/config.js.map +1 -0
  207. package/dist/mobius-socket/errors.js +143 -0
  208. package/dist/mobius-socket/errors.js.map +1 -0
  209. package/dist/mobius-socket/errors.test.js +20 -0
  210. package/dist/mobius-socket/errors.test.js.map +1 -0
  211. package/dist/mobius-socket/index.js +57 -0
  212. package/dist/mobius-socket/index.js.map +1 -0
  213. package/dist/mobius-socket/mobius-socket-events.test.js +492 -0
  214. package/dist/mobius-socket/mobius-socket-events.test.js.map +1 -0
  215. package/dist/mobius-socket/mobius-socket.js +849 -0
  216. package/dist/mobius-socket/mobius-socket.js.map +1 -0
  217. package/dist/mobius-socket/mobius-socket.test.js +1898 -0
  218. package/dist/mobius-socket/mobius-socket.test.js.map +1 -0
  219. package/dist/mobius-socket/socket/constants.js +55 -0
  220. package/dist/mobius-socket/socket/constants.js.map +1 -0
  221. package/dist/mobius-socket/socket/index.js +15 -0
  222. package/dist/mobius-socket/socket/index.js.map +1 -0
  223. package/dist/mobius-socket/socket/socket-base.js +604 -0
  224. package/dist/mobius-socket/socket/socket-base.js.map +1 -0
  225. package/dist/mobius-socket/socket/socket.js +19 -0
  226. package/dist/mobius-socket/socket/socket.js.map +1 -0
  227. package/dist/mobius-socket/socket/socket.shim.js +26 -0
  228. package/dist/mobius-socket/socket/socket.shim.js.map +1 -0
  229. package/dist/mobius-socket/socket/types.js +7 -0
  230. package/dist/mobius-socket/socket/types.js.map +1 -0
  231. package/dist/mobius-socket/socket.test.js +727 -0
  232. package/dist/mobius-socket/socket.test.js.map +1 -0
  233. package/dist/mobius-socket/test/mocha-helpers.js +23 -0
  234. package/dist/mobius-socket/test/mocha-helpers.js.map +1 -0
  235. package/dist/mobius-socket/test/promise-tick.js +28 -0
  236. package/dist/mobius-socket/test/promise-tick.js.map +1 -0
  237. package/dist/mobius-socket/types.js +7 -0
  238. package/dist/mobius-socket/types.js.map +1 -0
  239. package/dist/module/CallHistory/CallHistory.js +28 -17
  240. package/dist/module/CallRecording/CallRecording.js +56 -0
  241. package/dist/module/CallRecording/WxcCallRecordingConnector.js +257 -0
  242. package/dist/module/CallRecording/callRecordingFixtures.js +201 -0
  243. package/dist/module/CallRecording/constants.js +28 -0
  244. package/dist/module/CallRecording/types.js +19 -0
  245. package/dist/module/CallRecording/utils.js +14 -0
  246. package/dist/module/CallingClient/CallingClient.js +166 -8
  247. package/dist/module/CallingClient/calling/call.js +201 -68
  248. package/dist/module/CallingClient/calling/callManager.js +51 -11
  249. package/dist/module/CallingClient/calling/types.js +2 -0
  250. package/dist/module/CallingClient/constants.js +27 -0
  251. package/dist/module/CallingClient/line/index.js +2 -2
  252. package/dist/module/CallingClient/registration/register.js +247 -63
  253. package/dist/module/CallingClient/registration/webWorker.js +42 -61
  254. package/dist/module/CallingClient/registration/webWorkerStr.js +47 -82
  255. package/dist/module/CallingClient/utils/constants.js +36 -0
  256. package/dist/module/CallingClient/utils/index.js +5 -0
  257. package/dist/module/CallingClient/utils/mobiusSocketMapper.js +72 -0
  258. package/dist/module/CallingClient/utils/request.js +211 -0
  259. package/dist/module/CallingClient/utils/types.js +1 -0
  260. package/dist/module/CallingClient/utils/wsFeatureFlag.js +41 -0
  261. package/dist/module/Contacts/ContactsClient.js +1 -1
  262. package/dist/module/Events/types.js +23 -10
  263. package/dist/module/Metrics/index.js +48 -1
  264. package/dist/module/Metrics/types.js +18 -0
  265. package/dist/module/api.js +3 -2
  266. package/dist/module/common/Utils.js +63 -18
  267. package/dist/module/common/testUtil.js +6 -1
  268. package/dist/module/common/types.js +3 -0
  269. package/dist/module/index.js +7 -3
  270. package/dist/module/mobius-socket/config.js +15 -0
  271. package/dist/module/mobius-socket/errors.js +58 -0
  272. package/dist/module/mobius-socket/index.js +24 -0
  273. package/dist/module/mobius-socket/mobius-socket.js +593 -0
  274. package/dist/module/mobius-socket/socket/constants.js +26 -0
  275. package/dist/module/mobius-socket/socket/index.js +4 -0
  276. package/dist/module/mobius-socket/socket/socket-base.js +368 -0
  277. package/dist/module/mobius-socket/socket/socket.js +9 -0
  278. package/dist/module/mobius-socket/socket/socket.shim.js +12 -0
  279. package/dist/module/mobius-socket/socket/types.js +1 -0
  280. package/dist/module/mobius-socket/types.js +1 -0
  281. package/dist/types/CallHistory/CallHistory.d.ts.map +1 -1
  282. package/dist/types/CallRecording/CallRecording.d.ts +18 -0
  283. package/dist/types/CallRecording/CallRecording.d.ts.map +1 -0
  284. package/dist/types/CallRecording/WxcCallRecordingConnector.d.ts +23 -0
  285. package/dist/types/CallRecording/WxcCallRecordingConnector.d.ts.map +1 -0
  286. package/dist/types/CallRecording/callRecordingFixtures.d.ts +61 -0
  287. package/dist/types/CallRecording/callRecordingFixtures.d.ts.map +1 -0
  288. package/dist/types/CallRecording/constants.d.ts +29 -0
  289. package/dist/types/CallRecording/constants.d.ts.map +1 -0
  290. package/dist/types/CallRecording/types.d.ts +176 -0
  291. package/dist/types/CallRecording/types.d.ts.map +1 -0
  292. package/dist/types/CallRecording/utils.d.ts +3 -0
  293. package/dist/types/CallRecording/utils.d.ts.map +1 -0
  294. package/dist/types/CallingClient/CallingClient.d.ts +10 -1
  295. package/dist/types/CallingClient/CallingClient.d.ts.map +1 -1
  296. package/dist/types/CallingClient/calling/call.d.ts +17 -3
  297. package/dist/types/CallingClient/calling/call.d.ts.map +1 -1
  298. package/dist/types/CallingClient/calling/callManager.d.ts +8 -4
  299. package/dist/types/CallingClient/calling/callManager.d.ts.map +1 -1
  300. package/dist/types/CallingClient/calling/types.d.ts +38 -9
  301. package/dist/types/CallingClient/calling/types.d.ts.map +1 -1
  302. package/dist/types/CallingClient/constants.d.ts +27 -0
  303. package/dist/types/CallingClient/constants.d.ts.map +1 -1
  304. package/dist/types/CallingClient/line/index.d.ts +1 -1
  305. package/dist/types/CallingClient/line/index.d.ts.map +1 -1
  306. package/dist/types/CallingClient/registration/register.d.ts +9 -2
  307. package/dist/types/CallingClient/registration/register.d.ts.map +1 -1
  308. package/dist/types/CallingClient/registration/types.d.ts +6 -3
  309. package/dist/types/CallingClient/registration/types.d.ts.map +1 -1
  310. package/dist/types/CallingClient/registration/webWorker.d.ts.map +1 -1
  311. package/dist/types/CallingClient/registration/webWorkerStr.d.ts +1 -1
  312. package/dist/types/CallingClient/registration/webWorkerStr.d.ts.map +1 -1
  313. package/dist/types/CallingClient/types.d.ts +6 -3
  314. package/dist/types/CallingClient/types.d.ts.map +1 -1
  315. package/dist/types/CallingClient/utils/constants.d.ts +35 -0
  316. package/dist/types/CallingClient/utils/constants.d.ts.map +1 -0
  317. package/dist/types/CallingClient/utils/index.d.ts +6 -0
  318. package/dist/types/CallingClient/utils/index.d.ts.map +1 -0
  319. package/dist/types/CallingClient/utils/mobiusSocketMapper.d.ts +5 -0
  320. package/dist/types/CallingClient/utils/mobiusSocketMapper.d.ts.map +1 -0
  321. package/dist/types/CallingClient/utils/request.d.ts +28 -0
  322. package/dist/types/CallingClient/utils/request.d.ts.map +1 -0
  323. package/dist/types/CallingClient/utils/types.d.ts +34 -0
  324. package/dist/types/CallingClient/utils/types.d.ts.map +1 -0
  325. package/dist/types/CallingClient/utils/wsFeatureFlag.d.ts +4 -0
  326. package/dist/types/CallingClient/utils/wsFeatureFlag.d.ts.map +1 -0
  327. package/dist/types/Events/types.d.ts +79 -15
  328. package/dist/types/Events/types.d.ts.map +1 -1
  329. package/dist/types/Metrics/index.d.ts.map +1 -1
  330. package/dist/types/Metrics/types.d.ts +19 -2
  331. package/dist/types/Metrics/types.d.ts.map +1 -1
  332. package/dist/types/SDKConnector/types.d.ts +39 -12
  333. package/dist/types/SDKConnector/types.d.ts.map +1 -1
  334. package/dist/types/api.d.ts +6 -4
  335. package/dist/types/api.d.ts.map +1 -1
  336. package/dist/types/common/Utils.d.ts +11 -3
  337. package/dist/types/common/Utils.d.ts.map +1 -1
  338. package/dist/types/common/testUtil.d.ts +5 -1
  339. package/dist/types/common/testUtil.d.ts.map +1 -1
  340. package/dist/types/common/types.d.ts +9 -1
  341. package/dist/types/common/types.d.ts.map +1 -1
  342. package/dist/types/index.d.ts +9 -4
  343. package/dist/types/index.d.ts.map +1 -1
  344. package/dist/types/mobius-socket/config.d.ts +17 -0
  345. package/dist/types/mobius-socket/config.d.ts.map +1 -0
  346. package/dist/types/mobius-socket/errors.d.ts +32 -0
  347. package/dist/types/mobius-socket/errors.d.ts.map +1 -0
  348. package/dist/types/mobius-socket/index.d.ts +14 -0
  349. package/dist/types/mobius-socket/index.d.ts.map +1 -0
  350. package/dist/types/mobius-socket/mobius-socket.d.ts +48 -0
  351. package/dist/types/mobius-socket/mobius-socket.d.ts.map +1 -0
  352. package/dist/types/mobius-socket/socket/constants.d.ts +27 -0
  353. package/dist/types/mobius-socket/socket/constants.d.ts.map +1 -0
  354. package/dist/types/mobius-socket/socket/index.d.ts +5 -0
  355. package/dist/types/mobius-socket/socket/index.d.ts.map +1 -0
  356. package/dist/types/mobius-socket/socket/socket-base.d.ts +43 -0
  357. package/dist/types/mobius-socket/socket/socket-base.d.ts.map +1 -0
  358. package/dist/types/mobius-socket/socket/socket.d.ts +6 -0
  359. package/dist/types/mobius-socket/socket/socket.d.ts.map +1 -0
  360. package/dist/types/mobius-socket/socket/socket.shim.d.ts +6 -0
  361. package/dist/types/mobius-socket/socket/socket.shim.d.ts.map +1 -0
  362. package/dist/types/mobius-socket/socket/types.d.ts +61 -0
  363. package/dist/types/mobius-socket/socket/types.d.ts.map +1 -0
  364. package/dist/types/mobius-socket/types.d.ts +21 -0
  365. package/dist/types/mobius-socket/types.d.ts.map +1 -0
  366. package/package.json +21 -5
  367. package/src/mobius-socket/socket/socket.shim.ts +22 -0
  368. package/src/mobius-socket/socket/socket.ts +14 -0
@@ -0,0 +1,2003 @@
1
+ "use strict";
2
+
3
+ var _Object$keys2 = require("@babel/runtime-corejs2/core-js/object/keys");
4
+ var _Object$getOwnPropertySymbols = require("@babel/runtime-corejs2/core-js/object/get-own-property-symbols");
5
+ var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptor");
6
+ var _Object$getOwnPropertyDescriptors = require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptors");
7
+ var _Object$defineProperties = require("@babel/runtime-corejs2/core-js/object/define-properties");
8
+ var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
9
+ var _Array$from = require("@babel/runtime-corejs2/core-js/array/from");
10
+ var _Symbol = require("@babel/runtime-corejs2/core-js/symbol");
11
+ var _Symbol$iterator = require("@babel/runtime-corejs2/core-js/symbol/iterator");
12
+ var _Array$isArray = require("@babel/runtime-corejs2/core-js/array/is-array");
13
+ var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
14
+ _Object$defineProperty(exports, "__esModule", {
15
+ value: true
16
+ });
17
+ exports.createRegistration = exports.Registration = void 0;
18
+ var _regenerator = _interopRequireDefault(require("@babel/runtime-corejs2/regenerator"));
19
+ var _stringify = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/json/stringify"));
20
+ var _now = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/date/now"));
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"));
24
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/asyncToGenerator"));
25
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
26
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));
27
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
28
+ var _constants = require("../../common/constants");
29
+ var _common = require("../../common");
30
+ var _webWorkerStr = _interopRequireDefault(require("./webWorkerStr"));
31
+ var _types = require("../../Metrics/types");
32
+ var _Metrics = require("../../Metrics");
33
+ var _calling = require("../calling");
34
+ var _Logger = _interopRequireDefault(require("../../Logger"));
35
+ var _SDKConnector = _interopRequireDefault(require("../../SDKConnector"));
36
+ var _types2 = require("../../common/types");
37
+ var _constants2 = require("../constants");
38
+ var _types3 = require("../line/types");
39
+ var _request = require("../utils/request");
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; } } }; }
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; } }
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; }
43
+ 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; }
44
+ 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; }
45
+ /**
46
+ *
47
+ */
48
+ var Registration = exports.Registration = /*#__PURE__*/function () {
49
+ /**
50
+ */
51
+ function Registration(webex, serviceData, mutex, lineEmitter, logLevel, jwe) {
52
+ (0, _classCallCheck2.default)(this, Registration);
53
+ (0, _defineProperty2.default)(this, "sdkConnector", void 0);
54
+ (0, _defineProperty2.default)(this, "webex", void 0);
55
+ (0, _defineProperty2.default)(this, "userId", '');
56
+ (0, _defineProperty2.default)(this, "serviceData", void 0);
57
+ (0, _defineProperty2.default)(this, "failback429RetryAttempts", void 0);
58
+ (0, _defineProperty2.default)(this, "registrationStatus", void 0);
59
+ (0, _defineProperty2.default)(this, "failbackTimer", void 0);
60
+ (0, _defineProperty2.default)(this, "activeMobiusUrl", void 0);
61
+ (0, _defineProperty2.default)(this, "rehomingIntervalMin", void 0);
62
+ (0, _defineProperty2.default)(this, "rehomingIntervalMax", void 0);
63
+ (0, _defineProperty2.default)(this, "mutex", void 0);
64
+ (0, _defineProperty2.default)(this, "metricManager", void 0);
65
+ (0, _defineProperty2.default)(this, "lineEmitter", void 0);
66
+ (0, _defineProperty2.default)(this, "callManager", void 0);
67
+ (0, _defineProperty2.default)(this, "deviceInfo", {});
68
+ (0, _defineProperty2.default)(this, "primaryMobiusUris", void 0);
69
+ (0, _defineProperty2.default)(this, "backupMobiusUris", void 0);
70
+ (0, _defineProperty2.default)(this, "registerRetry", false);
71
+ (0, _defineProperty2.default)(this, "reconnectPending", false);
72
+ (0, _defineProperty2.default)(this, "jwe", void 0);
73
+ (0, _defineProperty2.default)(this, "isCCFlow", false);
74
+ (0, _defineProperty2.default)(this, "failoverImmediately", false);
75
+ (0, _defineProperty2.default)(this, "retryAfter", void 0);
76
+ (0, _defineProperty2.default)(this, "scheduled429Retry", false);
77
+ (0, _defineProperty2.default)(this, "webWorker", void 0);
78
+ (0, _defineProperty2.default)(this, "apiRequest", void 0);
79
+ this.jwe = jwe;
80
+ this.sdkConnector = _SDKConnector.default;
81
+ this.serviceData = serviceData;
82
+ this.isCCFlow = serviceData.indicator === _types2.ServiceIndicator.CONTACT_CENTER;
83
+ if (!this.sdkConnector.getWebex()) {
84
+ _SDKConnector.default.setWebex(webex);
85
+ }
86
+ this.webex = this.sdkConnector.getWebex();
87
+ this.userId = this.webex.internal.device.userId;
88
+ this.registrationStatus = _types2.RegistrationStatus.IDLE;
89
+ this.failback429RetryAttempts = 0;
90
+ _Logger.default.setLogger(logLevel, _constants2.REGISTRATION_FILE);
91
+ this.rehomingIntervalMin = _constants2.DEFAULT_REHOMING_INTERVAL_MIN;
92
+ this.rehomingIntervalMax = _constants2.DEFAULT_REHOMING_INTERVAL_MAX;
93
+ this.mutex = mutex;
94
+ this.callManager = (0, _calling.getCallManager)(this.webex, serviceData.indicator);
95
+ this.metricManager = (0, _Metrics.getMetricManager)(this.webex, serviceData.indicator);
96
+ this.lineEmitter = lineEmitter;
97
+ this.primaryMobiusUris = [];
98
+ this.backupMobiusUris = [];
99
+ this.apiRequest = _request.APIRequest.getInstance({
100
+ webex: this.webex
101
+ });
102
+ }
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
+ }, {
110
+ key: "getFailoverCacheKey",
111
+ value: function getFailoverCacheKey() {
112
+ return "".concat(_constants2.FAILOVER_CACHE_PREFIX, ".").concat(this.userId || 'unknown');
113
+ }
114
+ }, {
115
+ key: "saveFailoverState",
116
+ value: function saveFailoverState(failoverState) {
117
+ try {
118
+ localStorage.setItem(this.getFailoverCacheKey(), (0, _stringify.default)(failoverState));
119
+ } catch (error) {
120
+ _Logger.default.warn("Storing failover state in cache failed with error: ".concat(String(error)), {
121
+ file: _constants2.REGISTRATION_FILE,
122
+ method: 'saveFailoverState'
123
+ });
124
+ }
125
+ }
126
+ }, {
127
+ key: "clearFailoverState",
128
+ value: function clearFailoverState() {
129
+ try {
130
+ localStorage.removeItem(this.getFailoverCacheKey());
131
+ } catch (_unused) {
132
+ _Logger.default.warn('Clearing failover state from localStorage failed', {
133
+ file: _constants2.REGISTRATION_FILE,
134
+ method: 'clearFailoverState'
135
+ });
136
+ }
137
+ }
138
+ }, {
139
+ key: "resumeFailover",
140
+ value: function () {
141
+ var _resumeFailover = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee() {
142
+ var cachedState, failoverState, currentTime, newElapsed, _t;
143
+ return _regenerator.default.wrap(function (_context) {
144
+ while (1) switch (_context.prev = _context.next) {
145
+ case 0:
146
+ _context.prev = 0;
147
+ cachedState = localStorage.getItem(this.getFailoverCacheKey());
148
+ failoverState = cachedState ? JSON.parse(cachedState) : undefined;
149
+ if (!(failoverState && !this.isDeviceRegistered())) {
150
+ _context.next = 2;
151
+ break;
152
+ }
153
+ currentTime = Math.floor((0, _now.default)() / 1000);
154
+ newElapsed = failoverState.timeElapsed + (currentTime - failoverState.retryScheduledTime);
155
+ this.clearFailoverState();
156
+ _context.next = 1;
157
+ return this.startFailoverTimer(failoverState.attempt, newElapsed);
158
+ case 1:
159
+ return _context.abrupt("return", true);
160
+ case 2:
161
+ _context.next = 4;
162
+ break;
163
+ case 3:
164
+ _context.prev = 3;
165
+ _t = _context["catch"](0);
166
+ _Logger.default.warn("No failover state found in cache", {
167
+ file: _constants2.REGISTRATION_FILE,
168
+ method: 'triggerRegistration'
169
+ });
170
+ case 4:
171
+ return _context.abrupt("return", false);
172
+ case 5:
173
+ case "end":
174
+ return _context.stop();
175
+ }
176
+ }, _callee, this, [[0, 3]]);
177
+ }));
178
+ function resumeFailover() {
179
+ return _resumeFailover.apply(this, arguments);
180
+ }
181
+ return resumeFailover;
182
+ }()
183
+ }, {
184
+ key: "getActiveMobiusUrl",
185
+ value: function getActiveMobiusUrl() {
186
+ return this.activeMobiusUrl;
187
+ }
188
+ }, {
189
+ key: "setActiveMobiusUrl",
190
+ value: function setActiveMobiusUrl(url) {
191
+ _Logger.default.info("".concat(_constants.METHOD_START_MESSAGE, " with ").concat(url), {
192
+ method: _constants2.METHODS.UPDATE_ACTIVE_MOBIUS,
193
+ file: _constants2.REGISTRATION_FILE
194
+ });
195
+ this.activeMobiusUrl = url;
196
+ this.callManager.updateActiveMobius(url);
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
+ }
213
+ }, {
214
+ key: "setMobiusServers",
215
+ value: function setMobiusServers(primaryMobiusUris, backupMobiusUris) {
216
+ _Logger.default.log(_constants.METHOD_START_MESSAGE, {
217
+ method: _constants2.METHODS.SET_MOBIUS_SERVERS,
218
+ file: _constants2.REGISTRATION_FILE
219
+ });
220
+ this.primaryMobiusUris = primaryMobiusUris;
221
+ this.backupMobiusUris = backupMobiusUris;
222
+ }
223
+
224
+ /**
225
+ * Implementation of delete device.
226
+ *
227
+ */
228
+ }, {
229
+ key: "deleteRegistration",
230
+ value: (function () {
231
+ var _deleteRegistration = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee2(url, deviceId, deviceUrl) {
232
+ var response, requestObj, _t2;
233
+ return _regenerator.default.wrap(function (_context2) {
234
+ while (1) switch (_context2.prev = _context2.next) {
235
+ case 0:
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;
249
+ _context2.next = 2;
250
+ return this.apiRequest.makeRequest(requestObj);
251
+ case 2:
252
+ response = _context2.sent;
253
+ _context2.next = 4;
254
+ break;
255
+ case 3:
256
+ _context2.prev = 3;
257
+ _t2 = _context2["catch"](1);
258
+ _Logger.default.warn("Delete failed with Mobius: ".concat((0, _stringify.default)(_t2)), {
259
+ file: _constants2.REGISTRATION_FILE,
260
+ method: _constants2.METHODS.DELETE_REGISTRATION
261
+ });
262
+ _context2.next = 4;
263
+ return (0, _common.uploadLogs)();
264
+ case 4:
265
+ this.setStatus(_types2.RegistrationStatus.INACTIVE);
266
+ this.lineEmitter(_types3.LINE_EVENTS.UNREGISTERED);
267
+ return _context2.abrupt("return", response);
268
+ case 5:
269
+ case "end":
270
+ return _context2.stop();
271
+ }
272
+ }, _callee2, this, [[1, 3]]);
273
+ }));
274
+ function deleteRegistration(_x, _x2, _x3) {
275
+ return _deleteRegistration.apply(this, arguments);
276
+ }
277
+ return deleteRegistration;
278
+ }()
279
+ /**
280
+ * Implementation of POST request for device registration.
281
+ *
282
+ */
283
+ )
284
+ }, {
285
+ key: "postRegistration",
286
+ value: (function () {
287
+ var _postRegistration = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee3(url) {
288
+ var deviceInfo;
289
+ return _regenerator.default.wrap(function (_context3) {
290
+ while (1) switch (_context3.prev = _context3.next) {
291
+ case 0:
292
+ deviceInfo = {
293
+ userId: this.userId,
294
+ clientDeviceUri: this.webex.internal.device.url,
295
+ serviceData: this.jwe ? _objectSpread(_objectSpread({}, this.serviceData), {}, {
296
+ jwe: this.jwe
297
+ }) : this.serviceData
298
+ };
299
+ return _context3.abrupt("return", this.apiRequest.makeRequest({
300
+ uri: "".concat(url, "device"),
301
+ method: _types2.HTTP_METHODS.POST,
302
+ headers: (0, _defineProperty2.default)((0, _defineProperty2.default)({}, _constants2.CISCO_DEVICE_URL, deviceInfo.clientDeviceUri), _constants2.SPARK_USER_AGENT, _constants2.CALLING_USER_AGENT),
303
+ body: deviceInfo,
304
+ service: _types2.ALLOWED_SERVICES.MOBIUS
305
+ }));
306
+ case 1:
307
+ case "end":
308
+ return _context3.stop();
309
+ }
310
+ }, _callee3, this);
311
+ }));
312
+ function postRegistration(_x4) {
313
+ return _postRegistration.apply(this, arguments);
314
+ }
315
+ return postRegistration;
316
+ }()
317
+ /**
318
+ * Re-attempts registration with the mobius url it was last registered
319
+ * to, that mobius url is expected to be updated already in this.activeMobiusUrl.
320
+ */
321
+ )
322
+ }, {
323
+ key: "restorePreviousRegistration",
324
+ value: (function () {
325
+ var _restorePreviousRegistration = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee5(caller) {
326
+ var _this = this;
327
+ var loggerContext, abort;
328
+ return _regenerator.default.wrap(function (_context5) {
329
+ while (1) switch (_context5.prev = _context5.next) {
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);
336
+ abort = false;
337
+ if (!(this.apiRequest.isSocketEnabled() && "".concat(this.apiRequest.getConnectedWebSocketUrl(), "/") !== this.activeMobiusUrl)) {
338
+ _context5.next = 1;
339
+ break;
340
+ }
341
+ _Logger.default.info("Disconnecting from Mobius socket to restore previous registration.", {
342
+ file: _constants2.REGISTRATION_FILE,
343
+ method: 'restorePreviousRegistration'
344
+ });
345
+ _context5.next = 1;
346
+ return this.apiRequest.disconnectFromMobiusSocket({
347
+ code: 3050,
348
+ reason: 'done (permanent)'
349
+ });
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:
358
+ abort = _context5.sent;
359
+ if (!this.retryAfter) {
360
+ _context5.next = 7;
361
+ break;
362
+ }
363
+ if (!(this.retryAfter < _constants2.RETRY_TIMER_UPPER_LIMIT)) {
364
+ _context5.next = 3;
365
+ break;
366
+ }
367
+ // If retry-after is less than threshold, honor it and schedule retry
368
+ setTimeout(/*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee4() {
369
+ return _regenerator.default.wrap(function (_context4) {
370
+ while (1) switch (_context4.prev = _context4.next) {
371
+ case 0:
372
+ _context4.next = 1;
373
+ return _this.restartRegistration(caller);
374
+ case 1:
375
+ case "end":
376
+ return _context4.stop();
377
+ }
378
+ }, _callee4);
379
+ })), this.retryAfter * 1000);
380
+ _context5.next = 6;
381
+ break;
382
+ case 3:
383
+ if (!(this.primaryMobiusUris.includes(this.activeMobiusUrl) && this.backupMobiusUris.length > 0)) {
384
+ _context5.next = 5;
385
+ break;
386
+ }
387
+ _context5.next = 4;
388
+ return this.attemptRegistrationWithServers(caller, this.backupMobiusUris);
389
+ case 4:
390
+ abort = _context5.sent;
391
+ _context5.next = 6;
392
+ break;
393
+ case 5:
394
+ _context5.next = 6;
395
+ return this.restartRegistration(caller);
396
+ case 6:
397
+ this.retryAfter = undefined;
398
+ _Logger.default.log("restorePreviousRegistration completed via 429 retry-after path - caller: ".concat(caller), loggerContext);
399
+ return _context5.abrupt("return", true);
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:
404
+ case "end":
405
+ return _context5.stop();
406
+ }
407
+ }, _callee5, this);
408
+ }));
409
+ function restorePreviousRegistration(_x5) {
410
+ return _restorePreviousRegistration.apply(this, arguments);
411
+ }
412
+ return restorePreviousRegistration;
413
+ }()
414
+ /**
415
+ * Callback for handling 404 response from the server for register keepalive
416
+ */
417
+ )
418
+ }, {
419
+ key: "handle404KeepaliveFailure",
420
+ value: (function () {
421
+ var _handle404KeepaliveFailure = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee6(caller) {
422
+ var loggerContext, abort;
423
+ return _regenerator.default.wrap(function (_context6) {
424
+ while (1) switch (_context6.prev = _context6.next) {
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);
431
+ if (!(caller === _constants2.KEEPALIVE_UTIL)) {
432
+ _context6.next = 4;
433
+ break;
434
+ }
435
+ _context6.next = 1;
436
+ return this.attemptRegistrationWithServers(caller);
437
+ case 1:
438
+ abort = _context6.sent;
439
+ if (!(!abort && !this.isDeviceRegistered())) {
440
+ _context6.next = 3;
441
+ break;
442
+ }
443
+ _Logger.default.warn('Keepalive 404 recovery: re-registration did not complete, starting failover timer', loggerContext);
444
+ _context6.next = 2;
445
+ return this.startFailoverTimer();
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:
452
+ case "end":
453
+ return _context6.stop();
454
+ }
455
+ }, _callee6, this);
456
+ }));
457
+ function handle404KeepaliveFailure(_x6) {
458
+ return _handle404KeepaliveFailure.apply(this, arguments);
459
+ }
460
+ return handle404KeepaliveFailure;
461
+ }()
462
+ /**
463
+ * Callback for handling 429 retry response from the server
464
+ */
465
+ )
466
+ }, {
467
+ key: "handle429Retry",
468
+ value: (function () {
469
+ var _handle429Retry = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee8(retryAfter, caller) {
470
+ var _this2 = this;
471
+ var interval, abort;
472
+ return _regenerator.default.wrap(function (_context8) {
473
+ while (1) switch (_context8.prev = _context8.next) {
474
+ case 0:
475
+ if (!(caller === _constants2.FAILBACK_UTIL)) {
476
+ _context8.next = 4;
477
+ break;
478
+ }
479
+ if (!(this.failback429RetryAttempts >= _constants2.REG_FAILBACK_429_MAX_RETRIES)) {
480
+ _context8.next = 1;
481
+ break;
482
+ }
483
+ return _context8.abrupt("return");
484
+ case 1:
485
+ this.clearFailbackTimer();
486
+ this.failback429RetryAttempts += 1;
487
+ _Logger.default.log("Received 429 while rehoming, 429 retry count : ".concat(this.failback429RetryAttempts), {
488
+ file: _constants2.REGISTRATION_FILE,
489
+ method: _constants2.REG_429_RETRY_UTIL
490
+ });
491
+ interval = this.getRegRetryInterval(this.failback429RetryAttempts);
492
+ this.startFailbackTimer(interval);
493
+ this.scheduled429Retry = true;
494
+ _context8.next = 2;
495
+ return this.restorePreviousRegistration(_constants2.REG_429_RETRY_UTIL);
496
+ case 2:
497
+ abort = _context8.sent;
498
+ if (!(!abort && !this.isDeviceRegistered())) {
499
+ _context8.next = 3;
500
+ break;
501
+ }
502
+ _context8.next = 3;
503
+ return this.restartRegistration(_constants2.REG_429_RETRY_UTIL);
504
+ case 3:
505
+ _context8.next = 5;
506
+ break;
507
+ case 4:
508
+ if (caller === _constants2.KEEPALIVE_UTIL) {
509
+ this.clearKeepaliveTimer();
510
+ setTimeout(/*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee7() {
511
+ var _this2$deviceInfo$dev;
512
+ return _regenerator.default.wrap(function (_context7) {
513
+ while (1) switch (_context7.prev = _context7.next) {
514
+ case 0:
515
+ _Logger.default.log("Resuming keepalive after ".concat(retryAfter, " seconds"), {
516
+ file: _constants2.REGISTRATION_FILE,
517
+ method: _constants2.REG_429_RETRY_UTIL
518
+ });
519
+
520
+ // Resume the keepalive after waiting for the retry after period
521
+ _context7.next = 1;
522
+ return _this2.startKeepaliveTimer((_this2$deviceInfo$dev = _this2.deviceInfo.device) === null || _this2$deviceInfo$dev === void 0 ? void 0 : _this2$deviceInfo$dev.uri, _this2.deviceInfo.keepaliveInterval, 'UNKNOWN');
523
+ case 1:
524
+ case "end":
525
+ return _context7.stop();
526
+ }
527
+ }, _callee7);
528
+ })), (retryAfter - Number(this.deviceInfo.keepaliveInterval || 0)) * 1000);
529
+ } else {
530
+ this.retryAfter = retryAfter;
531
+ }
532
+ case 5:
533
+ case "end":
534
+ return _context8.stop();
535
+ }
536
+ }, _callee8, this);
537
+ }));
538
+ function handle429Retry(_x7, _x8) {
539
+ return _handle429Retry.apply(this, arguments);
540
+ }
541
+ return handle429Retry;
542
+ }()
543
+ /**
544
+ * Calculates and returns a random interval value using input argument
545
+ * attempt as the variable factor.
546
+ *
547
+ * attempted already.
548
+ */
549
+ )
550
+ }, {
551
+ key: "getRegRetryInterval",
552
+ value: function getRegRetryInterval() {
553
+ var attempt = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;
554
+ return _constants2.BASE_REG_RETRY_TIMER_VAL_IN_SEC + Math.pow(_constants2.BASE_REG_TIMER_MFACTOR, attempt) + Math.floor((Math.random() * (_constants2.REG_RANDOM_T_FACTOR_UPPER_LIMIT - _constants2.SEC_TO_MSEC_MFACTOR + 1) + _constants2.SEC_TO_MSEC_MFACTOR) / _constants2.SEC_TO_MSEC_MFACTOR);
555
+ }
556
+
557
+ /**
558
+ * Schedules registration retry with primary mobius servers at a random
559
+ * interval calculated based on the number of times registration retry is already done
560
+ * Once the time taken since the beginning of retry attempt exceeds the
561
+ * retry threshold, it switches over to backup mobius servers.
562
+ *
563
+ */
564
+ }, {
565
+ key: "startFailoverTimer",
566
+ value: (function () {
567
+ var _startFailoverTimer = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee11() {
568
+ var _this3 = this;
569
+ var attempt,
570
+ timeElapsed,
571
+ loggerContext,
572
+ interval,
573
+ TIMER_THRESHOLD,
574
+ excessVal,
575
+ abort,
576
+ scheduledTime,
577
+ _args11 = arguments;
578
+ return _regenerator.default.wrap(function (_context11) {
579
+ while (1) switch (_context11.prev = _context11.next) {
580
+ case 0:
581
+ attempt = _args11.length > 0 && _args11[0] !== undefined ? _args11[0] : 1;
582
+ timeElapsed = _args11.length > 1 && _args11[1] !== undefined ? _args11[1] : 0;
583
+ loggerContext = {
584
+ file: _constants2.REGISTRATION_FILE,
585
+ method: _constants2.FAILOVER_UTIL
586
+ };
587
+ interval = this.getRegRetryInterval(attempt);
588
+ TIMER_THRESHOLD = _constants2.REG_TRY_BACKUP_TIMER_VAL_IN_SEC;
589
+ if (timeElapsed + interval > TIMER_THRESHOLD) {
590
+ excessVal = timeElapsed + interval - TIMER_THRESHOLD;
591
+ interval -= excessVal;
592
+ }
593
+ if (this.retryAfter != null && interval < this.retryAfter) {
594
+ this.failoverImmediately = this.retryAfter + timeElapsed > TIMER_THRESHOLD;
595
+ }
596
+ if (!(interval > _constants2.BASE_REG_RETRY_TIMER_VAL_IN_SEC && !this.failoverImmediately)) {
597
+ _context11.next = 1;
598
+ break;
599
+ }
600
+ scheduledTime = Math.floor((0, _now.default)() / 1000);
601
+ if (this.retryAfter != null) {
602
+ interval = Math.max(interval, this.retryAfter);
603
+ }
604
+ this.saveFailoverState({
605
+ attempt: attempt,
606
+ timeElapsed: timeElapsed,
607
+ retryScheduledTime: scheduledTime,
608
+ serverType: 'primary'
609
+ });
610
+ setTimeout(/*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee0() {
611
+ return _regenerator.default.wrap(function (_context0) {
612
+ while (1) switch (_context0.prev = _context0.next) {
613
+ case 0:
614
+ _context0.next = 1;
615
+ return _this3.mutex.runExclusive(/*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee9() {
616
+ var currentTime;
617
+ return _regenerator.default.wrap(function (_context9) {
618
+ while (1) switch (_context9.prev = _context9.next) {
619
+ case 0:
620
+ _context9.next = 1;
621
+ return _this3.attemptRegistrationWithServers(_constants2.FAILOVER_UTIL);
622
+ case 1:
623
+ abort = _context9.sent;
624
+ currentTime = Math.floor((0, _now.default)() / 1000);
625
+ if (!(!abort && !_this3.isDeviceRegistered())) {
626
+ _context9.next = 2;
627
+ break;
628
+ }
629
+ _context9.next = 2;
630
+ return _this3.startFailoverTimer(attempt + 1, timeElapsed + (currentTime - scheduledTime));
631
+ case 2:
632
+ case "end":
633
+ return _context9.stop();
634
+ }
635
+ }, _callee9);
636
+ })));
637
+ case 1:
638
+ case "end":
639
+ return _context0.stop();
640
+ }
641
+ }, _callee0);
642
+ })), interval * _constants2.SEC_TO_MSEC_MFACTOR);
643
+ _Logger.default.log("Scheduled retry with primary in ".concat(interval, " seconds, number of attempts : ").concat(attempt), loggerContext);
644
+ _context11.next = 7;
645
+ break;
646
+ case 1:
647
+ if (!this.backupMobiusUris.length) {
648
+ _context11.next = 5;
649
+ break;
650
+ }
651
+ if (!this.apiRequest.isSocketEnabled()) {
652
+ _context11.next = 3;
653
+ break;
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:
664
+ this.saveFailoverState({
665
+ attempt: attempt,
666
+ timeElapsed: timeElapsed,
667
+ retryScheduledTime: Math.floor((0, _now.default)() / 1000),
668
+ serverType: 'backup'
669
+ });
670
+ _Logger.default.info('Failing over to backup servers.', loggerContext);
671
+ this.failoverImmediately = false;
672
+ _context11.next = 4;
673
+ return this.attemptRegistrationWithServers(_constants2.FAILOVER_UTIL, this.backupMobiusUris);
674
+ case 4:
675
+ abort = _context11.sent;
676
+ if (!abort && !this.isDeviceRegistered()) {
677
+ interval = this.getRegRetryInterval();
678
+ if (this.retryAfter != null && this.retryAfter < _constants2.RETRY_TIMER_UPPER_LIMIT) {
679
+ interval = interval < this.retryAfter ? this.retryAfter : interval;
680
+ }
681
+ setTimeout(/*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee10() {
682
+ return _regenerator.default.wrap(function (_context10) {
683
+ while (1) switch (_context10.prev = _context10.next) {
684
+ case 0:
685
+ _context10.next = 1;
686
+ return _this3.mutex.runExclusive(/*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee1() {
687
+ return _regenerator.default.wrap(function (_context1) {
688
+ while (1) switch (_context1.prev = _context1.next) {
689
+ case 0:
690
+ _context1.next = 1;
691
+ return _this3.attemptRegistrationWithServers(_constants2.FAILOVER_UTIL, _this3.backupMobiusUris);
692
+ case 1:
693
+ abort = _context1.sent;
694
+ if (!(!abort && !_this3.isDeviceRegistered())) {
695
+ _context1.next = 3;
696
+ break;
697
+ }
698
+ _context1.next = 2;
699
+ return (0, _common.uploadLogs)();
700
+ case 2:
701
+ (0, _common.emitFinalFailure)(function (clientError) {
702
+ _this3.lineEmitter(_types3.LINE_EVENTS.ERROR, undefined, clientError);
703
+ }, loggerContext);
704
+ case 3:
705
+ case "end":
706
+ return _context1.stop();
707
+ }
708
+ }, _callee1);
709
+ })));
710
+ case 1:
711
+ case "end":
712
+ return _context10.stop();
713
+ }
714
+ }, _callee10);
715
+ })), interval * _constants2.SEC_TO_MSEC_MFACTOR);
716
+ _Logger.default.log("Scheduled retry with backup servers in ".concat(interval, " seconds."), loggerContext);
717
+ }
718
+ _context11.next = 7;
719
+ break;
720
+ case 5:
721
+ _context11.next = 6;
722
+ return (0, _common.uploadLogs)();
723
+ case 6:
724
+ (0, _common.emitFinalFailure)(function (clientError) {
725
+ _this3.lineEmitter(_types3.LINE_EVENTS.ERROR, undefined, clientError);
726
+ }, loggerContext, interval < 0 ? 'Timer threshold exceeded during failover' : undefined);
727
+ case 7:
728
+ case "end":
729
+ return _context11.stop();
730
+ }
731
+ }, _callee11, this);
732
+ }));
733
+ function startFailoverTimer() {
734
+ return _startFailoverTimer.apply(this, arguments);
735
+ }
736
+ return startFailoverTimer;
737
+ }()
738
+ /**
739
+ * Clears the failback timer if running.
740
+ */
741
+ )
742
+ }, {
743
+ key: "clearFailbackTimer",
744
+ value: function clearFailbackTimer() {
745
+ if (this.failbackTimer) {
746
+ clearTimeout(this.failbackTimer);
747
+ this.failbackTimer = undefined;
748
+ }
749
+ }
750
+ }, {
751
+ key: "postKeepAlive",
752
+ value: function () {
753
+ var _postKeepAlive = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee12(deviceUrl, url) {
754
+ var _this$deviceInfo$devi;
755
+ return _regenerator.default.wrap(function (_context12) {
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) {
785
+ case 0:
786
+ _iterator = _createForOfIteratorHelper(this.primaryMobiusUris);
787
+ _context13.prev = 1;
788
+ _iterator.s();
789
+ case 2:
790
+ if ((_step = _iterator.n()).done) {
791
+ _context13.next = 8;
792
+ break;
793
+ }
794
+ mobiusUrl = _step.value;
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;
798
+ return this.webex.request({
799
+ uri: "".concat(baseUri, "ping"),
800
+ method: _types2.HTTP_METHODS.GET,
801
+ headers: (0, _defineProperty2.default)((0, _defineProperty2.default)({}, _constants2.CISCO_DEVICE_URL, this.webex.internal.device.url), _constants2.SPARK_USER_AGENT, _constants2.CALLING_USER_AGENT),
802
+ service: _types2.ALLOWED_SERVICES.MOBIUS
803
+ });
804
+ case 4:
805
+ response = _context13.sent;
806
+ _ref7 = response, statusCode = _ref7.statusCode;
807
+ if (!(statusCode === 200)) {
808
+ _context13.next = 5;
809
+ break;
810
+ }
811
+ _Logger.default.info("Ping successful for primary Mobius: ".concat(mobiusUrl), {
812
+ file: _constants2.REGISTRATION_FILE,
813
+ method: _constants2.FAILBACK_UTIL
814
+ });
815
+ status = 'up';
816
+ return _context13.abrupt("continue", 8);
817
+ case 5:
818
+ _context13.next = 7;
819
+ break;
820
+ case 6:
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)), {
824
+ file: _constants2.REGISTRATION_FILE,
825
+ method: _constants2.FAILBACK_UTIL
826
+ });
827
+ status = 'down';
828
+ case 7:
829
+ _context13.next = 2;
830
+ break;
831
+ case 8:
832
+ _context13.next = 10;
833
+ break;
834
+ case 9:
835
+ _context13.prev = 9;
836
+ _t4 = _context13["catch"](1);
837
+ _iterator.e(_t4);
838
+ case 10:
839
+ _context13.prev = 10;
840
+ _iterator.f();
841
+ return _context13.finish(10);
842
+ case 11:
843
+ return _context13.abrupt("return", status === 'up');
844
+ case 12:
845
+ case "end":
846
+ return _context13.stop();
847
+ }
848
+ }, _callee13, this, [[1, 9, 10, 11], [3, 6]]);
849
+ }));
850
+ function isPrimaryActive() {
851
+ return _isPrimaryActive.apply(this, arguments);
852
+ }
853
+ return isPrimaryActive;
854
+ }()
855
+ /**
856
+ * Returns true if device is registered with a backup mobius.
857
+ */
858
+ }, {
859
+ key: "isFailbackRequired",
860
+ value: function isFailbackRequired() {
861
+ return this.isDeviceRegistered() && this.primaryMobiusUris.indexOf(this.activeMobiusUrl) === -1;
862
+ }
863
+
864
+ /**
865
+ * Calculates and returns a random value between rehomingIntervalMin and
866
+ * rehomingIntervalMax.
867
+ */
868
+ }, {
869
+ key: "getFailbackInterval",
870
+ value: function getFailbackInterval() {
871
+ return Math.floor(Math.random() * (this.rehomingIntervalMax - this.rehomingIntervalMin + 1) + this.rehomingIntervalMin);
872
+ }
873
+
874
+ /**
875
+ * Starts failback timer to move to primary mobius if device
876
+ * is registered with a backup mobius.
877
+ */
878
+ }, {
879
+ key: "initiateFailback",
880
+ value: function initiateFailback() {
881
+ var loggerContext = {
882
+ file: _constants2.REGISTRATION_FILE,
883
+ method: _constants2.METHODS.INITIATE_FAILBACK
884
+ };
885
+ if (this.isFailbackRequired()) {
886
+ if (!this.failbackTimer) {
887
+ this.failback429RetryAttempts = 0;
888
+ var intervalInMinutes = this.getFailbackInterval();
889
+ _Logger.default.info("Scheduling failback to primary - intervalMinutes: ".concat(intervalInMinutes), loggerContext);
890
+ this.startFailbackTimer(intervalInMinutes * _constants2.MINUTES_TO_SEC_MFACTOR);
891
+ } else {
892
+ _Logger.default.info('Failback timer already scheduled, skipping', loggerContext);
893
+ }
894
+ } else {
895
+ _Logger.default.info('Failback not required, clearing any pending failback timer', loggerContext);
896
+ this.failback429RetryAttempts = 0;
897
+ this.clearFailbackTimer();
898
+ }
899
+ }
900
+
901
+ /**
902
+ * Starts failback timer with the interval value received.
903
+ *
904
+ */
905
+ }, {
906
+ key: "startFailbackTimer",
907
+ value: function startFailbackTimer(intervalInSeconds) {
908
+ var _this4 = this;
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) {
912
+ case 0:
913
+ return _context14.abrupt("return", _this4.executeFailback());
914
+ case 1:
915
+ case "end":
916
+ return _context14.stop();
917
+ }
918
+ }, _callee14);
919
+ })), intervalInSeconds * _constants2.SEC_TO_MSEC_MFACTOR);
920
+ _Logger.default.log("Failback scheduled after ".concat(intervalInSeconds, " seconds."), {
921
+ file: _constants2.REGISTRATION_FILE,
922
+ method: this.startFailbackTimer.name
923
+ });
924
+ }
925
+
926
+ /**
927
+ * Core logic for the failback processing, scheduled and executed
928
+ * at failback timer expiry.
929
+ */
930
+ }, {
931
+ key: "executeFailback",
932
+ value: (function () {
933
+ var _executeFailback = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee16() {
934
+ var _this5 = this;
935
+ var loggerContext;
936
+ return _regenerator.default.wrap(function (_context16) {
937
+ while (1) switch (_context16.prev = _context16.next) {
938
+ case 0:
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() {
946
+ var primaryServerStatus, abort, abortNew;
947
+ return _regenerator.default.wrap(function (_context15) {
948
+ while (1) switch (_context15.prev = _context15.next) {
949
+ case 0:
950
+ if (!_this5.isFailbackRequired()) {
951
+ _context15.next = 13;
952
+ break;
953
+ }
954
+ _context15.next = 1;
955
+ return _this5.isPrimaryActive();
956
+ case 1:
957
+ primaryServerStatus = _context15.sent;
958
+ if (!((0, _keys.default)(_this5.callManager.getActiveCalls()).length === 0 && primaryServerStatus)) {
959
+ _context15.next = 12;
960
+ break;
961
+ }
962
+ _Logger.default.info("Attempting failback to primary.", loggerContext);
963
+ _context15.next = 2;
964
+ return _this5.deregister();
965
+ case 2:
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
+ });
976
+ case 3:
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;
983
+ if (!(_this5.scheduled429Retry || abort || _this5.isDeviceRegistered())) {
984
+ _context15.next = 6;
985
+ break;
986
+ }
987
+ return _context15.abrupt("return");
988
+ case 6:
989
+ _context15.next = 7;
990
+ return _this5.restorePreviousRegistration(_constants2.FAILBACK_UTIL);
991
+ case 7:
992
+ abortNew = _context15.sent;
993
+ if (!abortNew) {
994
+ _context15.next = 8;
995
+ break;
996
+ }
997
+ _this5.clearFailbackTimer();
998
+ return _context15.abrupt("return");
999
+ case 8:
1000
+ if (_this5.isDeviceRegistered()) {
1001
+ _context15.next = 10;
1002
+ break;
1003
+ }
1004
+ _context15.next = 9;
1005
+ return _this5.restartRegistration(loggerContext.method);
1006
+ case 9:
1007
+ _context15.next = 11;
1008
+ break;
1009
+ case 10:
1010
+ _this5.failbackTimer = undefined;
1011
+ _this5.initiateFailback();
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:
1020
+ case "end":
1021
+ return _context15.stop();
1022
+ }
1023
+ }, _callee15);
1024
+ })));
1025
+ case 1:
1026
+ case "end":
1027
+ return _context16.stop();
1028
+ }
1029
+ }, _callee16, this);
1030
+ }));
1031
+ function executeFailback() {
1032
+ return _executeFailback.apply(this, arguments);
1033
+ }
1034
+ return executeFailback;
1035
+ }()
1036
+ /**
1037
+ * Updates rehomingIntervalMin and rehomingIntervalMax values
1038
+ * if received in registration response from a primary mobius
1039
+ * server.
1040
+ *
1041
+ */
1042
+ )
1043
+ }, {
1044
+ key: "setIntervalValues",
1045
+ value: function setIntervalValues(deviceInfo) {
1046
+ if (this.primaryMobiusUris.indexOf(this.activeMobiusUrl) !== -1) {
1047
+ this.rehomingIntervalMin = deviceInfo !== null && deviceInfo !== void 0 && deviceInfo.rehomingIntervalMin ? deviceInfo.rehomingIntervalMin : _constants2.DEFAULT_REHOMING_INTERVAL_MIN;
1048
+ this.rehomingIntervalMax = deviceInfo !== null && deviceInfo !== void 0 && deviceInfo.rehomingIntervalMax ? deviceInfo.rehomingIntervalMax : _constants2.DEFAULT_REHOMING_INTERVAL_MAX;
1049
+ }
1050
+ }
1051
+
1052
+ /**
1053
+ * Retrieves information about the device as {@link IDeviceInfo}.
1054
+ *
1055
+ */
1056
+ }, {
1057
+ key: "getDeviceInfo",
1058
+ value: function getDeviceInfo() {
1059
+ return this.deviceInfo;
1060
+ }
1061
+
1062
+ /**
1063
+ * Checks if the device is currently registered.
1064
+ *
1065
+ * by checking if isRegistered state is set to
1066
+ * ACTIVE, else false.
1067
+ */
1068
+ }, {
1069
+ key: "isDeviceRegistered",
1070
+ value: function isDeviceRegistered() {
1071
+ return this.registrationStatus === _types2.RegistrationStatus.ACTIVE;
1072
+ }
1073
+ }, {
1074
+ key: "getStatus",
1075
+ value: function getStatus() {
1076
+ return this.registrationStatus;
1077
+ }
1078
+ }, {
1079
+ key: "setStatus",
1080
+ value: function setStatus(value) {
1081
+ this.registrationStatus = value;
1082
+ }
1083
+
1084
+ /**
1085
+ * Start fresh registration cycle with the mobius
1086
+ * server list already present.
1087
+ *
1088
+ */
1089
+ }, {
1090
+ key: "restartRegistration",
1091
+ value: (function () {
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) {
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
+
1103
+ /*
1104
+ * Cancel any failback timer running
1105
+ * and start fresh registration attempt with retry as true.
1106
+ */
1107
+ this.clearFailbackTimer();
1108
+ this.failback429RetryAttempts = 0;
1109
+ _context17.next = 1;
1110
+ return this.attemptRegistrationWithServers(caller, this.primaryMobiusUris);
1111
+ case 1:
1112
+ abort = _context17.sent;
1113
+ if (!(!abort && !this.isDeviceRegistered())) {
1114
+ _context17.next = 2;
1115
+ break;
1116
+ }
1117
+ _context17.next = 2;
1118
+ return this.startFailoverTimer();
1119
+ case 2:
1120
+ _Logger.default.log("restartRegistration completed - caller: ".concat(caller, ", deviceRegistered: ").concat(this.isDeviceRegistered(), ", abort: ").concat(abort), loggerContext);
1121
+ case 3:
1122
+ case "end":
1123
+ return _context17.stop();
1124
+ }
1125
+ }, _callee17, this);
1126
+ }));
1127
+ function restartRegistration(_x1) {
1128
+ return _restartRegistration.apply(this, arguments);
1129
+ }
1130
+ return restartRegistration;
1131
+ }()
1132
+ /**
1133
+ * Restores the connection and attempts refreshing existing registration with server.
1134
+ * Allows retry if not restored in the first attempt.
1135
+ *
1136
+ */
1137
+ )
1138
+ }, {
1139
+ key: "handleConnectionRestoration",
1140
+ value: (function () {
1141
+ var _handleConnectionRestoration = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee19(retry) {
1142
+ var _this6 = this;
1143
+ return _regenerator.default.wrap(function (_context19) {
1144
+ while (1) switch (_context19.prev = _context19.next) {
1145
+ case 0:
1146
+ _Logger.default.info(_constants.METHOD_START_MESSAGE, {
1147
+ method: _constants2.METHODS.HANDLE_CONNECTION_RESTORATION,
1148
+ file: _constants2.REGISTRATION_FILE
1149
+ });
1150
+ _context19.next = 1;
1151
+ return this.mutex.runExclusive(/*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee18() {
1152
+ var abort;
1153
+ return _regenerator.default.wrap(function (_context18) {
1154
+ while (1) switch (_context18.prev = _context18.next) {
1155
+ case 0:
1156
+ if (!retry) {
1157
+ _context18.next = 4;
1158
+ break;
1159
+ }
1160
+ _Logger.default.log('Network is up again, re-registering with Webex Calling if needed', {
1161
+ file: _constants2.REGISTRATION_FILE,
1162
+ method: _constants2.METHODS.HANDLE_CONNECTION_RESTORATION
1163
+ });
1164
+ _this6.clearKeepaliveTimer();
1165
+ if (!_this6.isDeviceRegistered()) {
1166
+ _context18.next = 1;
1167
+ break;
1168
+ }
1169
+ _context18.next = 1;
1170
+ return _this6.deregister();
1171
+ case 1:
1172
+ if (!_this6.activeMobiusUrl) {
1173
+ _context18.next = 3;
1174
+ break;
1175
+ }
1176
+ _context18.next = 2;
1177
+ return _this6.restorePreviousRegistration(_constants2.METHODS.HANDLE_CONNECTION_RESTORATION);
1178
+ case 2:
1179
+ abort = _context18.sent;
1180
+ if (!(!abort && !_this6.isDeviceRegistered())) {
1181
+ _context18.next = 3;
1182
+ break;
1183
+ }
1184
+ _context18.next = 3;
1185
+ return _this6.restartRegistration(_constants2.METHODS.HANDLE_CONNECTION_RESTORATION);
1186
+ case 3:
1187
+ retry = false;
1188
+ case 4:
1189
+ case "end":
1190
+ return _context18.stop();
1191
+ }
1192
+ }, _callee18);
1193
+ })));
1194
+ case 1:
1195
+ return _context19.abrupt("return", retry);
1196
+ case 2:
1197
+ case "end":
1198
+ return _context19.stop();
1199
+ }
1200
+ }, _callee19, this);
1201
+ }));
1202
+ function handleConnectionRestoration(_x10) {
1203
+ return _handleConnectionRestoration.apply(this, arguments);
1204
+ }
1205
+ return handleConnectionRestoration;
1206
+ }()
1207
+ /**
1208
+ * Callback function for restoring registration in case of failure during initial registration
1209
+ * due to device registration already exists.
1210
+ *
1211
+ */
1212
+ )
1213
+ }, {
1214
+ key: "restoreRegistrationCallBack",
1215
+ value: function restoreRegistrationCallBack() {
1216
+ var _this7 = this;
1217
+ return /*#__PURE__*/function () {
1218
+ var _ref1 = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee20(restoreData, caller) {
1219
+ var logContext, restore, finalError;
1220
+ return _regenerator.default.wrap(function (_context20) {
1221
+ while (1) switch (_context20.prev = _context20.next) {
1222
+ case 0:
1223
+ logContext = {
1224
+ file: _constants2.REGISTRATION_FILE,
1225
+ method: caller
1226
+ };
1227
+ if (_this7.isRegRetry()) {
1228
+ _context20.next = 4;
1229
+ break;
1230
+ }
1231
+ _Logger.default.info('Registration restoration in progress.', logContext);
1232
+ restore = _this7.getExistingDevice(restoreData);
1233
+ if (!restore) {
1234
+ _context20.next = 3;
1235
+ break;
1236
+ }
1237
+ _this7.setRegRetry(true);
1238
+ _context20.next = 1;
1239
+ return _this7.deregister();
1240
+ case 1:
1241
+ _context20.next = 2;
1242
+ return _this7.restorePreviousRegistration(caller);
1243
+ case 2:
1244
+ finalError = _context20.sent;
1245
+ _this7.setRegRetry(false);
1246
+ if (_this7.isDeviceRegistered()) {
1247
+ _Logger.default.info('Registration restored successfully.', logContext);
1248
+ }
1249
+ return _context20.abrupt("return", finalError);
1250
+ case 3:
1251
+ _this7.lineEmitter(_types3.LINE_EVENTS.UNREGISTERED);
1252
+ _context20.next = 5;
1253
+ break;
1254
+ case 4:
1255
+ _this7.lineEmitter(_types3.LINE_EVENTS.UNREGISTERED);
1256
+ case 5:
1257
+ return _context20.abrupt("return", false);
1258
+ case 6:
1259
+ case "end":
1260
+ return _context20.stop();
1261
+ }
1262
+ }, _callee20);
1263
+ }));
1264
+ return function (_x11, _x12) {
1265
+ return _ref1.apply(this, arguments);
1266
+ };
1267
+ }();
1268
+ }
1269
+
1270
+ /**
1271
+ * Triggers the registration with the given list of Mobius servers
1272
+ * Registration is attempted with primary and backup until it succeeds or the list is exhausted
1273
+ */
1274
+ }, {
1275
+ key: "triggerRegistration",
1276
+ value: (function () {
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) {
1281
+ case 0:
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;
1288
+ return this.resumeFailover();
1289
+ case 1:
1290
+ if (!_context21.sent) {
1291
+ _context21.next = 2;
1292
+ break;
1293
+ }
1294
+ _Logger.default.info('Registration trigger handled by resumeFailover path', loggerContext);
1295
+ return _context21.abrupt("return");
1296
+ case 2:
1297
+ if (!(this.primaryMobiusUris.length > 0)) {
1298
+ _context21.next = 5;
1299
+ break;
1300
+ }
1301
+ _context21.next = 3;
1302
+ return this.attemptRegistrationWithServers(_constants2.REGISTRATION_UTIL, this.primaryMobiusUris);
1303
+ case 3:
1304
+ abort = _context21.sent;
1305
+ if (!(!this.isDeviceRegistered() && !abort)) {
1306
+ _context21.next = 4;
1307
+ break;
1308
+ }
1309
+ _context21.next = 4;
1310
+ return this.startFailoverTimer();
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:
1318
+ case "end":
1319
+ return _context21.stop();
1320
+ }
1321
+ }, _callee21, this);
1322
+ }));
1323
+ function triggerRegistration() {
1324
+ return _triggerRegistration.apply(this, arguments);
1325
+ }
1326
+ return triggerRegistration;
1327
+ }()
1328
+ /**
1329
+ * Attempts registration with the server list received in
1330
+ * argument one by one until registration either succeeds with
1331
+ * one or all of them are tried.
1332
+ *
1333
+ * attempt has hit a final error and a retry should not be scheduled
1334
+ * else false.
1335
+ */
1336
+ )
1337
+ }, {
1338
+ key: "attemptRegistrationWithServers",
1339
+ value: (function () {
1340
+ var _attemptRegistrationWithServers = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee22(caller) {
1341
+ var _this8 = this;
1342
+ var servers,
1343
+ loggerContext,
1344
+ abort,
1345
+ connectedWebSocketUrl,
1346
+ _iterator2,
1347
+ _step2,
1348
+ _loop,
1349
+ _ret,
1350
+ _args23 = arguments,
1351
+ _t6;
1352
+ return _regenerator.default.wrap(function (_context23) {
1353
+ while (1) switch (_context23.prev = _context23.next) {
1354
+ case 0:
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
+ };
1360
+ abort = false;
1361
+ this.retryAfter = undefined;
1362
+ if (!this.failoverImmediately) {
1363
+ _context23.next = 1;
1364
+ break;
1365
+ }
1366
+ return _context23.abrupt("return", abort);
1367
+ case 1:
1368
+ if (!this.isDeviceRegistered()) {
1369
+ _context23.next = 2;
1370
+ break;
1371
+ }
1372
+ _Logger.default.info("[".concat(caller, "] : Device already registered with : ").concat(this.activeMobiusUrl), loggerContext);
1373
+ return _context23.abrupt("return", abort);
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
+ }
1385
+ _iterator2 = _createForOfIteratorHelper(servers);
1386
+ _context23.prev = 3;
1387
+ _loop = /*#__PURE__*/_regenerator.default.mark(function _loop() {
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) {
1391
+ case 0:
1392
+ url = _step2.value;
1393
+ serverType = _this8.getServerType(url);
1394
+ _context22.prev = 1;
1395
+ abort = false;
1396
+ _this8.registrationStatus = _types2.RegistrationStatus.INACTIVE;
1397
+ _this8.lineEmitter(_types3.LINE_EVENTS.CONNECTING);
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
+
1406
+ // eslint-disable-next-line no-await-in-loop
1407
+ _context22.next = 2;
1408
+ return _this8.apiRequest.connectToMobiusSocket(wssNormalizedUrl);
1409
+ case 2:
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;
1418
+ _this8.clearFailoverState();
1419
+ _this8.deviceInfo = resp.body;
1420
+ _this8.registrationStatus = _types2.RegistrationStatus.ACTIVE;
1421
+ _this8.setActiveMobiusUrl(connectedWebSocketUrl || url);
1422
+ _this8.lineEmitter(_types3.LINE_EVENTS.REGISTERED, resp.body);
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);
1424
+ _this8.setIntervalValues(_this8.deviceInfo);
1425
+ _this8.metricManager.setDeviceInfo(_this8.deviceInfo);
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);
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);
1428
+ _this8.initiateFailback();
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) {
1436
+ var _body$headers$trackin, _body$headers;
1437
+ if (isFinalError) {
1438
+ _this8.lineEmitter(_types3.LINE_EVENTS.ERROR, undefined, clientError);
1439
+ } else {
1440
+ _this8.lineEmitter(_types3.LINE_EVENTS.UNREGISTERED);
1441
+ }
1442
+ _this8.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);
1443
+ }, {
1444
+ method: caller,
1445
+ file: _constants2.REGISTRATION_FILE
1446
+ }, function (retryAfter, retryCaller) {
1447
+ return _this8.handle429Retry(retryAfter, retryCaller);
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;
1454
+ if (!(_this8.registrationStatus === _types2.RegistrationStatus.ACTIVE)) {
1455
+ _context22.next = 7;
1456
+ break;
1457
+ }
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)'
1473
+ });
1474
+ case 8:
1475
+ _Logger.default.log("[".concat(caller, "] : Mobius WebSocket disconnect complete after registration error - serverType: ").concat(serverType), loggerContext);
1476
+ case 9:
1477
+ if (!abort) {
1478
+ _context22.next = 11;
1479
+ break;
1480
+ }
1481
+ _this8.setStatus(_types2.RegistrationStatus.INACTIVE);
1482
+ // eslint-disable-next-line no-await-in-loop
1483
+ _context22.next = 10;
1484
+ return (0, _common.uploadLogs)();
1485
+ case 10:
1486
+ return _context22.abrupt("return", 0);
1487
+ case 11:
1488
+ case "end":
1489
+ return _context22.stop();
1490
+ }
1491
+ }, _loop, null, [[1, 5]]);
1492
+ });
1493
+ _iterator2.s();
1494
+ case 4:
1495
+ if ((_step2 = _iterator2.n()).done) {
1496
+ _context23.next = 7;
1497
+ break;
1498
+ }
1499
+ return _context23.delegateYield(_loop(), "t0", 5);
1500
+ case 5:
1501
+ _ret = _context23.t0;
1502
+ if (!(_ret === 0)) {
1503
+ _context23.next = 6;
1504
+ break;
1505
+ }
1506
+ return _context23.abrupt("continue", 7);
1507
+ case 6:
1508
+ _context23.next = 4;
1509
+ break;
1510
+ case 7:
1511
+ _context23.next = 9;
1512
+ break;
1513
+ case 8:
1514
+ _context23.prev = 8;
1515
+ _t6 = _context23["catch"](3);
1516
+ _iterator2.e(_t6);
1517
+ case 9:
1518
+ _context23.prev = 9;
1519
+ _iterator2.f();
1520
+ return _context23.finish(9);
1521
+ case 10:
1522
+ return _context23.abrupt("return", abort);
1523
+ case 11:
1524
+ case "end":
1525
+ return _context23.stop();
1526
+ }
1527
+ }, _callee22, this, [[3, 8, 9, 10]]);
1528
+ }));
1529
+ function attemptRegistrationWithServers(_x13) {
1530
+ return _attemptRegistrationWithServers.apply(this, arguments);
1531
+ }
1532
+ return attemptRegistrationWithServers;
1533
+ }()
1534
+ /**
1535
+ * This method sets up a timer to periodically send keep-alive requests to maintain a connection.
1536
+ * It handles retries, error handling, and re-registration attempts based on the response, ensuring continuous connectivity with the server.
1537
+ */
1538
+ )
1539
+ }, {
1540
+ key: "startKeepaliveTimer",
1541
+ value: (function () {
1542
+ var _startKeepaliveTimer = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee25(url, interval, serverType) {
1543
+ var _this9 = this;
1544
+ var RETRY_COUNT_THRESHOLD;
1545
+ return _regenerator.default.wrap(function (_context26) {
1546
+ while (1) switch (_context26.prev = _context26.next) {
1547
+ case 0:
1548
+ this.clearKeepaliveTimer();
1549
+ RETRY_COUNT_THRESHOLD = this.isCCFlow ? 4 : 5;
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) {
1555
+ case 0:
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;
1593
+ break;
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;
1618
+ }
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;
1657
+ break;
1658
+ case 8:
1659
+ if (_error.statusCode === 404) {
1660
+ _this9.handle404KeepaliveFailure(_constants2.KEEPALIVE_UTIL);
1661
+ }
1662
+ case 9:
1663
+ _context24.next = 11;
1664
+ break;
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
+ }
1678
+ }
1679
+ case 1:
1680
+ case "end":
1681
+ return _context25.stop();
1682
+ }
1683
+ }, _callee24);
1684
+ })));
1685
+ case 1:
1686
+ case "end":
1687
+ return _context26.stop();
1688
+ }
1689
+ }, _callee25, this);
1690
+ }));
1691
+ function startKeepaliveTimer(_x14, _x15, _x16) {
1692
+ return _startKeepaliveTimer.apply(this, arguments);
1693
+ }
1694
+ return startKeepaliveTimer;
1695
+ }()
1696
+ /**
1697
+ * Clears the keepalive timer if running.
1698
+ */
1699
+ )
1700
+ }, {
1701
+ key: "clearKeepaliveTimer",
1702
+ value: function clearKeepaliveTimer() {
1703
+ if (this.webWorker) {
1704
+ this.webWorker.postMessage({
1705
+ type: _types2.WorkerMessageType.CLEAR_KEEPALIVE
1706
+ });
1707
+ this.webWorker.terminate();
1708
+ this.webWorker = undefined;
1709
+ }
1710
+ }
1711
+ }, {
1712
+ key: "isReconnectPending",
1713
+ value: function isReconnectPending() {
1714
+ return this.reconnectPending;
1715
+ }
1716
+ }, {
1717
+ key: "deregister",
1718
+ value: function () {
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) {
1728
+ case 0:
1729
+ closeMobiusWss = _args27.length > 0 && _args27[0] !== undefined ? _args27[0] : false;
1730
+ loggerContext = {
1731
+ file: _constants2.REGISTRATION_FILE,
1732
+ method: _constants2.METHODS.DEREGISTER
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);
1738
+ case 2:
1739
+ _Logger.default.log('Registration successfully deregistered', loggerContext);
1740
+ _context27.next = 4;
1741
+ break;
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:
1759
+ this.clearKeepaliveTimer();
1760
+ this.setStatus(_types2.RegistrationStatus.INACTIVE);
1761
+ this.clearFailoverState();
1762
+ case 7:
1763
+ case "end":
1764
+ return _context27.stop();
1765
+ }
1766
+ }, _callee26, this, [[1, 3]]);
1767
+ }));
1768
+ function deregister() {
1769
+ return _deregister.apply(this, arguments);
1770
+ }
1771
+ return deregister;
1772
+ }()
1773
+ /**
1774
+ * Indicates whether the calling client is in a mode
1775
+ * to retry registration.
1776
+ */
1777
+ }, {
1778
+ key: "isRegRetry",
1779
+ value: function isRegRetry() {
1780
+ return this.registerRetry;
1781
+ }
1782
+
1783
+ /**
1784
+ * Sets the received value in instance variable
1785
+ * registerRetry for registration retry cases.
1786
+ *
1787
+ */
1788
+ }, {
1789
+ key: "setRegRetry",
1790
+ value: function setRegRetry(value) {
1791
+ this.registerRetry = value;
1792
+ }
1793
+
1794
+ /**
1795
+ * Restores the deviceInfo object in callingClient when receiving a 403 with error code 101.
1796
+ *
1797
+ */
1798
+ }, {
1799
+ key: "getExistingDevice",
1800
+ value: function getExistingDevice(restoreData) {
1801
+ if (restoreData.devices && restoreData.devices.length > 0) {
1802
+ this.deviceInfo = {
1803
+ userId: restoreData.userId,
1804
+ device: restoreData.devices[0],
1805
+ keepaliveInterval: _constants2.DEFAULT_KEEPALIVE_INTERVAL,
1806
+ rehomingIntervalMax: _constants2.DEFAULT_REHOMING_INTERVAL_MAX,
1807
+ rehomingIntervalMin: _constants2.DEFAULT_REHOMING_INTERVAL_MIN
1808
+ };
1809
+ var stringToReplace = "".concat(_constants2.DEVICES_ENDPOINT_RESOURCE, "/").concat(restoreData.devices[0].deviceId);
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
+ }
1815
+ this.setActiveMobiusUrl(uri);
1816
+ this.registrationStatus = _types2.RegistrationStatus.ACTIVE;
1817
+ return true;
1818
+ }
1819
+ return false;
1820
+ }
1821
+
1822
+ /**
1823
+ * Invoked to re-register in cases when the registration
1824
+ * is lost due to some failure.
1825
+ * If there are active calls, it will only mark reconnectPending
1826
+ * as true and then retry will happen when this method gets
1827
+ * invoked again on receiving all calls cleared event from
1828
+ * callManager.
1829
+ *
1830
+ */
1831
+ }, {
1832
+ key: "reconnectOnFailure",
1833
+ value: (function () {
1834
+ var _reconnectOnFailure = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee27(caller) {
1835
+ var abort;
1836
+ return _regenerator.default.wrap(function (_context28) {
1837
+ while (1) switch (_context28.prev = _context28.next) {
1838
+ case 0:
1839
+ _Logger.default.info(_constants.METHOD_START_MESSAGE, {
1840
+ method: _constants2.METHODS.RECONNECT_ON_FAILURE,
1841
+ file: _constants2.REGISTRATION_FILE
1842
+ });
1843
+ this.reconnectPending = false;
1844
+ if (this.isDeviceRegistered()) {
1845
+ _context28.next = 4;
1846
+ break;
1847
+ }
1848
+ if (!((0, _keys.default)(this.callManager.getActiveCalls()).length === 0)) {
1849
+ _context28.next = 3;
1850
+ break;
1851
+ }
1852
+ _context28.next = 1;
1853
+ return this.restorePreviousRegistration(caller);
1854
+ case 1:
1855
+ abort = _context28.sent;
1856
+ if (!(!abort && !this.isDeviceRegistered())) {
1857
+ _context28.next = 2;
1858
+ break;
1859
+ }
1860
+ _context28.next = 2;
1861
+ return this.restartRegistration(caller);
1862
+ case 2:
1863
+ _context28.next = 4;
1864
+ break;
1865
+ case 3:
1866
+ this.reconnectPending = true;
1867
+ _Logger.default.info('Active call(s) present, deferred reconnect till call cleanup.', {
1868
+ file: _constants2.REGISTRATION_FILE,
1869
+ method: _constants2.METHODS.RECONNECT_ON_FAILURE
1870
+ });
1871
+ case 4:
1872
+ case "end":
1873
+ return _context28.stop();
1874
+ }
1875
+ }, _callee27, this);
1876
+ }));
1877
+ function reconnectOnFailure(_x18) {
1878
+ return _reconnectOnFailure.apply(this, arguments);
1879
+ }
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;
1995
+ }())
1996
+ }]);
1997
+ }();
1998
+ /*
1999
+ */
2000
+ var createRegistration = exports.createRegistration = function createRegistration(webex, serviceData, mutex, lineEmitter, logLevel, jwe) {
2001
+ return new Registration(webex, serviceData, mutex, lineEmitter, logLevel, jwe);
2002
+ };
2003
+ //# sourceMappingURL=register.js.map