@webex/plugin-meetings 3.0.0-beta.4 → 3.0.0-beta.400

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 (629) hide show
  1. package/README.md +58 -8
  2. package/UPGRADING.md +9 -9
  3. package/browsers.js +19 -24
  4. package/dist/annotation/annotation.types.js +7 -0
  5. package/dist/annotation/annotation.types.js.map +1 -0
  6. package/dist/annotation/constants.js +49 -0
  7. package/dist/annotation/constants.js.map +1 -0
  8. package/dist/annotation/index.js +342 -0
  9. package/dist/annotation/index.js.map +1 -0
  10. package/dist/breakouts/breakout.js +216 -0
  11. package/dist/breakouts/breakout.js.map +1 -0
  12. package/dist/breakouts/collection.js +23 -0
  13. package/dist/breakouts/collection.js.map +1 -0
  14. package/dist/breakouts/edit-lock-error.js +52 -0
  15. package/dist/breakouts/edit-lock-error.js.map +1 -0
  16. package/dist/breakouts/events.js +45 -0
  17. package/dist/breakouts/events.js.map +1 -0
  18. package/dist/breakouts/index.js +1048 -0
  19. package/dist/breakouts/index.js.map +1 -0
  20. package/dist/breakouts/request.js +78 -0
  21. package/dist/breakouts/request.js.map +1 -0
  22. package/dist/breakouts/utils.js +67 -0
  23. package/dist/breakouts/utils.js.map +1 -0
  24. package/dist/common/browser-detection.js +1 -20
  25. package/dist/common/browser-detection.js.map +1 -1
  26. package/dist/common/collection.js +5 -20
  27. package/dist/common/collection.js.map +1 -1
  28. package/dist/common/config.js +0 -7
  29. package/dist/common/config.js.map +1 -1
  30. package/dist/common/errors/captcha-error.js +10 -24
  31. package/dist/common/errors/captcha-error.js.map +1 -1
  32. package/dist/common/errors/intent-to-join.js +11 -24
  33. package/dist/common/errors/intent-to-join.js.map +1 -1
  34. package/dist/common/errors/join-meeting.js +12 -25
  35. package/dist/common/errors/join-meeting.js.map +1 -1
  36. package/dist/common/errors/media.js +10 -24
  37. package/dist/common/errors/media.js.map +1 -1
  38. package/dist/common/errors/no-meeting-info.js +51 -0
  39. package/dist/common/errors/no-meeting-info.js.map +1 -0
  40. package/dist/common/errors/parameter.js +5 -33
  41. package/dist/common/errors/parameter.js.map +1 -1
  42. package/dist/common/errors/password-error.js +10 -24
  43. package/dist/common/errors/password-error.js.map +1 -1
  44. package/dist/common/errors/permission.js +9 -23
  45. package/dist/common/errors/permission.js.map +1 -1
  46. package/dist/common/errors/reclaim-host-role-errors.js +158 -0
  47. package/dist/common/errors/reclaim-host-role-errors.js.map +1 -0
  48. package/dist/common/errors/reconnection-in-progress.js +0 -17
  49. package/dist/common/errors/reconnection-in-progress.js.map +1 -1
  50. package/dist/common/errors/reconnection.js +10 -24
  51. package/dist/common/errors/reconnection.js.map +1 -1
  52. package/dist/common/errors/stats.js +10 -24
  53. package/dist/common/errors/stats.js.map +1 -1
  54. package/dist/common/errors/webex-errors.js +54 -48
  55. package/dist/common/errors/webex-errors.js.map +1 -1
  56. package/dist/common/errors/webex-meetings-error.js +5 -25
  57. package/dist/common/errors/webex-meetings-error.js.map +1 -1
  58. package/dist/common/events/events-scope.js +0 -22
  59. package/dist/common/events/events-scope.js.map +1 -1
  60. package/dist/common/events/events.js +0 -23
  61. package/dist/common/events/events.js.map +1 -1
  62. package/dist/common/events/trigger-proxy.js +0 -12
  63. package/dist/common/events/trigger-proxy.js.map +1 -1
  64. package/dist/common/events/util.js +0 -15
  65. package/dist/common/events/util.js.map +1 -1
  66. package/dist/common/logs/logger-config.js +0 -4
  67. package/dist/common/logs/logger-config.js.map +1 -1
  68. package/dist/common/logs/logger-proxy.js +1 -8
  69. package/dist/common/logs/logger-proxy.js.map +1 -1
  70. package/dist/common/logs/request.js +41 -60
  71. package/dist/common/logs/request.js.map +1 -1
  72. package/dist/common/queue.js +28 -23
  73. package/dist/common/queue.js.map +1 -1
  74. package/dist/config.js +11 -15
  75. package/dist/config.js.map +1 -1
  76. package/dist/constants.js +347 -74
  77. package/dist/constants.js.map +1 -1
  78. package/dist/controls-options-manager/constants.js +14 -0
  79. package/dist/controls-options-manager/constants.js.map +1 -0
  80. package/dist/controls-options-manager/enums.js +27 -0
  81. package/dist/controls-options-manager/enums.js.map +1 -0
  82. package/dist/controls-options-manager/index.js +297 -0
  83. package/dist/controls-options-manager/index.js.map +1 -0
  84. package/dist/controls-options-manager/types.js +7 -0
  85. package/dist/controls-options-manager/types.js.map +1 -0
  86. package/dist/controls-options-manager/util.js +319 -0
  87. package/dist/controls-options-manager/util.js.map +1 -0
  88. package/dist/index.js +125 -18
  89. package/dist/index.js.map +1 -1
  90. package/dist/interceptors/index.js +15 -0
  91. package/dist/interceptors/index.js.map +1 -0
  92. package/dist/interceptors/locusRetry.js +93 -0
  93. package/dist/interceptors/locusRetry.js.map +1 -0
  94. package/dist/interpretation/collection.js +23 -0
  95. package/dist/interpretation/collection.js.map +1 -0
  96. package/dist/interpretation/index.js +380 -0
  97. package/dist/interpretation/index.js.map +1 -0
  98. package/dist/interpretation/siLanguage.js +25 -0
  99. package/dist/interpretation/siLanguage.js.map +1 -0
  100. package/dist/locus-info/controlsUtils.js +101 -29
  101. package/dist/locus-info/controlsUtils.js.map +1 -1
  102. package/dist/locus-info/embeddedAppsUtils.js +3 -26
  103. package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
  104. package/dist/locus-info/fullState.js +0 -15
  105. package/dist/locus-info/fullState.js.map +1 -1
  106. package/dist/locus-info/hostUtils.js +4 -12
  107. package/dist/locus-info/hostUtils.js.map +1 -1
  108. package/dist/locus-info/index.js +564 -246
  109. package/dist/locus-info/index.js.map +1 -1
  110. package/dist/locus-info/infoUtils.js +10 -38
  111. package/dist/locus-info/infoUtils.js.map +1 -1
  112. package/dist/locus-info/mediaSharesUtils.js +82 -38
  113. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  114. package/dist/locus-info/parser.js +314 -163
  115. package/dist/locus-info/parser.js.map +1 -1
  116. package/dist/locus-info/selfUtils.js +110 -92
  117. package/dist/locus-info/selfUtils.js.map +1 -1
  118. package/dist/media/index.js +107 -231
  119. package/dist/media/index.js.map +1 -1
  120. package/dist/media/properties.js +137 -222
  121. package/dist/media/properties.js.map +1 -1
  122. package/dist/media/util.js +2 -9
  123. package/dist/media/util.js.map +1 -1
  124. package/dist/mediaQualityMetrics/config.js +316 -501
  125. package/dist/mediaQualityMetrics/config.js.map +1 -1
  126. package/dist/meeting/in-meeting-actions.js +97 -14
  127. package/dist/meeting/in-meeting-actions.js.map +1 -1
  128. package/dist/meeting/index.js +5311 -3871
  129. package/dist/meeting/index.js.map +1 -1
  130. package/dist/meeting/locusMediaRequest.js +292 -0
  131. package/dist/meeting/locusMediaRequest.js.map +1 -0
  132. package/dist/meeting/muteState.js +260 -183
  133. package/dist/meeting/muteState.js.map +1 -1
  134. package/dist/meeting/request.js +421 -347
  135. package/dist/meeting/request.js.map +1 -1
  136. package/dist/meeting/request.type.js +7 -0
  137. package/dist/meeting/request.type.js.map +1 -0
  138. package/dist/meeting/state.js +21 -31
  139. package/dist/meeting/state.js.map +1 -1
  140. package/dist/meeting/util.js +672 -585
  141. package/dist/meeting/util.js.map +1 -1
  142. package/dist/meeting/voicea-meeting.js +172 -0
  143. package/dist/meeting/voicea-meeting.js.map +1 -0
  144. package/dist/meeting-info/collection.js +6 -25
  145. package/dist/meeting-info/collection.js.map +1 -1
  146. package/dist/meeting-info/index.js +87 -39
  147. package/dist/meeting-info/index.js.map +1 -1
  148. package/dist/meeting-info/meeting-info-v2.js +352 -283
  149. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  150. package/dist/meeting-info/request.js +3 -15
  151. package/dist/meeting-info/request.js.map +1 -1
  152. package/dist/meeting-info/util.js +99 -183
  153. package/dist/meeting-info/util.js.map +1 -1
  154. package/dist/meeting-info/utilv2.js +147 -234
  155. package/dist/meeting-info/utilv2.js.map +1 -1
  156. package/dist/meetings/collection.js +43 -19
  157. package/dist/meetings/collection.js.map +1 -1
  158. package/dist/meetings/index.js +895 -600
  159. package/dist/meetings/index.js.map +1 -1
  160. package/dist/meetings/meetings.types.js +7 -0
  161. package/dist/meetings/meetings.types.js.map +1 -0
  162. package/dist/meetings/request.js +26 -41
  163. package/dist/meetings/request.js.map +1 -1
  164. package/dist/meetings/util.js +184 -157
  165. package/dist/meetings/util.js.map +1 -1
  166. package/dist/member/index.js +134 -85
  167. package/dist/member/index.js.map +1 -1
  168. package/dist/member/types.js +25 -0
  169. package/dist/member/types.js.map +1 -0
  170. package/dist/member/util.js +158 -88
  171. package/dist/member/util.js.map +1 -1
  172. package/dist/members/collection.js +13 -12
  173. package/dist/members/collection.js.map +1 -1
  174. package/dist/members/index.js +194 -204
  175. package/dist/members/index.js.map +1 -1
  176. package/dist/members/request.js +113 -68
  177. package/dist/members/request.js.map +1 -1
  178. package/dist/members/types.js +15 -0
  179. package/dist/members/types.js.map +1 -0
  180. package/dist/members/util.js +324 -259
  181. package/dist/members/util.js.map +1 -1
  182. package/dist/metrics/constants.js +19 -7
  183. package/dist/metrics/constants.js.map +1 -1
  184. package/dist/metrics/index.js +11 -558
  185. package/dist/metrics/index.js.map +1 -1
  186. package/dist/multistream/mediaRequestManager.js +263 -50
  187. package/dist/multistream/mediaRequestManager.js.map +1 -1
  188. package/dist/multistream/receiveSlot.js +58 -65
  189. package/dist/multistream/receiveSlot.js.map +1 -1
  190. package/dist/multistream/receiveSlotManager.js +76 -95
  191. package/dist/multistream/receiveSlotManager.js.map +1 -1
  192. package/dist/multistream/remoteMedia.js +62 -76
  193. package/dist/multistream/remoteMedia.js.map +1 -1
  194. package/dist/multistream/remoteMediaGroup.js +82 -45
  195. package/dist/multistream/remoteMediaGroup.js.map +1 -1
  196. package/dist/multistream/remoteMediaManager.js +657 -448
  197. package/dist/multistream/remoteMediaManager.js.map +1 -1
  198. package/dist/multistream/sendSlotManager.js +255 -0
  199. package/dist/multistream/sendSlotManager.js.map +1 -0
  200. package/dist/networkQualityMonitor/index.js +40 -59
  201. package/dist/networkQualityMonitor/index.js.map +1 -1
  202. package/dist/personal-meeting-room/index.js +21 -45
  203. package/dist/personal-meeting-room/index.js.map +1 -1
  204. package/dist/personal-meeting-room/request.js +1 -31
  205. package/dist/personal-meeting-room/request.js.map +1 -1
  206. package/dist/personal-meeting-room/util.js +0 -13
  207. package/dist/personal-meeting-room/util.js.map +1 -1
  208. package/dist/reachability/clusterReachability.js +356 -0
  209. package/dist/reachability/clusterReachability.js.map +1 -0
  210. package/dist/reachability/index.js +297 -460
  211. package/dist/reachability/index.js.map +1 -1
  212. package/dist/reachability/request.js +20 -26
  213. package/dist/reachability/request.js.map +1 -1
  214. package/dist/reachability/util.js +29 -0
  215. package/dist/reachability/util.js.map +1 -0
  216. package/dist/reactions/constants.js +13 -0
  217. package/dist/reactions/constants.js.map +1 -0
  218. package/dist/reactions/reactions.js +109 -0
  219. package/dist/reactions/reactions.js.map +1 -0
  220. package/dist/reactions/reactions.type.js +36 -0
  221. package/dist/reactions/reactions.type.js.map +1 -0
  222. package/dist/reconnection-manager/index.js +413 -483
  223. package/dist/reconnection-manager/index.js.map +1 -1
  224. package/dist/recording-controller/enums.js +17 -0
  225. package/dist/recording-controller/enums.js.map +1 -0
  226. package/dist/recording-controller/index.js +362 -0
  227. package/dist/recording-controller/index.js.map +1 -0
  228. package/dist/recording-controller/util.js +64 -0
  229. package/dist/recording-controller/util.js.map +1 -0
  230. package/dist/roap/index.js +102 -86
  231. package/dist/roap/index.js.map +1 -1
  232. package/dist/roap/request.js +131 -135
  233. package/dist/roap/request.js.map +1 -1
  234. package/dist/roap/turnDiscovery.js +437 -116
  235. package/dist/roap/turnDiscovery.js.map +1 -1
  236. package/dist/rtcMetrics/constants.js +12 -0
  237. package/dist/rtcMetrics/constants.js.map +1 -0
  238. package/dist/rtcMetrics/index.js +179 -0
  239. package/dist/rtcMetrics/index.js.map +1 -0
  240. package/dist/statsAnalyzer/global.js +1 -95
  241. package/dist/statsAnalyzer/global.js.map +1 -1
  242. package/dist/statsAnalyzer/index.js +557 -583
  243. package/dist/statsAnalyzer/index.js.map +1 -1
  244. package/dist/statsAnalyzer/mqaUtil.js +326 -130
  245. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  246. package/dist/transcription/index.js +22 -47
  247. package/dist/transcription/index.js.map +1 -1
  248. package/dist/types/annotation/annotation.types.d.ts +42 -0
  249. package/dist/types/annotation/constants.d.ts +31 -0
  250. package/dist/types/annotation/index.d.ts +117 -0
  251. package/dist/types/breakouts/breakout.d.ts +8 -0
  252. package/dist/types/breakouts/collection.d.ts +5 -0
  253. package/dist/types/breakouts/edit-lock-error.d.ts +15 -0
  254. package/dist/types/breakouts/events.d.ts +8 -0
  255. package/dist/types/breakouts/index.d.ts +5 -0
  256. package/dist/types/breakouts/request.d.ts +22 -0
  257. package/dist/types/breakouts/utils.d.ts +15 -0
  258. package/dist/types/common/browser-detection.d.ts +9 -0
  259. package/dist/types/common/collection.d.ts +48 -0
  260. package/dist/types/common/config.d.ts +2 -0
  261. package/dist/types/common/errors/captcha-error.d.ts +15 -0
  262. package/dist/types/common/errors/intent-to-join.d.ts +16 -0
  263. package/dist/types/common/errors/join-meeting.d.ts +17 -0
  264. package/dist/types/common/errors/media.d.ts +15 -0
  265. package/dist/types/common/errors/no-meeting-info.d.ts +14 -0
  266. package/dist/types/common/errors/parameter.d.ts +15 -0
  267. package/dist/types/common/errors/password-error.d.ts +15 -0
  268. package/dist/types/common/errors/permission.d.ts +14 -0
  269. package/dist/types/common/errors/reclaim-host-role-errors.d.ts +60 -0
  270. package/dist/types/common/errors/reconnection-in-progress.d.ts +9 -0
  271. package/dist/types/common/errors/reconnection.d.ts +15 -0
  272. package/dist/types/common/errors/stats.d.ts +15 -0
  273. package/dist/types/common/errors/webex-errors.d.ts +93 -0
  274. package/dist/types/common/errors/webex-meetings-error.d.ts +20 -0
  275. package/dist/types/common/events/events-scope.d.ts +17 -0
  276. package/dist/types/common/events/events.d.ts +12 -0
  277. package/dist/types/common/events/trigger-proxy.d.ts +2 -0
  278. package/dist/types/common/events/util.d.ts +2 -0
  279. package/dist/types/common/logs/logger-config.d.ts +2 -0
  280. package/dist/types/common/logs/logger-proxy.d.ts +2 -0
  281. package/dist/types/common/logs/request.d.ts +36 -0
  282. package/dist/types/common/queue.d.ts +34 -0
  283. package/dist/types/config.d.ts +72 -0
  284. package/dist/types/constants.d.ts +1088 -0
  285. package/dist/types/controls-options-manager/constants.d.ts +4 -0
  286. package/dist/types/controls-options-manager/enums.d.ts +15 -0
  287. package/dist/types/controls-options-manager/index.d.ts +136 -0
  288. package/dist/types/controls-options-manager/types.d.ts +43 -0
  289. package/dist/types/controls-options-manager/util.d.ts +1 -0
  290. package/dist/types/index.d.ts +7 -0
  291. package/dist/types/interceptors/index.d.ts +2 -0
  292. package/dist/types/interceptors/locusRetry.d.ts +27 -0
  293. package/dist/types/interpretation/collection.d.ts +5 -0
  294. package/dist/types/interpretation/index.d.ts +5 -0
  295. package/dist/types/interpretation/siLanguage.d.ts +5 -0
  296. package/dist/types/locus-info/controlsUtils.d.ts +2 -0
  297. package/dist/types/locus-info/embeddedAppsUtils.d.ts +2 -0
  298. package/dist/types/locus-info/fullState.d.ts +2 -0
  299. package/dist/types/locus-info/hostUtils.d.ts +2 -0
  300. package/dist/types/locus-info/index.d.ts +322 -0
  301. package/dist/types/locus-info/infoUtils.d.ts +2 -0
  302. package/dist/types/locus-info/mediaSharesUtils.d.ts +2 -0
  303. package/dist/types/locus-info/parser.d.ts +272 -0
  304. package/dist/types/locus-info/selfUtils.d.ts +2 -0
  305. package/dist/types/media/index.d.ts +34 -0
  306. package/dist/types/media/properties.d.ts +93 -0
  307. package/dist/types/media/util.d.ts +2 -0
  308. package/dist/types/mediaQualityMetrics/config.d.ts +241 -0
  309. package/dist/types/meeting/in-meeting-actions.d.ts +167 -0
  310. package/dist/types/meeting/index.d.ts +1824 -0
  311. package/dist/types/meeting/locusMediaRequest.d.ts +74 -0
  312. package/dist/types/meeting/muteState.d.ts +178 -0
  313. package/dist/types/meeting/request.d.ts +293 -0
  314. package/dist/types/meeting/request.type.d.ts +11 -0
  315. package/dist/types/meeting/state.d.ts +9 -0
  316. package/dist/types/meeting/util.d.ts +118 -0
  317. package/dist/types/meeting/voicea-meeting.d.ts +16 -0
  318. package/dist/types/meeting-info/collection.d.ts +20 -0
  319. package/dist/types/meeting-info/index.d.ts +69 -0
  320. package/dist/types/meeting-info/meeting-info-v2.d.ts +123 -0
  321. package/dist/types/meeting-info/request.d.ts +22 -0
  322. package/dist/types/meeting-info/util.d.ts +2 -0
  323. package/dist/types/meeting-info/utilv2.d.ts +2 -0
  324. package/dist/types/meetings/collection.d.ts +40 -0
  325. package/dist/types/meetings/index.d.ts +389 -0
  326. package/dist/types/meetings/meetings.types.d.ts +4 -0
  327. package/dist/types/meetings/request.d.ts +27 -0
  328. package/dist/types/meetings/util.d.ts +18 -0
  329. package/dist/types/member/index.d.ts +160 -0
  330. package/dist/types/member/types.d.ts +32 -0
  331. package/dist/types/member/util.d.ts +2 -0
  332. package/dist/types/members/collection.d.ts +29 -0
  333. package/dist/types/members/index.d.ts +353 -0
  334. package/dist/types/members/request.d.ts +114 -0
  335. package/dist/types/members/types.d.ts +25 -0
  336. package/dist/types/members/util.d.ts +215 -0
  337. package/dist/types/metrics/constants.d.ts +70 -0
  338. package/dist/types/metrics/index.d.ts +45 -0
  339. package/dist/types/multistream/mediaRequestManager.d.ts +120 -0
  340. package/dist/types/multistream/receiveSlot.d.ts +68 -0
  341. package/dist/types/multistream/receiveSlotManager.d.ts +56 -0
  342. package/dist/types/multistream/remoteMedia.d.ts +72 -0
  343. package/dist/types/multistream/remoteMediaGroup.d.ts +49 -0
  344. package/dist/types/multistream/remoteMediaManager.d.ts +301 -0
  345. package/dist/types/multistream/sendSlotManager.d.ts +70 -0
  346. package/dist/types/networkQualityMonitor/index.d.ts +70 -0
  347. package/dist/types/personal-meeting-room/index.d.ts +47 -0
  348. package/dist/types/personal-meeting-room/request.d.ts +14 -0
  349. package/dist/types/personal-meeting-room/util.d.ts +2 -0
  350. package/dist/types/reachability/clusterReachability.d.ts +109 -0
  351. package/dist/types/reachability/index.d.ts +105 -0
  352. package/dist/types/reachability/request.d.ts +39 -0
  353. package/dist/types/reachability/util.d.ts +8 -0
  354. package/dist/types/reactions/constants.d.ts +3 -0
  355. package/dist/types/reactions/reactions.d.ts +4 -0
  356. package/dist/types/reactions/reactions.type.d.ts +52 -0
  357. package/dist/types/reconnection-manager/index.d.ts +136 -0
  358. package/dist/types/recording-controller/enums.d.ts +7 -0
  359. package/dist/types/recording-controller/index.d.ts +207 -0
  360. package/dist/types/recording-controller/util.d.ts +14 -0
  361. package/dist/types/roap/index.d.ts +86 -0
  362. package/dist/types/roap/request.d.ts +39 -0
  363. package/dist/types/roap/turnDiscovery.d.ts +155 -0
  364. package/dist/types/rtcMetrics/constants.d.ts +4 -0
  365. package/dist/types/rtcMetrics/index.d.ts +61 -0
  366. package/dist/types/statsAnalyzer/global.d.ts +36 -0
  367. package/dist/types/statsAnalyzer/index.d.ts +217 -0
  368. package/dist/types/statsAnalyzer/mqaUtil.d.ts +48 -0
  369. package/dist/types/transcription/index.d.ts +64 -0
  370. package/dist/types/webinar/collection.d.ts +16 -0
  371. package/dist/types/webinar/index.d.ts +5 -0
  372. package/dist/webinar/collection.js +44 -0
  373. package/dist/webinar/collection.js.map +1 -0
  374. package/dist/webinar/index.js +69 -0
  375. package/dist/webinar/index.js.map +1 -0
  376. package/internal-README.md +7 -6
  377. package/package.json +30 -21
  378. package/src/annotation/annotation.types.ts +50 -0
  379. package/src/annotation/constants.ts +36 -0
  380. package/src/annotation/index.ts +328 -0
  381. package/src/breakouts/README.md +220 -0
  382. package/src/breakouts/breakout.ts +188 -0
  383. package/src/breakouts/collection.ts +19 -0
  384. package/src/breakouts/edit-lock-error.ts +25 -0
  385. package/src/breakouts/events.ts +56 -0
  386. package/src/breakouts/index.ts +925 -0
  387. package/src/breakouts/request.ts +55 -0
  388. package/src/breakouts/utils.ts +57 -0
  389. package/src/common/{browser-detection.js → browser-detection.ts} +9 -6
  390. package/src/common/collection.ts +9 -7
  391. package/src/common/{config.js → config.ts} +1 -1
  392. package/src/common/errors/{captcha-error.js → captcha-error.ts} +11 -7
  393. package/src/common/errors/{intent-to-join.js → intent-to-join.ts} +12 -7
  394. package/src/common/errors/{join-meeting.js → join-meeting.ts} +17 -8
  395. package/src/common/errors/{media.js → media.ts} +11 -7
  396. package/src/common/errors/no-meeting-info.ts +24 -0
  397. package/src/common/errors/parameter.ts +11 -7
  398. package/src/common/errors/{password-error.js → password-error.ts} +11 -7
  399. package/src/common/errors/{permission.js → permission.ts} +10 -6
  400. package/src/common/errors/reclaim-host-role-errors.ts +134 -0
  401. package/src/common/errors/{reconnection.js → reconnection.ts} +11 -7
  402. package/src/common/errors/{stats.js → stats.ts} +11 -7
  403. package/src/common/errors/{webex-errors.js → webex-errors.ts} +51 -8
  404. package/src/common/errors/{webex-meetings-error.js → webex-meetings-error.ts} +4 -2
  405. package/src/common/events/{events-scope.js → events-scope.ts} +6 -2
  406. package/src/common/events/{events.js → events.ts} +5 -1
  407. package/src/common/events/{trigger-proxy.js → trigger-proxy.ts} +9 -5
  408. package/src/common/events/{util.js → util.ts} +2 -3
  409. package/src/common/logs/{logger-config.js → logger-config.ts} +1 -2
  410. package/src/common/logs/logger-proxy.ts +44 -0
  411. package/src/common/logs/{request.js → request.ts} +26 -9
  412. package/src/common/queue.ts +22 -9
  413. package/src/{config.js → config.ts} +19 -21
  414. package/src/constants.ts +296 -27
  415. package/src/controls-options-manager/constants.ts +5 -0
  416. package/src/controls-options-manager/enums.ts +18 -0
  417. package/src/controls-options-manager/index.ts +278 -0
  418. package/src/controls-options-manager/types.ts +59 -0
  419. package/src/controls-options-manager/util.ts +300 -0
  420. package/src/index.ts +45 -0
  421. package/src/interceptors/index.ts +3 -0
  422. package/src/interceptors/locusRetry.ts +67 -0
  423. package/src/interpretation/README.md +60 -0
  424. package/src/interpretation/collection.ts +19 -0
  425. package/src/interpretation/index.ts +349 -0
  426. package/src/interpretation/siLanguage.ts +18 -0
  427. package/src/locus-info/controlsUtils.ts +222 -0
  428. package/src/locus-info/{embeddedAppsUtils.js → embeddedAppsUtils.ts} +5 -6
  429. package/src/locus-info/{fullState.js → fullState.ts} +16 -12
  430. package/src/locus-info/{hostUtils.js → hostUtils.ts} +9 -8
  431. package/src/locus-info/{index.js → index.ts} +561 -119
  432. package/src/locus-info/{infoUtils.js → infoUtils.ts} +29 -10
  433. package/src/locus-info/{mediaSharesUtils.js → mediaSharesUtils.ts} +97 -17
  434. package/src/locus-info/{parser.js → parser.ts} +303 -104
  435. package/src/locus-info/{selfUtils.js → selfUtils.ts} +199 -68
  436. package/src/media/index.ts +460 -0
  437. package/src/media/properties.ts +283 -0
  438. package/src/media/{util.js → util.ts} +2 -2
  439. package/src/mediaQualityMetrics/config.ts +249 -0
  440. package/src/meeting/in-meeting-actions.ts +199 -3
  441. package/src/meeting/index.ts +8494 -0
  442. package/src/meeting/locusMediaRequest.ts +313 -0
  443. package/src/meeting/muteState.ts +465 -0
  444. package/src/meeting/request.ts +912 -0
  445. package/src/meeting/request.type.ts +13 -0
  446. package/src/meeting/{state.js → state.ts} +50 -35
  447. package/src/meeting/util.ts +799 -0
  448. package/src/meeting/voicea-meeting.ts +122 -0
  449. package/src/meeting-info/{collection.js → collection.ts} +6 -2
  450. package/src/meeting-info/index.ts +210 -0
  451. package/src/meeting-info/meeting-info-v2.ts +423 -0
  452. package/src/meeting-info/{request.js → request.ts} +14 -4
  453. package/src/meeting-info/{util.js → util.ts} +70 -58
  454. package/src/meeting-info/{utilv2.js → utilv2.ts} +99 -82
  455. package/src/meetings/collection.ts +76 -0
  456. package/src/meetings/index.ts +1539 -0
  457. package/src/meetings/meetings.types.ts +12 -0
  458. package/src/meetings/{request.js → request.ts} +34 -25
  459. package/src/meetings/{util.js → util.ts} +133 -38
  460. package/src/member/{index.js → index.ts} +159 -56
  461. package/src/member/types.ts +38 -0
  462. package/src/member/util.ts +397 -0
  463. package/src/members/{collection.js → collection.ts} +10 -2
  464. package/src/members/{index.js → index.ts} +351 -146
  465. package/src/members/request.ts +255 -0
  466. package/src/members/types.ts +29 -0
  467. package/src/members/util.ts +353 -0
  468. package/src/metrics/{constants.js → constants.ts} +17 -6
  469. package/src/metrics/index.ts +73 -0
  470. package/src/multistream/mediaRequestManager.ts +341 -64
  471. package/src/multistream/receiveSlot.ts +69 -26
  472. package/src/multistream/receiveSlotManager.ts +66 -42
  473. package/src/multistream/remoteMedia.ts +40 -5
  474. package/src/multistream/remoteMediaGroup.ts +82 -3
  475. package/src/multistream/remoteMediaManager.ts +401 -81
  476. package/src/multistream/sendSlotManager.ts +199 -0
  477. package/src/networkQualityMonitor/{index.js → index.ts} +41 -29
  478. package/src/personal-meeting-room/{index.js → index.ts} +28 -19
  479. package/src/personal-meeting-room/{request.js → request.ts} +13 -4
  480. package/src/personal-meeting-room/{util.js → util.ts} +4 -4
  481. package/src/reachability/clusterReachability.ts +320 -0
  482. package/src/reachability/index.ts +371 -0
  483. package/src/reachability/request.ts +50 -35
  484. package/src/reachability/util.ts +24 -0
  485. package/src/reactions/constants.ts +4 -0
  486. package/src/reactions/reactions.ts +104 -0
  487. package/src/reactions/reactions.type.ts +62 -0
  488. package/src/reconnection-manager/index.ts +643 -0
  489. package/src/recording-controller/enums.ts +8 -0
  490. package/src/recording-controller/index.ts +332 -0
  491. package/src/recording-controller/util.ts +75 -0
  492. package/src/roap/index.ts +288 -0
  493. package/src/roap/request.ts +153 -0
  494. package/src/roap/turnDiscovery.ts +374 -70
  495. package/src/rtcMetrics/constants.ts +3 -0
  496. package/src/rtcMetrics/index.ts +166 -0
  497. package/src/statsAnalyzer/global.ts +37 -0
  498. package/src/statsAnalyzer/index.ts +1275 -0
  499. package/src/statsAnalyzer/mqaUtil.ts +440 -0
  500. package/src/transcription/{index.js → index.ts} +46 -39
  501. package/src/webinar/collection.ts +31 -0
  502. package/src/webinar/index.ts +62 -0
  503. package/test/integration/spec/converged-space-meetings.js +233 -0
  504. package/test/integration/spec/journey.js +791 -531
  505. package/test/integration/spec/space-meeting.js +391 -204
  506. package/test/integration/spec/transcription.js +7 -8
  507. package/test/unit/spec/annotation/index.ts +418 -0
  508. package/test/unit/spec/breakouts/breakout.ts +238 -0
  509. package/test/unit/spec/breakouts/collection.ts +15 -0
  510. package/test/unit/spec/breakouts/edit-lock-error.ts +30 -0
  511. package/test/unit/spec/breakouts/events.ts +89 -0
  512. package/test/unit/spec/breakouts/index.ts +1793 -0
  513. package/test/unit/spec/breakouts/request.ts +104 -0
  514. package/test/unit/spec/breakouts/utils.js +72 -0
  515. package/test/unit/spec/common/browser-detection.js +9 -28
  516. package/test/unit/spec/common/queue.js +31 -2
  517. package/test/unit/spec/controls-options-manager/index.js +287 -0
  518. package/test/unit/spec/controls-options-manager/util.js +582 -0
  519. package/test/unit/spec/fixture/locus.js +93 -90
  520. package/test/unit/spec/interceptors/locusRetry.ts +131 -0
  521. package/test/unit/spec/interpretation/collection.ts +15 -0
  522. package/test/unit/spec/interpretation/index.ts +625 -0
  523. package/test/unit/spec/interpretation/siLanguage.ts +28 -0
  524. package/test/unit/spec/locus-info/controlsUtils.js +325 -32
  525. package/test/unit/spec/locus-info/embeddedAppsUtils.js +8 -6
  526. package/test/unit/spec/locus-info/index.js +1458 -21
  527. package/test/unit/spec/locus-info/infoUtils.js +71 -40
  528. package/test/unit/spec/locus-info/lib/BasicSeqCmp.json +88 -430
  529. package/test/unit/spec/locus-info/lib/SeqCmp.json +529 -685
  530. package/test/unit/spec/locus-info/mediaSharesUtils.ts +41 -0
  531. package/test/unit/spec/locus-info/parser.js +119 -44
  532. package/test/unit/spec/locus-info/selfConstant.js +120 -103
  533. package/test/unit/spec/locus-info/selfUtils.js +291 -12
  534. package/test/unit/spec/media/index.ts +194 -111
  535. package/test/unit/spec/media/properties.ts +11 -11
  536. package/test/unit/spec/meeting/in-meeting-actions.ts +96 -3
  537. package/test/unit/spec/meeting/index.js +8616 -1921
  538. package/test/unit/spec/meeting/locusMediaRequest.ts +442 -0
  539. package/test/unit/spec/meeting/muteState.js +568 -207
  540. package/test/unit/spec/meeting/request.js +602 -82
  541. package/test/unit/spec/meeting/utils.js +867 -179
  542. package/test/unit/spec/meeting/voicea-meeting.ts +266 -0
  543. package/test/unit/spec/meeting-info/index.js +300 -0
  544. package/test/unit/spec/meeting-info/meetinginfov2.js +631 -78
  545. package/test/unit/spec/meeting-info/request.js +7 -9
  546. package/test/unit/spec/meeting-info/util.js +11 -12
  547. package/test/unit/spec/meeting-info/utilv2.js +131 -74
  548. package/test/unit/spec/meetings/collection.js +27 -1
  549. package/test/unit/spec/meetings/index.js +1826 -374
  550. package/test/unit/spec/meetings/utils.js +243 -14
  551. package/test/unit/spec/member/index.js +61 -7
  552. package/test/unit/spec/member/util.js +526 -26
  553. package/test/unit/spec/members/index.js +536 -55
  554. package/test/unit/spec/members/request.js +228 -40
  555. package/test/unit/spec/members/utils.js +217 -4
  556. package/test/unit/spec/metrics/index.js +13 -68
  557. package/test/unit/spec/multistream/mediaRequestManager.ts +1032 -110
  558. package/test/unit/spec/multistream/receiveSlot.ts +77 -18
  559. package/test/unit/spec/multistream/receiveSlotManager.ts +69 -39
  560. package/test/unit/spec/multistream/remoteMedia.ts +40 -2
  561. package/test/unit/spec/multistream/remoteMediaGroup.ts +350 -5
  562. package/test/unit/spec/multistream/remoteMediaManager.ts +937 -65
  563. package/test/unit/spec/multistream/sendSlotManager.ts +274 -0
  564. package/test/unit/spec/networkQualityMonitor/index.js +24 -18
  565. package/test/unit/spec/personal-meeting-room/personal-meeting-room.js +2 -7
  566. package/test/unit/spec/reachability/clusterReachability.ts +279 -0
  567. package/test/unit/spec/reachability/index.ts +606 -26
  568. package/test/unit/spec/reachability/request.js +68 -0
  569. package/test/unit/spec/reachability/util.ts +40 -0
  570. package/test/unit/spec/reconnection-manager/index.js +222 -34
  571. package/test/unit/spec/recording-controller/index.js +306 -0
  572. package/test/unit/spec/recording-controller/util.js +229 -0
  573. package/test/unit/spec/roap/index.ts +238 -82
  574. package/test/unit/spec/roap/request.ts +255 -0
  575. package/test/unit/spec/roap/turnDiscovery.ts +707 -110
  576. package/test/unit/spec/rtcMetrics/index.ts +122 -0
  577. package/test/unit/spec/stats-analyzer/index.js +1331 -62
  578. package/test/unit/spec/webinar/collection.ts +13 -0
  579. package/test/unit/spec/webinar/index.ts +60 -0
  580. package/test/utils/cmr.js +44 -42
  581. package/test/utils/constants.js +9 -0
  582. package/test/utils/integrationTestUtils.js +46 -0
  583. package/test/utils/testUtils.js +63 -99
  584. package/test/utils/webex-config.js +22 -18
  585. package/test/utils/webex-test-users.js +65 -50
  586. package/tsconfig.json +6 -0
  587. package/dist/media/internal-media-core-wrapper.js +0 -22
  588. package/dist/media/internal-media-core-wrapper.js.map +0 -1
  589. package/dist/meeting/effectsState.js +0 -327
  590. package/dist/meeting/effectsState.js.map +0 -1
  591. package/dist/metrics/config.js +0 -301
  592. package/dist/metrics/config.js.map +0 -1
  593. package/dist/multistream/multistreamMedia.js +0 -116
  594. package/dist/multistream/multistreamMedia.js.map +0 -1
  595. package/dist/peer-connection-manager/util.js +0 -124
  596. package/dist/peer-connection-manager/util.js.map +0 -1
  597. package/src/common/logs/logger-proxy.js +0 -33
  598. package/src/index.js +0 -15
  599. package/src/locus-info/controlsUtils.js +0 -102
  600. package/src/media/index.js +0 -459
  601. package/src/media/internal-media-core-wrapper.ts +0 -9
  602. package/src/media/properties.js +0 -289
  603. package/src/mediaQualityMetrics/config.js +0 -382
  604. package/src/meeting/effectsState.js +0 -205
  605. package/src/meeting/index.js +0 -6284
  606. package/src/meeting/muteState.js +0 -318
  607. package/src/meeting/request.js +0 -684
  608. package/src/meeting/util.js +0 -506
  609. package/src/meeting-info/index.js +0 -131
  610. package/src/meeting-info/meeting-info-v2.js +0 -255
  611. package/src/meetings/collection.js +0 -40
  612. package/src/meetings/index.js +0 -1015
  613. package/src/member/util.js +0 -254
  614. package/src/members/request.js +0 -131
  615. package/src/members/util.js +0 -258
  616. package/src/metrics/config.js +0 -324
  617. package/src/metrics/index.js +0 -530
  618. package/src/multistream/multistreamMedia.ts +0 -92
  619. package/src/peer-connection-manager/util.ts +0 -117
  620. package/src/reachability/index.js +0 -464
  621. package/src/reconnection-manager/index.js +0 -519
  622. package/src/roap/index.js +0 -220
  623. package/src/roap/request.js +0 -127
  624. package/src/statsAnalyzer/global.js +0 -133
  625. package/src/statsAnalyzer/index.js +0 -1006
  626. package/src/statsAnalyzer/mqaUtil.js +0 -173
  627. package/test/unit/spec/meeting/effectsState.js +0 -291
  628. package/test/unit/spec/peerconnection-manager/utils.test-fixtures.ts +0 -389
  629. /package/src/common/errors/{reconnection-in-progress.js → reconnection-in-progress.ts} +0 -0
