@webex/plugin-meetings 3.0.0-beta.2 → 3.0.0-beta.20

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 (365) hide show
  1. package/UPGRADING.md +9 -9
  2. package/browsers.js +19 -24
  3. package/dist/breakouts/breakout.js +116 -0
  4. package/dist/breakouts/breakout.js.map +1 -0
  5. package/dist/breakouts/collection.js +23 -0
  6. package/dist/breakouts/collection.js.map +1 -0
  7. package/dist/breakouts/index.js +226 -0
  8. package/dist/breakouts/index.js.map +1 -0
  9. package/dist/common/browser-detection.js +1 -20
  10. package/dist/common/browser-detection.js.map +1 -1
  11. package/dist/common/collection.js +5 -20
  12. package/dist/common/collection.js.map +1 -1
  13. package/dist/common/config.js +0 -7
  14. package/dist/common/config.js.map +1 -1
  15. package/dist/common/errors/captcha-error.js +10 -24
  16. package/dist/common/errors/captcha-error.js.map +1 -1
  17. package/dist/common/errors/intent-to-join.js +11 -24
  18. package/dist/common/errors/intent-to-join.js.map +1 -1
  19. package/dist/common/errors/join-meeting.js +12 -25
  20. package/dist/common/errors/join-meeting.js.map +1 -1
  21. package/dist/common/errors/media.js +10 -24
  22. package/dist/common/errors/media.js.map +1 -1
  23. package/dist/common/errors/parameter.js +5 -33
  24. package/dist/common/errors/parameter.js.map +1 -1
  25. package/dist/common/errors/password-error.js +10 -24
  26. package/dist/common/errors/password-error.js.map +1 -1
  27. package/dist/common/errors/permission.js +9 -23
  28. package/dist/common/errors/permission.js.map +1 -1
  29. package/dist/common/errors/reconnection-in-progress.js +0 -17
  30. package/dist/common/errors/reconnection-in-progress.js.map +1 -1
  31. package/dist/common/errors/reconnection.js +10 -24
  32. package/dist/common/errors/reconnection.js.map +1 -1
  33. package/dist/common/errors/stats.js +10 -24
  34. package/dist/common/errors/stats.js.map +1 -1
  35. package/dist/common/errors/webex-errors.js +6 -41
  36. package/dist/common/errors/webex-errors.js.map +1 -1
  37. package/dist/common/errors/webex-meetings-error.js +5 -25
  38. package/dist/common/errors/webex-meetings-error.js.map +1 -1
  39. package/dist/common/events/events-scope.js +0 -22
  40. package/dist/common/events/events-scope.js.map +1 -1
  41. package/dist/common/events/events.js +0 -23
  42. package/dist/common/events/events.js.map +1 -1
  43. package/dist/common/events/trigger-proxy.js +0 -12
  44. package/dist/common/events/trigger-proxy.js.map +1 -1
  45. package/dist/common/events/util.js +0 -15
  46. package/dist/common/events/util.js.map +1 -1
  47. package/dist/common/logs/logger-config.js +0 -4
  48. package/dist/common/logs/logger-config.js.map +1 -1
  49. package/dist/common/logs/logger-proxy.js +1 -8
  50. package/dist/common/logs/logger-proxy.js.map +1 -1
  51. package/dist/common/logs/request.js +37 -60
  52. package/dist/common/logs/request.js.map +1 -1
  53. package/dist/common/queue.js +4 -14
  54. package/dist/common/queue.js.map +1 -1
  55. package/dist/config.js +6 -6
  56. package/dist/config.js.map +1 -1
  57. package/dist/constants.js +88 -46
  58. package/dist/constants.js.map +1 -1
  59. package/dist/index.js +1 -17
  60. package/dist/index.js.map +1 -1
  61. package/dist/locus-info/controlsUtils.js +12 -29
  62. package/dist/locus-info/controlsUtils.js.map +1 -1
  63. package/dist/locus-info/embeddedAppsUtils.js +3 -26
  64. package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
  65. package/dist/locus-info/fullState.js +0 -15
  66. package/dist/locus-info/fullState.js.map +1 -1
  67. package/dist/locus-info/hostUtils.js +4 -12
  68. package/dist/locus-info/hostUtils.js.map +1 -1
  69. package/dist/locus-info/index.js +184 -190
  70. package/dist/locus-info/index.js.map +1 -1
  71. package/dist/locus-info/infoUtils.js +3 -37
  72. package/dist/locus-info/infoUtils.js.map +1 -1
  73. package/dist/locus-info/mediaSharesUtils.js +12 -38
  74. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  75. package/dist/locus-info/parser.js +92 -118
  76. package/dist/locus-info/parser.js.map +1 -1
  77. package/dist/locus-info/selfUtils.js +34 -91
  78. package/dist/locus-info/selfUtils.js.map +1 -1
  79. package/dist/media/index.js +67 -111
  80. package/dist/media/index.js.map +1 -1
  81. package/dist/media/properties.js +80 -114
  82. package/dist/media/properties.js.map +1 -1
  83. package/dist/media/util.js +2 -9
  84. package/dist/media/util.js.map +1 -1
  85. package/dist/mediaQualityMetrics/config.js +10 -12
  86. package/dist/mediaQualityMetrics/config.js.map +1 -1
  87. package/dist/meeting/effectsState.js +125 -190
  88. package/dist/meeting/effectsState.js.map +1 -1
  89. package/dist/meeting/in-meeting-actions.js +5 -14
  90. package/dist/meeting/in-meeting-actions.js.map +1 -1
  91. package/dist/meeting/index.js +1692 -1925
  92. package/dist/meeting/index.js.map +1 -1
  93. package/dist/meeting/muteState.js +36 -77
  94. package/dist/meeting/muteState.js.map +1 -1
  95. package/dist/meeting/request.js +224 -230
  96. package/dist/meeting/request.js.map +1 -1
  97. package/dist/meeting/request.type.js +7 -0
  98. package/dist/meeting/request.type.js.map +1 -0
  99. package/dist/meeting/state.js +21 -31
  100. package/dist/meeting/state.js.map +1 -1
  101. package/dist/meeting/util.js +43 -215
  102. package/dist/meeting/util.js.map +1 -1
  103. package/dist/meeting-info/collection.js +6 -25
  104. package/dist/meeting-info/collection.js.map +1 -1
  105. package/dist/meeting-info/index.js +14 -32
  106. package/dist/meeting-info/index.js.map +1 -1
  107. package/dist/meeting-info/meeting-info-v2.js +193 -268
  108. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  109. package/dist/meeting-info/request.js +3 -15
  110. package/dist/meeting-info/request.js.map +1 -1
  111. package/dist/meeting-info/util.js +98 -183
  112. package/dist/meeting-info/util.js.map +1 -1
  113. package/dist/meeting-info/utilv2.js +137 -228
  114. package/dist/meeting-info/utilv2.js.map +1 -1
  115. package/dist/meetings/collection.js +5 -20
  116. package/dist/meetings/collection.js.map +1 -1
  117. package/dist/meetings/index.js +490 -560
  118. package/dist/meetings/index.js.map +1 -1
  119. package/dist/meetings/request.js +24 -41
  120. package/dist/meetings/request.js.map +1 -1
  121. package/dist/meetings/util.js +99 -155
  122. package/dist/meetings/util.js.map +1 -1
  123. package/dist/member/index.js +78 -86
  124. package/dist/member/index.js.map +1 -1
  125. package/dist/member/util.js +31 -68
  126. package/dist/member/util.js.map +1 -1
  127. package/dist/members/collection.js +3 -12
  128. package/dist/members/collection.js.map +1 -1
  129. package/dist/members/index.js +93 -200
  130. package/dist/members/index.js.map +1 -1
  131. package/dist/members/request.js +16 -39
  132. package/dist/members/request.js.map +1 -1
  133. package/dist/members/util.js +9 -38
  134. package/dist/members/util.js.map +1 -1
  135. package/dist/metrics/config.js +0 -2
  136. package/dist/metrics/config.js.map +1 -1
  137. package/dist/metrics/constants.js +1 -2
  138. package/dist/metrics/constants.js.map +1 -1
  139. package/dist/metrics/index.js +55 -135
  140. package/dist/metrics/index.js.map +1 -1
  141. package/dist/multistream/mediaRequestManager.js +57 -32
  142. package/dist/multistream/mediaRequestManager.js.map +1 -1
  143. package/dist/multistream/multistreamMedia.js +15 -21
  144. package/dist/multistream/multistreamMedia.js.map +1 -1
  145. package/dist/multistream/receiveSlot.js +10 -50
  146. package/dist/multistream/receiveSlot.js.map +1 -1
  147. package/dist/multistream/receiveSlotManager.js +45 -82
  148. package/dist/multistream/receiveSlotManager.js.map +1 -1
  149. package/dist/multistream/remoteMedia.js +18 -58
  150. package/dist/multistream/remoteMedia.js.map +1 -1
  151. package/dist/multistream/remoteMediaGroup.js +6 -40
  152. package/dist/multistream/remoteMediaGroup.js.map +1 -1
  153. package/dist/multistream/remoteMediaManager.js +362 -416
  154. package/dist/multistream/remoteMediaManager.js.map +1 -1
  155. package/dist/networkQualityMonitor/index.js +36 -57
  156. package/dist/networkQualityMonitor/index.js.map +1 -1
  157. package/dist/personal-meeting-room/index.js +21 -45
  158. package/dist/personal-meeting-room/index.js.map +1 -1
  159. package/dist/personal-meeting-room/request.js +1 -31
  160. package/dist/personal-meeting-room/request.js.map +1 -1
  161. package/dist/personal-meeting-room/util.js +0 -13
  162. package/dist/personal-meeting-room/util.js.map +1 -1
  163. package/dist/reachability/index.js +138 -182
  164. package/dist/reachability/index.js.map +1 -1
  165. package/dist/reachability/request.js +3 -18
  166. package/dist/reachability/request.js.map +1 -1
  167. package/dist/reactions/constants.js +13 -0
  168. package/dist/reactions/constants.js.map +1 -0
  169. package/dist/reactions/reactions.js +109 -0
  170. package/dist/reactions/reactions.js.map +1 -0
  171. package/dist/reactions/reactions.type.js +36 -0
  172. package/dist/reactions/reactions.type.js.map +1 -0
  173. package/dist/reconnection-manager/index.js +322 -455
  174. package/dist/reconnection-manager/index.js.map +1 -1
  175. package/dist/recording-controller/enums.js +17 -0
  176. package/dist/recording-controller/enums.js.map +1 -0
  177. package/dist/recording-controller/index.js +343 -0
  178. package/dist/recording-controller/index.js.map +1 -0
  179. package/dist/recording-controller/util.js +63 -0
  180. package/dist/recording-controller/util.js.map +1 -0
  181. package/dist/roap/index.js +39 -64
  182. package/dist/roap/index.js.map +1 -1
  183. package/dist/roap/request.js +94 -113
  184. package/dist/roap/request.js.map +1 -1
  185. package/dist/roap/turnDiscovery.js +85 -94
  186. package/dist/roap/turnDiscovery.js.map +1 -1
  187. package/dist/statsAnalyzer/global.js +0 -2
  188. package/dist/statsAnalyzer/global.js.map +1 -1
  189. package/dist/statsAnalyzer/index.js +85 -175
  190. package/dist/statsAnalyzer/index.js.map +1 -1
  191. package/dist/statsAnalyzer/mqaUtil.js +72 -53
  192. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  193. package/dist/transcription/index.js +22 -47
  194. package/dist/transcription/index.js.map +1 -1
  195. package/internal-README.md +7 -6
  196. package/package.json +25 -20
  197. package/src/breakouts/README.md +190 -0
  198. package/src/breakouts/breakout.ts +110 -0
  199. package/src/breakouts/collection.ts +19 -0
  200. package/src/breakouts/index.ts +225 -0
  201. package/src/common/{browser-detection.js → browser-detection.ts} +9 -6
  202. package/src/common/collection.ts +9 -7
  203. package/src/common/{config.js → config.ts} +1 -1
  204. package/src/common/errors/{captcha-error.js → captcha-error.ts} +11 -7
  205. package/src/common/errors/{intent-to-join.js → intent-to-join.ts} +12 -7
  206. package/src/common/errors/{join-meeting.js → join-meeting.ts} +17 -8
  207. package/src/common/errors/{media.js → media.ts} +11 -7
  208. package/src/common/errors/parameter.ts +11 -7
  209. package/src/common/errors/{password-error.js → password-error.ts} +11 -7
  210. package/src/common/errors/{permission.js → permission.ts} +10 -6
  211. package/src/common/errors/{reconnection-in-progress.js → reconnection-in-progress.ts} +0 -0
  212. package/src/common/errors/{reconnection.js → reconnection.ts} +11 -7
  213. package/src/common/errors/{stats.js → stats.ts} +11 -7
  214. package/src/common/errors/{webex-errors.js → webex-errors.ts} +8 -7
  215. package/src/common/errors/{webex-meetings-error.js → webex-meetings-error.ts} +4 -2
  216. package/src/common/events/{events-scope.js → events-scope.ts} +6 -2
  217. package/src/common/events/{events.js → events.ts} +5 -1
  218. package/src/common/events/{trigger-proxy.js → trigger-proxy.ts} +9 -5
  219. package/src/common/events/{util.js → util.ts} +2 -3
  220. package/src/common/logs/{logger-config.js → logger-config.ts} +1 -2
  221. package/src/common/logs/logger-proxy.ts +44 -0
  222. package/src/common/logs/{request.js → request.ts} +22 -9
  223. package/src/common/queue.ts +1 -2
  224. package/src/{config.js → config.ts} +17 -12
  225. package/src/constants.ts +40 -1
  226. package/src/index.js +1 -1
  227. package/src/locus-info/controlsUtils.ts +114 -0
  228. package/src/locus-info/{embeddedAppsUtils.js → embeddedAppsUtils.ts} +5 -6
  229. package/src/locus-info/{fullState.js → fullState.ts} +16 -12
  230. package/src/locus-info/{hostUtils.js → hostUtils.ts} +9 -8
  231. package/src/locus-info/{index.js → index.ts} +148 -64
  232. package/src/locus-info/{infoUtils.js → infoUtils.ts} +19 -8
  233. package/src/locus-info/{mediaSharesUtils.js → mediaSharesUtils.ts} +17 -17
  234. package/src/locus-info/{parser.js → parser.ts} +67 -79
  235. package/src/locus-info/{selfUtils.js → selfUtils.ts} +123 -68
  236. package/src/media/{index.js → index.ts} +181 -131
  237. package/src/media/{properties.js → properties.ts} +47 -28
  238. package/src/media/{util.js → util.ts} +2 -2
  239. package/src/mediaQualityMetrics/{config.js → config.ts} +46 -46
  240. package/src/meeting/{effectsState.js → effectsState.ts} +47 -41
  241. package/src/meeting/in-meeting-actions.ts +15 -3
  242. package/src/meeting/{index.js → index.ts} +2263 -1427
  243. package/src/meeting/{muteState.js → muteState.ts} +78 -42
  244. package/src/meeting/{request.js → request.ts} +292 -142
  245. package/src/meeting/request.type.ts +13 -0
  246. package/src/meeting/{state.js → state.ts} +50 -35
  247. package/src/meeting/{util.js → util.ts} +112 -115
  248. package/src/meeting-info/{collection.js → collection.ts} +6 -2
  249. package/src/meeting-info/{index.js → index.ts} +42 -36
  250. package/src/meeting-info/meeting-info-v2.ts +273 -0
  251. package/src/meeting-info/{request.js → request.ts} +14 -4
  252. package/src/meeting-info/{util.js → util.ts} +60 -51
  253. package/src/meeting-info/{utilv2.js → utilv2.ts} +65 -58
  254. package/src/meetings/{collection.js → collection.ts} +6 -3
  255. package/src/meetings/index.ts +1159 -0
  256. package/src/meetings/{request.js → request.ts} +32 -25
  257. package/src/meetings/{util.js → util.ts} +34 -32
  258. package/src/member/{index.js → index.ts} +102 -56
  259. package/src/member/{util.js → util.ts} +52 -25
  260. package/src/members/{collection.js → collection.ts} +2 -2
  261. package/src/members/{index.js → index.ts} +219 -142
  262. package/src/members/{request.js → request.ts} +60 -16
  263. package/src/members/{util.js → util.ts} +50 -48
  264. package/src/metrics/{config.js → config.ts} +254 -83
  265. package/src/metrics/{constants.js → constants.ts} +0 -2
  266. package/src/metrics/{index.js → index.ts} +106 -74
  267. package/src/multistream/mediaRequestManager.ts +81 -15
  268. package/src/multistream/multistreamMedia.ts +5 -0
  269. package/src/multistream/receiveSlot.ts +18 -12
  270. package/src/multistream/receiveSlotManager.ts +23 -21
  271. package/src/multistream/remoteMedia.ts +15 -5
  272. package/src/multistream/remoteMediaGroup.ts +4 -3
  273. package/src/multistream/remoteMediaManager.ts +153 -37
  274. package/src/networkQualityMonitor/{index.js → index.ts} +37 -25
  275. package/src/personal-meeting-room/{index.js → index.ts} +28 -19
  276. package/src/personal-meeting-room/{request.js → request.ts} +13 -4
  277. package/src/personal-meeting-room/{util.js → util.ts} +4 -4
  278. package/src/reachability/{index.js → index.ts} +99 -83
  279. package/src/reachability/request.ts +39 -33
  280. package/src/reactions/constants.ts +4 -0
  281. package/src/reactions/reactions.ts +104 -0
  282. package/src/reactions/reactions.type.ts +62 -0
  283. package/src/reconnection-manager/{index.js → index.ts} +195 -102
  284. package/src/recording-controller/enums.ts +8 -0
  285. package/src/recording-controller/index.ts +315 -0
  286. package/src/recording-controller/util.ts +58 -0
  287. package/src/roap/{index.js → index.ts} +73 -56
  288. package/src/roap/request.ts +157 -0
  289. package/src/roap/turnDiscovery.ts +77 -37
  290. package/src/statsAnalyzer/{global.js → global.ts} +30 -33
  291. package/src/statsAnalyzer/{index.js → index.ts} +468 -192
  292. package/src/statsAnalyzer/mqaUtil.ts +290 -0
  293. package/src/transcription/{index.js → index.ts} +46 -39
  294. package/test/integration/spec/journey.js +664 -463
  295. package/test/integration/spec/space-meeting.js +320 -206
  296. package/test/integration/spec/transcription.js +7 -8
  297. package/test/unit/spec/breakouts/breakout.ts +119 -0
  298. package/test/unit/spec/breakouts/collection.ts +15 -0
  299. package/test/unit/spec/breakouts/index.ts +293 -0
  300. package/test/unit/spec/common/browser-detection.js +9 -28
  301. package/test/unit/spec/fixture/locus.js +92 -90
  302. package/test/unit/spec/locus-info/controlsUtils.js +25 -5
  303. package/test/unit/spec/locus-info/embeddedAppsUtils.js +8 -6
  304. package/test/unit/spec/locus-info/index.js +104 -2
  305. package/test/unit/spec/locus-info/infoUtils.js +41 -32
  306. package/test/unit/spec/locus-info/lib/BasicSeqCmp.json +88 -430
  307. package/test/unit/spec/locus-info/lib/SeqCmp.json +513 -685
  308. package/test/unit/spec/locus-info/parser.js +3 -9
  309. package/test/unit/spec/locus-info/selfConstant.js +97 -103
  310. package/test/unit/spec/locus-info/selfUtils.js +105 -12
  311. package/test/unit/spec/media/index.ts +31 -47
  312. package/test/unit/spec/media/properties.ts +9 -9
  313. package/test/unit/spec/meeting/effectsState.js +39 -45
  314. package/test/unit/spec/meeting/in-meeting-actions.ts +5 -2
  315. package/test/unit/spec/meeting/index.js +2017 -742
  316. package/test/unit/spec/meeting/muteState.js +42 -33
  317. package/test/unit/spec/meeting/request.js +115 -44
  318. package/test/unit/spec/meeting/utils.js +104 -171
  319. package/test/unit/spec/meeting-info/meetinginfov2.js +100 -73
  320. package/test/unit/spec/meeting-info/request.js +7 -9
  321. package/test/unit/spec/meeting-info/util.js +11 -12
  322. package/test/unit/spec/meeting-info/utilv2.js +110 -74
  323. package/test/unit/spec/meetings/collection.js +1 -1
  324. package/test/unit/spec/meetings/index.js +439 -257
  325. package/test/unit/spec/meetings/utils.js +14 -12
  326. package/test/unit/spec/member/index.js +0 -1
  327. package/test/unit/spec/member/util.js +31 -7
  328. package/test/unit/spec/members/index.js +104 -54
  329. package/test/unit/spec/members/request.js +29 -20
  330. package/test/unit/spec/members/utils.js +8 -5
  331. package/test/unit/spec/metrics/index.js +16 -21
  332. package/test/unit/spec/multistream/mediaRequestManager.ts +316 -50
  333. package/test/unit/spec/multistream/receiveSlot.ts +6 -6
  334. package/test/unit/spec/multistream/receiveSlotManager.ts +13 -13
  335. package/test/unit/spec/multistream/remoteMedia.ts +10 -2
  336. package/test/unit/spec/multistream/remoteMediaGroup.ts +5 -5
  337. package/test/unit/spec/multistream/remoteMediaManager.ts +412 -65
  338. package/test/unit/spec/networkQualityMonitor/index.js +21 -15
  339. package/test/unit/spec/personal-meeting-room/personal-meeting-room.js +2 -7
  340. package/test/unit/spec/reachability/index.ts +58 -26
  341. package/test/unit/spec/reconnection-manager/index.js +102 -9
  342. package/test/unit/spec/recording-controller/index.js +231 -0
  343. package/test/unit/spec/recording-controller/util.js +102 -0
  344. package/test/unit/spec/roap/index.ts +2 -1
  345. package/test/unit/spec/roap/request.ts +114 -0
  346. package/test/unit/spec/roap/turnDiscovery.ts +64 -45
  347. package/test/unit/spec/stats-analyzer/index.js +27 -22
  348. package/test/utils/cmr.js +44 -42
  349. package/test/utils/testUtils.js +83 -74
  350. package/test/utils/webex-config.js +18 -18
  351. package/test/utils/webex-test-users.js +54 -50
  352. package/tsconfig.json +6 -0
  353. package/dist/media/internal-media-core-wrapper.js +0 -22
  354. package/dist/media/internal-media-core-wrapper.js.map +0 -1
  355. package/dist/peer-connection-manager/util.js +0 -124
  356. package/dist/peer-connection-manager/util.js.map +0 -1
  357. package/src/common/logs/logger-proxy.js +0 -33
  358. package/src/locus-info/controlsUtils.js +0 -102
  359. package/src/media/internal-media-core-wrapper.ts +0 -9
  360. package/src/meeting-info/meeting-info-v2.js +0 -255
  361. package/src/meetings/index.js +0 -1015
  362. package/src/peer-connection-manager/util.ts +0 -117
  363. package/src/roap/request.js +0 -127
  364. package/src/statsAnalyzer/mqaUtil.js +0 -173
  365. package/test/unit/spec/peerconnection-manager/utils.test-fixtures.ts +0 -389
