@webex/plugin-meetings 3.0.0-beta.3 → 3.0.0-beta.300

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