@webex/plugin-meetings 2.60.0 → 2.60.1-next.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (535) hide show
  1. package/README.md +46 -8
  2. package/dist/annotation/annotation.types.d.ts +42 -0
  3. package/dist/annotation/annotation.types.js +7 -0
  4. package/dist/annotation/annotation.types.js.map +1 -0
  5. package/dist/annotation/constants.d.ts +31 -0
  6. package/dist/annotation/constants.js +41 -0
  7. package/dist/annotation/constants.js.map +1 -0
  8. package/dist/annotation/index.d.ts +117 -0
  9. package/dist/annotation/index.js +357 -0
  10. package/dist/annotation/index.js.map +1 -0
  11. package/dist/breakouts/breakout.d.ts +8 -0
  12. package/dist/breakouts/breakout.js +215 -0
  13. package/dist/breakouts/breakout.js.map +1 -0
  14. package/dist/breakouts/collection.d.ts +5 -0
  15. package/dist/breakouts/collection.js +22 -0
  16. package/dist/breakouts/collection.js.map +1 -0
  17. package/dist/breakouts/edit-lock-error.d.ts +15 -0
  18. package/dist/breakouts/edit-lock-error.js +51 -0
  19. package/dist/breakouts/edit-lock-error.js.map +1 -0
  20. package/dist/breakouts/events.d.ts +8 -0
  21. package/dist/breakouts/events.js +44 -0
  22. package/dist/breakouts/events.js.map +1 -0
  23. package/dist/breakouts/index.d.ts +5 -0
  24. package/dist/breakouts/index.js +1047 -0
  25. package/dist/breakouts/index.js.map +1 -0
  26. package/dist/breakouts/request.d.ts +22 -0
  27. package/dist/breakouts/request.js +77 -0
  28. package/dist/breakouts/request.js.map +1 -0
  29. package/dist/breakouts/utils.d.ts +15 -0
  30. package/dist/breakouts/utils.js +64 -0
  31. package/dist/breakouts/utils.js.map +1 -0
  32. package/dist/common/browser-detection.js +2 -3
  33. package/dist/common/browser-detection.js.map +1 -1
  34. package/dist/common/collection.js +3 -4
  35. package/dist/common/collection.js.map +1 -1
  36. package/dist/common/config.js +1 -2
  37. package/dist/common/config.js.map +1 -1
  38. package/dist/common/errors/captcha-error.js +1 -2
  39. package/dist/common/errors/captcha-error.js.map +1 -1
  40. package/dist/common/errors/intent-to-join.js +1 -2
  41. package/dist/common/errors/intent-to-join.js.map +1 -1
  42. package/dist/common/errors/join-meeting.js +1 -2
  43. package/dist/common/errors/join-meeting.js.map +1 -1
  44. package/dist/common/errors/media.js +1 -2
  45. package/dist/common/errors/media.js.map +1 -1
  46. package/dist/common/errors/no-meeting-info.d.ts +14 -0
  47. package/dist/common/errors/no-meeting-info.js +50 -0
  48. package/dist/common/errors/no-meeting-info.js.map +1 -0
  49. package/dist/common/errors/parameter.js +3 -4
  50. package/dist/common/errors/parameter.js.map +1 -1
  51. package/dist/common/errors/password-error.js +1 -2
  52. package/dist/common/errors/password-error.js.map +1 -1
  53. package/dist/common/errors/permission.js +1 -2
  54. package/dist/common/errors/permission.js.map +1 -1
  55. package/dist/common/errors/{reclaim-host-role-error.js → reclaim-host-role-errors.js} +7 -11
  56. package/dist/common/errors/reclaim-host-role-errors.js.map +1 -0
  57. package/dist/common/errors/reconnection-in-progress.js +1 -2
  58. package/dist/common/errors/reconnection-in-progress.js.map +1 -1
  59. package/dist/common/errors/reconnection.js +1 -2
  60. package/dist/common/errors/reconnection.js.map +1 -1
  61. package/dist/common/errors/stats.js +1 -2
  62. package/dist/common/errors/stats.js.map +1 -1
  63. package/dist/common/errors/webex-errors.d.ts +20 -8
  64. package/dist/common/errors/webex-errors.js +48 -28
  65. package/dist/common/errors/webex-errors.js.map +1 -1
  66. package/dist/common/errors/webex-meetings-error.js +1 -2
  67. package/dist/common/errors/webex-meetings-error.js.map +1 -1
  68. package/dist/common/events/events-scope.js +1 -2
  69. package/dist/common/events/events-scope.js.map +1 -1
  70. package/dist/common/events/events.js +1 -2
  71. package/dist/common/events/events.js.map +1 -1
  72. package/dist/common/events/trigger-proxy.js +1 -2
  73. package/dist/common/events/trigger-proxy.js.map +1 -1
  74. package/dist/common/events/util.js +1 -2
  75. package/dist/common/events/util.js.map +1 -1
  76. package/dist/common/logs/logger-config.js +1 -2
  77. package/dist/common/logs/logger-config.js.map +1 -1
  78. package/dist/common/logs/logger-proxy.js +2 -3
  79. package/dist/common/logs/logger-proxy.js.map +1 -1
  80. package/dist/common/logs/request.d.ts +3 -1
  81. package/dist/common/logs/request.js +8 -5
  82. package/dist/common/logs/request.js.map +1 -1
  83. package/dist/common/queue.d.ts +9 -7
  84. package/dist/common/queue.js +22 -9
  85. package/dist/common/queue.js.map +1 -1
  86. package/dist/config.d.ts +6 -7
  87. package/dist/config.js +8 -10
  88. package/dist/config.js.map +1 -1
  89. package/dist/constants.d.ts +217 -97
  90. package/dist/constants.js +416 -441
  91. package/dist/constants.js.map +1 -1
  92. package/dist/controls-options-manager/constants.js +3 -6
  93. package/dist/controls-options-manager/constants.js.map +1 -1
  94. package/dist/controls-options-manager/enums.d.ts +11 -1
  95. package/dist/controls-options-manager/enums.js +15 -6
  96. package/dist/controls-options-manager/enums.js.map +1 -1
  97. package/dist/controls-options-manager/index.d.ts +17 -1
  98. package/dist/controls-options-manager/index.js +127 -38
  99. package/dist/controls-options-manager/index.js.map +1 -1
  100. package/dist/controls-options-manager/types.d.ts +43 -0
  101. package/dist/controls-options-manager/types.js +7 -0
  102. package/dist/controls-options-manager/types.js.map +1 -0
  103. package/dist/controls-options-manager/util.d.ts +1 -7
  104. package/dist/controls-options-manager/util.js +309 -19
  105. package/dist/controls-options-manager/util.js.map +1 -1
  106. package/dist/index.d.ts +6 -3
  107. package/dist/index.js +121 -5
  108. package/dist/index.js.map +1 -1
  109. package/dist/interceptors/index.d.ts +2 -0
  110. package/dist/interceptors/index.js +15 -0
  111. package/dist/interceptors/index.js.map +1 -0
  112. package/dist/interceptors/locusRetry.d.ts +27 -0
  113. package/dist/interceptors/locusRetry.js +94 -0
  114. package/dist/interceptors/locusRetry.js.map +1 -0
  115. package/dist/interpretation/collection.d.ts +5 -0
  116. package/dist/interpretation/collection.js +22 -0
  117. package/dist/interpretation/collection.js.map +1 -0
  118. package/dist/interpretation/index.d.ts +5 -0
  119. package/dist/interpretation/index.js +365 -0
  120. package/dist/interpretation/index.js.map +1 -0
  121. package/dist/interpretation/siLanguage.d.ts +5 -0
  122. package/dist/interpretation/siLanguage.js +24 -0
  123. package/dist/interpretation/siLanguage.js.map +1 -0
  124. package/dist/locus-info/controlsUtils.js +100 -11
  125. package/dist/locus-info/controlsUtils.js.map +1 -1
  126. package/dist/locus-info/embeddedAppsUtils.js +3 -4
  127. package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
  128. package/dist/locus-info/fullState.js +1 -2
  129. package/dist/locus-info/fullState.js.map +1 -1
  130. package/dist/locus-info/hostUtils.js +1 -2
  131. package/dist/locus-info/hostUtils.js.map +1 -1
  132. package/dist/locus-info/index.d.ts +57 -4
  133. package/dist/locus-info/index.js +425 -84
  134. package/dist/locus-info/index.js.map +1 -1
  135. package/dist/locus-info/infoUtils.js +13 -5
  136. package/dist/locus-info/infoUtils.js.map +1 -1
  137. package/dist/locus-info/mediaSharesUtils.js +58 -3
  138. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  139. package/dist/locus-info/parser.d.ts +66 -6
  140. package/dist/locus-info/parser.js +253 -80
  141. package/dist/locus-info/parser.js.map +1 -1
  142. package/dist/locus-info/selfUtils.js +97 -13
  143. package/dist/locus-info/selfUtils.js.map +1 -1
  144. package/dist/media/index.d.ts +2 -0
  145. package/dist/media/index.js +107 -319
  146. package/dist/media/index.js.map +1 -1
  147. package/dist/media/properties.d.ts +38 -53
  148. package/dist/media/properties.js +96 -153
  149. package/dist/media/properties.js.map +1 -1
  150. package/dist/media/util.js +1 -22
  151. package/dist/media/util.js.map +1 -1
  152. package/dist/mediaQualityMetrics/config.d.ts +234 -230
  153. package/dist/mediaQualityMetrics/config.js +302 -498
  154. package/dist/mediaQualityMetrics/config.js.map +1 -1
  155. package/dist/meeting/in-meeting-actions.d.ts +88 -0
  156. package/dist/meeting/in-meeting-actions.js +94 -3
  157. package/dist/meeting/in-meeting-actions.js.map +1 -1
  158. package/dist/meeting/index.d.ts +591 -494
  159. package/dist/meeting/index.js +4732 -2990
  160. package/dist/meeting/index.js.map +1 -1
  161. package/dist/meeting/locusMediaRequest.d.ts +74 -0
  162. package/dist/meeting/locusMediaRequest.js +291 -0
  163. package/dist/meeting/locusMediaRequest.js.map +1 -0
  164. package/dist/meeting/muteState.d.ts +93 -25
  165. package/dist/meeting/muteState.js +224 -133
  166. package/dist/meeting/muteState.js.map +1 -1
  167. package/dist/meeting/request.d.ts +82 -47
  168. package/dist/meeting/request.js +297 -199
  169. package/dist/meeting/request.js.map +1 -1
  170. package/dist/meeting/request.type.d.ts +11 -0
  171. package/dist/meeting/request.type.js +7 -0
  172. package/dist/meeting/request.type.js.map +1 -0
  173. package/dist/meeting/state.js +1 -2
  174. package/dist/meeting/state.js.map +1 -1
  175. package/dist/meeting/util.d.ts +102 -1
  176. package/dist/meeting/util.js +605 -435
  177. package/dist/meeting/util.js.map +1 -1
  178. package/dist/meeting-info/collection.js +3 -4
  179. package/dist/meeting-info/collection.js.map +1 -1
  180. package/dist/meeting-info/index.d.ts +13 -1
  181. package/dist/meeting-info/index.js +74 -7
  182. package/dist/meeting-info/index.js.map +1 -1
  183. package/dist/meeting-info/meeting-info-v2.d.ts +31 -1
  184. package/dist/meeting-info/meeting-info-v2.js +200 -63
  185. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  186. package/dist/meeting-info/request.js +1 -2
  187. package/dist/meeting-info/request.js.map +1 -1
  188. package/dist/meeting-info/util.js +2 -3
  189. package/dist/meeting-info/util.js.map +1 -1
  190. package/dist/meeting-info/utilv2.js +39 -41
  191. package/dist/meeting-info/utilv2.js.map +1 -1
  192. package/dist/meetings/collection.d.ts +17 -0
  193. package/dist/meetings/collection.js +42 -4
  194. package/dist/meetings/collection.js.map +1 -1
  195. package/dist/meetings/index.d.ts +93 -21
  196. package/dist/meetings/index.js +490 -127
  197. package/dist/meetings/index.js.map +1 -1
  198. package/dist/meetings/meetings.types.d.ts +4 -0
  199. package/dist/meetings/meetings.types.js +7 -0
  200. package/dist/meetings/meetings.types.js.map +1 -0
  201. package/dist/meetings/request.js +4 -3
  202. package/dist/meetings/request.js.map +1 -1
  203. package/dist/meetings/util.js +107 -6
  204. package/dist/meetings/util.js.map +1 -1
  205. package/dist/member/index.d.ts +13 -1
  206. package/dist/member/index.js +45 -2
  207. package/dist/member/index.js.map +1 -1
  208. package/dist/member/member.types.js +3 -4
  209. package/dist/member/member.types.js.map +1 -1
  210. package/dist/member/types.d.ts +32 -0
  211. package/dist/member/types.js +23 -0
  212. package/dist/member/types.js.map +1 -0
  213. package/dist/member/util.js +120 -29
  214. package/dist/member/util.js.map +1 -1
  215. package/dist/members/collection.d.ts +5 -0
  216. package/dist/members/collection.js +11 -2
  217. package/dist/members/collection.js.map +1 -1
  218. package/dist/members/index.d.ts +56 -11
  219. package/dist/members/index.js +174 -47
  220. package/dist/members/index.js.map +1 -1
  221. package/dist/members/request.d.ts +67 -11
  222. package/dist/members/request.js +102 -54
  223. package/dist/members/request.js.map +1 -1
  224. package/dist/members/types.js +3 -4
  225. package/dist/members/types.js.map +1 -1
  226. package/dist/members/util.d.ts +214 -1
  227. package/dist/members/util.js +327 -284
  228. package/dist/members/util.js.map +1 -1
  229. package/dist/metrics/constants.d.ts +15 -6
  230. package/dist/metrics/constants.js +17 -9
  231. package/dist/metrics/constants.js.map +1 -1
  232. package/dist/metrics/index.d.ts +4 -111
  233. package/dist/metrics/index.js +4 -452
  234. package/dist/metrics/index.js.map +1 -1
  235. package/dist/multistream/mediaRequestManager.d.ts +118 -0
  236. package/dist/multistream/mediaRequestManager.js +344 -0
  237. package/dist/multistream/mediaRequestManager.js.map +1 -0
  238. package/dist/multistream/receiveSlot.d.ts +68 -0
  239. package/dist/multistream/receiveSlot.js +200 -0
  240. package/dist/multistream/receiveSlot.js.map +1 -0
  241. package/dist/multistream/receiveSlotManager.d.ts +56 -0
  242. package/dist/multistream/receiveSlotManager.js +174 -0
  243. package/dist/multistream/receiveSlotManager.js.map +1 -0
  244. package/dist/multistream/remoteMedia.d.ts +72 -0
  245. package/dist/multistream/remoteMedia.js +268 -0
  246. package/dist/multistream/remoteMedia.js.map +1 -0
  247. package/dist/multistream/remoteMediaGroup.d.ts +47 -0
  248. package/dist/multistream/remoteMediaGroup.js +267 -0
  249. package/dist/multistream/remoteMediaGroup.js.map +1 -0
  250. package/dist/multistream/remoteMediaManager.d.ts +285 -0
  251. package/dist/multistream/remoteMediaManager.js +1211 -0
  252. package/dist/multistream/remoteMediaManager.js.map +1 -0
  253. package/dist/multistream/sendSlotManager.d.ts +61 -0
  254. package/dist/multistream/sendSlotManager.js +236 -0
  255. package/dist/multistream/sendSlotManager.js.map +1 -0
  256. package/dist/networkQualityMonitor/index.js +5 -4
  257. package/dist/networkQualityMonitor/index.js.map +1 -1
  258. package/dist/personal-meeting-room/index.js +2 -3
  259. package/dist/personal-meeting-room/index.js.map +1 -1
  260. package/dist/personal-meeting-room/request.js +2 -3
  261. package/dist/personal-meeting-room/request.js.map +1 -1
  262. package/dist/personal-meeting-room/util.js +1 -2
  263. package/dist/personal-meeting-room/util.js.map +1 -1
  264. package/dist/reachability/clusterReachability.d.ts +109 -0
  265. package/dist/reachability/clusterReachability.js +357 -0
  266. package/dist/reachability/clusterReachability.js.map +1 -0
  267. package/dist/reachability/index.d.ts +61 -95
  268. package/dist/reachability/index.js +300 -393
  269. package/dist/reachability/index.js.map +1 -1
  270. package/dist/reachability/request.d.ts +7 -3
  271. package/dist/reachability/request.js +18 -10
  272. package/dist/reachability/request.js.map +1 -1
  273. package/dist/reachability/util.d.ts +8 -0
  274. package/dist/reachability/util.js +29 -0
  275. package/dist/reachability/util.js.map +1 -0
  276. package/dist/reactions/constants.d.ts +3 -0
  277. package/dist/reactions/constants.js +12 -0
  278. package/dist/reactions/constants.js.map +1 -0
  279. package/dist/reactions/reactions.d.ts +2 -2
  280. package/dist/reactions/reactions.js +4 -6
  281. package/dist/reactions/reactions.js.map +1 -1
  282. package/dist/reactions/reactions.type.d.ts +23 -3
  283. package/dist/reactions/reactions.type.js +21 -23
  284. package/dist/reactions/reactions.type.js.map +1 -1
  285. package/dist/reconnection-manager/index.d.ts +32 -8
  286. package/dist/reconnection-manager/index.js +282 -231
  287. package/dist/reconnection-manager/index.js.map +1 -1
  288. package/dist/recording-controller/enums.js +4 -5
  289. package/dist/recording-controller/enums.js.map +1 -1
  290. package/dist/recording-controller/index.d.ts +15 -1
  291. package/dist/recording-controller/index.js +57 -46
  292. package/dist/recording-controller/index.js.map +1 -1
  293. package/dist/recording-controller/util.d.ts +5 -4
  294. package/dist/recording-controller/util.js +10 -10
  295. package/dist/recording-controller/util.js.map +1 -1
  296. package/dist/roap/index.d.ts +9 -47
  297. package/dist/roap/index.js +101 -235
  298. package/dist/roap/index.js.map +1 -1
  299. package/dist/roap/request.d.ts +18 -12
  300. package/dist/roap/request.js +126 -180
  301. package/dist/roap/request.js.map +1 -1
  302. package/dist/roap/turnDiscovery.d.ts +27 -16
  303. package/dist/roap/turnDiscovery.js +115 -105
  304. package/dist/roap/turnDiscovery.js.map +1 -1
  305. package/dist/rtcMetrics/constants.d.ts +4 -0
  306. package/dist/rtcMetrics/constants.js +11 -0
  307. package/dist/rtcMetrics/constants.js.map +1 -0
  308. package/dist/rtcMetrics/index.d.ts +54 -0
  309. package/dist/rtcMetrics/index.js +140 -0
  310. package/dist/rtcMetrics/index.js.map +1 -0
  311. package/dist/statsAnalyzer/global.d.ts +1 -83
  312. package/dist/statsAnalyzer/global.js +2 -85
  313. package/dist/statsAnalyzer/global.js.map +1 -1
  314. package/dist/statsAnalyzer/index.d.ts +50 -30
  315. package/dist/statsAnalyzer/index.js +435 -510
  316. package/dist/statsAnalyzer/index.js.map +1 -1
  317. package/dist/statsAnalyzer/mqaUtil.d.ts +8 -6
  318. package/dist/statsAnalyzer/mqaUtil.js +120 -83
  319. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  320. package/dist/transcription/index.js +1 -2
  321. package/dist/transcription/index.js.map +1 -1
  322. package/dist/webinar/collection.d.ts +16 -0
  323. package/dist/webinar/collection.js +43 -0
  324. package/dist/webinar/collection.js.map +1 -0
  325. package/dist/webinar/index.d.ts +5 -0
  326. package/dist/webinar/index.js +68 -0
  327. package/dist/webinar/index.js.map +1 -0
  328. package/package.json +38 -26
  329. package/src/annotation/annotation.types.ts +50 -0
  330. package/src/annotation/constants.ts +36 -0
  331. package/src/annotation/index.ts +328 -0
  332. package/src/breakouts/README.md +220 -0
  333. package/src/breakouts/breakout.ts +188 -0
  334. package/src/breakouts/collection.ts +19 -0
  335. package/src/breakouts/edit-lock-error.ts +25 -0
  336. package/src/breakouts/events.ts +56 -0
  337. package/src/breakouts/index.ts +925 -0
  338. package/src/breakouts/request.ts +55 -0
  339. package/src/breakouts/utils.ts +57 -0
  340. package/src/common/errors/no-meeting-info.ts +24 -0
  341. package/src/common/errors/webex-errors.ts +36 -12
  342. package/src/common/logs/logger-proxy.ts +1 -1
  343. package/src/common/logs/request.ts +5 -1
  344. package/src/common/queue.ts +22 -8
  345. package/src/config.ts +6 -7
  346. package/src/constants.ts +244 -97
  347. package/src/controls-options-manager/enums.ts +12 -0
  348. package/src/controls-options-manager/index.ts +116 -21
  349. package/src/controls-options-manager/types.ts +59 -0
  350. package/src/controls-options-manager/util.ts +294 -14
  351. package/src/index.ts +44 -0
  352. package/src/interceptors/index.ts +3 -0
  353. package/src/interceptors/locusRetry.ts +67 -0
  354. package/src/interpretation/README.md +60 -0
  355. package/src/interpretation/collection.ts +19 -0
  356. package/src/interpretation/index.ts +332 -0
  357. package/src/interpretation/siLanguage.ts +18 -0
  358. package/src/locus-info/controlsUtils.ts +110 -0
  359. package/src/locus-info/index.ts +449 -61
  360. package/src/locus-info/infoUtils.ts +14 -2
  361. package/src/locus-info/mediaSharesUtils.ts +64 -0
  362. package/src/locus-info/parser.ts +258 -47
  363. package/src/locus-info/selfUtils.ts +85 -2
  364. package/src/media/index.ts +153 -370
  365. package/src/media/properties.ts +106 -136
  366. package/src/media/util.ts +0 -21
  367. package/src/mediaQualityMetrics/config.ts +244 -377
  368. package/src/meeting/in-meeting-actions.ts +176 -0
  369. package/src/meeting/index.ts +3944 -2489
  370. package/src/meeting/locusMediaRequest.ts +313 -0
  371. package/src/meeting/muteState.ts +224 -138
  372. package/src/meeting/request.ts +207 -127
  373. package/src/meeting/request.type.ts +13 -0
  374. package/src/meeting/util.ts +590 -423
  375. package/src/meeting-info/index.ts +81 -8
  376. package/src/meeting-info/meeting-info-v2.ts +163 -13
  377. package/src/meeting-info/util.ts +1 -1
  378. package/src/meeting-info/utilv2.ts +28 -28
  379. package/src/meetings/collection.ts +33 -0
  380. package/src/meetings/index.ts +487 -126
  381. package/src/meetings/meetings.types.ts +12 -0
  382. package/src/meetings/request.ts +2 -0
  383. package/src/meetings/util.ts +116 -5
  384. package/src/member/index.ts +43 -1
  385. package/src/member/types.ts +38 -0
  386. package/src/member/util.ts +125 -28
  387. package/src/members/collection.ts +8 -0
  388. package/src/members/index.ts +187 -52
  389. package/src/members/request.ts +87 -27
  390. package/src/members/util.ts +332 -291
  391. package/src/metrics/constants.ts +15 -6
  392. package/src/metrics/index.ts +1 -471
  393. package/src/multistream/mediaRequestManager.ts +440 -0
  394. package/src/multistream/receiveSlot.ts +184 -0
  395. package/src/multistream/receiveSlotManager.ts +166 -0
  396. package/src/multistream/remoteMedia.ts +254 -0
  397. package/src/multistream/remoteMediaGroup.ts +284 -0
  398. package/src/multistream/remoteMediaManager.ts +1145 -0
  399. package/src/multistream/sendSlotManager.ts +170 -0
  400. package/src/networkQualityMonitor/index.ts +6 -6
  401. package/src/reachability/clusterReachability.ts +320 -0
  402. package/src/reachability/index.ts +243 -347
  403. package/src/reachability/request.ts +17 -8
  404. package/src/reachability/util.ts +24 -0
  405. package/src/reactions/constants.ts +4 -0
  406. package/src/reactions/reactions.ts +4 -4
  407. package/src/reactions/reactions.type.ts +30 -4
  408. package/src/reconnection-manager/index.ts +168 -156
  409. package/src/recording-controller/index.ts +20 -3
  410. package/src/recording-controller/util.ts +26 -9
  411. package/src/roap/index.ts +98 -241
  412. package/src/roap/request.ts +74 -148
  413. package/src/roap/turnDiscovery.ts +62 -56
  414. package/src/rtcMetrics/constants.ts +3 -0
  415. package/src/rtcMetrics/index.ts +124 -0
  416. package/src/statsAnalyzer/global.ts +1 -84
  417. package/src/statsAnalyzer/index.ts +477 -643
  418. package/src/statsAnalyzer/mqaUtil.ts +115 -114
  419. package/src/webinar/collection.ts +31 -0
  420. package/src/webinar/index.ts +62 -0
  421. package/test/integration/spec/converged-space-meetings.js +233 -0
  422. package/test/integration/spec/journey.js +320 -264
  423. package/test/integration/spec/space-meeting.js +77 -4
  424. package/test/unit/spec/annotation/index.ts +418 -0
  425. package/test/unit/spec/breakouts/breakout.ts +237 -0
  426. package/test/unit/spec/breakouts/collection.ts +15 -0
  427. package/test/unit/spec/breakouts/edit-lock-error.ts +30 -0
  428. package/test/unit/spec/breakouts/events.ts +89 -0
  429. package/test/unit/spec/breakouts/index.ts +1790 -0
  430. package/test/unit/spec/breakouts/request.ts +104 -0
  431. package/test/unit/spec/breakouts/utils.js +72 -0
  432. package/test/unit/spec/common/queue.js +31 -2
  433. package/test/unit/spec/controls-options-manager/index.js +163 -0
  434. package/test/unit/spec/controls-options-manager/util.js +576 -60
  435. package/test/unit/spec/fixture/locus.js +1 -0
  436. package/test/unit/spec/interceptors/locusRetry.ts +131 -0
  437. package/test/unit/spec/interpretation/collection.ts +15 -0
  438. package/test/unit/spec/interpretation/index.ts +589 -0
  439. package/test/unit/spec/interpretation/siLanguage.ts +28 -0
  440. package/test/unit/spec/locus-info/controlsUtils.js +323 -30
  441. package/test/unit/spec/locus-info/index.js +1390 -16
  442. package/test/unit/spec/locus-info/infoUtils.js +54 -16
  443. package/test/unit/spec/locus-info/lib/SeqCmp.json +16 -0
  444. package/test/unit/spec/locus-info/lib/selfConstant.js +48 -0
  445. package/test/unit/spec/locus-info/mediaSharesUtils.ts +32 -0
  446. package/test/unit/spec/locus-info/parser.js +116 -35
  447. package/test/unit/spec/locus-info/selfUtils.js +275 -0
  448. package/test/unit/spec/media/index.ts +290 -0
  449. package/test/unit/spec/media/properties.ts +75 -84
  450. package/test/unit/spec/meeting/in-meeting-actions.ts +86 -0
  451. package/test/unit/spec/meeting/index.js +8187 -2769
  452. package/test/unit/spec/meeting/locusMediaRequest.ts +442 -0
  453. package/test/unit/spec/meeting/muteState.js +409 -213
  454. package/test/unit/spec/meeting/request.js +512 -42
  455. package/test/unit/spec/meeting/utils.js +741 -24
  456. package/test/unit/spec/meeting-info/index.js +300 -0
  457. package/test/unit/spec/meeting-info/meetinginfov2.js +527 -5
  458. package/test/unit/spec/meeting-info/utilv2.js +21 -0
  459. package/test/unit/spec/meetings/collection.js +26 -0
  460. package/test/unit/spec/meetings/index.js +1313 -243
  461. package/test/unit/spec/meetings/utils.js +202 -2
  462. package/test/unit/spec/member/index.js +32 -9
  463. package/test/unit/spec/member/util.js +499 -61
  464. package/test/unit/spec/members/index.js +394 -5
  465. package/test/unit/spec/members/request.js +206 -27
  466. package/test/unit/spec/members/utils.js +173 -38
  467. package/test/unit/spec/metrics/index.js +1 -50
  468. package/test/unit/spec/multistream/mediaRequestManager.ts +1418 -0
  469. package/test/unit/spec/multistream/receiveSlot.ts +163 -0
  470. package/test/unit/spec/multistream/receiveSlotManager.ts +203 -0
  471. package/test/unit/spec/multistream/remoteMedia.ts +255 -0
  472. package/test/unit/spec/multistream/remoteMediaGroup.ts +662 -0
  473. package/test/unit/spec/multistream/remoteMediaManager.ts +1924 -0
  474. package/test/unit/spec/multistream/sendSlotManager.ts +242 -0
  475. package/test/unit/spec/networkQualityMonitor/index.js +4 -4
  476. package/test/unit/spec/reachability/clusterReachability.ts +279 -0
  477. package/test/unit/spec/reachability/index.ts +531 -24
  478. package/test/unit/spec/reachability/request.js +68 -0
  479. package/test/unit/spec/reachability/util.ts +40 -0
  480. package/test/unit/spec/reconnection-manager/index.js +162 -24
  481. package/test/unit/spec/recording-controller/index.js +293 -218
  482. package/test/unit/spec/recording-controller/util.js +223 -96
  483. package/test/unit/spec/roap/index.ts +200 -76
  484. package/test/unit/spec/roap/request.ts +255 -0
  485. package/test/unit/spec/roap/turnDiscovery.ts +86 -48
  486. package/test/unit/spec/rtcMetrics/index.ts +93 -0
  487. package/test/unit/spec/stats-analyzer/index.js +261 -167
  488. package/test/unit/spec/webinar/collection.ts +13 -0
  489. package/test/unit/spec/webinar/index.ts +60 -0
  490. package/test/utils/constants.js +9 -0
  491. package/test/utils/integrationTestUtils.js +46 -0
  492. package/test/utils/testUtils.js +0 -45
  493. package/test/utils/webex-config.js +4 -0
  494. package/test/utils/webex-test-users.js +7 -3
  495. package/dist/common/errors/reclaim-host-role-error.js.map +0 -1
  496. package/dist/meeting/effectsState.d.ts +0 -42
  497. package/dist/meeting/effectsState.js +0 -260
  498. package/dist/meeting/effectsState.js.map +0 -1
  499. package/dist/metrics/config.d.ts +0 -169
  500. package/dist/metrics/config.js +0 -289
  501. package/dist/metrics/config.js.map +0 -1
  502. package/dist/peer-connection-manager/index.d.ts +0 -6
  503. package/dist/peer-connection-manager/index.js +0 -671
  504. package/dist/peer-connection-manager/index.js.map +0 -1
  505. package/dist/peer-connection-manager/util.d.ts +0 -6
  506. package/dist/peer-connection-manager/util.js +0 -110
  507. package/dist/peer-connection-manager/util.js.map +0 -1
  508. package/dist/roap/collection.d.ts +0 -10
  509. package/dist/roap/collection.js +0 -63
  510. package/dist/roap/collection.js.map +0 -1
  511. package/dist/roap/handler.d.ts +0 -47
  512. package/dist/roap/handler.js +0 -279
  513. package/dist/roap/handler.js.map +0 -1
  514. package/dist/roap/state.d.ts +0 -9
  515. package/dist/roap/state.js +0 -127
  516. package/dist/roap/state.js.map +0 -1
  517. package/dist/roap/util.d.ts +0 -2
  518. package/dist/roap/util.js +0 -76
  519. package/dist/roap/util.js.map +0 -1
  520. package/src/index.js +0 -15
  521. package/src/meeting/effectsState.ts +0 -209
  522. package/src/metrics/config.ts +0 -485
  523. package/src/peer-connection-manager/index.ts +0 -847
  524. package/src/peer-connection-manager/util.ts +0 -119
  525. package/src/roap/collection.ts +0 -62
  526. package/src/roap/handler.ts +0 -294
  527. package/src/roap/state.ts +0 -156
  528. package/src/roap/util.ts +0 -100
  529. package/test/unit/spec/meeting/effectsState.js +0 -281
  530. package/test/unit/spec/peerconnection-manager/index.js +0 -218
  531. package/test/unit/spec/peerconnection-manager/utils.js +0 -49
  532. package/test/unit/spec/peerconnection-manager/utils.test-fixtures.ts +0 -388
  533. package/test/unit/spec/roap/util.js +0 -30
  534. /package/dist/common/errors/{reclaim-host-role-error.d.ts → reclaim-host-role-errors.d.ts} +0 -0
  535. /package/src/common/errors/{reclaim-host-role-error.ts → reclaim-host-role-errors.ts} +0 -0
