@webex/plugin-meetings 3.0.0-beta.17 → 3.0.0-beta.171

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 (427) hide show
  1. package/README.md +45 -7
  2. package/dist/annotation/annotation.types.js +7 -0
  3. package/dist/annotation/annotation.types.js.map +1 -0
  4. package/dist/annotation/constants.js +49 -0
  5. package/dist/annotation/constants.js.map +1 -0
  6. package/dist/annotation/index.js +359 -0
  7. package/dist/annotation/index.js.map +1 -0
  8. package/dist/breakouts/breakout.js +216 -0
  9. package/dist/breakouts/breakout.js.map +1 -0
  10. package/dist/breakouts/collection.js +23 -0
  11. package/dist/breakouts/collection.js.map +1 -0
  12. package/dist/breakouts/edit-lock-error.js +52 -0
  13. package/dist/breakouts/edit-lock-error.js.map +1 -0
  14. package/dist/breakouts/events.js +45 -0
  15. package/dist/breakouts/events.js.map +1 -0
  16. package/dist/breakouts/index.js +1048 -0
  17. package/dist/breakouts/index.js.map +1 -0
  18. package/dist/breakouts/request.js +78 -0
  19. package/dist/breakouts/request.js.map +1 -0
  20. package/dist/breakouts/utils.js +67 -0
  21. package/dist/breakouts/utils.js.map +1 -0
  22. package/dist/common/errors/webex-errors.js +3 -2
  23. package/dist/common/errors/webex-errors.js.map +1 -1
  24. package/dist/common/logs/logger-proxy.js +1 -1
  25. package/dist/common/logs/logger-proxy.js.map +1 -1
  26. package/dist/config.js +6 -8
  27. package/dist/config.js.map +1 -1
  28. package/dist/constants.js +194 -28
  29. package/dist/constants.js.map +1 -1
  30. package/dist/controls-options-manager/constants.js +14 -0
  31. package/dist/controls-options-manager/constants.js.map +1 -0
  32. package/dist/controls-options-manager/enums.js +27 -0
  33. package/dist/controls-options-manager/enums.js.map +1 -0
  34. package/dist/controls-options-manager/index.js +297 -0
  35. package/dist/controls-options-manager/index.js.map +1 -0
  36. package/dist/controls-options-manager/types.js +7 -0
  37. package/dist/controls-options-manager/types.js.map +1 -0
  38. package/dist/controls-options-manager/util.js +300 -0
  39. package/dist/controls-options-manager/util.js.map +1 -0
  40. package/dist/index.js +107 -0
  41. package/dist/index.js.map +1 -1
  42. package/dist/interpretation/collection.js +23 -0
  43. package/dist/interpretation/collection.js.map +1 -0
  44. package/dist/interpretation/index.js +214 -0
  45. package/dist/interpretation/index.js.map +1 -0
  46. package/dist/interpretation/siLanguage.js +25 -0
  47. package/dist/interpretation/siLanguage.js.map +1 -0
  48. package/dist/locus-info/controlsUtils.js +92 -2
  49. package/dist/locus-info/controlsUtils.js.map +1 -1
  50. package/dist/locus-info/index.js +350 -41
  51. package/dist/locus-info/index.js.map +1 -1
  52. package/dist/locus-info/mediaSharesUtils.js +43 -1
  53. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  54. package/dist/locus-info/parser.js +2 -1
  55. package/dist/locus-info/parser.js.map +1 -1
  56. package/dist/locus-info/selfUtils.js +97 -14
  57. package/dist/locus-info/selfUtils.js.map +1 -1
  58. package/dist/media/index.js +41 -136
  59. package/dist/media/index.js.map +1 -1
  60. package/dist/media/properties.js +33 -94
  61. package/dist/media/properties.js.map +1 -1
  62. package/dist/mediaQualityMetrics/config.js +505 -493
  63. package/dist/mediaQualityMetrics/config.js.map +1 -1
  64. package/dist/meeting/in-meeting-actions.js +76 -2
  65. package/dist/meeting/in-meeting-actions.js.map +1 -1
  66. package/dist/meeting/index.js +2757 -2439
  67. package/dist/meeting/index.js.map +1 -1
  68. package/dist/meeting/locusMediaRequest.js +291 -0
  69. package/dist/meeting/locusMediaRequest.js.map +1 -0
  70. package/dist/meeting/muteState.js +229 -124
  71. package/dist/meeting/muteState.js.map +1 -1
  72. package/dist/meeting/request.js +191 -167
  73. package/dist/meeting/request.js.map +1 -1
  74. package/dist/meeting/request.type.js.map +1 -1
  75. package/dist/meeting/util.js +477 -466
  76. package/dist/meeting/util.js.map +1 -1
  77. package/dist/meeting-info/index.js +48 -7
  78. package/dist/meeting-info/index.js.map +1 -1
  79. package/dist/meeting-info/meeting-info-v2.js +172 -50
  80. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  81. package/dist/meeting-info/utilv2.js +20 -5
  82. package/dist/meeting-info/utilv2.js.map +1 -1
  83. package/dist/meetings/collection.js +22 -0
  84. package/dist/meetings/collection.js.map +1 -1
  85. package/dist/meetings/index.js +377 -82
  86. package/dist/meetings/index.js.map +1 -1
  87. package/dist/meetings/meetings.types.js +7 -0
  88. package/dist/meetings/meetings.types.js.map +1 -0
  89. package/dist/meetings/request.js +16 -12
  90. package/dist/meetings/request.js.map +1 -1
  91. package/dist/meetings/util.js +88 -1
  92. package/dist/meetings/util.js.map +1 -1
  93. package/dist/member/index.js +43 -0
  94. package/dist/member/index.js.map +1 -1
  95. package/dist/member/types.js +15 -0
  96. package/dist/member/types.js.map +1 -0
  97. package/dist/member/util.js +97 -3
  98. package/dist/member/util.js.map +1 -1
  99. package/dist/members/collection.js +10 -0
  100. package/dist/members/collection.js.map +1 -1
  101. package/dist/members/index.js +94 -11
  102. package/dist/members/index.js.map +1 -1
  103. package/dist/members/request.js +109 -39
  104. package/dist/members/request.js.map +1 -1
  105. package/dist/members/types.js +15 -0
  106. package/dist/members/types.js.map +1 -0
  107. package/dist/members/util.js +316 -233
  108. package/dist/members/util.js.map +1 -1
  109. package/dist/metrics/constants.js +3 -5
  110. package/dist/metrics/constants.js.map +1 -1
  111. package/dist/metrics/index.js +1 -468
  112. package/dist/metrics/index.js.map +1 -1
  113. package/dist/multistream/mediaRequestManager.js +265 -36
  114. package/dist/multistream/mediaRequestManager.js.map +1 -1
  115. package/dist/multistream/receiveSlot.js +52 -19
  116. package/dist/multistream/receiveSlot.js.map +1 -1
  117. package/dist/multistream/receiveSlotManager.js +53 -33
  118. package/dist/multistream/receiveSlotManager.js.map +1 -1
  119. package/dist/multistream/remoteMedia.js +44 -18
  120. package/dist/multistream/remoteMedia.js.map +1 -1
  121. package/dist/multistream/remoteMediaGroup.js +60 -3
  122. package/dist/multistream/remoteMediaGroup.js.map +1 -1
  123. package/dist/multistream/remoteMediaManager.js +322 -103
  124. package/dist/multistream/remoteMediaManager.js.map +1 -1
  125. package/dist/networkQualityMonitor/index.js +4 -2
  126. package/dist/networkQualityMonitor/index.js.map +1 -1
  127. package/dist/reachability/index.js +117 -60
  128. package/dist/reachability/index.js.map +1 -1
  129. package/dist/reachability/request.js +12 -5
  130. package/dist/reachability/request.js.map +1 -1
  131. package/dist/reactions/constants.js +13 -0
  132. package/dist/reactions/constants.js.map +1 -0
  133. package/dist/reactions/reactions.js +2 -2
  134. package/dist/reactions/reactions.js.map +1 -1
  135. package/dist/reactions/reactions.type.js +18 -18
  136. package/dist/reactions/reactions.type.js.map +1 -1
  137. package/dist/reconnection-manager/index.js +216 -162
  138. package/dist/reconnection-manager/index.js.map +1 -1
  139. package/dist/recording-controller/enums.js +17 -0
  140. package/dist/recording-controller/enums.js.map +1 -0
  141. package/dist/recording-controller/index.js +363 -0
  142. package/dist/recording-controller/index.js.map +1 -0
  143. package/dist/recording-controller/util.js +64 -0
  144. package/dist/recording-controller/util.js.map +1 -0
  145. package/dist/roap/index.js +21 -29
  146. package/dist/roap/index.js.map +1 -1
  147. package/dist/roap/request.js +135 -94
  148. package/dist/roap/request.js.map +1 -1
  149. package/dist/roap/turnDiscovery.js +135 -53
  150. package/dist/roap/turnDiscovery.js.map +1 -1
  151. package/dist/statsAnalyzer/global.js +1 -93
  152. package/dist/statsAnalyzer/global.js.map +1 -1
  153. package/dist/statsAnalyzer/index.js +329 -314
  154. package/dist/statsAnalyzer/index.js.map +1 -1
  155. package/dist/statsAnalyzer/mqaUtil.js +103 -54
  156. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  157. package/dist/types/annotation/annotation.types.d.ts +43 -0
  158. package/dist/types/annotation/constants.d.ts +31 -0
  159. package/dist/types/annotation/index.d.ts +124 -0
  160. package/dist/types/breakouts/breakout.d.ts +8 -0
  161. package/dist/types/breakouts/collection.d.ts +5 -0
  162. package/dist/types/breakouts/edit-lock-error.d.ts +15 -0
  163. package/dist/types/breakouts/events.d.ts +8 -0
  164. package/dist/types/breakouts/index.d.ts +5 -0
  165. package/dist/types/breakouts/request.d.ts +22 -0
  166. package/dist/types/breakouts/utils.d.ts +15 -0
  167. package/dist/types/common/browser-detection.d.ts +9 -0
  168. package/dist/types/common/collection.d.ts +48 -0
  169. package/dist/types/common/config.d.ts +2 -0
  170. package/dist/types/common/errors/captcha-error.d.ts +15 -0
  171. package/dist/types/common/errors/intent-to-join.d.ts +16 -0
  172. package/dist/types/common/errors/join-meeting.d.ts +17 -0
  173. package/dist/types/common/errors/media.d.ts +15 -0
  174. package/dist/types/common/errors/parameter.d.ts +15 -0
  175. package/dist/types/common/errors/password-error.d.ts +15 -0
  176. package/dist/types/common/errors/permission.d.ts +14 -0
  177. package/dist/types/common/errors/reconnection-in-progress.d.ts +9 -0
  178. package/dist/types/common/errors/reconnection.d.ts +15 -0
  179. package/dist/types/common/errors/stats.d.ts +15 -0
  180. package/dist/types/common/errors/webex-errors.d.ts +69 -0
  181. package/dist/types/common/errors/webex-meetings-error.d.ts +20 -0
  182. package/dist/types/common/events/events-scope.d.ts +17 -0
  183. package/dist/types/common/events/events.d.ts +12 -0
  184. package/dist/types/common/events/trigger-proxy.d.ts +2 -0
  185. package/dist/types/common/events/util.d.ts +2 -0
  186. package/dist/types/common/logs/logger-config.d.ts +2 -0
  187. package/dist/types/common/logs/logger-proxy.d.ts +2 -0
  188. package/dist/types/common/logs/request.d.ts +34 -0
  189. package/dist/types/common/queue.d.ts +32 -0
  190. package/dist/types/config.d.ts +72 -0
  191. package/dist/types/constants.d.ts +1007 -0
  192. package/dist/types/controls-options-manager/constants.d.ts +4 -0
  193. package/dist/types/controls-options-manager/enums.d.ts +15 -0
  194. package/dist/types/controls-options-manager/index.d.ts +136 -0
  195. package/dist/types/controls-options-manager/types.d.ts +43 -0
  196. package/dist/types/controls-options-manager/util.d.ts +1 -0
  197. package/dist/types/index.d.ts +7 -0
  198. package/dist/types/interpretation/collection.d.ts +5 -0
  199. package/dist/types/interpretation/index.d.ts +5 -0
  200. package/dist/types/interpretation/siLanguage.d.ts +5 -0
  201. package/dist/types/locus-info/controlsUtils.d.ts +2 -0
  202. package/dist/types/locus-info/embeddedAppsUtils.d.ts +2 -0
  203. package/dist/types/locus-info/fullState.d.ts +2 -0
  204. package/dist/types/locus-info/hostUtils.d.ts +2 -0
  205. package/dist/types/locus-info/index.d.ts +315 -0
  206. package/dist/types/locus-info/infoUtils.d.ts +2 -0
  207. package/dist/types/locus-info/mediaSharesUtils.d.ts +2 -0
  208. package/dist/types/locus-info/parser.d.ts +212 -0
  209. package/dist/types/locus-info/selfUtils.d.ts +2 -0
  210. package/dist/types/media/index.d.ts +34 -0
  211. package/dist/types/media/properties.d.ts +93 -0
  212. package/dist/types/media/util.d.ts +2 -0
  213. package/dist/types/mediaQualityMetrics/config.d.ts +365 -0
  214. package/dist/types/meeting/in-meeting-actions.d.ts +149 -0
  215. package/dist/types/meeting/index.d.ts +1462 -0
  216. package/dist/types/meeting/locusMediaRequest.d.ts +70 -0
  217. package/dist/types/meeting/muteState.d.ts +184 -0
  218. package/dist/types/meeting/request.d.ts +270 -0
  219. package/dist/types/meeting/request.type.d.ts +11 -0
  220. package/dist/types/meeting/state.d.ts +9 -0
  221. package/dist/types/meeting/util.d.ts +77 -0
  222. package/dist/types/meeting-info/collection.d.ts +20 -0
  223. package/dist/types/meeting-info/index.d.ts +62 -0
  224. package/dist/types/meeting-info/meeting-info-v2.d.ts +122 -0
  225. package/dist/types/meeting-info/request.d.ts +22 -0
  226. package/dist/types/meeting-info/util.d.ts +2 -0
  227. package/dist/types/meeting-info/utilv2.d.ts +2 -0
  228. package/dist/types/meetings/collection.d.ts +31 -0
  229. package/dist/types/meetings/index.d.ts +365 -0
  230. package/dist/types/meetings/meetings.types.d.ts +4 -0
  231. package/dist/types/meetings/request.d.ts +27 -0
  232. package/dist/types/meetings/util.d.ts +18 -0
  233. package/dist/types/member/index.d.ts +158 -0
  234. package/dist/types/member/types.d.ts +21 -0
  235. package/dist/types/member/util.d.ts +2 -0
  236. package/dist/types/members/collection.d.ts +29 -0
  237. package/dist/types/members/index.d.ts +353 -0
  238. package/dist/types/members/request.d.ts +114 -0
  239. package/dist/types/members/types.d.ts +24 -0
  240. package/dist/types/members/util.d.ts +210 -0
  241. package/dist/types/metrics/constants.d.ts +55 -0
  242. package/dist/types/metrics/index.d.ts +45 -0
  243. package/dist/types/multistream/mediaRequestManager.d.ts +118 -0
  244. package/dist/types/multistream/receiveSlot.d.ts +68 -0
  245. package/dist/types/multistream/receiveSlotManager.d.ts +56 -0
  246. package/dist/types/multistream/remoteMedia.d.ts +72 -0
  247. package/dist/types/multistream/remoteMediaGroup.d.ts +47 -0
  248. package/dist/types/multistream/remoteMediaManager.d.ts +277 -0
  249. package/dist/types/networkQualityMonitor/index.d.ts +70 -0
  250. package/dist/types/personal-meeting-room/index.d.ts +47 -0
  251. package/dist/types/personal-meeting-room/request.d.ts +14 -0
  252. package/dist/types/personal-meeting-room/util.d.ts +2 -0
  253. package/dist/types/reachability/index.d.ts +152 -0
  254. package/dist/types/reachability/request.d.ts +37 -0
  255. package/dist/types/reactions/constants.d.ts +3 -0
  256. package/dist/types/reactions/reactions.d.ts +4 -0
  257. package/dist/types/reactions/reactions.type.d.ts +52 -0
  258. package/dist/types/reconnection-manager/index.d.ts +126 -0
  259. package/dist/types/recording-controller/enums.d.ts +7 -0
  260. package/dist/types/recording-controller/index.d.ts +208 -0
  261. package/dist/types/recording-controller/util.d.ts +14 -0
  262. package/dist/types/roap/index.d.ts +77 -0
  263. package/dist/types/roap/request.d.ts +36 -0
  264. package/dist/types/roap/turnDiscovery.d.ts +91 -0
  265. package/dist/types/statsAnalyzer/global.d.ts +36 -0
  266. package/dist/types/statsAnalyzer/index.d.ts +200 -0
  267. package/dist/types/statsAnalyzer/mqaUtil.d.ts +24 -0
  268. package/dist/types/transcription/index.d.ts +64 -0
  269. package/package.json +29 -21
  270. package/src/annotation/annotation.types.ts +52 -0
  271. package/src/annotation/constants.ts +36 -0
  272. package/src/annotation/index.ts +343 -0
  273. package/src/breakouts/README.md +220 -0
  274. package/src/breakouts/breakout.ts +188 -0
  275. package/src/breakouts/collection.ts +19 -0
  276. package/src/breakouts/edit-lock-error.ts +25 -0
  277. package/src/breakouts/events.ts +56 -0
  278. package/src/breakouts/index.ts +925 -0
  279. package/src/breakouts/request.ts +55 -0
  280. package/src/breakouts/utils.ts +57 -0
  281. package/src/common/errors/webex-errors.ts +6 -2
  282. package/src/common/logs/logger-proxy.ts +1 -1
  283. package/src/config.ts +5 -7
  284. package/src/constants.ts +183 -22
  285. package/src/controls-options-manager/constants.ts +5 -0
  286. package/src/controls-options-manager/enums.ts +18 -0
  287. package/src/controls-options-manager/index.ts +278 -0
  288. package/src/controls-options-manager/types.ts +59 -0
  289. package/src/controls-options-manager/util.ts +286 -0
  290. package/src/index.ts +39 -0
  291. package/src/interpretation/README.md +51 -0
  292. package/src/interpretation/collection.ts +19 -0
  293. package/src/interpretation/index.ts +182 -0
  294. package/src/interpretation/siLanguage.ts +18 -0
  295. package/src/locus-info/controlsUtils.ts +110 -0
  296. package/src/locus-info/index.ts +374 -38
  297. package/src/locus-info/mediaSharesUtils.ts +48 -0
  298. package/src/locus-info/parser.ts +2 -1
  299. package/src/locus-info/selfUtils.ts +86 -2
  300. package/src/media/index.ts +78 -144
  301. package/src/media/properties.ts +55 -99
  302. package/src/mediaQualityMetrics/config.ts +379 -377
  303. package/src/meeting/in-meeting-actions.ts +151 -3
  304. package/src/meeting/index.ts +2181 -2052
  305. package/src/meeting/locusMediaRequest.ts +309 -0
  306. package/src/meeting/muteState.ts +228 -132
  307. package/src/meeting/request.ts +100 -91
  308. package/src/meeting/request.type.ts +2 -0
  309. package/src/meeting/util.ts +450 -439
  310. package/src/meeting-info/index.ts +54 -8
  311. package/src/meeting-info/meeting-info-v2.ts +150 -14
  312. package/src/meeting-info/utilv2.ts +13 -3
  313. package/src/meetings/collection.ts +20 -0
  314. package/src/meetings/index.ts +396 -89
  315. package/src/meetings/meetings.types.ts +12 -0
  316. package/src/meetings/request.ts +3 -1
  317. package/src/meetings/util.ts +103 -4
  318. package/src/member/index.ts +42 -0
  319. package/src/member/types.ts +24 -0
  320. package/src/member/util.ts +95 -1
  321. package/src/members/collection.ts +8 -0
  322. package/src/members/index.ts +108 -6
  323. package/src/members/request.ts +98 -17
  324. package/src/members/types.ts +28 -0
  325. package/src/members/util.ts +319 -240
  326. package/src/metrics/constants.ts +2 -4
  327. package/src/metrics/index.ts +1 -490
  328. package/src/multistream/mediaRequestManager.ts +337 -63
  329. package/src/multistream/receiveSlot.ts +68 -26
  330. package/src/multistream/receiveSlotManager.ts +61 -38
  331. package/src/multistream/remoteMedia.ts +29 -3
  332. package/src/multistream/remoteMediaGroup.ts +61 -2
  333. package/src/multistream/remoteMediaManager.ts +260 -66
  334. package/src/networkQualityMonitor/index.ts +6 -6
  335. package/src/reachability/index.ts +75 -25
  336. package/src/reachability/request.ts +10 -5
  337. package/src/reactions/constants.ts +4 -0
  338. package/src/reactions/reactions.ts +4 -4
  339. package/src/reactions/reactions.type.ts +28 -3
  340. package/src/reconnection-manager/index.ts +83 -49
  341. package/src/recording-controller/enums.ts +8 -0
  342. package/src/recording-controller/index.ts +333 -0
  343. package/src/recording-controller/util.ts +75 -0
  344. package/src/roap/index.ts +21 -30
  345. package/src/roap/request.ts +72 -61
  346. package/src/roap/turnDiscovery.ts +51 -27
  347. package/src/statsAnalyzer/global.ts +1 -94
  348. package/src/statsAnalyzer/index.ts +380 -390
  349. package/src/statsAnalyzer/mqaUtil.ts +106 -99
  350. package/test/integration/spec/converged-space-meetings.js +233 -0
  351. package/test/integration/spec/journey.js +336 -259
  352. package/test/integration/spec/space-meeting.js +77 -4
  353. package/test/unit/spec/annotation/index.ts +436 -0
  354. package/test/unit/spec/breakouts/breakout.ts +237 -0
  355. package/test/unit/spec/breakouts/collection.ts +15 -0
  356. package/test/unit/spec/breakouts/edit-lock-error.ts +30 -0
  357. package/test/unit/spec/breakouts/events.ts +89 -0
  358. package/test/unit/spec/breakouts/index.ts +1790 -0
  359. package/test/unit/spec/breakouts/request.ts +104 -0
  360. package/test/unit/spec/breakouts/utils.js +72 -0
  361. package/test/unit/spec/controls-options-manager/index.js +287 -0
  362. package/test/unit/spec/controls-options-manager/util.js +518 -0
  363. package/test/unit/spec/fixture/locus.js +1 -0
  364. package/test/unit/spec/interpretation/collection.ts +15 -0
  365. package/test/unit/spec/interpretation/index.ts +329 -0
  366. package/test/unit/spec/interpretation/siLanguage.ts +26 -0
  367. package/test/unit/spec/locus-info/controlsUtils.js +323 -30
  368. package/test/unit/spec/locus-info/index.js +792 -4
  369. package/test/unit/spec/locus-info/mediaSharesUtils.ts +22 -0
  370. package/test/unit/spec/locus-info/selfConstant.js +48 -0
  371. package/test/unit/spec/locus-info/selfUtils.js +275 -0
  372. package/test/unit/spec/media/index.ts +130 -24
  373. package/test/unit/spec/media/properties.ts +9 -9
  374. package/test/unit/spec/meeting/in-meeting-actions.ts +75 -3
  375. package/test/unit/spec/meeting/index.js +2834 -1442
  376. package/test/unit/spec/meeting/locusMediaRequest.ts +436 -0
  377. package/test/unit/spec/meeting/muteState.js +370 -208
  378. package/test/unit/spec/meeting/request.js +354 -42
  379. package/test/unit/spec/meeting/utils.js +384 -170
  380. package/test/unit/spec/meeting-info/index.js +181 -0
  381. package/test/unit/spec/meeting-info/meetinginfov2.js +383 -5
  382. package/test/unit/spec/meeting-info/utilv2.js +21 -0
  383. package/test/unit/spec/meetings/collection.js +14 -0
  384. package/test/unit/spec/meetings/index.js +847 -121
  385. package/test/unit/spec/meetings/utils.js +206 -2
  386. package/test/unit/spec/member/index.js +31 -0
  387. package/test/unit/spec/member/util.js +408 -32
  388. package/test/unit/spec/members/index.js +320 -1
  389. package/test/unit/spec/members/request.js +206 -27
  390. package/test/unit/spec/members/utils.js +184 -0
  391. package/test/unit/spec/metrics/index.js +1 -50
  392. package/test/unit/spec/multistream/mediaRequestManager.ts +1012 -109
  393. package/test/unit/spec/multistream/receiveSlot.ts +77 -18
  394. package/test/unit/spec/multistream/receiveSlotManager.ts +69 -39
  395. package/test/unit/spec/multistream/remoteMedia.ts +32 -2
  396. package/test/unit/spec/multistream/remoteMediaGroup.ts +271 -5
  397. package/test/unit/spec/multistream/remoteMediaManager.ts +672 -65
  398. package/test/unit/spec/networkQualityMonitor/index.js +4 -4
  399. package/test/unit/spec/reachability/index.ts +176 -25
  400. package/test/unit/spec/reachability/request.js +66 -0
  401. package/test/unit/spec/reconnection-manager/index.js +95 -13
  402. package/test/unit/spec/recording-controller/index.js +307 -0
  403. package/test/unit/spec/recording-controller/util.js +229 -0
  404. package/test/unit/spec/roap/index.ts +28 -52
  405. package/test/unit/spec/roap/request.ts +225 -0
  406. package/test/unit/spec/roap/turnDiscovery.ts +73 -34
  407. package/test/unit/spec/stats-analyzer/index.js +94 -43
  408. package/test/utils/constants.js +9 -0
  409. package/test/utils/integrationTestUtils.js +46 -0
  410. package/test/utils/testUtils.js +0 -45
  411. package/test/utils/webex-config.js +4 -0
  412. package/test/utils/webex-test-users.js +7 -3
  413. package/tsconfig.json +6 -0
  414. package/dist/media/internal-media-core-wrapper.js +0 -18
  415. package/dist/media/internal-media-core-wrapper.js.map +0 -1
  416. package/dist/meeting/effectsState.js +0 -262
  417. package/dist/meeting/effectsState.js.map +0 -1
  418. package/dist/metrics/config.js +0 -299
  419. package/dist/metrics/config.js.map +0 -1
  420. package/dist/multistream/multistreamMedia.js +0 -106
  421. package/dist/multistream/multistreamMedia.js.map +0 -1
  422. package/src/index.js +0 -15
  423. package/src/media/internal-media-core-wrapper.ts +0 -9
  424. package/src/meeting/effectsState.ts +0 -211
  425. package/src/metrics/config.ts +0 -495
  426. package/src/multistream/multistreamMedia.ts +0 -93
  427. package/test/unit/spec/meeting/effectsState.js +0 -281