@@ -13,7 +13,7 @@ import {
13
13
  SHARE_STOPPED_REASON,
14
14
  _CALL_,
15
15
  _LEFT_,
16
- _ID_
16
+ _ID_,
17
17
  } from '../constants';
18
18
  import BEHAVIORAL_METRICS from '../metrics/constants';
19
19
  import ReconnectionError from '../common/errors/reconnection';
@@ -21,6 +21,7 @@ import ReconnectInProgress from '../common/errors/reconnection-in-progress';
21
21
  import {eventType, reconnection, errorObjects} from '../metrics/config';
22
22
  import Media from '../media';
23
23
  import Metrics from '../metrics';
24
+ import Meeting from '../meeting';
24
25
 
25
26
  /**
26
27
  * Used to indicate that the reconnect logic needs to be retried.
@@ -37,6 +38,8 @@ class NeedsRetryError extends Error {}
37
38
  * @extends {Error}
38
39
  */
39
40
  class NeedsRejoinError extends Error {
41
+ wasSharing: any;
42
+
40
43
  /**
41
44
  * Creates an instance of NeedsRejoinError.
42
45
  * @param {Object} params
@@ -44,7 +47,14 @@ class NeedsRejoinError extends Error {
44
47
  * @param {Error} params.error
45
48
  * @memberof NeedsRejoinError
46
49
  */
47
- constructor({wasSharing, error = new Error('Meeting needs to be rejoined')}) {
50
+ constructor({
51
+ wasSharing,
52
+ error = new Error('Meeting needs to be rejoined'),
53
+ }: {
54
+ wasSharing?: boolean;
55
+ error?: Error;
56
+ }) {
57
+ // @ts-ignore
48
58
  super(error);
49
59
 
50
60
  this.wasSharing = wasSharing;
@@ -54,12 +64,21 @@ class NeedsRejoinError extends Error {
54
64
  /**
55
65
  * @export
56
66
  * @class ReconnectionManager
57
- */
67
+ */
58
68
  export default class ReconnectionManager {
69
+ autoRejoinEnabled: any;
70
+ iceState: any;
71
+ maxRejoinAttempts: any;
72
+ meeting: any;
73
+ rejoinAttempts: any;
74
+ shareStatus: any;
75
+ status: any;
76
+ tryCount: any;
77
+ webex: any;
59
78
  /**
60
79
  * @param {Meeting} meeting
61
80
  */
62
- constructor(meeting) {
81
+ constructor(meeting: Meeting) {
63
82
  /**
64
83
  * Stores ICE reconnection state data.
65
84
  *
@@ -72,7 +91,8 @@ export default class ReconnectionManager {
72
91
  disconnected: false,
73
92
  resolve: () => {},
74
93
  timer: undefined,
75
- timeoutDuration: meeting.config.reconnection.iceReconnectionTimeout
94
+ // @ts-ignore
95
+ timeoutDuration: meeting.config.reconnection.iceReconnectionTimeout,
76
96
  };
77
97
 
78
98
  /**
@@ -80,23 +100,24 @@ export default class ReconnectionManager {
80
100
  * @type {String}
81
101
  * @private
82
102
  * @memberof ReconnectionManager
83
- */
103
+ */
84
104
  this.status = RECONNECTION.STATE.DEFAULT_STATUS;
85
105
  /**
86
106
  * @instance
87
107
  * @type {Number}
88
108
  * @private
89
109
  * @memberof ReconnectionManager
90
- */
110
+ */
91
111
  this.tryCount = RECONNECTION.STATE.DEFAULT_TRY_COUNT;
92
112
  /**
93
113
  * @instance
94
114
  * @type {Object}
95
115
  * @private
96
116
  * @memberof ReconnectionManager
97
- */
117
+ */
98
118
  // TODO : change this logic to not save the meeting instance
99
119
  // It gets complicated when meeting ends on remote side , We have a old meeting instance which is not up to date
120
+ // @ts-ignore
100
121
  this.webex = meeting.webex;
101
122
  /**
102
123
  * @instance
@@ -108,11 +129,12 @@ export default class ReconnectionManager {
108
129
  // try moving this to meetings collection
109
130
  this.meeting = meeting;
110
131
 
132
+ // @ts-ignore
111
133
  this.maxRejoinAttempts = meeting.config.reconnection.maxRejoinAttempts;
112
134
  this.rejoinAttempts = RECONNECTION.STATE.DEFAULT_TRY_COUNT;
135
+ // @ts-ignore
113
136
  this.autoRejoinEnabled = meeting.config.reconnection.autoRejoin;
114
137
 
115
-
116
138
  // Make sure reconnection state is in default
117
139
  this.reset();
118
140
  }
@@ -140,7 +162,7 @@ export default class ReconnectionManager {
140
162
  * @public
141
163
  * @memberof ReconnectionManager
142
164
  */
143
- iceReconnected() {
165
+ public iceReconnected() {
144
166
  if (this.iceState.disconnected) {
145
167
  LoggerProxy.logger.log('ReconnectionManager:index#iceReconnected --> ice has reconnected');
146
168
 
@@ -160,20 +182,23 @@ export default class ReconnectionManager {
160
182
  * @public
161
183
  * @memberof ReconnectionManager
162
184
  */
163
- waitForIceReconnect() {
185
+ public waitForIceReconnect() {
164
186
  if (!this.iceState.disconnected) {
165
- LoggerProxy.logger.log('ReconnectionManager:index#waitForIceReconnect --> waiting for ice reconnect');
187
+ LoggerProxy.logger.log(
188
+ 'ReconnectionManager:index#waitForIceReconnect --> waiting for ice reconnect'
189
+ );
166
190
 
167
191
  this.iceState.disconnected = true;
168
192
 
169
- return new Promise((resolve, reject) => {
193
+ return new Promise<void>((resolve, reject) => {
170
194
  this.iceState.timer = setTimeout(() => {
171
195
  if (this.iceState.disconnected === false) {
172
196
  resolve();
173
- }
174
- else {
197
+ } else {
175
198
  this.iceState.disconnected = false;
176
- reject(new Error(`ice reconnection did not occur in ${this.iceState.timeoutDuration}ms`));
199
+ reject(
200
+ new Error(`ice reconnection did not occur in ${this.iceState.timeoutDuration}ms`)
201
+ );
177
202
  }
178
203
  }, this.iceState.timeoutDuration);
179
204
 
@@ -190,7 +215,7 @@ export default class ReconnectionManager {
190
215
  * @public
191
216
  * @memberof ReconnectionManager
192
217
  */
193
- reset() {
218
+ public reset() {
194
219
  this.status = RECONNECTION.STATE.DEFAULT_STATUS;
195
220
  this.tryCount = RECONNECTION.STATE.DEFAULT_TRY_COUNT;
196
221
  this.rejoinAttempts = RECONNECTION.STATE.DEFAULT_TRY_COUNT;
@@ -201,19 +226,18 @@ export default class ReconnectionManager {
201
226
  * @public
202
227
  * @memberof ReconnectionManager
203
228
  */
204
- cleanUp() {
229
+ public cleanUp() {
205
230
  this.reset();
206
231
  this.meeting = null;
207
232
  }
208
233
 
209
-
210
234
  /**
211
235
  * @public
212
236
  * @memberof ReconnectionManager
213
237
  * @returns {Boolean} true if reconnection operation is in progress
214
238
  */
215
239
  isReconnectInProgress() {
216
- return (this.status === RECONNECTION.STATE.IN_PROGRESS);
240
+ return this.status === RECONNECTION.STATE.IN_PROGRESS;
217
241
  }
218
242
 
219
243
  /**
@@ -222,7 +246,7 @@ export default class ReconnectionManager {
222
246
  * @private
223
247
  * @memberof ReconnectionManager
224
248
  */
225
- validate() {
249
+ private validate() {
226
250
  if (this.meeting.config.reconnection.enabled) {
227
251
  if (
228
252
  this.status === RECONNECTION.STATE.DEFAULT_STATUS ||
@@ -231,7 +255,9 @@ export default class ReconnectionManager {
231
255
  return true;
232
256
  }
233
257
 
234
- LoggerProxy.logger.info('ReconnectionManager:index#validate --> Reconnection already in progress.');
258
+ LoggerProxy.logger.info(
259
+ 'ReconnectionManager:index#validate --> Reconnection already in progress.'
260
+ );
235
261
 
236
262
  throw new ReconnectInProgress('Reconnection already in progress.');
237
263
  }
@@ -250,39 +276,55 @@ export default class ReconnectionManager {
250
276
  * @public
251
277
  * @memberof ReconnectionManager
252
278
  */
253
- async reconnect({networkDisconnect = false, networkRetry = false} = {}) {
254
- LoggerProxy.logger.info(`ReconnectionManager:index#reconnect --> Reconnection start for meeting ${this.meeting.id}.`);
279
+ public async reconnect({
280
+ networkDisconnect = false,
281
+ networkRetry = false,
282
+ }: {
283
+ networkDisconnect?: boolean;
284
+ networkRetry?: boolean;
285
+ } = {}) {
286
+ LoggerProxy.logger.info(
287
+ `ReconnectionManager:index#reconnect --> Reconnection start for meeting ${this.meeting.id}.`
288
+ );
255
289
  // First, validate that we can reconnect, if not, it will throw an error
256
290
  try {
257
291
  this.validate();
258
- }
259
- catch (error) {
260
- LoggerProxy.logger.info('ReconnectionManager:index#reconnect --> Reconnection unable to begin.', error);
292
+ } catch (error) {
293
+ LoggerProxy.logger.info(
294
+ 'ReconnectionManager:index#reconnect --> Reconnection unable to begin.',
295
+ error
296
+ );
261
297
  throw error;
262
298
  }
263
299
 
264
300
  if (!networkRetry) {
265
301
  // Only log START metrics on the initial reconnect
266
- LoggerProxy.logger.info('ReconnectionManager:index#reconnect --> Sending reconnect start metric.');
302
+ LoggerProxy.logger.info(
303
+ 'ReconnectionManager:index#reconnect --> Sending reconnect start metric.'
304
+ );
267
305
  Metrics.postEvent({
268
306
  event: eventType.MEDIA_RECONNECTING,
269
- meeting: this.meeting
307
+ meeting: this.meeting,
270
308
  });
271
309
  }
272
310
 
273
311
  return this.executeReconnection({networkDisconnect})
274
312
  .then(() => {
275
313
  LoggerProxy.logger.info('ReconnectionManager:index#reconnect --> Reconnection successful.');
276
- LoggerProxy.logger.info('ReconnectionManager:index#reconnect --> Sending reconnect success metric.');
314
+ LoggerProxy.logger.info(
315
+ 'ReconnectionManager:index#reconnect --> Sending reconnect success metric.'
316
+ );
277
317
  Metrics.postEvent({
278
318
  event: eventType.MEDIA_RECOVERED,
279
319
  meeting: this.meeting,
280
- data: {recoveredBy: reconnection.RECOVERED_BY_NEW}
320
+ data: {recoveredBy: reconnection.RECOVERED_BY_NEW},
281
321
  });
282
322
  })
283
323
  .catch((reconnectError) => {
284
324
  if (reconnectError instanceof NeedsRetryError) {
285
- LoggerProxy.logger.info('ReconnectionManager:index#reconnect --> Reconnection not successful, retrying.');
325
+ LoggerProxy.logger.info(
326
+ 'ReconnectionManager:index#reconnect --> Reconnection not successful, retrying.'
327
+ );
286
328
  // Reset our reconnect status since we are looping back to the beginning
287
329
  this.status = RECONNECTION.STATE.DEFAULT_STATUS;
288
330
 
@@ -291,8 +333,13 @@ export default class ReconnectionManager {
291
333
  }
292
334
 
293
335
  // Reconnect has failed
294
- LoggerProxy.logger.error('ReconnectionManager:index#reconnect --> Reconnection failed.', reconnectError.message);
295
- LoggerProxy.logger.info('ReconnectionManager:index#reconnect --> Sending reconnect abort metric.');
336
+ LoggerProxy.logger.error(
337
+ 'ReconnectionManager:index#reconnect --> Reconnection failed.',
338
+ reconnectError.message
339
+ );
340
+ LoggerProxy.logger.info(
341
+ 'ReconnectionManager:index#reconnect --> Sending reconnect abort metric.'
342
+ );
296
343
 
297
344
  const reconnectMetric = {
298
345
  event: eventType.CALL_ABORTED,
@@ -304,10 +351,10 @@ export default class ReconnectionManager {
304
351
  errorCode: 2008,
305
352
  fatal: true,
306
353
  name: errorObjects.name.mediaEngine,
307
- shownToUser: false
308
- }
309
- ]
310
- }
354
+ shownToUser: false,
355
+ },
356
+ ],
357
+ },
311
358
  };
312
359
 
313
360
  Metrics.postEvent(reconnectMetric);
@@ -319,7 +366,6 @@ export default class ReconnectionManager {
319
366
  }
320
367
  }
321
368
 
322
-
323
369
  throw reconnectError;
324
370
  });
325
371
  }
@@ -332,43 +378,57 @@ export default class ReconnectionManager {
332
378
  * @private
333
379
  * @memberof ReconnectionManager
334
380
  */
335
- async executeReconnection({networkDisconnect = false}) {
381
+ private async executeReconnection({networkDisconnect = false}: {networkDisconnect?: boolean}) {
336
382
  this.status = RECONNECTION.STATE.IN_PROGRESS;
337
383
 
338
- LoggerProxy.logger.info('ReconnectionManager:index#executeReconnection --> Attempting to reconnect to meeting.');
384
+ LoggerProxy.logger.info(
385
+ 'ReconnectionManager:index#executeReconnection --> Attempting to reconnect to meeting.'
386
+ );
339
387
 
340
388
  if (networkDisconnect) {
341
389
  try {
342
390
  await this.reconnectMercuryWebSocket();
343
- LoggerProxy.logger.error('ReconnectionManager:index#executeReconnection --> Websocket reconnected.', this.webex.internal.device.url);
344
- }
345
- catch (error) {
346
- LoggerProxy.logger.error('ReconnectionManager:index#executeReconnection --> Unable to reconnect to websocket, giving up.');
391
+ LoggerProxy.logger.error(
392
+ 'ReconnectionManager:index#executeReconnection --> Websocket reconnected.',
393
+ this.webex.internal.device.url
394
+ );
395
+ } catch (error) {
396
+ LoggerProxy.logger.error(
397
+ 'ReconnectionManager:index#executeReconnection --> Unable to reconnect to websocket, giving up.'
398
+ );
347
399
  this.status = RECONNECTION.STATE.FAILURE;
348
- throw (error);
400
+ throw error;
349
401
  }
350
402
  }
351
403
 
352
404
  const wasSharing = this.meeting.shareStatus === SHARE_STATUS.LOCAL_SHARE_ACTIVE;
353
405
 
354
406
  try {
355
- LoggerProxy.logger.info('ReconnectionManager:index#executeReconnection --> Updating meeting data from server.');
407
+ LoggerProxy.logger.info(
408
+ 'ReconnectionManager:index#executeReconnection --> Updating meeting data from server.'
409
+ );
356
410
  await this.webex.meetings.syncMeetings();
357
- }
358
- catch (syncError) {
359
- LoggerProxy.logger.info('ReconnectionManager:index#executeReconnection --> Unable to sync meetings, reconnecting.', syncError);
360
- throw (new NeedsRetryError(syncError));
411
+ } catch (syncError) {
412
+ LoggerProxy.logger.info(
413
+ 'ReconnectionManager:index#executeReconnection --> Unable to sync meetings, reconnecting.',
414
+ syncError
415
+ );
416
+ throw new NeedsRetryError(syncError);
361
417
  }
362
418
 
363
419
  // TODO: try to improve this logic as the reconnection manager saves the instance of deleted meeting object
364
420
  // So that on rejoin it known what parametrs it was using
365
421
  if (!this.meeting || !this.webex.meetings.getMeetingByType(_ID_, this.meeting.id)) {
366
- LoggerProxy.logger.info('ReconnectionManager:index#executeReconnection --> Meeting got deleted due to inactivity or ended remotely ');
422
+ LoggerProxy.logger.info(
423
+ 'ReconnectionManager:index#executeReconnection --> Meeting got deleted due to inactivity or ended remotely '
424
+ );
367
425
 
368
426
  throw new Error('Unable to rejoin a meeting already ended or inactive .');
369
427
  }
370
428
 
371
- LoggerProxy.logger.info(`ReconnectionManager:index#executeReconnection --> Current state of meeting is ${this.meeting.state}`);
429
+ LoggerProxy.logger.info(
430
+ `ReconnectionManager:index#executeReconnection --> Current state of meeting is ${this.meeting.state}`
431
+ );
372
432
 
373
433
  // If the meeting state was left, no longer reconnect media
374
434
  if (this.meeting.state === _LEFT_) {
@@ -376,22 +436,25 @@ export default class ReconnectionManager {
376
436
  throw new Error('Unable to rejoin a call in LEFT state.');
377
437
  }
378
438
 
379
- throw (new NeedsRejoinError({wasSharing}));
439
+ throw new NeedsRejoinError({wasSharing});
380
440
  }
381
441
 
382
442
  try {
383
443
  const media = await this.reconnectMedia();
384
444
 
385
- LoggerProxy.logger.log('ReconnectionManager:index#executeReconnection --> Media reestablished');
445
+ LoggerProxy.logger.log(
446
+ 'ReconnectionManager:index#executeReconnection --> Media reestablished'
447
+ );
386
448
  this.status = RECONNECTION.STATE.COMPLETE;
387
449
 
388
450
  return media;
389
- }
390
- catch (error) {
391
- LoggerProxy.logger.error('ReconnectionManager:index#executeReconnection --> Media reestablishment failed');
451
+ } catch (error) {
452
+ LoggerProxy.logger.error(
453
+ 'ReconnectionManager:index#executeReconnection --> Media reestablishment failed'
454
+ );
392
455
  this.status = RECONNECTION.STATE.FAILURE;
393
456
 
394
- throw (error);
457
+ throw error;
395
458
  }
396
459
  }
397
460
 
@@ -404,7 +467,9 @@ export default class ReconnectionManager {
404
467
  */
405
468
  async rejoinMeeting(wasSharing = false) {
406
469
  try {
407
- LoggerProxy.logger.info('ReconnectionManager:index#rejoinMeeting --> attemping meeting rejoin');
470
+ LoggerProxy.logger.info(
471
+ 'ReconnectionManager:index#rejoinMeeting --> attemping meeting rejoin'
472
+ );
408
473
 
409
474
  await this.meeting.join({rejoin: true});
410
475
  LoggerProxy.logger.info('ReconnectionManager:index#rejoinMeeting --> meeting rejoined');
@@ -421,31 +486,32 @@ export default class ReconnectionManager {
421
486
  this.meeting,
422
487
  {
423
488
  file: 'reconnection-manager/index',
424
- function: 'rejoinMeeting'
489
+ function: 'rejoinMeeting',
425
490
  },
426
491
  EVENT_TRIGGERS.MEETING_STOPPED_SHARING_LOCAL,
427
492
  {
428
- reason: SHARE_STOPPED_REASON.MEETING_REJOIN
493
+ reason: SHARE_STOPPED_REASON.MEETING_REJOIN,
429
494
  }
430
495
  );
431
496
  }
432
- }
433
- catch (joinError) {
497
+ } catch (joinError) {
434
498
  this.rejoinAttempts += 1;
435
499
  if (this.rejoinAttempts <= this.maxRejoinAttempts) {
436
- LoggerProxy.logger.info(`ReconnectionManager:index#rejoinMeeting --> Unable to rejoin meeting, attempt #${this.rejoinAttempts}, retrying.`, joinError);
500
+ LoggerProxy.logger.info(
501
+ `ReconnectionManager:index#rejoinMeeting --> Unable to rejoin meeting, attempt #${this.rejoinAttempts}, retrying.`,
502
+ joinError
503
+ );
437
504
  this.rejoinMeeting();
438
- }
439
- else {
440
- LoggerProxy.logger.error('ReconnectionManager:index#rejoinMeeting --> Unable to rejoin meeting after max attempts.', joinError);
441
- Metrics.sendBehavioralMetric(
442
- BEHAVIORAL_METRICS.MEETING_MAX_REJOIN_FAILURE,
443
- {
444
- locus_id: this.meeting.locusUrl.split('/').pop(),
445
- reason: joinError.message,
446
- stack: joinError.stack
447
- }
505
+ } else {
506
+ LoggerProxy.logger.error(
507
+ 'ReconnectionManager:index#rejoinMeeting --> Unable to rejoin meeting after max attempts.',
508
+ joinError
448
509
  );
510
+ Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.MEETING_MAX_REJOIN_FAILURE, {
511
+ locus_id: this.meeting.locusUrl.split('/').pop(),
512
+ reason: joinError.message,
513
+ stack: joinError.stack,
514
+ });
449
515
  this.status = RECONNECTION.STATE.FAILURE;
450
516
  throw joinError;
451
517
  }
@@ -453,9 +519,11 @@ export default class ReconnectionManager {
453
519
 
454
520
  try {
455
521
  await this.reconnectMedia();
456
- }
457
- catch (mediaError) {
458
- LoggerProxy.logger.error('ReconnectionManager:index#rejoinMeeting --> Unable to reestablish media after rejoining.', mediaError);
522
+ } catch (mediaError) {
523
+ LoggerProxy.logger.error(
524
+ 'ReconnectionManager:index#rejoinMeeting --> Unable to reestablish media after rejoining.',
525
+ mediaError
526
+ );
459
527
  throw mediaError;
460
528
  }
461
529
  }
@@ -466,21 +534,32 @@ export default class ReconnectionManager {
466
534
  * @memberof ReconnectionManager
467
535
  */
468
536
  async reconnectMedia() {
469
- LoggerProxy.logger.log('ReconnectionManager:index#reconnectMedia --> Begin reestablishment of media');
537
+ LoggerProxy.logger.log(
538
+ 'ReconnectionManager:index#reconnectMedia --> Begin reestablishment of media'
539
+ );
470
540
 
471
- // we are not simply calling this.meeting.mediaProperties.webrtcMediaConnection.reconnect(),
472
- // but instead manually closing and creating new media connection, because we need to do the TURN discovery again
541
+ // do the TURN server discovery again since the TURN server might change
542
+ const turnServerResult = await this.meeting.roap.doTurnDiscovery(this.meeting, true);
473
543
 
474
- await this.meeting.closePeerConnections();
475
- this.meeting.mediaProperties.unsetPeerConnection();
544
+ const iceServers = [];
476
545
 
477
- const turnServerInfo = await this.meeting.roap.doTurnDiscovery(this.meeting, true);
478
-
479
- const mc = this.meeting.createMediaConnection(turnServerInfo);
546
+ if (turnServerResult.turnServerInfo) {
547
+ iceServers.push({
548
+ urls: turnServerResult.turnServerInfo.url,
549
+ username: turnServerResult.turnServerInfo.username || '',
550
+ credential: turnServerResult.turnServerInfo.password || '',
551
+ });
552
+ }
480
553
 
481
- this.meeting.statsAnalyzer.updateMediaConnection(mc);
554
+ await this.meeting.mediaProperties.webrtcMediaConnection.reconnect(iceServers);
482
555
 
483
- return mc.initiateOffer();
556
+ // resend media requests
557
+ if (this.meeting.isMultistream) {
558
+ Object.values(this.meeting.mediaRequestManagers).forEach((mediaRequestManager) =>
559
+ // @ts-ignore - Fix type
560
+ mediaRequestManager.commit()
561
+ );
562
+ }
484
563
  }
485
564
 
486
565
  /**
@@ -489,31 +568,45 @@ export default class ReconnectionManager {
489
568
  * @private
490
569
  * @memberof ReconnectionManager
491
570
  */
492
- async reconnectMercuryWebSocket() {
493
- LoggerProxy.logger.info('ReconnectionManager:index#reconnectMercuryWebSocket --> Reconnecting websocket.');
571
+ private async reconnectMercuryWebSocket() {
572
+ LoggerProxy.logger.info(
573
+ 'ReconnectionManager:index#reconnectMercuryWebSocket --> Reconnecting websocket.'
574
+ );
494
575
  // First, attempt to disconnect if we think we are already connected.
495
576
  if (this.webex.internal.mercury.connected) {
496
- LoggerProxy.logger.info('ReconnectionManager:index#reconnectMercuryWebSocket --> Disconnecting existing websocket.');
577
+ LoggerProxy.logger.info(
578
+ 'ReconnectionManager:index#reconnectMercuryWebSocket --> Disconnecting existing websocket.'
579
+ );
497
580
  try {
498
581
  await this.webex.internal.mercury.disconnect();
499
- LoggerProxy.logger.info('ReconnectionManager:index#reconnectMercuryWebSocket --> Websocket disconnected successfully.');
500
- }
501
- catch (disconnectError) {
582
+ LoggerProxy.logger.info(
583
+ 'ReconnectionManager:index#reconnectMercuryWebSocket --> Websocket disconnected successfully.'
584
+ );
585
+ } catch (disconnectError) {
502
586
  // If we can't disconnect, the sdk is in such a bad state that reconnecting is not going to happen.
503
- LoggerProxy.logger.error('ReconnectionManager:index#reconnectMercuryWebSocket --> Unable to disconnect from websocket, giving up.', disconnectError);
587
+ LoggerProxy.logger.error(
588
+ 'ReconnectionManager:index#reconnectMercuryWebSocket --> Unable to disconnect from websocket, giving up.',
589
+ disconnectError
590
+ );
504
591
  throw disconnectError;
505
592
  }
506
593
  }
507
594
 
508
595
  try {
509
- LoggerProxy.logger.info('ReconnectionManager:index#reconnectMercuryWebSocket --> Connecting websocket.');
596
+ LoggerProxy.logger.info(
597
+ 'ReconnectionManager:index#reconnectMercuryWebSocket --> Connecting websocket.'
598
+ );
510
599
  await this.webex.internal.mercury.connect();
511
- LoggerProxy.logger.info('ReconnectionManager:index#reconnectMercuryWebSocket --> Websocket connected successfully.');
512
- }
513
- catch (connectError) {
514
- LoggerProxy.logger.error('ReconnectionManager:index#reconnectMercuryWebSocket --> Unable to connect to websocket, giving up.', connectError);
515
-
516
- throw (connectError);
600
+ LoggerProxy.logger.info(
601
+ 'ReconnectionManager:index#reconnectMercuryWebSocket --> Websocket connected successfully.'
602
+ );
603
+ } catch (connectError) {
604
+ LoggerProxy.logger.error(
605
+ 'ReconnectionManager:index#reconnectMercuryWebSocket --> Unable to connect to websocket, giving up.',
606
+ connectError
607
+ );
608
+
609
+ throw connectError;
517
610
  }
518
611
  }
519
612
  }
@@ -0,0 +1,8 @@
1
+ enum RecordingAction {
2
+ Start = 'Start',
3
+ Stop = 'Stop',
4
+ Pause = 'Pause',
5
+ Resume = 'Resume',
6
+ }
7
+
8
+ export default RecordingAction;