@@ -0,0 +1,220 @@
1
+ # Breakout Sessions
2
+
3
+ Breakout sessions are like meetings within meetings. They have separate roster lists and titles. Participants can move between breakouts and the main session.
4
+
5
+ ### Enabling
6
+
7
+ To enable breakouts the `breakoutsSupported` parameter must be passed to the meeting join method.
8
+
9
+ ### Structure
10
+
11
+ The current breakout session is accessible as follows:
12
+
13
+ ```javascript
14
+ breakouts.currentBreakoutSession;
15
+ ```
16
+
17
+ Other breakout sessions are available in the breakouts collection. These are breakouts that you known about. If you are an attendee, you may not know about all the breakout sessions in the meeting.
18
+
19
+ ```javascript
20
+ breakouts.breakouts;
21
+ ```
22
+
23
+ note: The `currentBreakoutSession` is NOT a member of the `breakouts.breakouts` collection.
24
+
25
+ Some information about the state of breakouts is available on the `meeting.breakouts` object itself
26
+
27
+ ```javascript
28
+ // The number of seconds after ending breakouts before the participants are returned to the main session
29
+ breakouts.delayCloseTime;
30
+
31
+ // Whether the participant is allowed back to the main session
32
+ breakouts.allowBackToMain;
33
+ ```
34
+
35
+ ### Attendee functionality
36
+
37
+ The normal meeting members are updated when you move in and out of a breakout session.
38
+
39
+ The following are methods available to attendees of a meeting:
40
+
41
+ ```javascript
42
+ // Join a breakout
43
+ // This can be used when the participant is in the main session or in a different breakout session
44
+ // when call join function, should send message to metrics
45
+ /* Breakout Sessions created during meetings allow participants to move into smaller breakout sessions and then
46
+ return to the main meeting at a later time. These moves can be initiated by the user or by the meeting
47
+ host/co-host. The goal of this metric is to track these moves in production by instrumenting them for
48
+ analysis from the end user's experience perspective.
49
+ */
50
+ breakout.join();
51
+
52
+ // Leave a breakout
53
+ // This will cause the participant to return to the main session
54
+ breakouts.currentBreakoutSession.leave();
55
+
56
+ // Ask for help when in a breakout session. 10 second cooldown.
57
+ breakout.currentBreakoutSession.askForHelp();
58
+ ```
59
+
60
+ #### Members
61
+
62
+ Each breakout session has members. Members represent other entities within the meeting.
63
+ The current breakout session members are accessed via the meeting object i.e. they will automatically
64
+ be updated when the user moves between sessions.
65
+
66
+ To see which members are in other sessions, you can access them via the breakout model. The Members
67
+ class is the same as that of the main meeting.
68
+
69
+ ```javascript
70
+ breakout = breakouts.breakouts.models[0];
71
+ breakout.members;
72
+ ```
73
+
74
+ #### breakouts events
75
+
76
+ ```javascript
77
+ // When the breakouts in the breakouts collection changes. This includes updates to session members
78
+ on('meeting:breakouts:update', (breakouts) => {});
79
+
80
+ // When the breakout sessions end this event will be fired
81
+ on('meeting:breakouts:closing', () => {});
82
+
83
+ // When the host sends a message to the breakout this event will fire
84
+ on('meeting:breakouts:message', {senderUserId, sentTime, message, sessionId});
85
+ ```
86
+
87
+ When breakouts are started there are several possibilities:
88
+
89
+ 1. The attendee is forced to join a session
90
+ 2. The attendee is assigned to a session, but can join when they feel like it
91
+ 3. The attendee is not assigned to a session, and can choose which session they want to join
92
+
93
+ ```javascript
94
+ breakout.assigned; // Assigned to a session, but not in it yet
95
+ breakout.assignedCurrent; // Forced to join a session
96
+ breakout.active; // The session exists
97
+ breakout.allowed; // The user is allowed to join the session
98
+ breakout.requested; // The user has been requested to join the session
99
+ ```
100
+
101
+ The above attributes of the breakout sessions, combined with the `meeting:breakouts:update` event allow you to determine which situation you are in.
102
+
103
+ A host can signal attendees to move to a particular session. In this case the following is available. Using the same event, and the `requested` attribute of the breakout you can determine which session is to be moved to. Requesting return to the main session is the current use case of this.
104
+
105
+ ### Host functionality
106
+
107
+ The following are methods available to a hosts of a meeting.
108
+
109
+ note: None of these are currently implemented
110
+
111
+ ```javascript
112
+
113
+ // Move a participant to breakout
114
+ breakout.move(participant)
115
+
116
+ // Remove someone from a breakout session
117
+ // This returns them to the main session
118
+ breakout.remove(participant)
119
+
120
+ // Deletes a breakout session
121
+ // This can only be done when breakouts are inactive
122
+ breakout.delete()
123
+
124
+ /*
125
+ Create breakout sessions, Type is array
126
+ Format: [{'name':'session1', "anyoneCanJoin" : true}]
127
+ */
128
+ breakouts.create(sessions)
129
+
130
+ // Delete all breakout sessions
131
+ breakouts.clearSessions()
132
+
133
+ // update breakout session with params
134
+ // if unlockEdit is true, will release lock editing after update finish
135
+ breakout.update(params, unlockEdit)
136
+
137
+ // Start breakout sessions with necessary params
138
+ breakouts.start(params)
139
+
140
+ // Assign a particpant/participants to breakouts/a breakout
141
+ // sessions should be like: [{id:'xx',memberIds:['111'],emails:['111@ss.com',anyone: true]},...]
142
+ breakouts.assign(sessions)
143
+
144
+ // Dynammic assign a particpant/participants to breakouts/main (not used by now)
145
+ // Admit lobby waiting participants to a breakout directly
146
+ // sessions should be like: [{id:'xx',participants:['111'],targetState:'JOINED'},...]
147
+ breakouts.dynamicAssign(sessions)
148
+
149
+ // End breakout sessions with necessary params
150
+ breakouts.end(params)
151
+
152
+ // get breakout sessions with/without param editlock
153
+ breakouts.getBreakout(editlock?)
154
+
155
+ // Enable breakout sessions
156
+ breakouts.enable()
157
+
158
+ // Enable and lock breakout
159
+ breakouts.enableAndLockBreakout()
160
+
161
+ // Lock breakout
162
+ breakouts.lockBreakout()
163
+
164
+ // Unlock breakout
165
+ breakouts.unLockEditBreakout()
166
+
167
+ // Disable breakout sessions
168
+ breakouts.disable()
169
+
170
+ // Send message asking all participants to return to the main session
171
+ breakouts.askAllToReturn()
172
+
173
+ // Send a message to a breakout session
174
+ // You can determine which participant types receive the message, if no type set, default is to all participants
175
+ breakout.broadcast(message, {participants: boolean, cohosts: boolean, presenters: boolean})
176
+
177
+ // Send a message to All breakout sessions
178
+ // You can determine which participant types receive the message, if no type set, default is to all participants
179
+ breakouts.broadcast(message, {participants: boolean, cohosts: boolean, presenters: boolean})
180
+
181
+ // When breakouts are active you can cancel the automatic end of all sessions by calling this
182
+ // method. It cannot be restarted, only manually ending breakouts is possible after calling this
183
+ breakouts.cancelAutomaticEnd()
184
+
185
+ IBreakoutConfig {
186
+ /*
187
+ Number of sessions to count down before returning users to main session. Seconds. Default 60. 0 means off
188
+ */
189
+ countdownTimer: Number,
190
+ /*
191
+ Whether attendees are allowed to return to the main meeting
192
+ */
193
+ allowReturntoMainMeeting: Boolean,
194
+ /*
195
+ Whether attendees are allowed to join later
196
+ */
197
+ allowJoinLater: Boolean,
198
+ /*
199
+ The timeout after which breakouts are automatically ended. Seconds. Default 1800 (30 minutes) Miniumum 5 minutes.
200
+ */
201
+ automaticallyEndBreakoutsAfter: Number,
202
+ /*
203
+ How participants are assigned to breakouts.
204
+ auto -> participants are automatically placed in sessions
205
+ */
206
+ assignmentMethod: 'auto' | 'manual' | 'choose'
207
+ }
208
+
209
+ // Configure settings on breakouts
210
+ breakouts.configure(config)
211
+
212
+ // set whether anyone can join the breakout or whether it is just assigned participants that can join
213
+ breakout.setOpen(isOpen)
214
+
215
+ // When the members change for a given breakout
216
+ on('meeting:breakout:members:update', ({sessionId, members}) => {
217
+
218
+ })
219
+
220
+ ```
@@ -0,0 +1,188 @@
1
+ /*!
2
+ * Copyright (c) 2015-2023 Cisco Systems, Inc. See LICENSE file.
3
+ */
4
+
5
+ import {WebexPlugin} from '@webex/webex-core';
6
+
7
+ import uuid from 'uuid';
8
+ import {_ID_, HTTP_VERBS, MEETINGS} from '../constants';
9
+ import Members from '../members';
10
+ import BreakoutRequest from './request';
11
+ import breakoutEvent from './events';
12
+ /**
13
+ * @class
14
+ */
15
+ const Breakout = WebexPlugin.extend({
16
+ idAttribute: 'sessionId',
17
+
18
+ namespace: MEETINGS,
19
+
20
+ breakoutRequest: BreakoutRequest,
21
+ props: {
22
+ active: ['boolean', false, false], // this session is active
23
+ allowed: ['boolean', false, false], // allowed to join this session
24
+ assigned: ['boolean', false, false], // assigned to this session, but not necessarily joined yet
25
+ assignedCurrent: ['boolean', false, false], // assigned AND current session
26
+ requested: ['boolean', false, false], // requested by the host to join this session
27
+ current: ['boolean', false, false], // the current joined session
28
+ name: 'string',
29
+ sessionId: 'string',
30
+ sessionType: 'string',
31
+ groupId: 'string',
32
+ url: 'string', // where to send requests to
33
+ requestedLastModifiedTime: 'string',
34
+ },
35
+
36
+ derived: {
37
+ isMain: {
38
+ cache: false, // fix issue: sometimes the derived will not change even if the deps changed
39
+ deps: ['sessionType'],
40
+ /**
41
+ * If the breakout has no name, assume it is the main session
42
+ * @returns {boolean}
43
+ */
44
+ fn() {
45
+ return this.sessionType === 'MAIN';
46
+ },
47
+ },
48
+ },
49
+ /**
50
+ * initializer for the Breakout class
51
+ * @returns {void}
52
+ */
53
+ initialize() {
54
+ // @ts-ignore
55
+ this.breakoutRequest = new BreakoutRequest({webex: this.webex});
56
+ this.breakoutRosterLocus = null;
57
+ },
58
+
59
+ /**
60
+ * Joins the breakout session
61
+ * @returns {Promise}
62
+ */
63
+ async join() {
64
+ const breakoutMoveId = uuid.v4();
65
+ const deviceUrl = this.webex.internal.device.url;
66
+ const {meetingId} = this.collection.parent;
67
+ const meeting = this.webex.meetings.getMeetingByType(_ID_, meetingId);
68
+ breakoutEvent.onBreakoutMoveRequest(
69
+ {currentSession: this, meeting, breakoutMoveId},
70
+ // @ts-ignore
71
+ this.webex.internal.newMetrics.submitClientEvent.bind(this.webex.internal.newMetrics)
72
+ );
73
+ const result = await this.request({
74
+ method: HTTP_VERBS.POST,
75
+ uri: `${this.url}/move`,
76
+ body: {
77
+ breakoutMoveId,
78
+ deviceUrl,
79
+ groupId: this.groupId,
80
+ sessionId: this.sessionId,
81
+ },
82
+ });
83
+ breakoutEvent.onBreakoutMoveResponse(
84
+ {currentSession: this, meeting, breakoutMoveId},
85
+ // @ts-ignore
86
+ this.webex.internal.newMetrics.submitClientEvent.bind(this.webex.internal.newMetrics)
87
+ );
88
+
89
+ return result;
90
+ },
91
+
92
+ /**
93
+ * Leaves the breakout session to return to the main session
94
+ * @returns {Promise}
95
+ * @throws {Error} if an attempt is made to leave the main session or if the main session cannot be found
96
+ */
97
+ leave() {
98
+ if (this.isMain) {
99
+ throw new Error('Cannot leave the main session');
100
+ }
101
+
102
+ const mainSession = this.parent.breakouts.filter((breakout) => breakout.isMain)[0];
103
+
104
+ if (!mainSession) {
105
+ throw new Error('Cannot leave, no main session found');
106
+ }
107
+
108
+ return mainSession.join();
109
+ },
110
+
111
+ /**
112
+ * Sends a help request for the current breakout
113
+ * @returns {Promise}
114
+ */
115
+ askForHelp() {
116
+ return this.request({
117
+ method: HTTP_VERBS.POST,
118
+ uri: `${this.url}/help`,
119
+ body: {
120
+ groupId: this.groupId,
121
+ sessionId: this.sessionId,
122
+ },
123
+ });
124
+ },
125
+
126
+ /**
127
+ * inits the members object
128
+ * @returns {void}
129
+ */
130
+ initMembers() {
131
+ const {meetingId} = this.collection.parent;
132
+ const meeting = this.webex.meetings.getMeetingByType(_ID_, meetingId);
133
+ this.members = new Members(
134
+ {
135
+ meeting,
136
+ },
137
+ {parent: this.webex}
138
+ );
139
+ },
140
+
141
+ /**
142
+ * check sequence and determine whether to update the new roster or not
143
+ * @param {Object} locus Locus object
144
+ * @returns {Boolean}
145
+ */
146
+ isNeedHandleRoster(locus: any) {
147
+ if (!this.breakoutRosterLocus?.sequence?.entries?.length || !locus?.sequence?.entries?.length) {
148
+ return true;
149
+ }
150
+ const prevSequence = this.breakoutRosterLocus.sequence.entries[0];
151
+ const currentSequence = locus.sequence.entries[0];
152
+
153
+ return currentSequence > prevSequence;
154
+ },
155
+ /**
156
+ * Parses the participants from the locus object
157
+ * @param {Object} locus Locus object
158
+ * @returns {void}
159
+ */
160
+ parseRoster(locus) {
161
+ if (!this.members) {
162
+ this.initMembers();
163
+ }
164
+ if (!this.isNeedHandleRoster(locus)) {
165
+ return;
166
+ }
167
+ this.breakoutRosterLocus = locus;
168
+ this.members.locusParticipantsUpdate(locus);
169
+ },
170
+
171
+ /**
172
+ * Broadcast message to this breakout session's participants
173
+ * @param {String} message
174
+ * @param {Object} options
175
+ * @returns {Promise}
176
+ */
177
+ broadcast(message, options) {
178
+ return this.breakoutRequest.broadcast({
179
+ url: this.url,
180
+ message,
181
+ options,
182
+ groupId: this.groupId,
183
+ sessionId: this.sessionId,
184
+ });
185
+ },
186
+ });
187
+
188
+ export default Breakout;
@@ -0,0 +1,19 @@
1
+ /*!
2
+ * Copyright (c) 2015-2023 Cisco Systems, Inc. See LICENSE file.
3
+ */
4
+
5
+ import AmpCollection from 'ampersand-collection';
6
+
7
+ import {MEETINGS} from '../constants';
8
+
9
+ import Breakout from './breakout';
10
+
11
+ const BreakoutCollection = AmpCollection.extend({
12
+ model: Breakout,
13
+
14
+ namespace: MEETINGS,
15
+
16
+ mainIndex: 'sessionId',
17
+ });
18
+
19
+ export default BreakoutCollection;
@@ -0,0 +1,25 @@
1
+ import {ERROR_DICTIONARY} from '../constants';
2
+
3
+ /**
4
+ * Extended Error object to signify breakout related errors
5
+ */
6
+ export default class BreakoutEditLockedError extends Error {
7
+ code: any;
8
+ error: any;
9
+ sdkMessage: any;
10
+
11
+ /**
12
+ *
13
+ * @constructor
14
+ * @param {String} [message]
15
+ * @param {Object} [error]
16
+ */
17
+ constructor(message: string = ERROR_DICTIONARY.BREAKOUT_EDIT.MESSAGE, error: any = null) {
18
+ super(message);
19
+ this.name = ERROR_DICTIONARY.BREAKOUT_EDIT.NAME;
20
+ this.sdkMessage = ERROR_DICTIONARY.BREAKOUT_EDIT.MESSAGE;
21
+ this.error = error;
22
+ this.stack = error ? error.stack : new Error().stack;
23
+ this.code = ERROR_DICTIONARY.BREAKOUT_EDIT.CODE;
24
+ }
25
+ }
@@ -0,0 +1,56 @@
1
+ // eslint-disable-next-line import/prefer-default-export
2
+ import {ClientEvent} from '@webex/internal-plugin-metrics';
3
+
4
+ const breakoutEvent: {
5
+ onBreakoutMoveRequest: (eventInfo: any, submitClientEvent: any) => void;
6
+ onBreakoutMoveResponse: (eventInfo: any, submitClientEvent: any) => void;
7
+ onBreakoutJoinResponse: (eventInfo: any, submitClientEvent: any) => void;
8
+ postMoveCallAnalyzer: (
9
+ event: ClientEvent['name'],
10
+ eventInfo: any,
11
+ submitClientEvent: any
12
+ ) => void;
13
+ } = {
14
+ onBreakoutMoveRequest: (eventInfo, submitClientEvent) => {
15
+ breakoutEvent.postMoveCallAnalyzer(
16
+ 'client.breakout-session.move.request',
17
+ eventInfo,
18
+ submitClientEvent
19
+ );
20
+ },
21
+ onBreakoutMoveResponse: (eventInfo, submitClientEvent) => {
22
+ breakoutEvent.postMoveCallAnalyzer(
23
+ 'client.breakout-session.move.response',
24
+ eventInfo,
25
+ submitClientEvent
26
+ );
27
+ },
28
+ onBreakoutJoinResponse: (eventInfo, submitClientEvent) => {
29
+ breakoutEvent.postMoveCallAnalyzer(
30
+ 'client.breakout-session.join.response',
31
+ eventInfo,
32
+ submitClientEvent
33
+ );
34
+ },
35
+ postMoveCallAnalyzer: (event: ClientEvent['name'], eventInfo: any, submitClientEvent) => {
36
+ if (!eventInfo?.breakoutMoveId || !eventInfo?.meeting) {
37
+ return;
38
+ }
39
+ if (!eventInfo.meeting.meetingInfo?.enableConvergedArchitecture) {
40
+ return;
41
+ }
42
+ submitClientEvent({
43
+ name: event,
44
+ payload: {
45
+ identifiers: {
46
+ breakoutMoveId: eventInfo.breakoutMoveId,
47
+ breakoutSessionId: eventInfo?.currentSession?.sessionId,
48
+ breakoutGroupId: eventInfo?.currentSession?.groupId,
49
+ },
50
+ },
51
+ options: {meetingId: eventInfo.meeting.id},
52
+ });
53
+ },
54
+ };
55
+
56
+ export default breakoutEvent;