@@ -1,57 +1,33 @@
1
1
  "use strict";
2
2
 
3
3
  var _Reflect$construct = require("@babel/runtime-corejs2/core-js/reflect/construct");
4
-
5
4
  var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
6
-
7
5
  var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
8
-
9
6
  _Object$defineProperty(exports, "__esModule", {
10
7
  value: true
11
8
  });
12
-
13
9
  exports.default = void 0;
14
-
15
10
  var _regenerator = _interopRequireDefault(require("@babel/runtime-corejs2/regenerator"));
16
-
17
11
  var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/promise"));
18
-
12
+ var _values = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/values"));
19
13
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/asyncToGenerator"));
20
-
14
+ var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/assertThisInitialized"));
15
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
21
16
  var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));
22
-
23
17
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
24
-
25
18
  var _inherits2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/inherits"));
26
-
27
19
  var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/possibleConstructorReturn"));
28
-
29
20
  var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/getPrototypeOf"));
30
-
31
21
  var _wrapNativeSuper2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/wrapNativeSuper"));
32
-
33
22
  var _loggerProxy = _interopRequireDefault(require("../common/logs/logger-proxy"));
34
-
35
23
  var _triggerProxy = _interopRequireDefault(require("../common/events/trigger-proxy"));
36
-
37
24
  var _constants = require("../constants");