@@ -9,6 +9,7 @@ _Object$defineProperty(exports, "__esModule", {
9
9
  exports.default = void 0;
10
10
  var _regenerator = _interopRequireDefault(require("@babel/runtime-corejs2/regenerator"));
11
11
  var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/promise"));
12
+ var _values = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/values"));
12
13
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/asyncToGenerator"));
13
14
  var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/assertThisInitialized"));
14
15
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
@@ -24,8 +25,6 @@ var _constants = require("../constants");
24
25
  var _constants2 = _interopRequireDefault(require("../metrics/constants"));
25
26
  var _reconnection = _interopRequireDefault(require("../common/errors/reconnection"));
26
27
  var _reconnectionInProgress = _interopRequireDefault(require("../common/errors/reconnection-in-progress"));
27
- var _config = require("../metrics/config");
28
- var _media = _interopRequireDefault(require("../media"));
29
28
  var _metrics = _interopRequireDefault(require("../metrics"));
30
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); }; }
31
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; } }
@@ -246,6 +245,41 @@ var ReconnectionManager = /*#__PURE__*/function () {
246
245
  this.meeting = null;
247
246
  }
248
247
 
248
+ /**
249
+ * Stop the local share track.
250
+ *
251
+ * @param {string} reason a {@link SHARE_STOPPED_REASON}
252
+ * @returns {undefined}
253
+ * @private
254
+ * @memberof ReconnectionManager
255
+ */
256
+ }, {
257
+ key: "stopLocalShareTrack",
258
+ value: function () {
259
+ var _stopLocalShareTrack = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(reason) {
260
+ return _regenerator.default.wrap(function _callee$(_context) {
261
+ while (1) switch (_context.prev = _context.next) {
262
+ case 0:
263
+ _context.next = 2;
264
+ return this.meeting.unpublishTracks([this.meeting.mediaProperties.shareVideoTrack, this.meeting.mediaProperties.shareAudioTrack]);
265
+ case 2:
266
+ _triggerProxy.default.trigger(this.meeting, {
267
+ file: 'reconnection-manager/index',
268
+ function: 'stopLocalShareTrack'
269
+ }, _constants.EVENT_TRIGGERS.MEETING_STOPPED_SHARING_LOCAL, {
270
+ reason: reason
271
+ });
272
+ case 3:
273
+ case "end":
274
+ return _context.stop();
275
+ }
276
+ }, _callee, this);
277
+ }));
278
+ function stopLocalShareTrack(_x) {
279
+ return _stopLocalShareTrack.apply(this, arguments);
280
+ }
281
+ return stopLocalShareTrack;
282
+ }()
249
283
  /**
250
284
  * @public
251
285
  * @memberof ReconnectionManager
@@ -289,48 +323,56 @@ var ReconnectionManager = /*#__PURE__*/function () {
289
323
  }, {
290
324
  key: "reconnect",
291
325
  value: function () {
292
- var _reconnect = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
326
+ var _reconnect = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
293
327
  var _this3 = this;
294
328
  var _ref2,
295
329
  _ref2$networkDisconne,
296
330
  networkDisconnect,
297
331
  _ref2$networkRetry,
298
332
  networkRetry,
299
- _args = arguments;
300
- return _regenerator.default.wrap(function _callee$(_context) {
301
- while (1) switch (_context.prev = _context.next) {
333
+ _args2 = arguments;
334
+ return _regenerator.default.wrap(function _callee2$(_context2) {
335
+ while (1) switch (_context2.prev = _context2.next) {
302
336
  case 0:
303
- _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;
337
+ _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;
304
338
  _loggerProxy.default.logger.info("ReconnectionManager:index#reconnect --> Reconnection start for meeting ".concat(this.meeting.id, "."));
305
339
  // First, validate that we can reconnect, if not, it will throw an error
306
- _context.prev = 2;
340
+ _context2.prev = 2;
307
341
  this.validate();
308
- _context.next = 10;
342
+ _context2.next = 10;
309
343
  break;
310
344
  case 6:
311
- _context.prev = 6;
312
- _context.t0 = _context["catch"](2);
313
- _loggerProxy.default.logger.info('ReconnectionManager:index#reconnect --> Reconnection unable to begin.', _context.t0);
314
- throw _context.t0;
345
+ _context2.prev = 6;
346
+ _context2.t0 = _context2["catch"](2);
347
+ _loggerProxy.default.logger.info('ReconnectionManager:index#reconnect --> Reconnection unable to begin.', _context2.t0);
348
+ throw _context2.t0;
315
349
  case 10:
316
350
  if (!networkRetry) {
317
351
  // Only log START metrics on the initial reconnect
318
352
  _loggerProxy.default.logger.info('ReconnectionManager:index#reconnect --> Sending reconnect start metric.');
319
- _metrics.default.postEvent({
320
- event: _config.eventType.MEDIA_RECONNECTING,
321
- meeting: this.meeting
353
+
354
+ // @ts-ignore
355
+ this.webex.internal.newMetrics.submitClientEvent({
356
+ name: 'client.media.reconnecting',
357
+ options: {
358
+ meetingId: this.meeting.id
359
+ }
322
360
  });
323
361
  }
324
- return _context.abrupt("return", this.executeReconnection({
362
+ return _context2.abrupt("return", this.executeReconnection({
325
363
  networkDisconnect: networkDisconnect
326
364
  }).then(function () {
327
365
  _loggerProxy.default.logger.info('ReconnectionManager:index#reconnect --> Reconnection successful.');
328
366
  _loggerProxy.default.logger.info('ReconnectionManager:index#reconnect --> Sending reconnect success metric.');
329
- _metrics.default.postEvent({
330
- event: _config.eventType.MEDIA_RECOVERED,
331
- meeting: _this3.meeting,
332
- data: {
333
- recoveredBy: _config.reconnection.RECOVERED_BY_NEW
367
+
368
+ // @ts-ignore
369
+ _this3.webex.internal.newMetrics.submitClientEvent({
370
+ name: 'client.media.recovered',
371
+ payload: {
372
+ recoveredBy: 'new'
373
+ },
374
+ options: {
375
+ meetingId: _this3.meeting.id
334
376
  }
335
377
  });
336
378
  }).catch(function (reconnectError) {
@@ -349,20 +391,23 @@ var ReconnectionManager = /*#__PURE__*/function () {
349
391
  // Reconnect has failed
350
392
  _loggerProxy.default.logger.error('ReconnectionManager:index#reconnect --> Reconnection failed.', reconnectError.message);
351
393
  _loggerProxy.default.logger.info('ReconnectionManager:index#reconnect --> Sending reconnect abort metric.');
352
- var reconnectMetric = {
353
- event: _config.eventType.CALL_ABORTED,
354
- meeting: _this3.meeting,
355
- data: {
394
+
395
+ // @ts-ignore
396
+ _this3.webex.internal.newMetrics.submitClientEvent({
397
+ name: 'client.call.aborted',
398
+ payload: {
356
399
  errors: [{
357
- category: _config.errorObjects.category.expected,
400
+ category: 'expected',
358
401
  errorCode: 2008,
359
402
  fatal: true,
360
- name: _config.errorObjects.name.mediaEngine,
403
+ name: 'media-engine',
361
404
  shownToUser: false
362
405
  }]
406
+ },
407
+ options: {
408
+ meetingId: _this3.meeting.id
363
409
  }
364
- };
365
- _metrics.default.postEvent(reconnectMetric);
410
+ });
366
411
  if (reconnectError instanceof NeedsRejoinError) {
367
412
  // send call aborded event with catogery as expected as we are trying to rejoin
368
413
 
@@ -374,9 +419,9 @@ var ReconnectionManager = /*#__PURE__*/function () {
374
419
  }));
375
420
  case 12:
376
421
  case "end":
377
- return _context.stop();
422
+ return _context2.stop();
378
423
  }
379
- }, _callee, this, [[2, 6]]);
424
+ }, _callee2, this, [[2, 6]]);
380
425
  }));
381
426
  function reconnect() {
382
427
  return _reconnect.apply(this, arguments);
@@ -394,91 +439,98 @@ var ReconnectionManager = /*#__PURE__*/function () {
394
439
  }, {
395
440
  key: "executeReconnection",
396
441
  value: function () {
397
- var _executeReconnection = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(_ref3) {
442
+ var _executeReconnection = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(_ref3) {
398
443
  var _ref3$networkDisconne, networkDisconnect, wasSharing, media;
399
- return _regenerator.default.wrap(function _callee2$(_context2) {
400
- while (1) switch (_context2.prev = _context2.next) {
444
+ return _regenerator.default.wrap(function _callee3$(_context3) {
445
+ while (1) switch (_context3.prev = _context3.next) {
401
446
  case 0:
402
447
  _ref3$networkDisconne = _ref3.networkDisconnect, networkDisconnect = _ref3$networkDisconne === void 0 ? false : _ref3$networkDisconne;
403
448
  this.status = _constants.RECONNECTION.STATE.IN_PROGRESS;
404
449
  _loggerProxy.default.logger.info('ReconnectionManager:index#executeReconnection --> Attempting to reconnect to meeting.');
450
+ wasSharing = this.meeting.shareStatus === _constants.SHARE_STATUS.LOCAL_SHARE_ACTIVE;
451
+ if (!wasSharing) {
452
+ _context3.next = 7;
453
+ break;
454
+ }
455
+ _context3.next = 7;
456
+ return this.stopLocalShareTrack(_constants.SHARE_STOPPED_REASON.MEDIA_RECONNECTION);
457
+ case 7:
405
458
  if (!networkDisconnect) {
406
- _context2.next = 15;
459
+ _context3.next = 19;
407
460
  break;
408
461
  }
409
- _context2.prev = 4;
410
- _context2.next = 7;
462
+ _context3.prev = 8;
463
+ _context3.next = 11;
411
464
  return this.reconnectMercuryWebSocket();
412
- case 7:
465
+ case 11:
413
466
  _loggerProxy.default.logger.error('ReconnectionManager:index#executeReconnection --> Websocket reconnected.', this.webex.internal.device.url);
414
- _context2.next = 15;
467
+ _context3.next = 19;
415
468
  break;
416
- case 10:
417
- _context2.prev = 10;
418
- _context2.t0 = _context2["catch"](4);
469
+ case 14:
470
+ _context3.prev = 14;
471
+ _context3.t0 = _context3["catch"](8);
419
472
  _loggerProxy.default.logger.error('ReconnectionManager:index#executeReconnection --> Unable to reconnect to websocket, giving up.');
420
473
  this.status = _constants.RECONNECTION.STATE.FAILURE;
421
- throw _context2.t0;
422
- case 15:
423
- wasSharing = this.meeting.shareStatus === _constants.SHARE_STATUS.LOCAL_SHARE_ACTIVE;
424
- _context2.prev = 16;
474
+ throw _context3.t0;
475
+ case 19:
476
+ _context3.prev = 19;
425
477
  _loggerProxy.default.logger.info('ReconnectionManager:index#executeReconnection --> Updating meeting data from server.');
426
- _context2.next = 20;
478
+ _context3.next = 23;
427
479
  return this.webex.meetings.syncMeetings();
428
- case 20:
429
- _context2.next = 26;
480
+ case 23:
481
+ _context3.next = 29;
430
482
  break;
431
- case 22:
432
- _context2.prev = 22;
433
- _context2.t1 = _context2["catch"](16);
434
- _loggerProxy.default.logger.info('ReconnectionManager:index#executeReconnection --> Unable to sync meetings, reconnecting.', _context2.t1);
435
- throw new NeedsRetryError(_context2.t1);
436
- case 26:
483
+ case 25:
484
+ _context3.prev = 25;
485
+ _context3.t1 = _context3["catch"](19);
486
+ _loggerProxy.default.logger.info('ReconnectionManager:index#executeReconnection --> Unable to sync meetings, reconnecting.', _context3.t1);
487
+ throw new NeedsRetryError(_context3.t1);
488
+ case 29:
437
489
  if (!(!this.meeting || !this.webex.meetings.getMeetingByType(_constants._ID_, this.meeting.id))) {
438
- _context2.next = 29;
490
+ _context3.next = 32;
439
491
  break;
440
492
  }
441
- _loggerProxy.default.logger.info('ReconnectionManager:index#executeReconnection --> Meeting got deleted due to inactivity or ended remotely ');
442
- throw new Error('Unable to rejoin a meeting already ended or inactive .');
443
- case 29:
493
+ _loggerProxy.default.logger.info('ReconnectionManager:index#executeReconnection --> Meeting got deleted due to inactivity or ended remotely.');
494
+ throw new Error('Unable to rejoin a meeting already ended or inactive.');
495
+ case 32:
444
496
  _loggerProxy.default.logger.info("ReconnectionManager:index#executeReconnection --> Current state of meeting is ".concat(this.meeting.state));
445
497
 
446
498
  // If the meeting state was left, no longer reconnect media
447
499
  if (!(this.meeting.state === _constants._LEFT_)) {
448
- _context2.next = 34;
500
+ _context3.next = 37;
449
501
  break;
450
502
  }
451
503
  if (!(this.meeting.type === _constants._CALL_)) {
452
- _context2.next = 33;
504
+ _context3.next = 36;
453
505
  break;
454
506
  }
455
507
  throw new Error('Unable to rejoin a call in LEFT state.');
456
- case 33:
508
+ case 36:
457
509
  throw new NeedsRejoinError({
458
510
  wasSharing: wasSharing
459
511
  });
460
- case 34:
461
- _context2.prev = 34;
462
- _context2.next = 37;
463
- return this.reconnectMedia();
464
512
  case 37:
465
- media = _context2.sent;
513
+ _context3.prev = 37;
514
+ _context3.next = 40;
515
+ return this.reconnectMedia();
516
+ case 40:
517
+ media = _context3.sent;
466
518
  _loggerProxy.default.logger.log('ReconnectionManager:index#executeReconnection --> Media reestablished');
467
519
  this.status = _constants.RECONNECTION.STATE.COMPLETE;
468
- return _context2.abrupt("return", media);
469
- case 43:
470
- _context2.prev = 43;
471
- _context2.t2 = _context2["catch"](34);
520
+ return _context3.abrupt("return", media);
521
+ case 46:
522
+ _context3.prev = 46;
523
+ _context3.t2 = _context3["catch"](37);
472
524
  _loggerProxy.default.logger.error('ReconnectionManager:index#executeReconnection --> Media reestablishment failed');
473
525
  this.status = _constants.RECONNECTION.STATE.FAILURE;
474
- throw _context2.t2;
475
- case 48:
526
+ throw _context3.t2;
527
+ case 51:
476
528
  case "end":
477
- return _context2.stop();
529
+ return _context3.stop();
478
530
  }
479
- }, _callee2, this, [[4, 10], [16, 22], [34, 43]]);
531
+ }, _callee3, this, [[8, 14], [19, 25], [37, 46]]);
480
532
  }));
481
- function executeReconnection(_x) {
533
+ function executeReconnection(_x2) {
482
534
  return _executeReconnection.apply(this, arguments);
483
535
  }
484
536
  return executeReconnection;
@@ -493,76 +545,68 @@ var ReconnectionManager = /*#__PURE__*/function () {
493
545
  }, {
494
546
  key: "rejoinMeeting",
495
547
  value: function () {
496
- var _rejoinMeeting = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() {
548
+ var _rejoinMeeting = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4() {
497
549
  var wasSharing,
498
- _args3 = arguments;
499
- return _regenerator.default.wrap(function _callee3$(_context3) {
500
- while (1) switch (_context3.prev = _context3.next) {
550
+ _args4 = arguments;
551
+ return _regenerator.default.wrap(function _callee4$(_context4) {
552
+ while (1) switch (_context4.prev = _context4.next) {
501
553
  case 0:
502
- wasSharing = _args3.length > 0 && _args3[0] !== undefined ? _args3[0] : false;
503
- _context3.prev = 1;
554
+ wasSharing = _args4.length > 0 && _args4[0] !== undefined ? _args4[0] : false;
555
+ _context4.prev = 1;
504
556
  _loggerProxy.default.logger.info('ReconnectionManager:index#rejoinMeeting --> attemping meeting rejoin');
505
- _context3.next = 5;
557
+ _context4.next = 5;
506
558
  return this.meeting.join({
507
559
  rejoin: true
508
560
  });
509
561
  case 5:
510
562
  _loggerProxy.default.logger.info('ReconnectionManager:index#rejoinMeeting --> meeting rejoined');
511
- if (wasSharing) {
512
- // Stop the share streams if user tried to rejoin
513
- _media.default.stopTracks(this.meeting.mediaProperties.shareTrack);
514
- this.meeting.isSharing = false;
515
- if (this.shareStatus === _constants.SHARE_STATUS.LOCAL_SHARE_ACTIVE) {
516
- this.meeting.shareStatus = _constants.SHARE_STATUS.NO_SHARE;
517
- }
518
- this.meeting.mediaProperties.mediaDirection.sendShare = false;
519
- _triggerProxy.default.trigger(this.meeting, {
520
- file: 'reconnection-manager/index',
521
- function: 'rejoinMeeting'
522
- }, _constants.EVENT_TRIGGERS.MEETING_STOPPED_SHARING_LOCAL, {
523
- reason: _constants.SHARE_STOPPED_REASON.MEETING_REJOIN
524
- });
563
+ if (!wasSharing) {
564
+ _context4.next = 9;
565
+ break;
525
566
  }
526
- _context3.next = 21;
527
- break;
567
+ _context4.next = 9;
568
+ return this.stopLocalShareTrack(_constants.SHARE_STOPPED_REASON.MEETING_REJOIN);
528
569
  case 9:
529
- _context3.prev = 9;
530
- _context3.t0 = _context3["catch"](1);
570
+ _context4.next = 23;
571
+ break;
572
+ case 11:
573
+ _context4.prev = 11;
574
+ _context4.t0 = _context4["catch"](1);
531
575
  this.rejoinAttempts += 1;
532
576
  if (!(this.rejoinAttempts <= this.maxRejoinAttempts)) {
533
- _context3.next = 17;
577
+ _context4.next = 19;
534
578
  break;
535
579
  }
536
- _loggerProxy.default.logger.info("ReconnectionManager:index#rejoinMeeting --> Unable to rejoin meeting, attempt #".concat(this.rejoinAttempts, ", retrying."), _context3.t0);
580
+ _loggerProxy.default.logger.info("ReconnectionManager:index#rejoinMeeting --> Unable to rejoin meeting, attempt #".concat(this.rejoinAttempts, ", retrying."), _context4.t0);
537
581
  this.rejoinMeeting();
538
- _context3.next = 21;
582
+ _context4.next = 23;
539
583
  break;
540
- case 17:
541
- _loggerProxy.default.logger.error('ReconnectionManager:index#rejoinMeeting --> Unable to rejoin meeting after max attempts.', _context3.t0);
584
+ case 19:
585
+ _loggerProxy.default.logger.error('ReconnectionManager:index#rejoinMeeting --> Unable to rejoin meeting after max attempts.', _context4.t0);
542
586
  _metrics.default.sendBehavioralMetric(_constants2.default.MEETING_MAX_REJOIN_FAILURE, {
543
587
  locus_id: this.meeting.locusUrl.split('/').pop(),
544
- reason: _context3.t0.message,
545
- stack: _context3.t0.stack
588
+ reason: _context4.t0.message,
589
+ stack: _context4.t0.stack
546
590
  });
547
591
  this.status = _constants.RECONNECTION.STATE.FAILURE;
548
- throw _context3.t0;
549
- case 21:
550
- _context3.prev = 21;
551
- _context3.next = 24;
592
+ throw _context4.t0;
593
+ case 23:
594
+ _context4.prev = 23;
595
+ _context4.next = 26;
552
596
  return this.reconnectMedia();
553
- case 24:
554
- _context3.next = 30;
555
- break;
556
597
  case 26:
557
- _context3.prev = 26;
558
- _context3.t1 = _context3["catch"](21);
559
- _loggerProxy.default.logger.error('ReconnectionManager:index#rejoinMeeting --> Unable to reestablish media after rejoining.', _context3.t1);
560
- throw _context3.t1;
561
- case 30:
598
+ _context4.next = 32;
599
+ break;
600
+ case 28:
601
+ _context4.prev = 28;
602
+ _context4.t1 = _context4["catch"](23);
603
+ _loggerProxy.default.logger.error('ReconnectionManager:index#rejoinMeeting --> Unable to reestablish media after rejoining.', _context4.t1);
604
+ throw _context4.t1;
605
+ case 32:
562
606
  case "end":
563
- return _context3.stop();
607
+ return _context4.stop();
564
608
  }
565
- }, _callee3, this, [[1, 9], [21, 26]]);
609
+ }, _callee4, this, [[1, 11], [23, 28]]);
566
610
  }));
567
611
  function rejoinMeeting() {
568
612
  return _rejoinMeeting.apply(this, arguments);
@@ -577,31 +621,41 @@ var ReconnectionManager = /*#__PURE__*/function () {
577
621
  }, {
578
622
  key: "reconnectMedia",
579
623
  value: function () {
580
- var _reconnectMedia = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4() {
581
- var turnServerResult, mc;
582
- return _regenerator.default.wrap(function _callee4$(_context4) {
583
- while (1) switch (_context4.prev = _context4.next) {
624
+ var _reconnectMedia = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5() {
625
+ var turnServerResult, iceServers;
626
+ return _regenerator.default.wrap(function _callee5$(_context5) {
627
+ while (1) switch (_context5.prev = _context5.next) {
584
628
  case 0:
585
629
  _loggerProxy.default.logger.log('ReconnectionManager:index#reconnectMedia --> Begin reestablishment of media');
586
630
 
587
- // we are not simply calling this.meeting.mediaProperties.webrtcMediaConnection.reconnect(),
588
- // but instead manually closing and creating new media connection, because we need to do the TURN discovery again
589
- _context4.next = 3;
590
- return this.meeting.closePeerConnections();
591
- case 3:
592
- this.meeting.mediaProperties.unsetPeerConnection();
593
- _context4.next = 6;
631
+ // do the TURN server discovery again since the TURN server might change
632
+ _context5.next = 3;
594
633
  return this.meeting.roap.doTurnDiscovery(this.meeting, true);
595
- case 6:
596
- turnServerResult = _context4.sent;
597
- mc = this.meeting.createMediaConnection(turnServerResult.turnServerInfo);
598
- this.meeting.statsAnalyzer.updateMediaConnection(mc);
599
- return _context4.abrupt("return", mc.initiateOffer());
600
- case 10:
634
+ case 3:
635
+ turnServerResult = _context5.sent;
636
+ iceServers = [];
637
+ if (turnServerResult.turnServerInfo) {
638
+ iceServers.push({
639
+ urls: turnServerResult.turnServerInfo.url,
640
+ username: turnServerResult.turnServerInfo.username || '',
641
+ credential: turnServerResult.turnServerInfo.password || ''
642
+ });
643
+ }
644
+ _context5.next = 8;
645
+ return this.meeting.mediaProperties.webrtcMediaConnection.reconnect(iceServers);
646
+ case 8:
647
+ // resend media requests
648
+ if (this.meeting.isMultistream) {
649
+ (0, _values.default)(this.meeting.mediaRequestManagers).forEach(function (mediaRequestManager) {
650
+ mediaRequestManager.clearPreviousRequests();
651
+ mediaRequestManager.commit();
652
+ });
653
+ }
654
+ case 9:
601
655
  case "end":
602
- return _context4.stop();
656
+ return _context5.stop();
603
657
  }
604
- }, _callee4, this);
658
+ }, _callee5, this);
605
659
  }));
606
660
  function reconnectMedia() {
607
661
  return _reconnectMedia.apply(this, arguments);
@@ -617,49 +671,49 @@ var ReconnectionManager = /*#__PURE__*/function () {
617
671
  }, {
618
672
  key: "reconnectMercuryWebSocket",
619
673
  value: function () {
620
- var _reconnectMercuryWebSocket = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5() {
621
- return _regenerator.default.wrap(function _callee5$(_context5) {
622
- while (1) switch (_context5.prev = _context5.next) {
674
+ var _reconnectMercuryWebSocket = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6() {
675
+ return _regenerator.default.wrap(function _callee6$(_context6) {
676
+ while (1) switch (_context6.prev = _context6.next) {
623
677
  case 0:
624
678
  _loggerProxy.default.logger.info('ReconnectionManager:index#reconnectMercuryWebSocket --> Reconnecting websocket.');
625
679
  // First, attempt to disconnect if we think we are already connected.
626
680
  if (!this.webex.internal.mercury.connected) {
627
- _context5.next = 13;
681
+ _context6.next = 13;
628
682
  break;
629
683
  }
630
684
  _loggerProxy.default.logger.info('ReconnectionManager:index#reconnectMercuryWebSocket --> Disconnecting existing websocket.');
631
- _context5.prev = 3;
632
- _context5.next = 6;
685
+ _context6.prev = 3;
686
+ _context6.next = 6;
633
687
  return this.webex.internal.mercury.disconnect();
634
688
  case 6:
635
689
  _loggerProxy.default.logger.info('ReconnectionManager:index#reconnectMercuryWebSocket --> Websocket disconnected successfully.');
636
- _context5.next = 13;
690
+ _context6.next = 13;
637
691
  break;
638
692
  case 9:
639
- _context5.prev = 9;
640
- _context5.t0 = _context5["catch"](3);
693
+ _context6.prev = 9;
694
+ _context6.t0 = _context6["catch"](3);
641
695
  // If we can't disconnect, the sdk is in such a bad state that reconnecting is not going to happen.
642
- _loggerProxy.default.logger.error('ReconnectionManager:index#reconnectMercuryWebSocket --> Unable to disconnect from websocket, giving up.', _context5.t0);
643
- throw _context5.t0;
696
+ _loggerProxy.default.logger.error('ReconnectionManager:index#reconnectMercuryWebSocket --> Unable to disconnect from websocket, giving up.', _context6.t0);
697
+ throw _context6.t0;
644
698
  case 13:
645
- _context5.prev = 13;
699
+ _context6.prev = 13;
646
700
  _loggerProxy.default.logger.info('ReconnectionManager:index#reconnectMercuryWebSocket --> Connecting websocket.');
647
- _context5.next = 17;
701
+ _context6.next = 17;
648
702
  return this.webex.internal.mercury.connect();
649
703
  case 17:
650
704
  _loggerProxy.default.logger.info('ReconnectionManager:index#reconnectMercuryWebSocket --> Websocket connected successfully.');
651
- _context5.next = 24;
705
+ _context6.next = 24;
652
706
  break;
653
707
  case 20:
654
- _context5.prev = 20;
655
- _context5.t1 = _context5["catch"](13);
656
- _loggerProxy.default.logger.error('ReconnectionManager:index#reconnectMercuryWebSocket --> Unable to connect to websocket, giving up.', _context5.t1);
657
- throw _context5.t1;
708
+ _context6.prev = 20;
709
+ _context6.t1 = _context6["catch"](13);
710
+ _loggerProxy.default.logger.error('ReconnectionManager:index#reconnectMercuryWebSocket --> Unable to connect to websocket, giving up.', _context6.t1);
711
+ throw _context6.t1;
658
712
  case 24:
659
713
  case "end":
660
- return _context5.stop();
714
+ return _context6.stop();
661
715
  }
662
- }, _callee5, this, [[3, 9], [13, 20]]);
716
+ }, _callee6, this, [[3, 9], [13, 20]]);
663
717
  }));
664
718
  function reconnectMercuryWebSocket() {
665
719
  return _reconnectMercuryWebSocket.apply(this, arguments);