@webex/plugin-meetings 3.0.0-beta.7 → 3.0.0-beta.71

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 (506) hide show
  1. package/UPGRADING.md +9 -9
  2. package/browsers.js +19 -24
  3. package/dist/breakouts/breakout.js +178 -0
  4. package/dist/breakouts/breakout.js.map +1 -0
  5. package/dist/breakouts/collection.js +23 -0
  6. package/dist/breakouts/collection.js.map +1 -0
  7. package/dist/breakouts/edit-lock-error.js +52 -0
  8. package/dist/breakouts/edit-lock-error.js.map +1 -0
  9. package/dist/breakouts/index.js +843 -0
  10. package/dist/breakouts/index.js.map +1 -0
  11. package/dist/breakouts/request.js +78 -0
  12. package/dist/breakouts/request.js.map +1 -0
  13. package/dist/breakouts/utils.js +56 -0
  14. package/dist/breakouts/utils.js.map +1 -0
  15. package/dist/common/browser-detection.js +1 -20
  16. package/dist/common/browser-detection.js.map +1 -1
  17. package/dist/common/collection.js +5 -20
  18. package/dist/common/collection.js.map +1 -1
  19. package/dist/common/config.js +0 -7
  20. package/dist/common/config.js.map +1 -1
  21. package/dist/common/errors/captcha-error.js +10 -24
  22. package/dist/common/errors/captcha-error.js.map +1 -1
  23. package/dist/common/errors/intent-to-join.js +11 -24
  24. package/dist/common/errors/intent-to-join.js.map +1 -1
  25. package/dist/common/errors/join-meeting.js +12 -25
  26. package/dist/common/errors/join-meeting.js.map +1 -1
  27. package/dist/common/errors/media.js +10 -24
  28. package/dist/common/errors/media.js.map +1 -1
  29. package/dist/common/errors/parameter.js +5 -33
  30. package/dist/common/errors/parameter.js.map +1 -1
  31. package/dist/common/errors/password-error.js +10 -24
  32. package/dist/common/errors/password-error.js.map +1 -1
  33. package/dist/common/errors/permission.js +9 -23
  34. package/dist/common/errors/permission.js.map +1 -1
  35. package/dist/common/errors/reconnection-in-progress.js +0 -17
  36. package/dist/common/errors/reconnection-in-progress.js.map +1 -1
  37. package/dist/common/errors/reconnection.js +10 -24
  38. package/dist/common/errors/reconnection.js.map +1 -1
  39. package/dist/common/errors/stats.js +10 -24
  40. package/dist/common/errors/stats.js.map +1 -1
  41. package/dist/common/errors/webex-errors.js +6 -41
  42. package/dist/common/errors/webex-errors.js.map +1 -1
  43. package/dist/common/errors/webex-meetings-error.js +5 -25
  44. package/dist/common/errors/webex-meetings-error.js.map +1 -1
  45. package/dist/common/events/events-scope.js +0 -22
  46. package/dist/common/events/events-scope.js.map +1 -1
  47. package/dist/common/events/events.js +0 -23
  48. package/dist/common/events/events.js.map +1 -1
  49. package/dist/common/events/trigger-proxy.js +0 -12
  50. package/dist/common/events/trigger-proxy.js.map +1 -1
  51. package/dist/common/events/util.js +0 -15
  52. package/dist/common/events/util.js.map +1 -1
  53. package/dist/common/logs/logger-config.js +0 -4
  54. package/dist/common/logs/logger-config.js.map +1 -1
  55. package/dist/common/logs/logger-proxy.js +1 -8
  56. package/dist/common/logs/logger-proxy.js.map +1 -1
  57. package/dist/common/logs/request.js +37 -60
  58. package/dist/common/logs/request.js.map +1 -1
  59. package/dist/common/queue.js +4 -14
  60. package/dist/common/queue.js.map +1 -1
  61. package/dist/config.js +6 -6
  62. package/dist/config.js.map +1 -1
  63. package/dist/constants.js +143 -52
  64. package/dist/constants.js.map +1 -1
  65. package/dist/controls-options-manager/constants.js +14 -0
  66. package/dist/controls-options-manager/constants.js.map +1 -0
  67. package/dist/controls-options-manager/enums.js +16 -0
  68. package/dist/controls-options-manager/enums.js.map +1 -0
  69. package/dist/controls-options-manager/index.js +261 -0
  70. package/dist/controls-options-manager/index.js.map +1 -0
  71. package/dist/controls-options-manager/util.js +39 -0
  72. package/dist/controls-options-manager/util.js.map +1 -0
  73. package/dist/index.js +11 -18
  74. package/dist/index.js.map +1 -1
  75. package/dist/locus-info/controlsUtils.js +31 -29
  76. package/dist/locus-info/controlsUtils.js.map +1 -1
  77. package/dist/locus-info/embeddedAppsUtils.js +3 -26
  78. package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
  79. package/dist/locus-info/fullState.js +0 -15
  80. package/dist/locus-info/fullState.js.map +1 -1
  81. package/dist/locus-info/hostUtils.js +4 -12
  82. package/dist/locus-info/hostUtils.js.map +1 -1
  83. package/dist/locus-info/index.js +237 -198
  84. package/dist/locus-info/index.js.map +1 -1
  85. package/dist/locus-info/infoUtils.js +3 -37
  86. package/dist/locus-info/infoUtils.js.map +1 -1
  87. package/dist/locus-info/mediaSharesUtils.js +12 -38
  88. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  89. package/dist/locus-info/parser.js +92 -118
  90. package/dist/locus-info/parser.js.map +1 -1
  91. package/dist/locus-info/selfUtils.js +80 -89
  92. package/dist/locus-info/selfUtils.js.map +1 -1
  93. package/dist/media/index.js +56 -146
  94. package/dist/media/index.js.map +1 -1
  95. package/dist/media/properties.js +83 -117
  96. package/dist/media/properties.js.map +1 -1
  97. package/dist/media/util.js +2 -9
  98. package/dist/media/util.js.map +1 -1
  99. package/dist/mediaQualityMetrics/config.js +505 -495
  100. package/dist/mediaQualityMetrics/config.js.map +1 -1
  101. package/dist/meeting/in-meeting-actions.js +31 -14
  102. package/dist/meeting/in-meeting-actions.js.map +1 -1
  103. package/dist/meeting/index.js +2225 -2244
  104. package/dist/meeting/index.js.map +1 -1
  105. package/dist/meeting/muteState.js +102 -100
  106. package/dist/meeting/muteState.js.map +1 -1
  107. package/dist/meeting/request.js +308 -264
  108. package/dist/meeting/request.js.map +1 -1
  109. package/dist/meeting/request.type.js +7 -0
  110. package/dist/meeting/request.type.js.map +1 -0
  111. package/dist/meeting/state.js +21 -31
  112. package/dist/meeting/state.js.map +1 -1
  113. package/dist/meeting/util.js +63 -217
  114. package/dist/meeting/util.js.map +1 -1
  115. package/dist/meeting-info/collection.js +6 -25
  116. package/dist/meeting-info/collection.js.map +1 -1
  117. package/dist/meeting-info/index.js +14 -32
  118. package/dist/meeting-info/index.js.map +1 -1
  119. package/dist/meeting-info/meeting-info-v2.js +193 -268
  120. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  121. package/dist/meeting-info/request.js +3 -15
  122. package/dist/meeting-info/request.js.map +1 -1
  123. package/dist/meeting-info/util.js +98 -183
  124. package/dist/meeting-info/util.js.map +1 -1
  125. package/dist/meeting-info/utilv2.js +137 -228
  126. package/dist/meeting-info/utilv2.js.map +1 -1
  127. package/dist/meetings/collection.js +26 -19
  128. package/dist/meetings/collection.js.map +1 -1
  129. package/dist/meetings/index.js +565 -552
  130. package/dist/meetings/index.js.map +1 -1
  131. package/dist/meetings/request.js +26 -41
  132. package/dist/meetings/request.js.map +1 -1
  133. package/dist/meetings/util.js +151 -155
  134. package/dist/meetings/util.js.map +1 -1
  135. package/dist/member/index.js +100 -85
  136. package/dist/member/index.js.map +1 -1
  137. package/dist/member/types.js +15 -0
  138. package/dist/member/types.js.map +1 -0
  139. package/dist/member/util.js +90 -68
  140. package/dist/member/util.js.map +1 -1
  141. package/dist/members/collection.js +13 -12
  142. package/dist/members/collection.js.map +1 -1
  143. package/dist/members/index.js +152 -204
  144. package/dist/members/index.js.map +1 -1
  145. package/dist/members/request.js +35 -39
  146. package/dist/members/request.js.map +1 -1
  147. package/dist/members/types.js +15 -0
  148. package/dist/members/types.js.map +1 -0
  149. package/dist/members/util.js +76 -46
  150. package/dist/members/util.js.map +1 -1
  151. package/dist/metrics/config.js +4 -14
  152. package/dist/metrics/config.js.map +1 -1
  153. package/dist/metrics/constants.js +1 -6
  154. package/dist/metrics/constants.js.map +1 -1
  155. package/dist/metrics/index.js +59 -156
  156. package/dist/metrics/index.js.map +1 -1
  157. package/dist/multistream/mediaRequestManager.js +116 -52
  158. package/dist/multistream/mediaRequestManager.js.map +1 -1
  159. package/dist/multistream/receiveSlot.js +58 -65
  160. package/dist/multistream/receiveSlot.js.map +1 -1
  161. package/dist/multistream/receiveSlotManager.js +58 -93
  162. package/dist/multistream/receiveSlotManager.js.map +1 -1
  163. package/dist/multistream/remoteMedia.js +55 -74
  164. package/dist/multistream/remoteMedia.js.map +1 -1
  165. package/dist/multistream/remoteMediaGroup.js +6 -40
  166. package/dist/multistream/remoteMediaGroup.js.map +1 -1
  167. package/dist/multistream/remoteMediaManager.js +466 -442
  168. package/dist/multistream/remoteMediaManager.js.map +1 -1
  169. package/dist/networkQualityMonitor/index.js +40 -59
  170. package/dist/networkQualityMonitor/index.js.map +1 -1
  171. package/dist/personal-meeting-room/index.js +21 -45
  172. package/dist/personal-meeting-room/index.js.map +1 -1
  173. package/dist/personal-meeting-room/request.js +1 -31
  174. package/dist/personal-meeting-room/request.js.map +1 -1
  175. package/dist/personal-meeting-room/util.js +0 -13
  176. package/dist/personal-meeting-room/util.js.map +1 -1
  177. package/dist/reachability/index.js +192 -191
  178. package/dist/reachability/index.js.map +1 -1
  179. package/dist/reachability/request.js +15 -23
  180. package/dist/reachability/request.js.map +1 -1
  181. package/dist/reactions/constants.js +13 -0
  182. package/dist/reactions/constants.js.map +1 -0
  183. package/dist/reactions/reactions.js +109 -0
  184. package/dist/reactions/reactions.js.map +1 -0
  185. package/dist/reactions/reactions.type.js +36 -0
  186. package/dist/reactions/reactions.type.js.map +1 -0
  187. package/dist/reconnection-manager/index.js +342 -460
  188. package/dist/reconnection-manager/index.js.map +1 -1
  189. package/dist/recording-controller/enums.js +17 -0
  190. package/dist/recording-controller/enums.js.map +1 -0
  191. package/dist/recording-controller/index.js +343 -0
  192. package/dist/recording-controller/index.js.map +1 -0
  193. package/dist/recording-controller/util.js +63 -0
  194. package/dist/recording-controller/util.js.map +1 -0
  195. package/dist/roap/index.js +48 -70
  196. package/dist/roap/index.js.map +1 -1
  197. package/dist/roap/request.js +143 -131
  198. package/dist/roap/request.js.map +1 -1
  199. package/dist/roap/turnDiscovery.js +91 -98
  200. package/dist/roap/turnDiscovery.js.map +1 -1
  201. package/dist/statsAnalyzer/global.js +1 -95
  202. package/dist/statsAnalyzer/global.js.map +1 -1
  203. package/dist/statsAnalyzer/index.js +372 -455
  204. package/dist/statsAnalyzer/index.js.map +1 -1
  205. package/dist/statsAnalyzer/mqaUtil.js +143 -87
  206. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  207. package/dist/transcription/index.js +22 -47
  208. package/dist/transcription/index.js.map +1 -1
  209. package/dist/types/breakouts/breakout.d.ts +8 -0
  210. package/dist/types/breakouts/collection.d.ts +5 -0
  211. package/dist/types/breakouts/edit-lock-error.d.ts +15 -0
  212. package/dist/types/breakouts/index.d.ts +5 -0
  213. package/dist/types/breakouts/request.d.ts +22 -0
  214. package/dist/types/breakouts/utils.d.ts +8 -0
  215. package/dist/types/common/browser-detection.d.ts +9 -0
  216. package/dist/types/common/collection.d.ts +48 -0
  217. package/dist/types/common/config.d.ts +2 -0
  218. package/dist/types/common/errors/captcha-error.d.ts +15 -0
  219. package/dist/types/common/errors/intent-to-join.d.ts +16 -0
  220. package/dist/types/common/errors/join-meeting.d.ts +17 -0
  221. package/dist/types/common/errors/media.d.ts +15 -0
  222. package/dist/types/common/errors/parameter.d.ts +15 -0
  223. package/dist/types/common/errors/password-error.d.ts +15 -0
  224. package/dist/types/common/errors/permission.d.ts +14 -0
  225. package/dist/types/common/errors/reconnection-in-progress.d.ts +9 -0
  226. package/dist/types/common/errors/reconnection.d.ts +15 -0
  227. package/dist/types/common/errors/stats.d.ts +15 -0
  228. package/dist/types/common/errors/webex-errors.d.ts +69 -0
  229. package/dist/types/common/errors/webex-meetings-error.d.ts +20 -0
  230. package/dist/types/common/events/events-scope.d.ts +17 -0
  231. package/dist/types/common/events/events.d.ts +12 -0
  232. package/dist/types/common/events/trigger-proxy.d.ts +2 -0
  233. package/dist/types/common/events/util.d.ts +2 -0
  234. package/dist/types/common/logs/logger-config.d.ts +2 -0
  235. package/dist/types/common/logs/logger-proxy.d.ts +2 -0
  236. package/dist/types/common/logs/request.d.ts +34 -0
  237. package/dist/types/common/queue.d.ts +32 -0
  238. package/dist/types/config.d.ts +77 -0
  239. package/dist/types/constants.d.ts +944 -0
  240. package/dist/types/controls-options-manager/constants.d.ts +4 -0
  241. package/dist/types/controls-options-manager/enums.d.ts +6 -0
  242. package/dist/types/controls-options-manager/index.d.ts +128 -0
  243. package/dist/types/controls-options-manager/util.d.ts +9 -0
  244. package/dist/types/index.d.ts +6 -0
  245. package/dist/types/locus-info/controlsUtils.d.ts +2 -0
  246. package/dist/types/locus-info/embeddedAppsUtils.d.ts +2 -0
  247. package/dist/types/locus-info/fullState.d.ts +2 -0
  248. package/dist/types/locus-info/hostUtils.d.ts +2 -0
  249. package/dist/types/locus-info/index.d.ts +276 -0
  250. package/dist/types/locus-info/infoUtils.d.ts +2 -0
  251. package/dist/types/locus-info/mediaSharesUtils.d.ts +2 -0
  252. package/dist/types/locus-info/parser.d.ts +212 -0
  253. package/dist/types/locus-info/selfUtils.d.ts +2 -0
  254. package/dist/types/media/index.d.ts +32 -0
  255. package/dist/types/media/properties.d.ts +108 -0
  256. package/dist/types/media/util.d.ts +2 -0
  257. package/dist/types/mediaQualityMetrics/config.d.ts +365 -0
  258. package/dist/types/meeting/in-meeting-actions.d.ts +101 -0
  259. package/dist/types/meeting/index.d.ts +1720 -0
  260. package/dist/types/meeting/muteState.d.ts +132 -0
  261. package/dist/types/meeting/request.d.ts +271 -0
  262. package/dist/types/meeting/request.type.d.ts +11 -0
  263. package/dist/types/meeting/state.d.ts +9 -0
  264. package/dist/types/meeting/util.d.ts +2 -0
  265. package/dist/types/meeting-info/collection.d.ts +20 -0
  266. package/dist/types/meeting-info/index.d.ts +57 -0
  267. package/dist/types/meeting-info/meeting-info-v2.d.ts +93 -0
  268. package/dist/types/meeting-info/request.d.ts +22 -0
  269. package/dist/types/meeting-info/util.d.ts +2 -0
  270. package/dist/types/meeting-info/utilv2.d.ts +2 -0
  271. package/dist/types/meetings/collection.d.ts +31 -0
  272. package/dist/types/meetings/index.d.ts +315 -0
  273. package/dist/types/meetings/request.d.ts +27 -0
  274. package/dist/types/meetings/util.d.ts +18 -0
  275. package/dist/types/member/index.d.ts +156 -0
  276. package/dist/types/member/types.d.ts +21 -0
  277. package/dist/types/member/util.d.ts +2 -0
  278. package/dist/types/members/collection.d.ts +29 -0
  279. package/dist/types/members/index.d.ts +343 -0
  280. package/dist/types/members/request.d.ts +58 -0
  281. package/dist/types/members/types.d.ts +24 -0
  282. package/dist/types/members/util.d.ts +2 -0
  283. package/dist/types/metrics/config.d.ts +171 -0
  284. package/dist/types/metrics/constants.d.ts +53 -0
  285. package/dist/types/metrics/index.d.ts +152 -0
  286. package/dist/types/multistream/mediaRequestManager.d.ts +68 -0
  287. package/dist/types/multistream/receiveSlot.d.ts +68 -0
  288. package/dist/types/multistream/receiveSlotManager.d.ts +49 -0
  289. package/dist/types/multistream/remoteMedia.d.ts +100 -0
  290. package/dist/types/multistream/remoteMediaGroup.d.ts +56 -0
  291. package/dist/types/multistream/remoteMediaManager.d.ts +263 -0
  292. package/dist/types/networkQualityMonitor/index.d.ts +70 -0
  293. package/dist/types/personal-meeting-room/index.d.ts +47 -0
  294. package/dist/types/personal-meeting-room/request.d.ts +14 -0
  295. package/dist/types/personal-meeting-room/util.d.ts +2 -0
  296. package/dist/types/reachability/index.d.ts +152 -0
  297. package/dist/types/reachability/request.d.ts +37 -0
  298. package/dist/types/reactions/constants.d.ts +3 -0
  299. package/dist/types/reactions/reactions.d.ts +4 -0
  300. package/dist/types/reactions/reactions.type.d.ts +52 -0
  301. package/dist/types/reconnection-manager/index.d.ts +126 -0
  302. package/dist/types/recording-controller/enums.d.ts +7 -0
  303. package/dist/types/recording-controller/index.d.ts +193 -0
  304. package/dist/types/recording-controller/util.d.ts +13 -0
  305. package/dist/types/roap/index.d.ts +77 -0
  306. package/dist/types/roap/request.d.ts +38 -0
  307. package/dist/types/roap/turnDiscovery.d.ts +74 -0
  308. package/dist/types/statsAnalyzer/global.d.ts +36 -0
  309. package/dist/types/statsAnalyzer/index.d.ts +195 -0
  310. package/dist/types/statsAnalyzer/mqaUtil.d.ts +24 -0
  311. package/dist/types/transcription/index.d.ts +64 -0
  312. package/internal-README.md +7 -6
  313. package/package.json +27 -21
  314. package/src/breakouts/README.md +219 -0
  315. package/src/breakouts/breakout.ts +153 -0
  316. package/src/breakouts/collection.ts +19 -0
  317. package/src/breakouts/edit-lock-error.ts +25 -0
  318. package/src/breakouts/index.ts +745 -0
  319. package/src/breakouts/request.ts +55 -0
  320. package/src/breakouts/utils.ts +44 -0
  321. package/src/common/{browser-detection.js → browser-detection.ts} +9 -6
  322. package/src/common/collection.ts +9 -7
  323. package/src/common/{config.js → config.ts} +1 -1
  324. package/src/common/errors/{captcha-error.js → captcha-error.ts} +11 -7
  325. package/src/common/errors/{intent-to-join.js → intent-to-join.ts} +12 -7
  326. package/src/common/errors/{join-meeting.js → join-meeting.ts} +17 -8
  327. package/src/common/errors/{media.js → media.ts} +11 -7
  328. package/src/common/errors/parameter.ts +11 -7
  329. package/src/common/errors/{password-error.js → password-error.ts} +11 -7
  330. package/src/common/errors/{permission.js → permission.ts} +10 -6
  331. package/src/common/errors/{reconnection.js → reconnection.ts} +11 -7
  332. package/src/common/errors/{stats.js → stats.ts} +11 -7
  333. package/src/common/errors/{webex-errors.js → webex-errors.ts} +8 -7
  334. package/src/common/errors/{webex-meetings-error.js → webex-meetings-error.ts} +4 -2
  335. package/src/common/events/{events-scope.js → events-scope.ts} +6 -2
  336. package/src/common/events/{events.js → events.ts} +5 -1
  337. package/src/common/events/{trigger-proxy.js → trigger-proxy.ts} +9 -5
  338. package/src/common/events/{util.js → util.ts} +2 -3
  339. package/src/common/logs/{logger-config.js → logger-config.ts} +1 -2
  340. package/src/common/logs/logger-proxy.ts +44 -0
  341. package/src/common/logs/{request.js → request.ts} +22 -9
  342. package/src/common/queue.ts +1 -2
  343. package/src/{config.js → config.ts} +17 -12
  344. package/src/constants.ts +92 -5
  345. package/src/controls-options-manager/constants.ts +5 -0
  346. package/src/controls-options-manager/enums.ts +7 -0
  347. package/src/controls-options-manager/index.ts +240 -0
  348. package/src/controls-options-manager/util.ts +30 -0
  349. package/src/index.js +4 -1
  350. package/src/locus-info/controlsUtils.ts +141 -0
  351. package/src/locus-info/{embeddedAppsUtils.js → embeddedAppsUtils.ts} +5 -6
  352. package/src/locus-info/{fullState.js → fullState.ts} +16 -12
  353. package/src/locus-info/{hostUtils.js → hostUtils.ts} +9 -8
  354. package/src/locus-info/{index.js → index.ts} +211 -71
  355. package/src/locus-info/{infoUtils.js → infoUtils.ts} +19 -8
  356. package/src/locus-info/{mediaSharesUtils.js → mediaSharesUtils.ts} +17 -17
  357. package/src/locus-info/{parser.js → parser.ts} +67 -79
  358. package/src/locus-info/{selfUtils.js → selfUtils.ts} +183 -67
  359. package/src/media/{index.js → index.ts} +179 -176
  360. package/src/media/{properties.js → properties.ts} +60 -37
  361. package/src/media/{util.js → util.ts} +2 -2
  362. package/src/mediaQualityMetrics/config.ts +384 -0
  363. package/src/meeting/in-meeting-actions.ts +67 -3
  364. package/src/meeting/{index.js → index.ts} +2605 -1605
  365. package/src/meeting/{muteState.js → muteState.ts} +138 -73
  366. package/src/meeting/{request.js → request.ts} +326 -142
  367. package/src/meeting/request.type.ts +13 -0
  368. package/src/meeting/{state.js → state.ts} +50 -35
  369. package/src/meeting/{util.js → util.ts} +131 -115
  370. package/src/meeting-info/{collection.js → collection.ts} +6 -2
  371. package/src/meeting-info/{index.js → index.ts} +42 -36
  372. package/src/meeting-info/meeting-info-v2.ts +273 -0
  373. package/src/meeting-info/{request.js → request.ts} +14 -4
  374. package/src/meeting-info/{util.js → util.ts} +60 -51
  375. package/src/meeting-info/{utilv2.js → utilv2.ts} +65 -58
  376. package/src/meetings/{collection.js → collection.ts} +26 -3
  377. package/src/meetings/index.ts +1275 -0
  378. package/src/meetings/{request.js → request.ts} +34 -25
  379. package/src/meetings/{util.js → util.ts} +99 -33
  380. package/src/member/{index.js → index.ts} +124 -56
  381. package/src/member/types.ts +24 -0
  382. package/src/member/{util.js → util.ts} +105 -25
  383. package/src/members/{collection.js → collection.ts} +10 -2
  384. package/src/members/{index.js → index.ts} +281 -144
  385. package/src/members/{request.js → request.ts} +80 -16
  386. package/src/members/types.ts +28 -0
  387. package/src/members/{util.js → util.ts} +108 -55
  388. package/src/metrics/{config.js → config.ts} +255 -92
  389. package/src/metrics/{constants.js → constants.ts} +0 -6
  390. package/src/metrics/{index.js → index.ts} +110 -94
  391. package/src/multistream/mediaRequestManager.ts +144 -40
  392. package/src/multistream/receiveSlot.ts +69 -26
  393. package/src/multistream/receiveSlotManager.ts +50 -38
  394. package/src/multistream/remoteMedia.ts +30 -4
  395. package/src/multistream/remoteMediaGroup.ts +4 -3
  396. package/src/multistream/remoteMediaManager.ts +230 -66
  397. package/src/networkQualityMonitor/{index.js → index.ts} +41 -29
  398. package/src/personal-meeting-room/{index.js → index.ts} +28 -19
  399. package/src/personal-meeting-room/{request.js → request.ts} +13 -4
  400. package/src/personal-meeting-room/{util.js → util.ts} +4 -4
  401. package/src/reachability/{index.js → index.ts} +157 -94
  402. package/src/reachability/request.ts +46 -35
  403. package/src/reactions/constants.ts +4 -0
  404. package/src/reactions/reactions.ts +104 -0
  405. package/src/reactions/reactions.type.ts +62 -0
  406. package/src/reconnection-manager/{index.js → index.ts} +228 -120
  407. package/src/recording-controller/enums.ts +8 -0
  408. package/src/recording-controller/index.ts +315 -0
  409. package/src/recording-controller/util.ts +58 -0
  410. package/src/roap/{index.js → index.ts} +77 -60
  411. package/src/roap/request.ts +172 -0
  412. package/src/roap/turnDiscovery.ts +81 -41
  413. package/src/statsAnalyzer/global.ts +37 -0
  414. package/src/statsAnalyzer/index.ts +1242 -0
  415. package/src/statsAnalyzer/mqaUtil.ts +291 -0
  416. package/src/transcription/{index.js → index.ts} +46 -39
  417. package/test/integration/spec/converged-space-meetings.js +176 -0
  418. package/test/integration/spec/journey.js +665 -464
  419. package/test/integration/spec/space-meeting.js +320 -206
  420. package/test/integration/spec/transcription.js +7 -8
  421. package/test/unit/spec/breakouts/breakout.ts +178 -0
  422. package/test/unit/spec/breakouts/collection.ts +15 -0
  423. package/test/unit/spec/breakouts/edit-lock-error.ts +30 -0
  424. package/test/unit/spec/breakouts/index.ts +1252 -0
  425. package/test/unit/spec/breakouts/request.ts +104 -0
  426. package/test/unit/spec/breakouts/utils.js +54 -0
  427. package/test/unit/spec/common/browser-detection.js +9 -28
  428. package/test/unit/spec/controls-options-manager/index.js +204 -0
  429. package/test/unit/spec/controls-options-manager/util.js +86 -0
  430. package/test/unit/spec/fixture/locus.js +92 -90
  431. package/test/unit/spec/locus-info/controlsUtils.js +133 -34
  432. package/test/unit/spec/locus-info/embeddedAppsUtils.js +8 -6
  433. package/test/unit/spec/locus-info/index.js +303 -2
  434. package/test/unit/spec/locus-info/infoUtils.js +41 -32
  435. package/test/unit/spec/locus-info/lib/BasicSeqCmp.json +88 -430
  436. package/test/unit/spec/locus-info/lib/SeqCmp.json +513 -685
  437. package/test/unit/spec/locus-info/parser.js +3 -9
  438. package/test/unit/spec/locus-info/selfConstant.js +101 -103
  439. package/test/unit/spec/locus-info/selfUtils.js +165 -12
  440. package/test/unit/spec/media/index.ts +72 -8
  441. package/test/unit/spec/media/properties.ts +9 -9
  442. package/test/unit/spec/meeting/in-meeting-actions.ts +29 -2
  443. package/test/unit/spec/meeting/index.js +2503 -802
  444. package/test/unit/spec/meeting/muteState.js +146 -61
  445. package/test/unit/spec/meeting/request.js +141 -43
  446. package/test/unit/spec/meeting/utils.js +135 -164
  447. package/test/unit/spec/meeting-info/meetinginfov2.js +100 -73
  448. package/test/unit/spec/meeting-info/request.js +7 -9
  449. package/test/unit/spec/meeting-info/util.js +11 -12
  450. package/test/unit/spec/meeting-info/utilv2.js +110 -74
  451. package/test/unit/spec/meetings/collection.js +15 -1
  452. package/test/unit/spec/meetings/index.js +622 -263
  453. package/test/unit/spec/meetings/utils.js +65 -14
  454. package/test/unit/spec/member/index.js +24 -1
  455. package/test/unit/spec/member/util.js +359 -32
  456. package/test/unit/spec/members/index.js +294 -54
  457. package/test/unit/spec/members/request.js +50 -20
  458. package/test/unit/spec/members/utils.js +147 -4
  459. package/test/unit/spec/metrics/index.js +16 -21
  460. package/test/unit/spec/multistream/mediaRequestManager.ts +369 -68
  461. package/test/unit/spec/multistream/receiveSlot.ts +76 -17
  462. package/test/unit/spec/multistream/receiveSlotManager.ts +60 -38
  463. package/test/unit/spec/multistream/remoteMedia.ts +32 -2
  464. package/test/unit/spec/multistream/remoteMediaGroup.ts +5 -5
  465. package/test/unit/spec/multistream/remoteMediaManager.ts +549 -65
  466. package/test/unit/spec/networkQualityMonitor/index.js +24 -18
  467. package/test/unit/spec/personal-meeting-room/personal-meeting-room.js +2 -7
  468. package/test/unit/spec/reachability/index.ts +176 -27
  469. package/test/unit/spec/reachability/request.js +66 -0
  470. package/test/unit/spec/reconnection-manager/index.js +58 -30
  471. package/test/unit/spec/recording-controller/index.js +231 -0
  472. package/test/unit/spec/recording-controller/util.js +102 -0
  473. package/test/unit/spec/roap/index.ts +12 -8
  474. package/test/unit/spec/roap/request.ts +217 -0
  475. package/test/unit/spec/roap/turnDiscovery.ts +72 -49
  476. package/test/unit/spec/stats-analyzer/index.js +108 -57
  477. package/test/utils/cmr.js +44 -42
  478. package/test/utils/constants.js +9 -0
  479. package/test/utils/testUtils.js +98 -77
  480. package/test/utils/webex-config.js +22 -18
  481. package/test/utils/webex-test-users.js +57 -50
  482. package/tsconfig.json +6 -0
  483. package/dist/media/internal-media-core-wrapper.js +0 -22
  484. package/dist/media/internal-media-core-wrapper.js.map +0 -1
  485. package/dist/meeting/effectsState.js +0 -327
  486. package/dist/meeting/effectsState.js.map +0 -1
  487. package/dist/multistream/multistreamMedia.js +0 -116
  488. package/dist/multistream/multistreamMedia.js.map +0 -1
  489. package/dist/peer-connection-manager/util.js +0 -124
  490. package/dist/peer-connection-manager/util.js.map +0 -1
  491. package/src/common/logs/logger-proxy.js +0 -33
  492. package/src/locus-info/controlsUtils.js +0 -102
  493. package/src/media/internal-media-core-wrapper.ts +0 -9
  494. package/src/mediaQualityMetrics/config.js +0 -382
  495. package/src/meeting/effectsState.js +0 -205
  496. package/src/meeting-info/meeting-info-v2.js +0 -255
  497. package/src/meetings/index.js +0 -1015
  498. package/src/multistream/multistreamMedia.ts +0 -92
  499. package/src/peer-connection-manager/util.ts +0 -117
  500. package/src/roap/request.js +0 -127
  501. package/src/statsAnalyzer/global.js +0 -133
  502. package/src/statsAnalyzer/index.js +0 -1006
  503. package/src/statsAnalyzer/mqaUtil.js +0 -173
  504. package/test/unit/spec/meeting/effectsState.js +0 -291
  505. package/test/unit/spec/peerconnection-manager/utils.test-fixtures.ts +0 -389
  506. /package/src/common/errors/{reconnection-in-progress.js → reconnection-in-progress.ts} +0 -0