38
-
39
25
  var _constants2 = _interopRequireDefault(require("../metrics/constants"));
40
-
41
- var _reconnection = _interopRequireDefault(require("../common/errors/reconnection"));
42
-
43
26
  var _reconnectionInProgress = _interopRequireDefault(require("../common/errors/reconnection-in-progress"));
44
-
45
- var _config = require("../metrics/config");
46
-
47
- var _media = _interopRequireDefault(require("../media"));
48
-
49
27
  var _metrics = _interopRequireDefault(require("../metrics"));
50
-
28
+ var _reconnection = _interopRequireDefault(require("../common/errors/reconnection"));
51
29
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = _Reflect$construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
52
-
53
30
  function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !_Reflect$construct) return false; if (_Reflect$construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(_Reflect$construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
54
-
55
31
  /**
56
32
  * Used to indicate that the reconnect logic needs to be retried.
57
33
  *
@@ -60,14 +36,11 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !_R
60
36
  */
61
37
  var NeedsRetryError = /*#__PURE__*/function (_Error) {
62
38
  (0, _inherits2.default)(NeedsRetryError, _Error);
63
-
64
39
  var _super = _createSuper(NeedsRetryError);
65
-
66
40
  function NeedsRetryError() {
67
41
  (0, _classCallCheck2.default)(this, NeedsRetryError);
68
42
  return _super.apply(this, arguments);
69
43
  }
70
-
71
44
  return (0, _createClass2.default)(NeedsRetryError);
72
45
  }( /*#__PURE__*/(0, _wrapNativeSuper2.default)(Error));
73
46
  /**
@@ -76,13 +49,9 @@ var NeedsRetryError = /*#__PURE__*/function (_Error) {
76
49
  * @class NeedsRejoinError
77
50
  * @extends {Error}
78
51
  */
79
-
80
-
81
52
  var NeedsRejoinError = /*#__PURE__*/function (_Error2) {
82
53
  (0, _inherits2.default)(NeedsRejoinError, _Error2);
83
-
84
54
  var _super2 = _createSuper(NeedsRejoinError);
85
-
86
55
  /**
87
56
  * Creates an instance of NeedsRejoinError.
88
57
  * @param {Object} params
@@ -92,31 +61,37 @@ var NeedsRejoinError = /*#__PURE__*/function (_Error2) {
92
61
  */
93
62
  function NeedsRejoinError(_ref) {
94
63
  var _this;
95
-
96
64
  var wasSharing = _ref.wasSharing,
97
- _ref$error = _ref.error,
98
- error = _ref$error === void 0 ? new Error('Meeting needs to be rejoined') : _ref$error;
65
+ _ref$error = _ref.error,
66
+ error = _ref$error === void 0 ? new Error('Meeting needs to be rejoined') : _ref$error;
99
67
  (0, _classCallCheck2.default)(this, NeedsRejoinError);
68
+ // @ts-ignore
100
69
  _this = _super2.call(this, error);
70
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "wasSharing", void 0);
101
71
  _this.wasSharing = wasSharing;
102
72
  return _this;
103
73
  }
104
-
105
74
  return (0, _createClass2.default)(NeedsRejoinError);
106
75
  }( /*#__PURE__*/(0, _wrapNativeSuper2.default)(Error));
107
76
  /**
108
77
  * @export
109
78
  * @class ReconnectionManager
110
- */
111
-
112
-
79
+ */
113
80
  var ReconnectionManager = /*#__PURE__*/function () {
114
81
  /**
115
82
  * @param {Meeting} meeting
116
83
  */
117
84
  function ReconnectionManager(meeting) {
118
85
  (0, _classCallCheck2.default)(this, ReconnectionManager);
119
-
86
+ (0, _defineProperty2.default)(this, "autoRejoinEnabled", void 0);
87
+ (0, _defineProperty2.default)(this, "iceState", void 0);
88
+ (0, _defineProperty2.default)(this, "maxRejoinAttempts", void 0);
89
+ (0, _defineProperty2.default)(this, "meeting", void 0);
90
+ (0, _defineProperty2.default)(this, "rejoinAttempts", void 0);
91
+ (0, _defineProperty2.default)(this, "shareStatus", void 0);
92
+ (0, _defineProperty2.default)(this, "status", void 0);
93
+ (0, _defineProperty2.default)(this, "tryCount", void 0);
94
+ (0, _defineProperty2.default)(this, "webex", void 0);
120
95
  /**
121
96
  * Stores ICE reconnection state data.
122
97
  *
@@ -129,33 +104,33 @@ var ReconnectionManager = /*#__PURE__*/function () {
129
104
  disconnected: false,
130
105
  resolve: function resolve() {},
131
106
  timer: undefined,
107
+ // @ts-ignore
132
108
  timeoutDuration: meeting.config.reconnection.iceReconnectionTimeout
133
109
  };
110
+
134
111
  /**
135
112
  * @instance
136
- * @type {String}
113
+ * @type {RECONNECTION_STATE}
137
114
  * @private
138
115
  * @memberof ReconnectionManager
139
- */
140
-
116
+ */
141
117
  this.status = _constants.RECONNECTION.STATE.DEFAULT_STATUS;
142
118
  /**
143
119
  * @instance
144
120
  * @type {Number}
145
121
  * @private
146
122
  * @memberof ReconnectionManager
147
- */
148
-
123
+ */
149
124
  this.tryCount = _constants.RECONNECTION.STATE.DEFAULT_TRY_COUNT;
150
125
  /**
151
126
  * @instance
152
127
  * @type {Object}
153
128
  * @private
154
129
  * @memberof ReconnectionManager
155
- */
130
+ */
156
131
  // TODO : change this logic to not save the meeting instance
157
132
  // It gets complicated when meeting ends on remote side , We have a old meeting instance which is not up to date
158
-
133
+ // @ts-ignore
159
134
  this.webex = meeting.webex;
160
135
  /**
161
136
  * @instance
@@ -165,33 +140,34 @@ var ReconnectionManager = /*#__PURE__*/function () {
165
140
  */
166
141
  // TODO: try removing the circular dependency for meeting and reconnection manager
167
142
  // try moving this to meetings collection
168
-
169
143
  this.meeting = meeting;
144
+
145
+ // @ts-ignore
170
146
  this.maxRejoinAttempts = meeting.config.reconnection.maxRejoinAttempts;
171
147
  this.rejoinAttempts = _constants.RECONNECTION.STATE.DEFAULT_TRY_COUNT;
172
- this.autoRejoinEnabled = meeting.config.reconnection.autoRejoin; // Make sure reconnection state is in default
148
+ // @ts-ignore
149
+ this.autoRejoinEnabled = meeting.config.reconnection.autoRejoin;
173
150
 
151
+ // Make sure reconnection state is in default
174
152
  this.reset();
175
153
  }
154
+
176
155
  /**
177
156
  * @public
178
157
  * @memberof ReconnectionManager
179
158
  * @returns {void}
180
159
  */
181
-
182
-
183
160
  (0, _createClass2.default)(ReconnectionManager, [{
184
161
  key: "resetReconnectionTimer",
185
162
  value: function resetReconnectionTimer() {
186
163
  this.iceState.resolve();
187
-
188
164
  this.iceState.resolve = function () {};
189
-
190
165
  if (this.iceState.timer) {
191
166
  clearTimeout(this.iceState.timer);
192
167
  delete this.iceState.timer;
193
168
  }
194
169
  }
170
+
195
171
  /**
196
172
  * Sets the iceState to connected and clears any disconnect timeouts and
197
173
  * related timeout data within the iceState.
@@ -200,17 +176,16 @@ var ReconnectionManager = /*#__PURE__*/function () {
200
176
  * @public
201
177
  * @memberof ReconnectionManager
202
178
  */
203
-
204
179
  }, {
205
180
  key: "iceReconnected",
206
181
  value: function iceReconnected() {
207
182
  if (this.iceState.disconnected) {
208
183
  _loggerProxy.default.logger.log('ReconnectionManager:index#iceReconnected --> ice has reconnected');
209
-
210
184
  this.resetReconnectionTimer();
211
185
  this.iceState.disconnected = false;
212
186
  }
213
187
  }
188
+
214
189
  /**
215
190
  * Set the iceState to disconnected and generates a timeout that waits for the
216
191
  * iceState to reconnect and then resolves. If the ice state is already
@@ -221,15 +196,12 @@ var ReconnectionManager = /*#__PURE__*/function () {
221
196
  * @public
222
197
  * @memberof ReconnectionManager
223
198
  */
224
-
225
199
  }, {
226
200
  key: "waitForIceReconnect",
227
201
  value: function waitForIceReconnect() {
228
202
  var _this2 = this;
229
-
230
203
  if (!this.iceState.disconnected) {
231
204
  _loggerProxy.default.logger.log('ReconnectionManager:index#waitForIceReconnect --> waiting for ice reconnect');
232
-
233
205
  this.iceState.disconnected = true;
234
206
  return new _promise.default(function (resolve, reject) {
235
207
  _this2.iceState.timer = setTimeout(function () {
@@ -242,17 +214,17 @@ var ReconnectionManager = /*#__PURE__*/function () {
242
214
  }, _this2.iceState.timeoutDuration);
243
215
  _this2.iceState.resolve = resolve;
244
216
  });
245
- } // return a resolved promise to prevent multiple catch executions of reconnect
246
-
217
+ }
247
218
 
219
+ // return a resolved promise to prevent multiple catch executions of reconnect
248
220
  return _promise.default.resolve();
249
221
  }
222
+
250
223
  /**
251
224
  * @returns {undefined}
252
225
  * @public
253
226
  * @memberof ReconnectionManager
254
227
  */
255
-
256
228
  }, {
257
229
  key: "reset",
258
230
  value: function reset() {
@@ -260,36 +232,84 @@ var ReconnectionManager = /*#__PURE__*/function () {
260
232
  this.tryCount = _constants.RECONNECTION.STATE.DEFAULT_TRY_COUNT;
261
233
  this.rejoinAttempts = _constants.RECONNECTION.STATE.DEFAULT_TRY_COUNT;
262
234
  }
235
+
263
236
  /**
264
237
  * @returns {undefined}
265
238
  * @public
266
239
  * @memberof ReconnectionManager
267
240
  */
268
-
269
241
  }, {
270
242
  key: "cleanUp",
271
243
  value: function cleanUp() {
272
244
  this.reset();
273
- this.meeting = null;
274
245
  }
246
+
247
+ /**
248
+ * Stop the local share stream.
249
+ *
250
+ * @param {string} reason a {@link SHARE_STOPPED_REASON}
251
+ * @returns {undefined}
252
+ * @private
253
+ * @memberof ReconnectionManager
254
+ */
255
+ }, {
256
+ key: "stopLocalShareStream",
257
+ value: function () {
258
+ var _stopLocalShareStream = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(reason) {
259
+ return _regenerator.default.wrap(function _callee$(_context) {
260
+ while (1) switch (_context.prev = _context.next) {
261
+ case 0:
262
+ _context.next = 2;
263
+ return this.meeting.unpublishStreams([this.meeting.mediaProperties.shareVideoStream, this.meeting.mediaProperties.shareAudioStream]);
264
+ case 2:
265
+ _triggerProxy.default.trigger(this.meeting, {
266
+ file: 'reconnection-manager/index',
267
+ function: 'stopLocalShareStream'
268
+ }, _constants.EVENT_TRIGGERS.MEETING_STOPPED_SHARING_LOCAL, {
269
+ reason: reason
270
+ });
271
+ case 3:
272
+ case "end":
273
+ return _context.stop();
274
+ }
275
+ }, _callee, this);
276
+ }));
277
+ function stopLocalShareStream(_x) {
278
+ return _stopLocalShareStream.apply(this, arguments);
279
+ }
280
+ return stopLocalShareStream;
281
+ }()
275
282
  /**
276
283
  * @public
277
284
  * @memberof ReconnectionManager
278
285
  * @returns {Boolean} true if reconnection operation is in progress
279
286
  */
280
-
281
287
  }, {
282
288
  key: "isReconnectInProgress",
283
289
  value: function isReconnectInProgress() {
284
290
  return this.status === _constants.RECONNECTION.STATE.IN_PROGRESS;
285
291
  }
292
+
293
+ /**
294
+ * Sets the reconnection status
295
+ *
296
+ * @public
297
+ * @param {RECONNECTION_STATE} status
298
+ * @memberof ReconnectionManager
299
+ * @returns {undefined}
300
+ */
301
+ }, {
302
+ key: "setStatus",
303
+ value: function setStatus(status) {
304
+ this.status = status;
305
+ }
306
+
286
307
  /**
287
308
  * @returns {Boolean}
288
309
  * @throws {ReconnectionError}
289
310
  * @private
290
311
  * @memberof ReconnectionManager
291
312
  */
292
-
293
313
  }, {
294
314
  key: "validate",
295
315
  value: function validate() {
@@ -297,16 +317,13 @@ var ReconnectionManager = /*#__PURE__*/function () {
297
317
  if (this.status === _constants.RECONNECTION.STATE.DEFAULT_STATUS || this.status === _constants.RECONNECTION.STATE.COMPLETE) {
298
318
  return true;
299
319
  }
300
-
301
320
  _loggerProxy.default.logger.info('ReconnectionManager:index#validate --> Reconnection already in progress.');
302
-
303
321
  throw new _reconnectionInProgress.default('Reconnection already in progress.');
304
322
  }
305
-
306
323
  _loggerProxy.default.logger.info('ReconnectionManager:index#validate --> Reconnection is not enabled.');
307
-
308
324
  throw new _reconnection.default('Reconnection is not enabled.');
309
325
  }
326
+
310
327
  /**
311
328
  * Initiates a media reconnect for the active meeting
312
329
  * @param {Object} reconnectOptions
@@ -316,123 +333,118 @@ var ReconnectionManager = /*#__PURE__*/function () {
316
333
  * @public
317
334
  * @memberof ReconnectionManager
318
335
  */
319
-
320
336
  }, {
321
337
  key: "reconnect",
322
338
  value: function () {
323
- var _reconnect = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
324
- var _this3 = this;
325
-
339
+ var _reconnect = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
326
340
  var _ref2,
327
- _ref2$networkDisconne,
328
- networkDisconnect,
329
- _ref2$networkRetry,
330
- networkRetry,
331
- _args = arguments;
332
-
333
- return _regenerator.default.wrap(function _callee$(_context) {
334
- while (1) {
335
- switch (_context.prev = _context.next) {
336
- case 0:
337
- _ref2 = _args.length > 0 && _args[0] !== undefined ? _args[0] : {}, _ref2$networkDisconne = _ref2.networkDisconnect, networkDisconnect = _ref2$networkDisconne === void 0 ? false : _ref2$networkDisconne, _ref2$networkRetry = _ref2.networkRetry, networkRetry = _ref2$networkRetry === void 0 ? false : _ref2$networkRetry;
338
-
339
- _loggerProxy.default.logger.info("ReconnectionManager:index#reconnect --> Reconnection start for meeting ".concat(this.meeting.id, ".")); // First, validate that we can reconnect, if not, it will throw an error
340
-
341
-
342
- _context.prev = 2;
343
- this.validate();
344
- _context.next = 10;
341
+ _ref2$networkDisconne,
342
+ networkDisconnect,
343
+ _ref2$networkRetry,
344
+ networkRetry,
345
+ media,
346
+ _args2 = arguments;
347
+ return _regenerator.default.wrap(function _callee2$(_context2) {
348
+ while (1) switch (_context2.prev = _context2.next) {
349
+ case 0:
350
+ _ref2 = _args2.length > 0 && _args2[0] !== undefined ? _args2[0] : {}, _ref2$networkDisconne = _ref2.networkDisconnect, networkDisconnect = _ref2$networkDisconne === void 0 ? false : _ref2$networkDisconne, _ref2$networkRetry = _ref2.networkRetry, networkRetry = _ref2$networkRetry === void 0 ? false : _ref2$networkRetry;
351
+ _loggerProxy.default.logger.info("ReconnectionManager:index#reconnect --> Reconnection start for meeting ".concat(this.meeting.id, "."));
352
+ // First, validate that we can reconnect, if not, it will throw an error
353
+ _context2.prev = 2;
354
+ this.validate();
355
+ _context2.next = 10;
356
+ break;
357
+ case 6:
358
+ _context2.prev = 6;
359
+ _context2.t0 = _context2["catch"](2);
360
+ _loggerProxy.default.logger.info('ReconnectionManager:index#reconnect --> Reconnection unable to begin.', _context2.t0);
361
+ throw _context2.t0;
362
+ case 10:
363
+ if (!networkRetry) {
364
+ // Only log START metrics on the initial reconnect
365
+ _loggerProxy.default.logger.info('ReconnectionManager:index#reconnect --> Sending reconnect start metric.');
366
+
367
+ // @ts-ignore
368
+ this.webex.internal.newMetrics.submitClientEvent({
369
+ name: 'client.media.reconnecting',
370
+ options: {
371
+ meetingId: this.meeting.id
372
+ }
373
+ });
374
+ }
375
+ _context2.prev = 11;
376
+ _context2.next = 14;
377
+ return this.webex.meetings.startReachability();
378
+ case 14:
379
+ _context2.next = 19;
380
+ break;
381
+ case 16:
382
+ _context2.prev = 16;
383
+ _context2.t1 = _context2["catch"](11);
384
+ _loggerProxy.default.logger.info('ReconnectionManager:index#reconnect --> Reachability failed, continuing with reconnection attempt, err: ', _context2.t1);
385
+ case 19:
386
+ _context2.prev = 19;
387
+ _context2.next = 22;
388
+ return this.executeReconnection({
389
+ networkDisconnect: networkDisconnect
390
+ });
391
+ case 22:
392
+ media = _context2.sent;
393
+ return _context2.abrupt("return", media);
394
+ case 26:
395
+ _context2.prev = 26;
396
+ _context2.t2 = _context2["catch"](19);
397
+ if (!(_context2.t2 instanceof NeedsRetryError)) {
398
+ _context2.next = 32;
345
399
  break;
346
-
347
- case 6:
348
- _context.prev = 6;
349
- _context.t0 = _context["catch"](2);
350
-
351
- _loggerProxy.default.logger.info('ReconnectionManager:index#reconnect --> Reconnection unable to begin.', _context.t0);
352
-
353
- throw _context.t0;
354
-
355
- case 10:
356
- if (!networkRetry) {
357
- // Only log START metrics on the initial reconnect
358
- _loggerProxy.default.logger.info('ReconnectionManager:index#reconnect --> Sending reconnect start metric.');
359
-
360
- _metrics.default.postEvent({
361
- event: _config.eventType.MEDIA_RECONNECTING,
362
- meeting: this.meeting
363
- });
400
+ }
401
+ _loggerProxy.default.logger.info('ReconnectionManager:index#reconnect --> Reconnection not successful, retrying.');
402
+ // Reset our reconnect status since we are looping back to the beginning
403
+ this.status = _constants.RECONNECTION.STATE.DEFAULT_STATUS;
404
+
405
+ // This is a network retry, so we should not log START metrics again
406
+ return _context2.abrupt("return", this.reconnect({
407
+ networkDisconnect: true,
408
+ networkRetry: true
409
+ }));
410
+ case 32:
411
+ // Reconnect has failed
412
+ _loggerProxy.default.logger.error('ReconnectionManager:index#reconnect --> Reconnection failed.', _context2.t2.message);
413
+ _loggerProxy.default.logger.info('ReconnectionManager:index#reconnect --> Sending reconnect abort metric.');
414
+
415
+ // send call aborted event with catogery as expected as we are trying to rejoin
416
+ // @ts-ignore
417
+ this.webex.internal.newMetrics.submitClientEvent({
418
+ name: 'client.call.aborted',
419
+ payload: {
420
+ errors: [{
421
+ category: 'expected',
422
+ errorCode: 2008,
423
+ fatal: true,
424
+ name: 'media-engine',
425
+ shownToUser: false
426
+ }]
427
+ },
428
+ options: {
429
+ meetingId: this.meeting.id
364
430
  }
365
-
366
- return _context.abrupt("return", this.executeReconnection({
367
- networkDisconnect: networkDisconnect
368
- }).then(function () {
369
- _loggerProxy.default.logger.info('ReconnectionManager:index#reconnect --> Reconnection successful.');
370
-
371
- _loggerProxy.default.logger.info('ReconnectionManager:index#reconnect --> Sending reconnect success metric.');
372
-
373
- _metrics.default.postEvent({
374
- event: _config.eventType.MEDIA_RECOVERED,
375
- meeting: _this3.meeting,
376
- data: {
377
- recoveredBy: _config.reconnection.RECOVERED_BY_NEW
378
- }
379
- });
380
- }).catch(function (reconnectError) {
381
- if (reconnectError instanceof NeedsRetryError) {
382
- _loggerProxy.default.logger.info('ReconnectionManager:index#reconnect --> Reconnection not successful, retrying.'); // Reset our reconnect status since we are looping back to the beginning
383
-
384
-
385
- _this3.status = _constants.RECONNECTION.STATE.DEFAULT_STATUS; // This is a network retry, so we should not log START metrics again
386
-
387
- return _this3.reconnect({
388
- networkDisconnect: true,
389
- networkRetry: true
390
- });
391
- } // Reconnect has failed
392
-
393
-
394
- _loggerProxy.default.logger.error('ReconnectionManager:index#reconnect --> Reconnection failed.', reconnectError.message);
395
-
396
- _loggerProxy.default.logger.info('ReconnectionManager:index#reconnect --> Sending reconnect abort metric.');
397
-
398
- var reconnectMetric = {
399
- event: _config.eventType.CALL_ABORTED,
400
- meeting: _this3.meeting,
401
- data: {
402
- errors: [{
403
- category: _config.errorObjects.category.expected,
404
- errorCode: 2008,
405
- fatal: true,
406
- name: _config.errorObjects.name.mediaEngine,
407
- shownToUser: false
408
- }]
409
- }
410
- };
411
-
412
- _metrics.default.postEvent(reconnectMetric);
413
-
414
- if (reconnectError instanceof NeedsRejoinError) {
415
- // send call aborded event with catogery as expected as we are trying to rejoin
416
- if (_this3.autoRejoinEnabled) {
417
- return _this3.rejoinMeeting(reconnectError.wasSharing);
418
- }
419
- }
420
-
421
- throw reconnectError;
422
- }));
423
-
424
- case 12:
425
- case "end":
426
- return _context.stop();
427
- }
431
+ });
432
+ if (!(_context2.t2 instanceof NeedsRejoinError && this.autoRejoinEnabled)) {
433
+ _context2.next = 37;
434
+ break;
435
+ }
436
+ return _context2.abrupt("return", this.rejoinMeeting(_context2.t2.wasSharing));
437
+ case 37:
438
+ throw _context2.t2;
439
+ case 38:
440
+ case "end":
441
+ return _context2.stop();
428
442
  }
429
- }, _callee, this, [[2, 6]]);
443
+ }, _callee2, this, [[2, 6], [11, 16], [19, 26]]);
430
444
  }));
431
-
432
445
  function reconnect() {
433
446
  return _reconnect.apply(this, arguments);
434
447
  }
435
-
436
448
  return reconnect;
437
449
  }()
438
450
  /**
@@ -443,132 +455,104 @@ var ReconnectionManager = /*#__PURE__*/function () {
443
455
  * @private
444
456
  * @memberof ReconnectionManager
445
457
  */
446
-
447
458
  }, {
448
459
  key: "executeReconnection",
449
460
  value: function () {
450
- var _executeReconnection = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(_ref3) {
461
+ var _executeReconnection = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(_ref3) {
451
462
  var _ref3$networkDisconne, networkDisconnect, wasSharing, media;
452
-
453
- return _regenerator.default.wrap(function _callee2$(_context2) {
454
- while (1) {
455
- switch (_context2.prev = _context2.next) {
456
- case 0:
457
- _ref3$networkDisconne = _ref3.networkDisconnect, networkDisconnect = _ref3$networkDisconne === void 0 ? false : _ref3$networkDisconne;
458
- this.status = _constants.RECONNECTION.STATE.IN_PROGRESS;
459
-
460
- _loggerProxy.default.logger.info('ReconnectionManager:index#executeReconnection --> Attempting to reconnect to meeting.');
461
-
462
- if (!networkDisconnect) {
463
- _context2.next = 15;
464
- break;
465
- }
466
-
467
- _context2.prev = 4;
468
- _context2.next = 7;
469
- return this.reconnectMercuryWebSocket();
470
-
471
- case 7:
472
- _loggerProxy.default.logger.error('ReconnectionManager:index#executeReconnection --> Websocket reconnected.', this.webex.internal.device.url);
473
-
474
- _context2.next = 15;
463
+ return _regenerator.default.wrap(function _callee3$(_context3) {
464
+ while (1) switch (_context3.prev = _context3.next) {
465
+ case 0:
466
+ _ref3$networkDisconne = _ref3.networkDisconnect, networkDisconnect = _ref3$networkDisconne === void 0 ? false : _ref3$networkDisconne;
467
+ this.status = _constants.RECONNECTION.STATE.IN_PROGRESS;
468
+ _loggerProxy.default.logger.info('ReconnectionManager:index#executeReconnection --> Attempting to reconnect to meeting.');
469
+ wasSharing = this.meeting.shareStatus === _constants.SHARE_STATUS.LOCAL_SHARE_ACTIVE;
470
+ if (!wasSharing) {
471
+ _context3.next = 7;
475
472
  break;
476
-
477
- case 10:
478
- _context2.prev = 10;
479
- _context2.t0 = _context2["catch"](4);
480
-
481
- _loggerProxy.default.logger.error('ReconnectionManager:index#executeReconnection --> Unable to reconnect to websocket, giving up.');
482
-
483
- this.status = _constants.RECONNECTION.STATE.FAILURE;
484
- throw _context2.t0;
485
-
486
- case 15:
487
- wasSharing = this.meeting.shareStatus === _constants.SHARE_STATUS.LOCAL_SHARE_ACTIVE;
488
- _context2.prev = 16;
489
-
490
- _loggerProxy.default.logger.info('ReconnectionManager:index#executeReconnection --> Updating meeting data from server.');
491
-
492
- _context2.next = 20;
493
- return this.webex.meetings.syncMeetings();
494
-
495
- case 20:
496
- _context2.next = 26;
473
+ }
474
+ _context3.next = 7;
475
+ return this.stopLocalShareStream(_constants.SHARE_STOPPED_REASON.MEDIA_RECONNECTION);
476
+ case 7:
477
+ if (!networkDisconnect) {
478
+ _context3.next = 19;
497
479
  break;
498
-
499
- case 22:
500
- _context2.prev = 22;
501
- _context2.t1 = _context2["catch"](16);
502
-
503
- _loggerProxy.default.logger.info('ReconnectionManager:index#executeReconnection --> Unable to sync meetings, reconnecting.', _context2.t1);
504
-
505
- throw new NeedsRetryError(_context2.t1);
506
-
507
- case 26:
508
- if (!(!this.meeting || !this.webex.meetings.getMeetingByType(_constants._ID_, this.meeting.id))) {
509
- _context2.next = 29;
510
- break;
511
- }
512
-
513
- _loggerProxy.default.logger.info('ReconnectionManager:index#executeReconnection --> Meeting got deleted due to inactivity or ended remotely ');
514
-
515
- throw new Error('Unable to rejoin a meeting already ended or inactive .');
516
-
517
- case 29:
518
- _loggerProxy.default.logger.info("ReconnectionManager:index#executeReconnection --> Current state of meeting is ".concat(this.meeting.state)); // If the meeting state was left, no longer reconnect media
519
-
520
-
521
- if (!(this.meeting.state === _constants._LEFT_)) {
522
- _context2.next = 34;
523
- break;
524
- }
525
-
526
- if (!(this.meeting.type === _constants._CALL_)) {
527
- _context2.next = 33;
528
- break;
529
- }
530
-
531
- throw new Error('Unable to rejoin a call in LEFT state.');
532
-
533
- case 33:
534
- throw new NeedsRejoinError({
535
- wasSharing: wasSharing
536
- });
537
-
538
- case 34:
539
- _context2.prev = 34;
540
- _context2.next = 37;
541
- return this.reconnectMedia();
542
-
543
- case 37:
544
- media = _context2.sent;
545
-
546
- _loggerProxy.default.logger.log('ReconnectionManager:index#executeReconnection --> Media reestablished');
547
-
548
- this.status = _constants.RECONNECTION.STATE.COMPLETE;
549
- return _context2.abrupt("return", media);
550
-
551
- case 43:
552
- _context2.prev = 43;
553
- _context2.t2 = _context2["catch"](34);
554
-
555
- _loggerProxy.default.logger.error('ReconnectionManager:index#executeReconnection --> Media reestablishment failed');
556
-
557
- this.status = _constants.RECONNECTION.STATE.FAILURE;
558
- throw _context2.t2;
559
-
560
- case 48:
561
- case "end":
562
- return _context2.stop();
563
- }
480
+ }
481
+ _context3.prev = 8;
482
+ _context3.next = 11;
483
+ return this.reconnectMercuryWebSocket();
484
+ case 11:
485
+ _loggerProxy.default.logger.error('ReconnectionManager:index#executeReconnection --> Websocket reconnected.', this.webex.internal.device.url);
486
+ _context3.next = 19;
487
+ break;
488
+ case 14:
489
+ _context3.prev = 14;
490
+ _context3.t0 = _context3["catch"](8);
491
+ _loggerProxy.default.logger.error('ReconnectionManager:index#executeReconnection --> Unable to reconnect to websocket, giving up.');
492
+ this.status = _constants.RECONNECTION.STATE.FAILURE;
493
+ throw _context3.t0;
494
+ case 19:
495
+ _context3.prev = 19;
496
+ _loggerProxy.default.logger.info('ReconnectionManager:index#executeReconnection --> Updating meeting data from server.');
497
+ _context3.next = 23;
498
+ return this.webex.meetings.syncMeetings({
499
+ keepOnlyLocusMeetings: false
500
+ });
501
+ case 23:
502
+ _context3.next = 29;
503
+ break;
504
+ case 25:
505
+ _context3.prev = 25;
506
+ _context3.t1 = _context3["catch"](19);
507
+ _loggerProxy.default.logger.info('ReconnectionManager:index#executeReconnection --> Unable to sync meetings, reconnecting.', _context3.t1);
508
+ throw new NeedsRetryError(_context3.t1);
509
+ case 29:
510
+ if (!(!this.meeting || !this.webex.meetings.getMeetingByType(_constants._ID_, this.meeting.id))) {
511
+ _context3.next = 32;
512
+ break;
513
+ }
514
+ _loggerProxy.default.logger.info('ReconnectionManager:index#executeReconnection --> Meeting got deleted due to inactivity or ended remotely.');
515
+ throw new Error('Unable to rejoin a meeting already ended or inactive.');
516
+ case 32:
517
+ _loggerProxy.default.logger.info("ReconnectionManager:index#executeReconnection --> Current state of meeting is ".concat(this.meeting.state));
518
+
519
+ // If the meeting state was left, no longer reconnect media
520
+ if (!(this.meeting.state === _constants._LEFT_)) {
521
+ _context3.next = 37;
522
+ break;
523
+ }
524
+ if (!(this.meeting.type === _constants._CALL_)) {
525
+ _context3.next = 36;
526
+ break;
527
+ }
528
+ throw new Error('Unable to rejoin a call in LEFT state.');
529
+ case 36:
530
+ throw new NeedsRejoinError({
531
+ wasSharing: wasSharing
532
+ });
533
+ case 37:
534
+ _context3.prev = 37;
535
+ _context3.next = 40;
536
+ return this.reconnectMedia();
537
+ case 40:
538
+ media = _context3.sent;
539
+ _loggerProxy.default.logger.log('ReconnectionManager:index#executeReconnection --> webRTC media connection renewed and local sdp offer sent');
540
+ return _context3.abrupt("return", media);
541
+ case 45:
542
+ _context3.prev = 45;
543
+ _context3.t2 = _context3["catch"](37);
544
+ _loggerProxy.default.logger.error('ReconnectionManager:index#executeReconnection --> failed to renew webRTC media connection or initiate offer');
545
+ this.status = _constants.RECONNECTION.STATE.FAILURE;
546
+ throw _context3.t2;
547
+ case 50:
548
+ case "end":
549
+ return _context3.stop();
564
550
  }
565
- }, _callee2, this, [[4, 10], [16, 22], [34, 43]]);
551
+ }, _callee3, this, [[8, 14], [19, 25], [37, 45]]);
566
552
  }));
567
-
568
- function executeReconnection(_x) {
553
+ function executeReconnection(_x2) {
569
554
  return _executeReconnection.apply(this, arguments);
570
555
  }
571
-
572
556
  return executeReconnection;
573
557
  }()
574
558
  /**
@@ -578,110 +562,75 @@ var ReconnectionManager = /*#__PURE__*/function () {
578
562
  * @param {boolean} wasSharing
579
563
  * @returns {Promise}
580
564
  */
581
-
582
565
  }, {
583
566
  key: "rejoinMeeting",
584
567
  value: function () {
585
- var _rejoinMeeting = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() {
568
+ var _rejoinMeeting = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4() {
586
569
  var wasSharing,
587
- _args3 = arguments;
588
- return _regenerator.default.wrap(function _callee3$(_context3) {
589
- while (1) {
590
- switch (_context3.prev = _context3.next) {
591
- case 0:
592
- wasSharing = _args3.length > 0 && _args3[0] !== undefined ? _args3[0] : false;
593
- _context3.prev = 1;
594
-
595
- _loggerProxy.default.logger.info('ReconnectionManager:index#rejoinMeeting --> attemping meeting rejoin');
596
-
597
- _context3.next = 5;
598
- return this.meeting.join({
599
- rejoin: true
600
- });
601
-
602
- case 5:
603
- _loggerProxy.default.logger.info('ReconnectionManager:index#rejoinMeeting --> meeting rejoined');
604
-
605
- if (wasSharing) {
606
- // Stop the share streams if user tried to rejoin
607
- _media.default.stopTracks(this.meeting.mediaProperties.shareTrack);
608
-
609
- this.meeting.isSharing = false;
610
-
611
- if (this.shareStatus === _constants.SHARE_STATUS.LOCAL_SHARE_ACTIVE) {
612
- this.meeting.shareStatus = _constants.SHARE_STATUS.NO_SHARE;
613
- }
614
-
615
- this.meeting.mediaProperties.mediaDirection.sendShare = false;
616
-
617
- _triggerProxy.default.trigger(this.meeting, {
618
- file: 'reconnection-manager/index',
619
- function: 'rejoinMeeting'
620
- }, _constants.EVENT_TRIGGERS.MEETING_STOPPED_SHARING_LOCAL, {
621
- reason: _constants.SHARE_STOPPED_REASON.MEETING_REJOIN
622
- });
623
- }
624
-
625
- _context3.next = 21;
626
- break;
627
-
628
- case 9:
629
- _context3.prev = 9;
630
- _context3.t0 = _context3["catch"](1);
631
- this.rejoinAttempts += 1;
632
-
633
- if (!(this.rejoinAttempts <= this.maxRejoinAttempts)) {
634
- _context3.next = 17;
635
- break;
636
- }
637
-
638
- _loggerProxy.default.logger.info("ReconnectionManager:index#rejoinMeeting --> Unable to rejoin meeting, attempt #".concat(this.rejoinAttempts, ", retrying."), _context3.t0);
639
-
640
- this.rejoinMeeting();
641
- _context3.next = 21;
570
+ _args4 = arguments;
571
+ return _regenerator.default.wrap(function _callee4$(_context4) {
572
+ while (1) switch (_context4.prev = _context4.next) {
573
+ case 0:
574
+ wasSharing = _args4.length > 0 && _args4[0] !== undefined ? _args4[0] : false;
575
+ _context4.prev = 1;
576
+ _loggerProxy.default.logger.info('ReconnectionManager:index#rejoinMeeting --> attemping meeting rejoin');
577
+ _context4.next = 5;
578
+ return this.meeting.join({
579
+ rejoin: true
580
+ });
581
+ case 5:
582
+ _loggerProxy.default.logger.info('ReconnectionManager:index#rejoinMeeting --> meeting rejoined');
583
+ if (!wasSharing) {
584
+ _context4.next = 9;
642
585
  break;
643
-
644
- case 17:
645
- _loggerProxy.default.logger.error('ReconnectionManager:index#rejoinMeeting --> Unable to rejoin meeting after max attempts.', _context3.t0);
646
-
647
- _metrics.default.sendBehavioralMetric(_constants2.default.MEETING_MAX_REJOIN_FAILURE, {
648
- locus_id: this.meeting.locusUrl.split('/').pop(),
649
- reason: _context3.t0.message,
650
- stack: _context3.t0.stack
651
- });
652
-
653
- this.status = _constants.RECONNECTION.STATE.FAILURE;
654
- throw _context3.t0;
655
-
656
- case 21:
657
- _context3.prev = 21;
658
- _context3.next = 24;
659
- return this.reconnectMedia();
660
-
661
- case 24:
662
- _context3.next = 30;
586
+ }
587
+ _context4.next = 9;
588
+ return this.stopLocalShareStream(_constants.SHARE_STOPPED_REASON.MEETING_REJOIN);
589
+ case 9:
590
+ _context4.next = 23;
591
+ break;
592
+ case 11:
593
+ _context4.prev = 11;
594
+ _context4.t0 = _context4["catch"](1);
595
+ this.rejoinAttempts += 1;
596
+ if (!(this.rejoinAttempts <= this.maxRejoinAttempts)) {
597
+ _context4.next = 19;
663
598
  break;
664
-
665
- case 26:
666
- _context3.prev = 26;
667
- _context3.t1 = _context3["catch"](21);
668
-
669
- _loggerProxy.default.logger.error('ReconnectionManager:index#rejoinMeeting --> Unable to reestablish media after rejoining.', _context3.t1);
670
-
671
- throw _context3.t1;
672
-
673
- case 30:
674
- case "end":
675
- return _context3.stop();
676
- }
599
+ }
600
+ _loggerProxy.default.logger.info("ReconnectionManager:index#rejoinMeeting --> Unable to rejoin meeting, attempt #".concat(this.rejoinAttempts, ", retrying."), _context4.t0);
601
+ this.rejoinMeeting();
602
+ _context4.next = 23;
603
+ break;
604
+ case 19:
605
+ _loggerProxy.default.logger.error('ReconnectionManager:index#rejoinMeeting --> Unable to rejoin meeting after max attempts.', _context4.t0);
606
+ _metrics.default.sendBehavioralMetric(_constants2.default.MEETING_MAX_REJOIN_FAILURE, {
607
+ locus_id: this.meeting.locusUrl.split('/').pop(),
608
+ reason: _context4.t0.message,
609
+ stack: _context4.t0.stack
610
+ });
611
+ this.status = _constants.RECONNECTION.STATE.FAILURE;
612
+ throw _context4.t0;
613
+ case 23:
614
+ _context4.prev = 23;
615
+ _context4.next = 26;
616
+ return this.reconnectMedia();
617
+ case 26:
618
+ _context4.next = 32;
619
+ break;
620
+ case 28:
621
+ _context4.prev = 28;
622
+ _context4.t1 = _context4["catch"](23);
623
+ _loggerProxy.default.logger.error('ReconnectionManager:index#rejoinMeeting --> Unable to reestablish media after rejoining.', _context4.t1);
624
+ throw _context4.t1;
625
+ case 32:
626
+ case "end":
627
+ return _context4.stop();
677
628
  }
678
- }, _callee3, this, [[1, 9], [21, 26]]);
629
+ }, _callee4, this, [[1, 11], [23, 28]]);
679
630
  }));
680
-
681
631
  function rejoinMeeting() {
682
632
  return _rejoinMeeting.apply(this, arguments);
683
633
  }
684
-
685
634
  return rejoinMeeting;
686
635
  }()
687
636
  /**
@@ -689,46 +638,50 @@ var ReconnectionManager = /*#__PURE__*/function () {
689
638
  * @private
690
639
  * @memberof ReconnectionManager
691
640
  */
692
-
693
641
  }, {
694
642
  key: "reconnectMedia",
695
643
  value: function () {
696
- var _reconnectMedia = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4() {
697
- var turnServerResult, mc;
698
- return _regenerator.default.wrap(function _callee4$(_context4) {
699
- while (1) {
700
- switch (_context4.prev = _context4.next) {
701
- case 0:
702
- _loggerProxy.default.logger.log('ReconnectionManager:index#reconnectMedia --> Begin reestablishment of media'); // we are not simply calling this.meeting.mediaProperties.webrtcMediaConnection.reconnect(),
703
- // but instead manually closing and creating new media connection, because we need to do the TURN discovery again
704
-
705
-
706
- _context4.next = 3;
707
- return this.meeting.closePeerConnections();
708
-
709
- case 3:
710
- this.meeting.mediaProperties.unsetPeerConnection();
711
- _context4.next = 6;
712
- return this.meeting.roap.doTurnDiscovery(this.meeting, true);
713
-
714
- case 6:
715
- turnServerResult = _context4.sent;
716
- mc = this.meeting.createMediaConnection(turnServerResult.turnServerInfo);
717
- this.meeting.statsAnalyzer.updateMediaConnection(mc);
718
- return _context4.abrupt("return", mc.initiateOffer());
719
-
720
- case 10:
721
- case "end":
722
- return _context4.stop();
723
- }
644
+ var _reconnectMedia = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5() {
645
+ var _turnServerResult$tur;
646
+ var turnServerResult, iceServers;
647
+ return _regenerator.default.wrap(function _callee5$(_context5) {
648
+ while (1) switch (_context5.prev = _context5.next) {
649
+ case 0:
650
+ _loggerProxy.default.logger.log('ReconnectionManager:index#reconnectMedia --> do turn discovery');
651
+
652
+ // do the TURN server discovery again and ignore reachability results since the TURN server might change
653
+ _context5.next = 3;
654
+ return this.meeting.roap.doTurnDiscovery(this.meeting, true, true);
655
+ case 3:
656
+ turnServerResult = _context5.sent;
657
+ iceServers = [];
658
+ if ((_turnServerResult$tur = turnServerResult.turnServerInfo) !== null && _turnServerResult$tur !== void 0 && _turnServerResult$tur.url) {
659
+ iceServers.push({
660
+ urls: turnServerResult.turnServerInfo.url,
661
+ username: turnServerResult.turnServerInfo.username || '',
662
+ credential: turnServerResult.turnServerInfo.password || ''
663
+ });
664
+ }
665
+ _loggerProxy.default.logger.log('ReconnectionManager:index#reconnectMedia --> renew webRTC media connection and send local sdp offer');
666
+ _context5.next = 9;
667
+ return this.meeting.mediaProperties.webrtcMediaConnection.reconnect(iceServers);
668
+ case 9:
669
+ // resend media requests
670
+ if (this.meeting.isMultistream) {
671
+ (0, _values.default)(this.meeting.mediaRequestManagers).forEach(function (mediaRequestManager) {
672
+ mediaRequestManager.clearPreviousRequests();
673
+ mediaRequestManager.commit();
674
+ });
675
+ }
676
+ case 10:
677
+ case "end":
678
+ return _context5.stop();
724
679
  }
725
- }, _callee4, this);
680
+ }, _callee5, this);
726
681
  }));
727
-
728
682
  function reconnectMedia() {
729
683
  return _reconnectMedia.apply(this, arguments);
730
684
  }
731
-
732
685
  return reconnectMedia;
733
686
  }()
734
687
  /**
@@ -737,83 +690,60 @@ var ReconnectionManager = /*#__PURE__*/function () {
737
690
  * @private
738
691
  * @memberof ReconnectionManager
739
692
  */
740
-
741
693
  }, {
742
694
  key: "reconnectMercuryWebSocket",
743
695
  value: function () {
744
- var _reconnectMercuryWebSocket = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5() {
745
- return _regenerator.default.wrap(function _callee5$(_context5) {
746
- while (1) {
747
- switch (_context5.prev = _context5.next) {
748
- case 0:
749
- _loggerProxy.default.logger.info('ReconnectionManager:index#reconnectMercuryWebSocket --> Reconnecting websocket.'); // First, attempt to disconnect if we think we are already connected.
750
-
751
-
752
- if (!this.webex.internal.mercury.connected) {
753
- _context5.next = 13;
754
- break;
755
- }
756
-
757
- _loggerProxy.default.logger.info('ReconnectionManager:index#reconnectMercuryWebSocket --> Disconnecting existing websocket.');
758
-
759
- _context5.prev = 3;
760
- _context5.next = 6;
761
- return this.webex.internal.mercury.disconnect();
762
-
763
- case 6:
764
- _loggerProxy.default.logger.info('ReconnectionManager:index#reconnectMercuryWebSocket --> Websocket disconnected successfully.');
765
-
766
- _context5.next = 13;
696
+ var _reconnectMercuryWebSocket = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6() {
697
+ return _regenerator.default.wrap(function _callee6$(_context6) {
698
+ while (1) switch (_context6.prev = _context6.next) {
699
+ case 0:
700
+ _loggerProxy.default.logger.info('ReconnectionManager:index#reconnectMercuryWebSocket --> Reconnecting websocket.');
701
+ // First, attempt to disconnect if we think we are already connected.
702
+ if (!this.webex.internal.mercury.connected) {
703
+ _context6.next = 13;
767
704
  break;
768
-
769
- case 9:
770
- _context5.prev = 9;
771
- _context5.t0 = _context5["catch"](3);
772
-
773
- // If we can't disconnect, the sdk is in such a bad state that reconnecting is not going to happen.
774
- _loggerProxy.default.logger.error('ReconnectionManager:index#reconnectMercuryWebSocket --> Unable to disconnect from websocket, giving up.', _context5.t0);
775
-
776
- throw _context5.t0;
777
-
778
- case 13:
779
- _context5.prev = 13;
780
-
781
- _loggerProxy.default.logger.info('ReconnectionManager:index#reconnectMercuryWebSocket --> Connecting websocket.');
782
-
783
- _context5.next = 17;
784
- return this.webex.internal.mercury.connect();
785
-
786
- case 17:
787
- _loggerProxy.default.logger.info('ReconnectionManager:index#reconnectMercuryWebSocket --> Websocket connected successfully.');
788
-
789
- _context5.next = 24;
790
- break;
791
-
792
- case 20:
793
- _context5.prev = 20;
794
- _context5.t1 = _context5["catch"](13);
795
-
796
- _loggerProxy.default.logger.error('ReconnectionManager:index#reconnectMercuryWebSocket --> Unable to connect to websocket, giving up.', _context5.t1);
797
-
798
- throw _context5.t1;
799
-
800
- case 24:
801
- case "end":
802
- return _context5.stop();
803
- }
705
+ }
706
+ _loggerProxy.default.logger.info('ReconnectionManager:index#reconnectMercuryWebSocket --> Disconnecting existing websocket.');
707
+ _context6.prev = 3;
708
+ _context6.next = 6;
709
+ return this.webex.internal.mercury.disconnect();
710
+ case 6:
711
+ _loggerProxy.default.logger.info('ReconnectionManager:index#reconnectMercuryWebSocket --> Websocket disconnected successfully.');
712
+ _context6.next = 13;
713
+ break;
714
+ case 9:
715
+ _context6.prev = 9;
716
+ _context6.t0 = _context6["catch"](3);
717
+ // If we can't disconnect, the sdk is in such a bad state that reconnecting is not going to happen.
718
+ _loggerProxy.default.logger.error('ReconnectionManager:index#reconnectMercuryWebSocket --> Unable to disconnect from websocket, giving up.', _context6.t0);
719
+ throw _context6.t0;
720
+ case 13:
721
+ _context6.prev = 13;
722
+ _loggerProxy.default.logger.info('ReconnectionManager:index#reconnectMercuryWebSocket --> Connecting websocket.');
723
+ _context6.next = 17;
724
+ return this.webex.internal.mercury.connect();
725
+ case 17:
726
+ _loggerProxy.default.logger.info('ReconnectionManager:index#reconnectMercuryWebSocket --> Websocket connected successfully.');
727
+ _context6.next = 24;
728
+ break;
729
+ case 20:
730
+ _context6.prev = 20;
731
+ _context6.t1 = _context6["catch"](13);
732
+ _loggerProxy.default.logger.error('ReconnectionManager:index#reconnectMercuryWebSocket --> Unable to connect to websocket, giving up.', _context6.t1);
733
+ throw _context6.t1;
734
+ case 24:
735
+ case "end":
736
+ return _context6.stop();
804
737
  }
805
- }, _callee5, this, [[3, 9], [13, 20]]);
738
+ }, _callee6, this, [[3, 9], [13, 20]]);
806
739
  }));
807
-
808
740
  function reconnectMercuryWebSocket() {
809
741
  return _reconnectMercuryWebSocket.apply(this, arguments);
810
742
  }
811
-
812
743
  return reconnectMercuryWebSocket;
813
744
  }()
814
745
  }]);
815
746
  return ReconnectionManager;
816
747
  }();
817
-
818
748
  exports.default = ReconnectionManager;
819
749
  //# sourceMappingURL=index.js.map