@webex/plugin-meetings 3.0.0-beta.23 → 3.0.0-beta.231

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