@@ -9,7 +9,6 @@ import LocusDeltaParser from '@webex/plugin-meetings/src/locus-info/parser';
9
9
  import basicSequenceComparisons from './lib/BasicSeqCmp.json';
10
10
  import sequenceComparisons from './lib/SeqCmp';
11
11
 
12
-
13
12
  describe('locus-info/parser', () => {
14
13
  describe('Locus Sequence Comparison Algorithm', () => {
15
14
  describe('basic sequence comparisons', () => {
@@ -73,11 +72,11 @@ describe('locus-info/parser', () => {
73
72
  const {description, result} = sequenceComparisons.update_actions[key];
74
73
 
75
74
  const current = {
76
- sequence: sequenceComparisons.sequences[currentKey]
75
+ sequence: sequenceComparisons.sequences[currentKey],
77
76
  };
78
77
  const incoming = {
79
78
  sequence: sequenceComparisons.sequences[incomingKey],
80
- baseSequence: sequenceComparisons.sequences[baseKey]
79
+ baseSequence: sequenceComparisons.sequences[baseKey],
81
80
  };
82
81
  const comparison = LocusDeltaParser.compare(current, incoming);
83
82
  const action = extract(comparison);
@@ -161,7 +160,6 @@ describe('locus-info/parser', () => {
161
160
  assert.calledOnce(parser.pause);
162
161
  });
163
162
 
164
-
165
163
  it('should update working copy on USE_INCOMING', () => {
166
164
  const {USE_INCOMING} = LocusDeltaParser.loci;
167
165
 
@@ -173,7 +171,6 @@ describe('locus-info/parser', () => {
173
171
  assert.equal(parser.workingCopy, NEW_LOCI);
174
172
  });
175
173
 
176
-
177
174
  it('calls onDeltaAction() when a comparison result is available', () => {
178
175
  const {USE_INCOMING} = LocusDeltaParser.loci;
179
176
  const lociComparison = USE_INCOMING;
@@ -186,7 +183,6 @@ describe('locus-info/parser', () => {
186
183
  assert.calledWith(parser.onDeltaAction, lociComparison, NEW_LOCI);
187
184
  });
188
185
 
189
-
190
186
  it('should call nextEvent()', () => {
191
187
  const {USE_INCOMING} = LocusDeltaParser.loci;
192
188
 
@@ -198,7 +194,6 @@ describe('locus-info/parser', () => {
198
194
  assert.calledOnce(parser.nextEvent);
199
195
  });
200
196
 
201
-
202
197
  it('should not call compare() if locus is invalid', () => {
203
198
  const {USE_INCOMING} = LocusDeltaParser.loci;
204
199
 
@@ -212,7 +207,6 @@ describe('locus-info/parser', () => {
212
207
  assert.notCalled(LocusDeltaParser.compare);
213
208
  });
214
209
 
215
-
216
210
  it('processDeltaEvent() should take next item in queue', () => {
217
211
  // restore the original method
218
212
  parser.queue.dequeue = sandbox.stub();
@@ -254,7 +248,7 @@ describe('locus-info/parser', () => {
254
248
  parser = new LocusDeltaParser();
255
249
  loci = {
256
250
  rangeStart: 0,
257
- rangeEnd: 0
251
+ rangeEnd: 0,
258
252
  };
259
253
  });
260
254
 
@@ -1,19 +1,19 @@
1
-
2
1
  export const self = {
3
2
  deviceUrl: 'https://wdm-a.wbx2.com/wdm/api/v1/devices/20eabde3-4254-48da-9a24',
4
3
  alertHint: {
5
- action: 'NONE'
4
+ action: 'NONE',
6
5
  },
7
6
  alertType: {
8
- action: 'NONE'
7
+ action: 'NONE',
9
8
  },
10
9
  callbackInfo: {
11
10
  callbackAddress: 'alice@alpha.webex.com',
12
- callbackType: 'SIPURI'
11
+ callbackType: 'SIPURI',
13
12
  },
14
13
  lookUpInfo: {
15
- lookupLink: 'https://locus.meet-a.prod.meetapi.webex.com/locus/api/v1/loci/meetingInfo/4e073f82-f5b6-31e5-93b3?type=LOCUS_ID&useUriLookup=false',
16
- type: 'MEETING'
14
+ lookupLink:
15
+ 'https://locus.meet-a.prod.meetapi.webex.com/locus/api/v1/loci/meetingInfo/4e073f82-f5b6-31e5-93b3?type=LOCUS_ID&useUriLookup=false',
16
+ type: 'MEETING',
17
17
  },
18
18
  isCreator: false,
19
19
  identity: '344ea183-9d5d-4e77-aed2-',
@@ -25,7 +25,7 @@ export const self = {
25
25
  email: 'alic@cisco.com',
26
26
  name: 'alice',
27
27
  isExternal: false,
28
- orgId: '1eb65fdf-9643-417f-9974'
28
+ orgId: '1eb65fdf-9643-417f-9974',
29
29
  },
30
30
  devices: [
31
31
  {
@@ -34,106 +34,118 @@ export const self = {
34
34
  mediaConnections: [
35
35
  {
36
36
  mediaId: '5706ee09-b2f6-4d0a-b43e-05dbcdea524d',
37
- actionsUrl: 'https://cme-junctionbox-apdx2-006-apdx2-public.wbx2.com:443/calliope/api/v1/rest/send/16a7d18c-71a5-4f51-8732-b456e7832197/calliope/api/v1/confluences/cd12fc68-53e9-43c2-be01-/actions',
38
- type: 'SDP'
39
- }
37
+ actionsUrl:
38
+ 'https://cme-junctionbox-apdx2-006-apdx2-public.wbx2.com:443/calliope/api/v1/rest/send/16a7d18c-71a5-4f51-8732-b456e7832197/calliope/api/v1/confluences/cd12fc68-53e9-43c2-be01-/actions',
39
+ type: 'SDP',
40
+ },
40
41
  ],
41
42
  mediaSessions: [
42
43
  {
43
44
  mediaType: 'audio',
44
45
  mediaContent: 'main',
45
46
  direction: 'sendrecv',
46
- state: 'active'
47
+ state: 'active',
47
48
  },
48
49
  {
49
50
  mediaType: 'video',
50
51
  mediaContent: 'main',
51
52
  direction: 'sendrecv',
52
- state: 'active'
53
+ state: 'active',
53
54
  },
54
55
  {
55
56
  mediaType: 'audio',
56
57
  mediaContent: 'slides',
57
58
  direction: 'inactive',
58
- state: 'inactive'
59
+ state: 'inactive',
59
60
  },
60
61
  {
61
62
  mediaType: 'video',
62
63
  mediaContent: 'slides',
63
64
  direction: 'recvonly',
64
- state: 'active'
65
- }
65
+ state: 'active',
66
+ },
66
67
  ],
67
68
  mediaSessionsExternal: false,
68
69
  state: 'JOINED',
69
70
  intent: {type: ''},
70
- intents: [
71
- null
72
- ],
71
+ intents: [null],
73
72
  keepAliveSecs: 20,
74
73
  callLegId: '84bbb491-598f-4828-bd27',
75
74
  correlationId: '74421718-e1f8-4555-9497',
76
75
  isVideoCallback: false,
77
- csis: [
78
- 515285760,
79
- 515285761,
80
- 3779681281,
81
- 3779681280
82
- ],
76
+ csis: [515285760, 515285761, 3779681281, 3779681280],
83
77
  serverTranscoded: true,
84
78
  serverComposed: true,
85
- availableLayouts: [
86
- 'Single',
87
- 'ActivePresence',
88
- 'Prominent',
89
- 'Equal',
90
- 'OnePlusN'
91
- ]
92
- }
79
+ availableLayouts: ['Single', 'ActivePresence', 'Prominent', 'Equal', 'OnePlusN'],
80
+ },
93
81
  ],
94
82
  status: {
95
83
  audioStatus: 'SENDRECV',
96
84
  videoStatus: 'SENDRECV',
97
85
  videoSlidesStatus: 'RECVONLY',
98
86
  audioSlidesStatus: 'INACTIVE',
99
- csis: [
100
- 515285760,
101
- 515285761,
102
- 3779681281,
103
- 3779681280
104
- ]
87
+ csis: [515285760, 515285761, 3779681281, 3779681280],
105
88
  },
106
89
  suggestedMedia: [
107
90
  {
108
91
  mediaType: 'audio',
109
92
  mediaContent: 'main',
110
- direction: 'inactive'
93
+ direction: 'inactive',
111
94
  },
112
95
  {
113
96
  mediaType: 'video',
114
97
  mediaContent: 'main',
115
- direction: 'recvonly'
98
+ direction: 'recvonly',
116
99
  },
117
100
  {
118
101
  mediaType: 'video',
119
102
  mediaContent: 'slides',
120
- direction: 'sendrecv'
121
- }
103
+ direction: 'sendrecv',
104
+ },
122
105
  ],
123
106
  controls: {
124
107
  audio: {
125
108
  muted: false,
126
109
  requestedToUnmute: false,
127
- meta: {}
110
+ meta: {},
111
+ },
112
+ video: {
113
+ muted: false,
114
+ meta: {},
115
+ },
116
+ breakout: {
117
+ sessions: {
118
+ active: [
119
+ {
120
+ name: 'Breakout session 2',
121
+ groupId: '0e73abb8-5584-49d8-be8d-806d2a8247ca',
122
+ sessionId: '1cf41ab1-2e57-4d95-b7e9-5613acddfb0f',
123
+ sessionType: 'BREAKOUT',
124
+ },
125
+ ],
126
+ allowed: [
127
+ {
128
+ name: 'Breakout session 2',
129
+ groupId: '0e73abb8-5584-49d8-be8d-806d2a8247ca',
130
+ sessionId: '1cf41ab1-2e57-4d95-b7e9-5613acddfb0f',
131
+ sessionType: 'BREAKOUT',
132
+ },
133
+ ],
134
+ },
135
+ meta: {
136
+ modifiedBy: '347ef89e-e1be-40a3-849c-731bdd935e62',
137
+ lastModified: '2023-01-10T10:10:06.813Z',
138
+ readOnly: true,
139
+ },
128
140
  },
129
141
  localRecord: {
130
- recording: false
142
+ recording: false,
131
143
  },
132
144
  layouts: [
133
145
  {
134
146
  type: 'activePresence',
135
- deviceUrl: 'https://wdm-a.wbx2.com/wdm/api/v1/devices/20eabde3-4254-48da-9a24'
136
- }
147
+ deviceUrl: 'https://wdm-a.wbx2.com/wdm/api/v1/devices/20eabde3-4254-48da-9a24',
148
+ },
137
149
  ],
138
150
  role: {
139
151
  presenter: true,
@@ -142,11 +154,11 @@ export const self = {
142
154
  type: 'PRESENTER',
143
155
  hasRole: true,
144
156
  meta: {
145
- lastModified: '2020-07-20T20:32:35.259Z'
146
- }
147
- }
148
- ]
149
- }
157
+ lastModified: '2020-07-20T20:32:35.259Z',
158
+ },
159
+ },
160
+ ],
161
+ },
150
162
  },
151
163
  enableDTMF: true,
152
164
  id: 'e0d54e94-226c-3290-b75a-',
@@ -154,7 +166,8 @@ export const self = {
154
166
  resourceGuest: false,
155
167
  moderator: true,
156
168
  panelist: false,
157
- mediaBaseUrl: 'https://locus.meet-a.prod.meetapi.webex.com/locus/api/v1/loci/4e073f82-f5b6-31e5-93b3/participant/e0d54e94-226c-3290-b75a-/media',
169
+ mediaBaseUrl:
170
+ 'https://locus.meet-a.prod.meetapi.webex.com/locus/api/v1/loci/4e073f82-f5b6-31e5-93b3/participant/e0d54e94-226c-3290-b75a-/media',
158
171
  canNotViewTheParticipantList: false,
159
172
  isSharingBlocked: false,
160
173
  };
@@ -162,18 +175,19 @@ export const self = {
162
175
  export const selfWithInactivity = {
163
176
  deviceUrl: 'https://wdm-a.wbx2.com/wdm/api/v1/devices/20eabde3-4254-48da-9a24',
164
177
  alertHint: {
165
- action: 'NONE'
178
+ action: 'NONE',
166
179
  },
167
180
  alertType: {
168
- action: 'NONE'
181
+ action: 'NONE',
169
182
  },
170
183
  callbackInfo: {
171
184
  callbackAddress: 'alice@alpha.webex.com',
172
- callbackType: 'SIPURI'
185
+ callbackType: 'SIPURI',
173
186
  },
174
187
  lookUpInfo: {
175
- lookupLink: 'https://locus.meet-a.prod.meetapi.webex.com/locus/api/v1/loci/meetingInfo/4e073f82-f5b6-31e5-93b3?type=LOCUS_ID&useUriLookup=false',
176
- type: 'MEETING'
188
+ lookupLink:
189
+ 'https://locus.meet-a.prod.meetapi.webex.com/locus/api/v1/loci/meetingInfo/4e073f82-f5b6-31e5-93b3?type=LOCUS_ID&useUriLookup=false',
190
+ type: 'MEETING',
177
191
  },
178
192
  isCreator: false,
179
193
  identity: '344ea183-9d5d-4e77-aed2-',
@@ -185,7 +199,7 @@ export const selfWithInactivity = {
185
199
  email: 'alic@cisco.com',
186
200
  name: 'alice',
187
201
  isExternal: false,
188
- orgId: '1eb65fdf-9643-417f-9974'
202
+ orgId: '1eb65fdf-9643-417f-9974',
189
203
  },
190
204
  devices: [
191
205
  {
@@ -194,105 +208,88 @@ export const selfWithInactivity = {
194
208
  mediaConnections: [
195
209
  {
196
210
  mediaId: '5706ee09-b2f6-4d0a-b43e-05dbcdea524d',
197
- actionsUrl: 'https://cme-junctionbox-apdx2-006-apdx2-public.wbx2.com:443/calliope/api/v1/rest/send/16a7d18c-71a5-4f51-8732-b456e7832197/calliope/api/v1/confluences/cd12fc68-53e9-43c2-be01-/actions',
198
- type: 'SDP'
199
- }
211
+ actionsUrl:
212
+ 'https://cme-junctionbox-apdx2-006-apdx2-public.wbx2.com:443/calliope/api/v1/rest/send/16a7d18c-71a5-4f51-8732-b456e7832197/calliope/api/v1/confluences/cd12fc68-53e9-43c2-be01-/actions',
213
+ type: 'SDP',
214
+ },
200
215
  ],
201
216
  mediaSessions: [
202
217
  {
203
218
  mediaType: 'audio',
204
219
  mediaContent: 'main',
205
220
  direction: 'sendrecv',
206
- state: 'inactive'
221
+ state: 'inactive',
207
222
  },
208
223
  {
209
224
  mediaType: 'video',
210
225
  mediaContent: 'main',
211
226
  direction: 'sendrecv',
212
- state: 'inactive'
227
+ state: 'inactive',
213
228
  },
214
229
  {
215
230
  mediaType: 'audio',
216
231
  mediaContent: 'slides',
217
232
  direction: 'inactive',
218
- state: 'inactive'
233
+ state: 'inactive',
219
234
  },
220
235
  {
221
236
  mediaType: 'video',
222
237
  mediaContent: 'slides',
223
238
  direction: 'recvonly',
224
- state: 'inactive'
225
- }
239
+ state: 'inactive',
240
+ },
226
241
  ],
227
242
  mediaSessionsExternal: false,
228
243
  state: 'JOINED',
229
- intents: [
230
- null
231
- ],
244
+ intents: [null],
232
245
  keepAliveSecs: 20,
233
246
  callLegId: '84bbb491-598f-4828-bd27',
234
247
  correlationId: '74421718-e1f8-4555-9497',
235
248
  isVideoCallback: false,
236
- csis: [
237
- 515285760,
238
- 515285761,
239
- 3779681281,
240
- 3779681280
241
- ],
249
+ csis: [515285760, 515285761, 3779681281, 3779681280],
242
250
  serverTranscoded: true,
243
251
  serverComposed: true,
244
- availableLayouts: [
245
- 'Single',
246
- 'ActivePresence',
247
- 'Prominent',
248
- 'Equal',
249
- 'OnePlusN'
250
- ]
251
- }
252
+ availableLayouts: ['Single', 'ActivePresence', 'Prominent', 'Equal', 'OnePlusN'],
253
+ },
252
254
  ],
253
255
  status: {
254
256
  audioStatus: 'SENDRECV',
255
257
  videoStatus: 'SENDRECV',
256
258
  videoSlidesStatus: 'RECVONLY',
257
259
  audioSlidesStatus: 'INACTIVE',
258
- csis: [
259
- 515285760,
260
- 515285761,
261
- 3779681281,
262
- 3779681280
263
- ]
260
+ csis: [515285760, 515285761, 3779681281, 3779681280],
264
261
  },
265
262
  suggestedMedia: [
266
263
  {
267
264
  mediaType: 'audio',
268
265
  mediaContent: 'main',
269
- direction: 'inactive'
266
+ direction: 'inactive',
270
267
  },
271
268
  {
272
269
  mediaType: 'video',
273
270
  mediaContent: 'main',
274
- direction: 'recvonly'
271
+ direction: 'recvonly',
275
272
  },
276
273
  {
277
274
  mediaType: 'video',
278
275
  mediaContent: 'slides',
279
- direction: 'sendrecv'
280
- }
276
+ direction: 'sendrecv',
277
+ },
281
278
  ],
282
279
  controls: {
283
280
  audio: {
284
281
  muted: false,
285
282
  requestedToUnmute: false,
286
- meta: {}
283
+ meta: {},
287
284
  },
288
285
  localRecord: {
289
- recording: false
286
+ recording: false,
290
287
  },
291
288
  layouts: [
292
289
  {
293
290
  type: 'activePresence',
294
- deviceUrl: 'https://wdm-a.wbx2.com/wdm/api/v1/devices/20eabde3-4254-48da-9a24'
295
- }
291
+ deviceUrl: 'https://wdm-a.wbx2.com/wdm/api/v1/devices/20eabde3-4254-48da-9a24',
292
+ },
296
293
  ],
297
294
  role: {
298
295
  presenter: true,
@@ -301,11 +298,11 @@ export const selfWithInactivity = {
301
298
  type: 'PRESENTER',
302
299
  hasRole: true,
303
300
  meta: {
304
- lastModified: '2020-07-20T20:32:35.259Z'
305
- }
306
- }
307
- ]
308
- }
301
+ lastModified: '2020-07-20T20:32:35.259Z',
302
+ },
303
+ },
304
+ ],
305
+ },
309
306
  },
310
307
  enableDTMF: true,
311
308
  id: 'e0d54e94-226c-3290-b75a-',
@@ -313,5 +310,6 @@ export const selfWithInactivity = {
313
310
  resourceGuest: false,
314
311
  moderator: true,
315
312
  panelist: false,
316
- mediaBaseUrl: 'https://locus.meet-a.prod.meetapi.webex.com/locus/api/v1/loci/4e073f82-f5b6-31e5-93b3/participant/e0d54e94-226c-3290-b75a-/media'
313
+ mediaBaseUrl:
314
+ 'https://locus.meet-a.prod.meetapi.webex.com/locus/api/v1/loci/4e073f82-f5b6-31e5-93b3/participant/e0d54e94-226c-3290-b75a-/media',
317
315
  };
@@ -33,6 +33,24 @@ describe('plugin-meetings', () => {
33
33
  assert.calledWith(getRolesSpy, self);
34
34
 
35
35
  assert.deepEqual(parsedSelf.roles, ['PRESENTER']);
36
+ assert.deepEqual(parsedSelf.breakoutSessions, {
37
+ active: [
38
+ {
39
+ name: 'Breakout session 2',
40
+ groupId: '0e73abb8-5584-49d8-be8d-806d2a8247ca',
41
+ sessionId: '1cf41ab1-2e57-4d95-b7e9-5613acddfb0f',
42
+ sessionType: 'BREAKOUT',
43
+ },
44
+ ],
45
+ allowed: [
46
+ {
47
+ name: 'Breakout session 2',
48
+ groupId: '0e73abb8-5584-49d8-be8d-806d2a8247ca',
49
+ sessionId: '1cf41ab1-2e57-4d95-b7e9-5613acddfb0f',
50
+ sessionType: 'BREAKOUT',
51
+ },
52
+ ],
53
+ });
36
54
  });
37
55
 
38
56
  it('calls getLayout and returns the resulting layout', () => {
@@ -58,9 +76,81 @@ describe('plugin-meetings', () => {
58
76
  });
59
77
  });
60
78
 
79
+ describe('getBreakouts', () => {
80
+ it('should return breakout sessions', () => {
81
+ assert.deepEqual(
82
+ SelfUtils.getBreakouts({controls: {breakout: {sessions: 'SESSIONS'}}}),
83
+ 'SESSIONS'
84
+ );
85
+ });
86
+ });
87
+
88
+ describe('breakoutsChanged', () => {
89
+ it('should return true if breakouts have changed', () => {
90
+ const current = {
91
+ breakoutSessions: {
92
+ allowed: [
93
+ {
94
+ name: 'Breakout session 2',
95
+ groupId: '0e73abb8-5584-49d8-be8d-806d2a8247ca',
96
+ sessionId: '1cf41ab1-2e57-4d95-b7e9-5613acddfb0f',
97
+ sessionType: 'BREAKOUT',
98
+ },
99
+ ],
100
+ },
101
+ };
102
+ const previous = {
103
+ breakoutSessions: {
104
+ active: [
105
+ {
106
+ name: 'Breakout session 2',
107
+ groupId: '0e73abb8-5584-49d8-be8d-806d2a8247ca',
108
+ sessionId: '1cf41ab1-2e57-4d95-b7e9-5613acddfb0f',
109
+ sessionType: 'BREAKOUT',
110
+ },
111
+ ],
112
+ },
113
+ };
114
+
115
+ assert.isTrue(SelfUtils.breakoutsChanged(previous, current));
116
+ });
117
+
118
+ it('should return false if breakouts have not changed', () => {
119
+ const current = {
120
+ breakoutSessions: {
121
+ active: [
122
+ {
123
+ name: 'Breakout session 2',
124
+ groupId: '0e73abb8-5584-49d8-be8d-806d2a8247ca',
125
+ sessionId: '1cf41ab1-2e57-4d95-b7e9-5613acddfb0f',
126
+ sessionType: 'BREAKOUT',
127
+ },
128
+ ],
129
+ },
130
+ };
131
+ const previous = {
132
+ breakoutSessions: {
133
+ active: [
134
+ {
135
+ name: 'Breakout session 2',
136
+ groupId: '0e73abb8-5584-49d8-be8d-806d2a8247ca',
137
+ sessionId: '1cf41ab1-2e57-4d95-b7e9-5613acddfb0f',
138
+ sessionType: 'BREAKOUT',
139
+ },
140
+ ],
141
+ },
142
+ };
143
+
144
+ assert.isFalse(SelfUtils.breakoutsChanged(previous, current));
145
+ });
146
+ });
147
+
61
148
  describe('canNotViewTheParticipantList', () => {
62
149
  it('should return the correct value', () => {
63
- assert.equal(SelfUtils.canNotViewTheParticipantList(self), self.canNotViewTheParticipantList);
150
+ assert.equal(
151
+ SelfUtils.canNotViewTheParticipantList(self),
152
+ self.canNotViewTheParticipantList
153
+ );
64
154
  });
65
155
 
66
156
  it('should return false if the new self does not have a value', () => {
@@ -90,17 +180,23 @@ describe('plugin-meetings', () => {
90
180
  it('get roles works', () => {
91
181
  assert.deepEqual(SelfUtils.getRoles(self), ['PRESENTER']);
92
182
 
93
- assert.deepEqual(SelfUtils.getRoles({
94
- controls: {
95
- role: {roles: [{type: 'SOME_ARBITRARY_ROLE', hasRole: true}]}
96
- }
97
- }), ['SOME_ARBITRARY_ROLE']);
98
-
99
- assert.deepEqual(SelfUtils.getRoles({
100
- controls: {
101
- role: {roles: [{type: 'SOME_ARBITRARY_ROLE', hasRole: false}]}
102
- }
103
- }), []);
183
+ assert.deepEqual(
184
+ SelfUtils.getRoles({
185
+ controls: {
186
+ role: {roles: [{type: 'SOME_ARBITRARY_ROLE', hasRole: true}]},
187
+ },
188
+ }),
189
+ ['SOME_ARBITRARY_ROLE']
190
+ );
191
+
192
+ assert.deepEqual(
193
+ SelfUtils.getRoles({
194
+ controls: {
195
+ role: {roles: [{type: 'SOME_ARBITRARY_ROLE', hasRole: false}]},
196
+ },
197
+ }),
198
+ []
199
+ );
104
200
 
105
201
  assert.deepEqual(SelfUtils.getRoles({}), []);
106
202
  assert.deepEqual(SelfUtils.getRoles(), []);
@@ -173,4 +269,61 @@ describe('plugin-meetings', () => {
173
269
  assert.deepEqual(SelfUtils.isJoined(customSelf), false);
174
270
  });
175
271
  });
272
+
273
+ describe('videoMutedByOthersChanged', () => {
274
+ it('returns true if changed', () => {
275
+ assert.equal(
276
+ SelfUtils.videoMutedByOthersChanged({remoteVideoMuted: true}, {remoteVideoMuted: false}),
277
+ true
278
+ );
279
+ });
280
+
281
+ it('returns true if changed from undefined', () => {
282
+ assert.equal(SelfUtils.videoMutedByOthersChanged({}, {remoteVideoMuted: false}), true);
283
+ });
284
+
285
+ it('returns false if not changed', () => {
286
+ assert.equal(
287
+ SelfUtils.videoMutedByOthersChanged({remoteVideoMuted: false}, {remoteVideoMuted: false}),
288
+ false
289
+ );
290
+ });
291
+ });
292
+
293
+ describe('isUpgradeToModeratorOrCohost', () => {
294
+ it('returns true if changed', () => {
295
+ assert.equal(
296
+ SelfUtils.isUpgradeToModeratorOrCohost({roles: ['ATTENDEE']}, {roles: ['ATTENDEE','MODERATOR']}),
297
+ true
298
+ );
299
+ });
300
+
301
+ it('returns true if changed', () => {
302
+ assert.equal(
303
+ SelfUtils.isUpgradeToModeratorOrCohost({roles: ['ATTENDEE']}, {roles: ['ATTENDEE','COHOST']}),
304
+ true
305
+ );
306
+ });
307
+
308
+ it('returns false if changed', () => {
309
+ assert.equal(
310
+ SelfUtils.isUpgradeToModeratorOrCohost({roles: ['ATTENDEE','MODERATOR']}, {roles: ['ATTENDEE']}),
311
+ false
312
+ );
313
+ });
314
+
315
+ it('returns false if changed', () => {
316
+ assert.equal(
317
+ SelfUtils.isUpgradeToModeratorOrCohost({roles: ['ATTENDEE','COHOST']}, {roles: ['ATTENDEE']}),
318
+ false
319
+ );
320
+ });
321
+
322
+ it('returns false if changed', () => {
323
+ assert.equal(
324
+ SelfUtils.isUpgradeToModeratorOrCohost({roles: ['ATTENDEE','HOST','MODERATOR']}, {roles: ['ATTENDEE']}),
325
+ false
326
+ );
327
+ });
328
+ });
176
329
  });