@webex/plugin-meetings 2.59.8-next.2 → 2.60.0-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 (433) hide show
  1. package/README.md +46 -8
  2. package/dist/annotation/annotation.types.js +7 -0
  3. package/dist/annotation/annotation.types.js.map +1 -0
  4. package/dist/annotation/constants.js +41 -0
  5. package/dist/annotation/constants.js.map +1 -0
  6. package/dist/annotation/index.js +357 -0
  7. package/dist/annotation/index.js.map +1 -0
  8. package/dist/breakouts/breakout.js +215 -0
  9. package/dist/breakouts/breakout.js.map +1 -0
  10. package/dist/breakouts/collection.js +22 -0
  11. package/dist/breakouts/collection.js.map +1 -0
  12. package/dist/breakouts/edit-lock-error.js +51 -0
  13. package/dist/breakouts/edit-lock-error.js.map +1 -0
  14. package/dist/breakouts/events.js +44 -0
  15. package/dist/breakouts/events.js.map +1 -0
  16. package/dist/breakouts/index.js +1047 -0
  17. package/dist/breakouts/index.js.map +1 -0
  18. package/dist/breakouts/request.js +77 -0
  19. package/dist/breakouts/request.js.map +1 -0
  20. package/dist/breakouts/utils.js +64 -0
  21. package/dist/breakouts/utils.js.map +1 -0
  22. package/dist/common/browser-detection.js +1 -2
  23. package/dist/common/browser-detection.js.map +1 -1
  24. package/dist/common/collection.js +1 -2
  25. package/dist/common/collection.js.map +1 -1
  26. package/dist/common/config.js +1 -2
  27. package/dist/common/config.js.map +1 -1
  28. package/dist/common/errors/captcha-error.js +1 -2
  29. package/dist/common/errors/captcha-error.js.map +1 -1
  30. package/dist/common/errors/intent-to-join.js +1 -2
  31. package/dist/common/errors/intent-to-join.js.map +1 -1
  32. package/dist/common/errors/join-meeting.js +1 -2
  33. package/dist/common/errors/join-meeting.js.map +1 -1
  34. package/dist/common/errors/media.js +1 -2
  35. package/dist/common/errors/media.js.map +1 -1
  36. package/dist/common/errors/no-meeting-info.js +50 -0
  37. package/dist/common/errors/no-meeting-info.js.map +1 -0
  38. package/dist/common/errors/parameter.js +3 -4
  39. package/dist/common/errors/parameter.js.map +1 -1
  40. package/dist/common/errors/password-error.js +1 -2
  41. package/dist/common/errors/password-error.js.map +1 -1
  42. package/dist/common/errors/permission.js +1 -2
  43. package/dist/common/errors/permission.js.map +1 -1
  44. package/dist/common/errors/reclaim-host-role-errors.js +154 -0
  45. package/dist/common/errors/reclaim-host-role-errors.js.map +1 -0
  46. package/dist/common/errors/reconnection-in-progress.js +1 -2
  47. package/dist/common/errors/reconnection-in-progress.js.map +1 -1
  48. package/dist/common/errors/reconnection.js +1 -2
  49. package/dist/common/errors/reconnection.js.map +1 -1
  50. package/dist/common/errors/stats.js +1 -2
  51. package/dist/common/errors/stats.js.map +1 -1
  52. package/dist/common/errors/webex-errors.js +48 -28
  53. package/dist/common/errors/webex-errors.js.map +1 -1
  54. package/dist/common/errors/webex-meetings-error.js +1 -2
  55. package/dist/common/errors/webex-meetings-error.js.map +1 -1
  56. package/dist/common/events/events-scope.js +1 -2
  57. package/dist/common/events/events-scope.js.map +1 -1
  58. package/dist/common/events/events.js +1 -2
  59. package/dist/common/events/events.js.map +1 -1
  60. package/dist/common/events/trigger-proxy.js +1 -2
  61. package/dist/common/events/trigger-proxy.js.map +1 -1
  62. package/dist/common/events/util.js +1 -2
  63. package/dist/common/events/util.js.map +1 -1
  64. package/dist/common/logs/logger-config.js +1 -2
  65. package/dist/common/logs/logger-config.js.map +1 -1
  66. package/dist/common/logs/logger-proxy.js +2 -3
  67. package/dist/common/logs/logger-proxy.js.map +1 -1
  68. package/dist/common/logs/request.js +8 -5
  69. package/dist/common/logs/request.js.map +1 -1
  70. package/dist/common/queue.js +22 -9
  71. package/dist/common/queue.js.map +1 -1
  72. package/dist/config.js +9 -12
  73. package/dist/config.js.map +1 -1
  74. package/dist/constants.js +437 -433
  75. package/dist/constants.js.map +1 -1
  76. package/dist/controls-options-manager/constants.js +3 -6
  77. package/dist/controls-options-manager/constants.js.map +1 -1
  78. package/dist/controls-options-manager/enums.js +14 -6
  79. package/dist/controls-options-manager/enums.js.map +1 -1
  80. package/dist/controls-options-manager/index.js +126 -37
  81. package/dist/controls-options-manager/index.js.map +1 -1
  82. package/dist/controls-options-manager/types.js +7 -0
  83. package/dist/controls-options-manager/types.js.map +1 -0
  84. package/dist/controls-options-manager/util.js +309 -19
  85. package/dist/controls-options-manager/util.js.map +1 -1
  86. package/dist/index.js +116 -4
  87. package/dist/index.js.map +1 -1
  88. package/dist/interpretation/collection.js +22 -0
  89. package/dist/interpretation/collection.js.map +1 -0
  90. package/dist/interpretation/index.js +365 -0
  91. package/dist/interpretation/index.js.map +1 -0
  92. package/dist/interpretation/siLanguage.js +24 -0
  93. package/dist/interpretation/siLanguage.js.map +1 -0
  94. package/dist/locus-info/controlsUtils.js +95 -6
  95. package/dist/locus-info/controlsUtils.js.map +1 -1
  96. package/dist/locus-info/embeddedAppsUtils.js +3 -4
  97. package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
  98. package/dist/locus-info/fullState.js +1 -2
  99. package/dist/locus-info/fullState.js.map +1 -1
  100. package/dist/locus-info/hostUtils.js +1 -2
  101. package/dist/locus-info/hostUtils.js.map +1 -1
  102. package/dist/locus-info/index.js +408 -67
  103. package/dist/locus-info/index.js.map +1 -1
  104. package/dist/locus-info/infoUtils.js +13 -5
  105. package/dist/locus-info/infoUtils.js.map +1 -1
  106. package/dist/locus-info/mediaSharesUtils.js +58 -3
  107. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  108. package/dist/locus-info/parser.js +251 -78
  109. package/dist/locus-info/parser.js.map +1 -1
  110. package/dist/locus-info/selfUtils.js +97 -13
  111. package/dist/locus-info/selfUtils.js.map +1 -1
  112. package/dist/media/index.js +106 -319
  113. package/dist/media/index.js.map +1 -1
  114. package/dist/media/properties.js +96 -153
  115. package/dist/media/properties.js.map +1 -1
  116. package/dist/media/util.js +1 -22
  117. package/dist/media/util.js.map +1 -1
  118. package/dist/mediaQualityMetrics/config.js +498 -493
  119. package/dist/mediaQualityMetrics/config.js.map +1 -1
  120. package/dist/meeting/in-meeting-actions.js +90 -3
  121. package/dist/meeting/in-meeting-actions.js.map +1 -1
  122. package/dist/meeting/index.js +4579 -2951
  123. package/dist/meeting/index.js.map +1 -1
  124. package/dist/meeting/locusMediaRequest.js +291 -0
  125. package/dist/meeting/locusMediaRequest.js.map +1 -0
  126. package/dist/meeting/muteState.js +224 -133
  127. package/dist/meeting/muteState.js.map +1 -1
  128. package/dist/meeting/request.js +295 -197
  129. package/dist/meeting/request.js.map +1 -1
  130. package/dist/meeting/request.type.js +7 -0
  131. package/dist/meeting/request.type.js.map +1 -0
  132. package/dist/meeting/state.js +1 -2
  133. package/dist/meeting/state.js.map +1 -1
  134. package/dist/meeting/util.js +602 -432
  135. package/dist/meeting/util.js.map +1 -1
  136. package/dist/meeting-info/collection.js +1 -2
  137. package/dist/meeting-info/collection.js.map +1 -1
  138. package/dist/meeting-info/index.js +74 -7
  139. package/dist/meeting-info/index.js.map +1 -1
  140. package/dist/meeting-info/meeting-info-v2.js +197 -63
  141. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  142. package/dist/meeting-info/request.js +1 -2
  143. package/dist/meeting-info/request.js.map +1 -1
  144. package/dist/meeting-info/util.js +2 -3
  145. package/dist/meeting-info/util.js.map +1 -1
  146. package/dist/meeting-info/utilv2.js +25 -12
  147. package/dist/meeting-info/utilv2.js.map +1 -1
  148. package/dist/meetings/collection.js +23 -2
  149. package/dist/meetings/collection.js.map +1 -1
  150. package/dist/meetings/index.js +464 -123
  151. package/dist/meetings/index.js.map +1 -1
  152. package/dist/meetings/meetings.types.js +7 -0
  153. package/dist/meetings/meetings.types.js.map +1 -0
  154. package/dist/meetings/request.js +4 -3
  155. package/dist/meetings/request.js.map +1 -1
  156. package/dist/meetings/util.js +107 -6
  157. package/dist/meetings/util.js.map +1 -1
  158. package/dist/member/index.js +54 -2
  159. package/dist/member/index.js.map +1 -1
  160. package/dist/member/member.types.js +3 -4
  161. package/dist/member/member.types.js.map +1 -1
  162. package/dist/member/types.js +23 -0
  163. package/dist/member/types.js.map +1 -0
  164. package/dist/member/util.js +131 -29
  165. package/dist/member/util.js.map +1 -1
  166. package/dist/members/collection.js +11 -2
  167. package/dist/members/collection.js.map +1 -1
  168. package/dist/members/index.js +172 -8
  169. package/dist/members/index.js.map +1 -1
  170. package/dist/members/request.js +108 -41
  171. package/dist/members/request.js.map +1 -1
  172. package/dist/members/types.js +14 -0
  173. package/dist/members/types.js.map +1 -0
  174. package/dist/members/util.js +327 -234
  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 +4 -452
  179. package/dist/metrics/index.js.map +1 -1
  180. package/dist/multistream/mediaRequestManager.js +344 -0
  181. package/dist/multistream/mediaRequestManager.js.map +1 -0
  182. package/dist/multistream/receiveSlot.js +200 -0
  183. package/dist/multistream/receiveSlot.js.map +1 -0
  184. package/dist/multistream/receiveSlotManager.js +174 -0
  185. package/dist/multistream/receiveSlotManager.js.map +1 -0
  186. package/dist/multistream/remoteMedia.js +268 -0
  187. package/dist/multistream/remoteMedia.js.map +1 -0
  188. package/dist/multistream/remoteMediaGroup.js +267 -0
  189. package/dist/multistream/remoteMediaGroup.js.map +1 -0
  190. package/dist/multistream/remoteMediaManager.js +1211 -0
  191. package/dist/multistream/remoteMediaManager.js.map +1 -0
  192. package/dist/multistream/sendSlotManager.js +236 -0
  193. package/dist/multistream/sendSlotManager.js.map +1 -0
  194. package/dist/networkQualityMonitor/index.js +5 -4
  195. package/dist/networkQualityMonitor/index.js.map +1 -1
  196. package/dist/personal-meeting-room/index.js +2 -3
  197. package/dist/personal-meeting-room/index.js.map +1 -1
  198. package/dist/personal-meeting-room/request.js +2 -3
  199. package/dist/personal-meeting-room/request.js.map +1 -1
  200. package/dist/personal-meeting-room/util.js +1 -2
  201. package/dist/personal-meeting-room/util.js.map +1 -1
  202. package/dist/reachability/index.js +258 -72
  203. package/dist/reachability/index.js.map +1 -1
  204. package/dist/reachability/request.js +18 -10
  205. package/dist/reachability/request.js.map +1 -1
  206. package/dist/reactions/constants.js +12 -0
  207. package/dist/reactions/constants.js.map +1 -0
  208. package/dist/reactions/reactions.js +4 -6
  209. package/dist/reactions/reactions.js.map +1 -1
  210. package/dist/reactions/reactions.type.js +21 -23
  211. package/dist/reactions/reactions.type.js.map +1 -1
  212. package/dist/reconnection-manager/index.js +272 -220
  213. package/dist/reconnection-manager/index.js.map +1 -1
  214. package/dist/recording-controller/enums.js +4 -5
  215. package/dist/recording-controller/enums.js.map +1 -1
  216. package/dist/recording-controller/index.js +57 -46
  217. package/dist/recording-controller/index.js.map +1 -1
  218. package/dist/recording-controller/util.js +10 -10
  219. package/dist/recording-controller/util.js.map +1 -1
  220. package/dist/roap/index.js +101 -235
  221. package/dist/roap/index.js.map +1 -1
  222. package/dist/roap/request.js +126 -180
  223. package/dist/roap/request.js.map +1 -1
  224. package/dist/roap/turnDiscovery.js +115 -105
  225. package/dist/roap/turnDiscovery.js.map +1 -1
  226. package/dist/rtcMetrics/constants.js +11 -0
  227. package/dist/rtcMetrics/constants.js.map +1 -0
  228. package/dist/rtcMetrics/index.js +115 -0
  229. package/dist/rtcMetrics/index.js.map +1 -0
  230. package/dist/statsAnalyzer/global.js +2 -93
  231. package/dist/statsAnalyzer/global.js.map +1 -1
  232. package/dist/statsAnalyzer/index.js +374 -374
  233. package/dist/statsAnalyzer/index.js.map +1 -1
  234. package/dist/statsAnalyzer/mqaUtil.js +100 -66
  235. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  236. package/dist/transcription/index.js +1 -2
  237. package/dist/transcription/index.js.map +1 -1
  238. package/dist/webinar/collection.js +43 -0
  239. package/dist/webinar/collection.js.map +1 -0
  240. package/dist/webinar/index.js +68 -0
  241. package/dist/webinar/index.js.map +1 -0
  242. package/package.json +27 -18
  243. package/src/annotation/annotation.types.ts +50 -0
  244. package/src/annotation/constants.ts +36 -0
  245. package/src/annotation/index.ts +328 -0
  246. package/src/breakouts/README.md +220 -0
  247. package/src/breakouts/breakout.ts +188 -0
  248. package/src/breakouts/collection.ts +19 -0
  249. package/src/breakouts/edit-lock-error.ts +25 -0
  250. package/src/breakouts/events.ts +56 -0
  251. package/src/breakouts/index.ts +925 -0
  252. package/src/breakouts/request.ts +55 -0
  253. package/src/breakouts/utils.ts +57 -0
  254. package/src/common/errors/no-meeting-info.ts +24 -0
  255. package/src/common/errors/reclaim-host-role-errors.ts +134 -0
  256. package/src/common/errors/webex-errors.ts +36 -12
  257. package/src/common/logs/logger-proxy.ts +1 -1
  258. package/src/common/logs/request.ts +5 -1
  259. package/src/common/queue.ts +22 -8
  260. package/src/config.ts +7 -9
  261. package/src/constants.ts +263 -89
  262. package/src/controls-options-manager/enums.ts +11 -1
  263. package/src/controls-options-manager/index.ts +116 -21
  264. package/src/controls-options-manager/types.ts +59 -0
  265. package/src/controls-options-manager/util.ts +294 -14
  266. package/src/index.ts +40 -0
  267. package/src/interpretation/README.md +60 -0
  268. package/src/interpretation/collection.ts +19 -0
  269. package/src/interpretation/index.ts +332 -0
  270. package/src/interpretation/siLanguage.ts +18 -0
  271. package/src/locus-info/controlsUtils.ts +110 -0
  272. package/src/locus-info/index.ts +449 -61
  273. package/src/locus-info/infoUtils.ts +14 -2
  274. package/src/locus-info/mediaSharesUtils.ts +64 -0
  275. package/src/locus-info/parser.ts +258 -47
  276. package/src/locus-info/selfUtils.ts +85 -2
  277. package/src/media/index.ts +153 -370
  278. package/src/media/properties.ts +106 -136
  279. package/src/media/util.ts +0 -21
  280. package/src/mediaQualityMetrics/config.ts +379 -377
  281. package/src/meeting/in-meeting-actions.ts +168 -0
  282. package/src/meeting/index.ts +3801 -2457
  283. package/src/meeting/locusMediaRequest.ts +313 -0
  284. package/src/meeting/muteState.ts +224 -138
  285. package/src/meeting/request.ts +207 -127
  286. package/src/meeting/request.type.ts +13 -0
  287. package/src/meeting/util.ts +590 -423
  288. package/src/meeting-info/index.ts +81 -8
  289. package/src/meeting-info/meeting-info-v2.ts +159 -13
  290. package/src/meeting-info/util.ts +1 -1
  291. package/src/meeting-info/utilv2.ts +22 -9
  292. package/src/meetings/collection.ts +20 -0
  293. package/src/meetings/index.ts +466 -124
  294. package/src/meetings/meetings.types.ts +12 -0
  295. package/src/meetings/request.ts +2 -0
  296. package/src/meetings/util.ts +116 -5
  297. package/src/member/index.ts +52 -1
  298. package/src/member/types.ts +38 -0
  299. package/src/member/util.ts +139 -28
  300. package/src/members/collection.ts +8 -0
  301. package/src/members/index.ts +196 -7
  302. package/src/members/request.ts +97 -17
  303. package/src/members/types.ts +29 -0
  304. package/src/members/util.ts +333 -240
  305. package/src/metrics/constants.ts +12 -4
  306. package/src/metrics/index.ts +1 -471
  307. package/src/multistream/mediaRequestManager.ts +440 -0
  308. package/src/multistream/receiveSlot.ts +184 -0
  309. package/src/multistream/receiveSlotManager.ts +166 -0
  310. package/src/multistream/remoteMedia.ts +254 -0
  311. package/src/multistream/remoteMediaGroup.ts +284 -0
  312. package/src/multistream/remoteMediaManager.ts +1145 -0
  313. package/src/multistream/sendSlotManager.ts +170 -0
  314. package/src/networkQualityMonitor/index.ts +6 -6
  315. package/src/reachability/index.ts +238 -45
  316. package/src/reachability/request.ts +17 -8
  317. package/src/reactions/constants.ts +4 -0
  318. package/src/reactions/reactions.ts +4 -4
  319. package/src/reactions/reactions.type.ts +30 -4
  320. package/src/reconnection-manager/index.ts +124 -107
  321. package/src/recording-controller/index.ts +20 -3
  322. package/src/recording-controller/util.ts +26 -9
  323. package/src/roap/index.ts +98 -240
  324. package/src/roap/request.ts +74 -148
  325. package/src/roap/turnDiscovery.ts +62 -56
  326. package/src/rtcMetrics/constants.ts +3 -0
  327. package/src/rtcMetrics/index.ts +100 -0
  328. package/src/statsAnalyzer/global.ts +1 -92
  329. package/src/statsAnalyzer/index.ts +429 -447
  330. package/src/statsAnalyzer/mqaUtil.ts +105 -103
  331. package/src/webinar/collection.ts +31 -0
  332. package/src/webinar/index.ts +62 -0
  333. package/test/integration/spec/converged-space-meetings.js +233 -0
  334. package/test/integration/spec/journey.js +320 -264
  335. package/test/integration/spec/space-meeting.js +77 -4
  336. package/test/unit/spec/annotation/index.ts +418 -0
  337. package/test/unit/spec/breakouts/breakout.ts +237 -0
  338. package/test/unit/spec/breakouts/collection.ts +15 -0
  339. package/test/unit/spec/breakouts/edit-lock-error.ts +30 -0
  340. package/test/unit/spec/breakouts/events.ts +89 -0
  341. package/test/unit/spec/breakouts/index.ts +1790 -0
  342. package/test/unit/spec/breakouts/request.ts +104 -0
  343. package/test/unit/spec/breakouts/utils.js +72 -0
  344. package/test/unit/spec/common/queue.js +31 -2
  345. package/test/unit/spec/controls-options-manager/index.js +163 -0
  346. package/test/unit/spec/controls-options-manager/util.js +576 -60
  347. package/test/unit/spec/fixture/locus.js +1 -0
  348. package/test/unit/spec/interpretation/collection.ts +15 -0
  349. package/test/unit/spec/interpretation/index.ts +589 -0
  350. package/test/unit/spec/interpretation/siLanguage.ts +28 -0
  351. package/test/unit/spec/locus-info/controlsUtils.js +323 -30
  352. package/test/unit/spec/locus-info/index.js +1390 -16
  353. package/test/unit/spec/locus-info/infoUtils.js +54 -16
  354. package/test/unit/spec/locus-info/lib/SeqCmp.json +16 -0
  355. package/test/unit/spec/locus-info/lib/selfConstant.js +48 -0
  356. package/test/unit/spec/locus-info/mediaSharesUtils.ts +32 -0
  357. package/test/unit/spec/locus-info/parser.js +116 -35
  358. package/test/unit/spec/locus-info/selfUtils.js +275 -0
  359. package/test/unit/spec/media/index.ts +274 -0
  360. package/test/unit/spec/media/properties.ts +75 -84
  361. package/test/unit/spec/meeting/in-meeting-actions.ts +82 -0
  362. package/test/unit/spec/meeting/index.js +7420 -3125
  363. package/test/unit/spec/meeting/locusMediaRequest.ts +442 -0
  364. package/test/unit/spec/meeting/muteState.js +407 -212
  365. package/test/unit/spec/meeting/request.js +512 -42
  366. package/test/unit/spec/meeting/utils.js +741 -24
  367. package/test/unit/spec/meeting-info/index.js +300 -0
  368. package/test/unit/spec/meeting-info/meetinginfov2.js +500 -6
  369. package/test/unit/spec/meeting-info/utilv2.js +21 -0
  370. package/test/unit/spec/meetings/collection.js +14 -0
  371. package/test/unit/spec/meetings/index.js +1012 -209
  372. package/test/unit/spec/meetings/utils.js +202 -2
  373. package/test/unit/spec/member/index.js +38 -8
  374. package/test/unit/spec/member/util.js +528 -27
  375. package/test/unit/spec/members/index.js +597 -3
  376. package/test/unit/spec/members/request.js +206 -27
  377. package/test/unit/spec/members/utils.js +210 -0
  378. package/test/unit/spec/metrics/index.js +1 -50
  379. package/test/unit/spec/multistream/mediaRequestManager.ts +1418 -0
  380. package/test/unit/spec/multistream/receiveSlot.ts +163 -0
  381. package/test/unit/spec/multistream/receiveSlotManager.ts +203 -0
  382. package/test/unit/spec/multistream/remoteMedia.ts +255 -0
  383. package/test/unit/spec/multistream/remoteMediaGroup.ts +662 -0
  384. package/test/unit/spec/multistream/remoteMediaManager.ts +1924 -0
  385. package/test/unit/spec/multistream/sendSlotManager.ts +242 -0
  386. package/test/unit/spec/networkQualityMonitor/index.js +4 -4
  387. package/test/unit/spec/reachability/index.ts +598 -24
  388. package/test/unit/spec/reachability/request.js +68 -0
  389. package/test/unit/spec/reconnection-manager/index.js +130 -22
  390. package/test/unit/spec/recording-controller/index.js +293 -218
  391. package/test/unit/spec/recording-controller/util.js +223 -96
  392. package/test/unit/spec/roap/index.ts +200 -77
  393. package/test/unit/spec/roap/request.ts +232 -0
  394. package/test/unit/spec/roap/turnDiscovery.ts +86 -48
  395. package/test/unit/spec/rtcMetrics/index.ts +73 -0
  396. package/test/unit/spec/stats-analyzer/index.js +205 -50
  397. package/test/unit/spec/webinar/collection.ts +13 -0
  398. package/test/unit/spec/webinar/index.ts +60 -0
  399. package/test/utils/constants.js +9 -0
  400. package/test/utils/integrationTestUtils.js +46 -0
  401. package/test/utils/testUtils.js +0 -45
  402. package/test/utils/webex-config.js +4 -0
  403. package/test/utils/webex-test-users.js +7 -3
  404. package/dist/meeting/effectsState.js +0 -260
  405. package/dist/meeting/effectsState.js.map +0 -1
  406. package/dist/metrics/config.js +0 -289
  407. package/dist/metrics/config.js.map +0 -1
  408. package/dist/peer-connection-manager/index.js +0 -671
  409. package/dist/peer-connection-manager/index.js.map +0 -1
  410. package/dist/peer-connection-manager/util.js +0 -110
  411. package/dist/peer-connection-manager/util.js.map +0 -1
  412. package/dist/roap/collection.js +0 -63
  413. package/dist/roap/collection.js.map +0 -1
  414. package/dist/roap/handler.js +0 -279
  415. package/dist/roap/handler.js.map +0 -1
  416. package/dist/roap/state.js +0 -127
  417. package/dist/roap/state.js.map +0 -1
  418. package/dist/roap/util.js +0 -76
  419. package/dist/roap/util.js.map +0 -1
  420. package/src/index.js +0 -15
  421. package/src/meeting/effectsState.ts +0 -209
  422. package/src/metrics/config.ts +0 -485
  423. package/src/peer-connection-manager/index.ts +0 -847
  424. package/src/peer-connection-manager/util.ts +0 -119
  425. package/src/roap/collection.ts +0 -62
  426. package/src/roap/handler.ts +0 -294
  427. package/src/roap/state.ts +0 -156
  428. package/src/roap/util.ts +0 -100
  429. package/test/unit/spec/meeting/effectsState.js +0 -281
  430. package/test/unit/spec/peerconnection-manager/index.js +0 -218
  431. package/test/unit/spec/peerconnection-manager/utils.js +0 -49
  432. package/test/unit/spec/peerconnection-manager/utils.test-fixtures.ts +0 -388
  433. package/test/unit/spec/roap/util.js +0 -30
@@ -1,50 +1,551 @@
1
1
  import {assert} from '@webex/test-helper-chai';
2
-
3
2
  import MemberUtil from '@webex/plugin-meetings/src/member/util';
3
+ import {ServerRoles} from '../../../../src/member/types';
4
+ import {_SEND_RECEIVE_, _RECEIVE_ONLY_} from '../../../../src/constants';
4
5
 
5
- describe('isHandRaised', () => {
6
- it('throws error when there is no participant', () => {
7
- assert.throws(() => {
8
- MemberUtil.isHandRaised();
9
- }, 'Raise hand could not be processed, participant is undefined.');
6
+ describe('plugin-meetings', () => {
7
+ describe('isHandRaised', () => {
8
+ it('throws error when there is no participant', () => {
9
+ assert.throws(() => {
10
+ MemberUtil.isHandRaised();
11
+ }, 'Raise hand could not be processed, participant is undefined.');
12
+ });
13
+
14
+ it('returns false when controls is not there', () => {
15
+ const participant = {};
16
+
17
+ assert.isFalse(MemberUtil.isHandRaised(participant));
18
+ });
19
+
20
+ it('returns false when hand is not there in controls', () => {
21
+ const participant = {
22
+ controls: {},
23
+ };
24
+
25
+ assert.isFalse(MemberUtil.isHandRaised(participant));
26
+ });
27
+
28
+ it('returns true when hand raised is true', () => {
29
+ const participant = {
30
+ controls: {
31
+ hand: {
32
+ raised: true,
33
+ },
34
+ },
35
+ };
36
+
37
+ assert.isTrue(MemberUtil.isHandRaised(participant));
38
+ });
39
+
40
+ it('returns false when hand raised is false', () => {
41
+ const participant = {
42
+ controls: {
43
+ hand: {
44
+ raised: false,
45
+ },
46
+ },
47
+ };
48
+
49
+ assert.isFalse(MemberUtil.isHandRaised(participant));
50
+ });
51
+ });
52
+
53
+ describe('MemberUtil.canReclaimHost', () => {
54
+ it('throws error when there is no participant', () => {
55
+ assert.throws(() => {
56
+ MemberUtil.canReclaimHost();
57
+ }, 'canReclaimHostRole could not be processed, participant is undefined.');
58
+ });
59
+
60
+ it('returns true when canReclaimHostRole is true', () => {
61
+ const participant = {
62
+ canReclaimHostRole: true,
63
+ };
64
+
65
+ assert.isTrue(MemberUtil.canReclaimHost(participant));
66
+ });
67
+
68
+ it('returns false when canReclaimHostRole is false', () => {
69
+ const participant = {
70
+ canReclaimHostRole: false,
71
+ };
72
+
73
+ assert.isFalse(MemberUtil.canReclaimHost(participant));
74
+ });
75
+
76
+ it('returns false when canReclaimHostRole is falsy', () => {
77
+ const participant = {
78
+ canReclaimHostRole: undefined,
79
+ };
80
+
81
+ assert.isFalse(MemberUtil.canReclaimHost(participant));
82
+ });
10
83
  });
11
84
 
12
- it('returns false when controls is not there', () => {
13
- const participant = {};
85
+ describe('MemberUtil.extractControlRoles', () => {
86
+ it('happy path extract control roles', () => {
87
+ const participant = {
88
+ controls: {
89
+ role: {
90
+ roles: [
91
+ {type: 'PRESENTER', hasRole: true},
92
+ {type: 'COHOST', hasRole: true},
93
+ {type: 'MODERATOR', hasRole: true},
94
+ ],
95
+ },
96
+ },
97
+ };
14
98
 
15
- assert.isFalse(MemberUtil.isHandRaised(participant));
99
+ assert.deepEqual(MemberUtil.extractControlRoles(participant), {
100
+ cohost: true,
101
+ moderator: true,
102
+ presenter: true,
103
+ });
104
+ });
16
105
  });
17
106
 
18
- it('returns false when hand is not there in controls', () => {
19
- const participant = {
20
- controls: {},
107
+ describe('MemberUtil.getControlsRoles', () => {
108
+ it('getControlsRoles', () => {
109
+ const participant = {
110
+ controls: {
111
+ role: {
112
+ roles: [{type: 'PRESENTER', hasRole: true}],
113
+ },
114
+ },
115
+ };
116
+
117
+ assert.deepEqual(MemberUtil.getControlsRoles(participant), [
118
+ {type: 'PRESENTER', hasRole: true},
119
+ ]);
120
+ });
121
+ });
122
+
123
+ describe('MemberUtil.hasRole', () => {
124
+ describe('PRESENTER', () => {
125
+ it('getControlsRoles PRESENTER true', () => {
126
+ const participant = {
127
+ controls: {
128
+ role: {
129
+ roles: [{type: 'PRESENTER', hasRole: true}],
130
+ },
131
+ },
132
+ };
133
+
134
+ assert.isTrue(MemberUtil.hasRole(participant, ServerRoles.Presenter));
135
+ });
136
+
137
+ it('getControlsRoles PRESENTER false', () => {
138
+ const participant = {
139
+ controls: {
140
+ role: {
141
+ roles: [{type: 'PRESENTER', hasRole: false}],
142
+ },
143
+ },
144
+ };
145
+
146
+ assert.isFalse(MemberUtil.hasRole(participant, ServerRoles.Presenter));
147
+ });
148
+
149
+ it('getControlsRoles PRESENTER undefined', () => {
150
+ const participant = {
151
+ controls: {
152
+ role: {
153
+ roles: [{}],
154
+ },
155
+ },
156
+ };
157
+
158
+ assert.isFalse(MemberUtil.hasRole(participant, ServerRoles.Presenter));
159
+ });
160
+ });
161
+
162
+ describe('MODERATOR', () => {
163
+ it('getControlsRoles MODERATOR true', () => {
164
+ const participant = {
165
+ controls: {
166
+ role: {
167
+ roles: [{type: 'MODERATOR', hasRole: true}],
168
+ },
169
+ },
170
+ };
171
+
172
+ assert.isTrue(MemberUtil.hasRole(participant, ServerRoles.Moderator));
173
+ });
174
+
175
+ it('getControlsRoles MODERATOR false', () => {
176
+ const participant = {
177
+ controls: {
178
+ role: {
179
+ roles: [{type: 'MODERATOR', hasRole: false}],
180
+ },
181
+ },
182
+ };
183
+
184
+ assert.isFalse(MemberUtil.hasRole(participant, ServerRoles.Moderator));
185
+ });
186
+
187
+ it('getControlsRoles MODERATOR undefined', () => {
188
+ const participant = {
189
+ controls: {
190
+ role: {
191
+ roles: [{}],
192
+ },
193
+ },
194
+ };
195
+
196
+ assert.isFalse(MemberUtil.hasRole(participant, ServerRoles.Moderator));
197
+ });
198
+ });
199
+
200
+ describe('COHOST', () => {
201
+ it('getControlsRoles COHOST true', () => {
202
+ const participant = {
203
+ controls: {
204
+ role: {
205
+ roles: [{type: 'COHOST', hasRole: true}],
206
+ },
207
+ },
208
+ };
209
+
210
+ assert.isTrue(MemberUtil.hasRole(participant, ServerRoles.Cohost));
211
+ });
212
+
213
+ it('getControlsRoles COHOST false', () => {
214
+ const participant = {
215
+ controls: {
216
+ role: {
217
+ roles: [{type: 'COHOST', hasRole: false}],
218
+ },
219
+ },
220
+ };
221
+
222
+ assert.isFalse(MemberUtil.hasRole(participant, ServerRoles.Cohost));
223
+ });
224
+
225
+ it('getControlsRoles COHOST undefined', () => {
226
+ const participant = {
227
+ controls: {
228
+ role: {
229
+ roles: [{}],
230
+ },
231
+ },
232
+ };
233
+
234
+ assert.isFalse(MemberUtil.hasRole(participant, ServerRoles.Cohost));
235
+ });
236
+ });
237
+ });
238
+
239
+ describe('MemberUtil.is<Role>', () => {
240
+ describe('PRESENTER', () => {
241
+ it('getControlsRoles PRESENTER true', () => {
242
+ const participant = {
243
+ controls: {
244
+ role: {
245
+ roles: [{type: 'PRESENTER', hasRole: true}],
246
+ },
247
+ },
248
+ };
249
+
250
+ assert.isTrue(MemberUtil.hasPresenter(participant, ServerRoles.Presenter));
251
+ });
252
+
253
+ it('getControlsRoles PRESENTER false', () => {
254
+ const participant = {
255
+ controls: {
256
+ role: {
257
+ roles: [{type: 'PRESENTER', hasRole: false}],
258
+ },
259
+ },
260
+ };
261
+
262
+ assert.isFalse(MemberUtil.hasPresenter(participant));
263
+ });
264
+
265
+ it('getControlsRoles PRESENTER undefined', () => {
266
+ const participant = {
267
+ controls: {
268
+ role: {
269
+ roles: [{}],
270
+ },
271
+ },
272
+ };
273
+
274
+ assert.isFalse(MemberUtil.hasPresenter(participant));
275
+ });
276
+ });
277
+
278
+ describe('MODERATOR', () => {
279
+ it('getControlsRoles MODERATOR true', () => {
280
+ const participant = {
281
+ controls: {
282
+ role: {
283
+ roles: [{type: 'MODERATOR', hasRole: true}],
284
+ },
285
+ },
286
+ };
287
+
288
+ assert.isTrue(MemberUtil.hasModerator(participant));
289
+ });
290
+
291
+ it('getControlsRoles MODERATOR false', () => {
292
+ const participant = {
293
+ controls: {
294
+ role: {
295
+ roles: [{type: 'MODERATOR', hasRole: false}],
296
+ },
297
+ },
298
+ };
299
+
300
+ assert.isFalse(MemberUtil.hasModerator(participant));
301
+ });
302
+
303
+ it('getControlsRoles MODERATOR undefined', () => {
304
+ const participant = {
305
+ controls: {
306
+ role: {
307
+ roles: [{}],
308
+ },
309
+ },
310
+ };
311
+
312
+ assert.isFalse(MemberUtil.hasModerator(participant));
313
+ });
314
+ });
315
+
316
+ describe('COHOST', () => {
317
+ it('getControlsRoles COHOST true', () => {
318
+ const participant = {
319
+ controls: {
320
+ role: {
321
+ roles: [{type: 'COHOST', hasRole: true}],
322
+ },
323
+ },
324
+ };
325
+
326
+ assert.isTrue(MemberUtil.hasCohost(participant));
327
+ });
328
+
329
+ it('getControlsRoles COHOST false', () => {
330
+ const participant = {
331
+ controls: {
332
+ role: {
333
+ roles: [{type: 'COHOST', hasRole: false}],
334
+ },
335
+ },
336
+ };
337
+
338
+ assert.isFalse(MemberUtil.hasCohost(participant));
339
+ });
340
+
341
+ it('getControlsRoles COHOST undefined', () => {
342
+ const participant = {
343
+ controls: {
344
+ role: {
345
+ roles: [{}],
346
+ },
347
+ },
348
+ };
349
+
350
+ assert.isFalse(MemberUtil.hasCohost(participant));
351
+ });
352
+ });
353
+ });
354
+
355
+ describe('MemberUtil.isBreakoutsSupported', () => {
356
+ it('throws error when there is no participant', () => {
357
+ assert.throws(() => {
358
+ MemberUtil.isBreakoutsSupported();
359
+ }, 'Breakout support could not be processed, participant is undefined.');
360
+ });
361
+
362
+ it('returns true when hand breakouts are supported', () => {
363
+ const participant = {
364
+ doesNotSupportBreakouts: false,
365
+ };
366
+
367
+ assert.isTrue(MemberUtil.isBreakoutsSupported(participant));
368
+ });
369
+
370
+ it('returns false when hand breakouts are not supported', () => {
371
+ const participant = {
372
+ doesNotSupportBreakouts: true,
373
+ };
374
+
375
+ assert.isFalse(MemberUtil.isBreakoutsSupported(participant));
376
+ });
377
+ });
378
+
379
+ describe('MemberUtil.isLiveAnnotationSupported', () => {
380
+ it('throws error when there is no participant', () => {
381
+ assert.throws(() => {
382
+ MemberUtil.isLiveAnnotationSupported();
383
+ }, 'LiveAnnotation support could not be processed, participant is undefined.');
384
+ });
385
+
386
+ it('returns true when hand live annotation are supported', () => {
387
+ const participant = {
388
+ annotatorAssignmentNotAllowed: false,
389
+ };
390
+
391
+ assert.isTrue(MemberUtil.isLiveAnnotationSupported(participant));
392
+ });
393
+
394
+ it('returns false when hand live annotation are not supported', () => {
395
+ const participant = {
396
+ annotatorAssignmentNotAllowed: true,
397
+ };
398
+
399
+ assert.isFalse(MemberUtil.isLiveAnnotationSupported(participant));
400
+ });
401
+ });
402
+
403
+ describe('MemberUtil.isInterpretationSupported', () => {
404
+ it('throws error when there is no participant', () => {
405
+ assert.throws(() => {
406
+ MemberUtil.isInterpretationSupported();
407
+ }, 'Interpretation support could not be processed, participant is undefined.');
408
+ });
409
+
410
+ it('returns true when hand SiInterpreter are supported', () => {
411
+ const participant = {
412
+ doesNotSupportSiInterpreter: false,
413
+ };
414
+
415
+ assert.isTrue(MemberUtil.isInterpretationSupported(participant));
416
+ });
417
+
418
+ it('returns false when hand SiInterpreter are not supported', () => {
419
+ const participant = {
420
+ doesNotSupportSiInterpreter: true,
421
+ };
422
+
423
+ assert.isFalse(MemberUtil.isInterpretationSupported(participant));
424
+ });
425
+ });
426
+
427
+ const getMuteStatus = (muted) => {
428
+ if (muted === undefined) {
429
+ return undefined;
430
+ }
431
+ return muted ? _RECEIVE_ONLY_ : _SEND_RECEIVE_;
432
+ };
433
+
434
+ describe('MemberUtil.isAudioMuted', () => {
435
+ it('throws error when there is no participant', () => {
436
+ assert.throws(() => {
437
+ MemberUtil.isAudioMuted();
438
+ }, 'Audio could not be processed, participant is undefined.');
439
+ });
440
+
441
+ // NOTE: participant.controls.audio.muted represents remote video mute
442
+ // participant.status.audioStatus represents local video mute
443
+
444
+ const testResult = (remoteMuted, localMuted, expected) => {
445
+ const participant = {
446
+ controls: {audio: {muted: remoteMuted}},
447
+ status: {audioStatus: getMuteStatus(localMuted)},
448
+ };
449
+
450
+ assert.equal(MemberUtil.isAudioMuted(participant), expected);
451
+ };
452
+
453
+ it('returns true when remote is muted and local is not', () => {
454
+ testResult(true, false, true);
455
+ });
456
+
457
+ it('returns true when remote is not muted and local is muted', () => {
458
+ testResult(false, true, true);
459
+ });
460
+
461
+ it('returns false when both are not muted', () => {
462
+ testResult(false, false, false);
463
+ });
464
+
465
+ it('returns undefined when both are undefined', () => {
466
+ testResult(undefined, undefined, undefined);
467
+ });
468
+
469
+ it('returns defined status when the other is undefined', () => {
470
+ testResult(undefined, true, true);
471
+ testResult(undefined, false, false);
472
+ testResult(true, undefined, true);
473
+ testResult(false, undefined, false);
474
+ });
475
+ });
476
+
477
+ describe('MemberUtil.isVideoMuted', () => {
478
+ it('throws error when there is no participant', () => {
479
+ assert.throws(() => {
480
+ MemberUtil.isVideoMuted();
481
+ }, 'Video could not be processed, participant is undefined.');
482
+ });
483
+
484
+ // NOTE: participant.controls.video.muted represents remote video mute
485
+ // participant.status.videoStatus represents local video mute
486
+
487
+ const testResult = (remoteMuted, localMuted, expected) => {
488
+ const participant = {
489
+ controls: {video: {muted: remoteMuted}},
490
+ status: {videoStatus: getMuteStatus(localMuted)},
491
+ };
492
+
493
+ assert.equal(MemberUtil.isVideoMuted(participant), expected);
21
494
  };
22
495
 
23
- assert.isFalse(MemberUtil.isHandRaised(participant));
496
+ it('returns true when remote is muted and local is not', () => {
497
+ testResult(true, false, true);
498
+ });
499
+
500
+ it('returns true when remote is not muted and local is muted', () => {
501
+ testResult(false, true, true);
502
+ });
503
+
504
+ it('returns false when both are not muted', () => {
505
+ testResult(false, false, false);
506
+ });
507
+
508
+ it('returns undefined when both are undefined', () => {
509
+ testResult(undefined, undefined, undefined);
510
+ });
511
+
512
+ it('returns defined status when the other is undefined', () => {
513
+ testResult(undefined, true, true);
514
+ testResult(undefined, false, false);
515
+ testResult(true, undefined, true);
516
+ testResult(false, undefined, false);
517
+ });
518
+ });
519
+ });
520
+
521
+ describe('extractMediaStatus', () => {
522
+ it('throws error when there is no participant', () => {
523
+ assert.throws(() => {
524
+ MemberUtil.extractMediaStatus()
525
+ }, 'Media status could not be extracted, participant is undefined.');
24
526
  });
25
527
 
26
- it('returns true when hand raised is true', () => {
528
+ it('returns undefined media status when participant audio/video status is not present', () => {
27
529
  const participant = {
28
- controls: {
29
- hand: {
30
- raised: true,
31
- },
32
- },
530
+ status: {}
33
531
  };
532
+
533
+ const mediaStatus = MemberUtil.extractMediaStatus(participant)
34
534
 
35
- assert.isTrue(MemberUtil.isHandRaised(participant));
535
+ assert.deepEqual(mediaStatus, {audio: undefined, video: undefined});
36
536
  });
37
537
 
38
- it('returns false when hand raised is false', () => {
538
+ it('returns correct media status when participant audio/video status is present', () => {
39
539
  const participant = {
40
- controls: {
41
- hand: {
42
- raised: false,
43
- },
44
- },
540
+ status: {
541
+ audioStatus: 'RECVONLY',
542
+ videoStatus: 'SENDRECV'
543
+ }
45
544
  };
545
+
546
+ const mediaStatus = MemberUtil.extractMediaStatus(participant)
46
547
 
47
- assert.isFalse(MemberUtil.isHandRaised(participant));
548
+ assert.deepEqual(mediaStatus, {audio: 'RECVONLY', video: 'SENDRECV'});
48
549
  });
49
550
  });
50
551