@webex/plugin-meetings 3.0.0-beta.2 → 3.0.0-beta.21

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 (365) hide show
  1. package/UPGRADING.md +9 -9
  2. package/browsers.js +19 -24
  3. package/dist/breakouts/breakout.js +116 -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/index.js +226 -0
  8. package/dist/breakouts/index.js.map +1 -0
  9. package/dist/common/browser-detection.js +1 -20
  10. package/dist/common/browser-detection.js.map +1 -1
  11. package/dist/common/collection.js +5 -20
  12. package/dist/common/collection.js.map +1 -1
  13. package/dist/common/config.js +0 -7
  14. package/dist/common/config.js.map +1 -1
  15. package/dist/common/errors/captcha-error.js +10 -24
  16. package/dist/common/errors/captcha-error.js.map +1 -1
  17. package/dist/common/errors/intent-to-join.js +11 -24
  18. package/dist/common/errors/intent-to-join.js.map +1 -1
  19. package/dist/common/errors/join-meeting.js +12 -25
  20. package/dist/common/errors/join-meeting.js.map +1 -1
  21. package/dist/common/errors/media.js +10 -24
  22. package/dist/common/errors/media.js.map +1 -1
  23. package/dist/common/errors/parameter.js +5 -33
  24. package/dist/common/errors/parameter.js.map +1 -1
  25. package/dist/common/errors/password-error.js +10 -24
  26. package/dist/common/errors/password-error.js.map +1 -1
  27. package/dist/common/errors/permission.js +9 -23
  28. package/dist/common/errors/permission.js.map +1 -1
  29. package/dist/common/errors/reconnection-in-progress.js +0 -17
  30. package/dist/common/errors/reconnection-in-progress.js.map +1 -1
  31. package/dist/common/errors/reconnection.js +10 -24
  32. package/dist/common/errors/reconnection.js.map +1 -1
  33. package/dist/common/errors/stats.js +10 -24
  34. package/dist/common/errors/stats.js.map +1 -1
  35. package/dist/common/errors/webex-errors.js +6 -41
  36. package/dist/common/errors/webex-errors.js.map +1 -1
  37. package/dist/common/errors/webex-meetings-error.js +5 -25
  38. package/dist/common/errors/webex-meetings-error.js.map +1 -1
  39. package/dist/common/events/events-scope.js +0 -22
  40. package/dist/common/events/events-scope.js.map +1 -1
  41. package/dist/common/events/events.js +0 -23
  42. package/dist/common/events/events.js.map +1 -1
  43. package/dist/common/events/trigger-proxy.js +0 -12
  44. package/dist/common/events/trigger-proxy.js.map +1 -1
  45. package/dist/common/events/util.js +0 -15
  46. package/dist/common/events/util.js.map +1 -1
  47. package/dist/common/logs/logger-config.js +0 -4
  48. package/dist/common/logs/logger-config.js.map +1 -1
  49. package/dist/common/logs/logger-proxy.js +1 -8
  50. package/dist/common/logs/logger-proxy.js.map +1 -1
  51. package/dist/common/logs/request.js +37 -60
  52. package/dist/common/logs/request.js.map +1 -1
  53. package/dist/common/queue.js +4 -14
  54. package/dist/common/queue.js.map +1 -1
  55. package/dist/config.js +6 -6
  56. package/dist/config.js.map +1 -1
  57. package/dist/constants.js +88 -46
  58. package/dist/constants.js.map +1 -1
  59. package/dist/index.js +4 -18
  60. package/dist/index.js.map +1 -1
  61. package/dist/locus-info/controlsUtils.js +12 -29
  62. package/dist/locus-info/controlsUtils.js.map +1 -1
  63. package/dist/locus-info/embeddedAppsUtils.js +3 -26
  64. package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
  65. package/dist/locus-info/fullState.js +0 -15
  66. package/dist/locus-info/fullState.js.map +1 -1
  67. package/dist/locus-info/hostUtils.js +4 -12
  68. package/dist/locus-info/hostUtils.js.map +1 -1
  69. package/dist/locus-info/index.js +184 -190
  70. package/dist/locus-info/index.js.map +1 -1
  71. package/dist/locus-info/infoUtils.js +3 -37
  72. package/dist/locus-info/infoUtils.js.map +1 -1
  73. package/dist/locus-info/mediaSharesUtils.js +12 -38
  74. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  75. package/dist/locus-info/parser.js +92 -118
  76. package/dist/locus-info/parser.js.map +1 -1
  77. package/dist/locus-info/selfUtils.js +34 -91
  78. package/dist/locus-info/selfUtils.js.map +1 -1
  79. package/dist/media/index.js +67 -111
  80. package/dist/media/index.js.map +1 -1
  81. package/dist/media/properties.js +80 -114
  82. package/dist/media/properties.js.map +1 -1
  83. package/dist/media/util.js +2 -9
  84. package/dist/media/util.js.map +1 -1
  85. package/dist/mediaQualityMetrics/config.js +10 -12
  86. package/dist/mediaQualityMetrics/config.js.map +1 -1
  87. package/dist/meeting/effectsState.js +125 -190
  88. package/dist/meeting/effectsState.js.map +1 -1
  89. package/dist/meeting/in-meeting-actions.js +5 -14
  90. package/dist/meeting/in-meeting-actions.js.map +1 -1
  91. package/dist/meeting/index.js +1692 -1925
  92. package/dist/meeting/index.js.map +1 -1
  93. package/dist/meeting/muteState.js +36 -77
  94. package/dist/meeting/muteState.js.map +1 -1
  95. package/dist/meeting/request.js +224 -230
  96. package/dist/meeting/request.js.map +1 -1
  97. package/dist/meeting/request.type.js +7 -0
  98. package/dist/meeting/request.type.js.map +1 -0
  99. package/dist/meeting/state.js +21 -31
  100. package/dist/meeting/state.js.map +1 -1
  101. package/dist/meeting/util.js +43 -215
  102. package/dist/meeting/util.js.map +1 -1
  103. package/dist/meeting-info/collection.js +6 -25
  104. package/dist/meeting-info/collection.js.map +1 -1
  105. package/dist/meeting-info/index.js +14 -32
  106. package/dist/meeting-info/index.js.map +1 -1
  107. package/dist/meeting-info/meeting-info-v2.js +193 -268
  108. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  109. package/dist/meeting-info/request.js +3 -15
  110. package/dist/meeting-info/request.js.map +1 -1
  111. package/dist/meeting-info/util.js +98 -183
  112. package/dist/meeting-info/util.js.map +1 -1
  113. package/dist/meeting-info/utilv2.js +137 -228
  114. package/dist/meeting-info/utilv2.js.map +1 -1
  115. package/dist/meetings/collection.js +5 -20
  116. package/dist/meetings/collection.js.map +1 -1
  117. package/dist/meetings/index.js +490 -560
  118. package/dist/meetings/index.js.map +1 -1
  119. package/dist/meetings/request.js +24 -41
  120. package/dist/meetings/request.js.map +1 -1
  121. package/dist/meetings/util.js +99 -155
  122. package/dist/meetings/util.js.map +1 -1
  123. package/dist/member/index.js +78 -86
  124. package/dist/member/index.js.map +1 -1
  125. package/dist/member/util.js +31 -68
  126. package/dist/member/util.js.map +1 -1
  127. package/dist/members/collection.js +3 -12
  128. package/dist/members/collection.js.map +1 -1
  129. package/dist/members/index.js +93 -200
  130. package/dist/members/index.js.map +1 -1
  131. package/dist/members/request.js +16 -39
  132. package/dist/members/request.js.map +1 -1
  133. package/dist/members/util.js +9 -38
  134. package/dist/members/util.js.map +1 -1
  135. package/dist/metrics/config.js +0 -2
  136. package/dist/metrics/config.js.map +1 -1
  137. package/dist/metrics/constants.js +1 -2
  138. package/dist/metrics/constants.js.map +1 -1
  139. package/dist/metrics/index.js +55 -135
  140. package/dist/metrics/index.js.map +1 -1
  141. package/dist/multistream/mediaRequestManager.js +57 -32
  142. package/dist/multistream/mediaRequestManager.js.map +1 -1
  143. package/dist/multistream/multistreamMedia.js +15 -21
  144. package/dist/multistream/multistreamMedia.js.map +1 -1
  145. package/dist/multistream/receiveSlot.js +10 -50
  146. package/dist/multistream/receiveSlot.js.map +1 -1
  147. package/dist/multistream/receiveSlotManager.js +45 -82
  148. package/dist/multistream/receiveSlotManager.js.map +1 -1
  149. package/dist/multistream/remoteMedia.js +18 -58
  150. package/dist/multistream/remoteMedia.js.map +1 -1
  151. package/dist/multistream/remoteMediaGroup.js +6 -40
  152. package/dist/multistream/remoteMediaGroup.js.map +1 -1
  153. package/dist/multistream/remoteMediaManager.js +362 -416
  154. package/dist/multistream/remoteMediaManager.js.map +1 -1
  155. package/dist/networkQualityMonitor/index.js +36 -57
  156. package/dist/networkQualityMonitor/index.js.map +1 -1
  157. package/dist/personal-meeting-room/index.js +21 -45
  158. package/dist/personal-meeting-room/index.js.map +1 -1
  159. package/dist/personal-meeting-room/request.js +1 -31
  160. package/dist/personal-meeting-room/request.js.map +1 -1
  161. package/dist/personal-meeting-room/util.js +0 -13
  162. package/dist/personal-meeting-room/util.js.map +1 -1
  163. package/dist/reachability/index.js +138 -182
  164. package/dist/reachability/index.js.map +1 -1
  165. package/dist/reachability/request.js +3 -18
  166. package/dist/reachability/request.js.map +1 -1
  167. package/dist/reactions/constants.js +13 -0
  168. package/dist/reactions/constants.js.map +1 -0
  169. package/dist/reactions/reactions.js +109 -0
  170. package/dist/reactions/reactions.js.map +1 -0
  171. package/dist/reactions/reactions.type.js +36 -0
  172. package/dist/reactions/reactions.type.js.map +1 -0
  173. package/dist/reconnection-manager/index.js +322 -455
  174. package/dist/reconnection-manager/index.js.map +1 -1
  175. package/dist/recording-controller/enums.js +17 -0
  176. package/dist/recording-controller/enums.js.map +1 -0
  177. package/dist/recording-controller/index.js +343 -0
  178. package/dist/recording-controller/index.js.map +1 -0
  179. package/dist/recording-controller/util.js +63 -0
  180. package/dist/recording-controller/util.js.map +1 -0
  181. package/dist/roap/index.js +39 -64
  182. package/dist/roap/index.js.map +1 -1
  183. package/dist/roap/request.js +94 -113
  184. package/dist/roap/request.js.map +1 -1
  185. package/dist/roap/turnDiscovery.js +85 -94
  186. package/dist/roap/turnDiscovery.js.map +1 -1
  187. package/dist/statsAnalyzer/global.js +0 -2
  188. package/dist/statsAnalyzer/global.js.map +1 -1
  189. package/dist/statsAnalyzer/index.js +85 -175
  190. package/dist/statsAnalyzer/index.js.map +1 -1
  191. package/dist/statsAnalyzer/mqaUtil.js +72 -53
  192. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  193. package/dist/transcription/index.js +22 -47
  194. package/dist/transcription/index.js.map +1 -1
  195. package/internal-README.md +7 -6
  196. package/package.json +25 -20
  197. package/src/breakouts/README.md +190 -0
  198. package/src/breakouts/breakout.ts +110 -0
  199. package/src/breakouts/collection.ts +19 -0
  200. package/src/breakouts/index.ts +225 -0
  201. package/src/common/{browser-detection.js → browser-detection.ts} +9 -6
  202. package/src/common/collection.ts +9 -7
  203. package/src/common/{config.js → config.ts} +1 -1
  204. package/src/common/errors/{captcha-error.js → captcha-error.ts} +11 -7
  205. package/src/common/errors/{intent-to-join.js → intent-to-join.ts} +12 -7
  206. package/src/common/errors/{join-meeting.js → join-meeting.ts} +17 -8
  207. package/src/common/errors/{media.js → media.ts} +11 -7
  208. package/src/common/errors/parameter.ts +11 -7
  209. package/src/common/errors/{password-error.js → password-error.ts} +11 -7
  210. package/src/common/errors/{permission.js → permission.ts} +10 -6
  211. package/src/common/errors/{reconnection-in-progress.js → reconnection-in-progress.ts} +0 -0
  212. package/src/common/errors/{reconnection.js → reconnection.ts} +11 -7
  213. package/src/common/errors/{stats.js → stats.ts} +11 -7
  214. package/src/common/errors/{webex-errors.js → webex-errors.ts} +8 -7
  215. package/src/common/errors/{webex-meetings-error.js → webex-meetings-error.ts} +4 -2
  216. package/src/common/events/{events-scope.js → events-scope.ts} +6 -2
  217. package/src/common/events/{events.js → events.ts} +5 -1
  218. package/src/common/events/{trigger-proxy.js → trigger-proxy.ts} +9 -5
  219. package/src/common/events/{util.js → util.ts} +2 -3
  220. package/src/common/logs/{logger-config.js → logger-config.ts} +1 -2
  221. package/src/common/logs/logger-proxy.ts +44 -0
  222. package/src/common/logs/{request.js → request.ts} +22 -9
  223. package/src/common/queue.ts +1 -2
  224. package/src/{config.js → config.ts} +17 -12
  225. package/src/constants.ts +40 -1
  226. package/src/index.js +2 -1
  227. package/src/locus-info/controlsUtils.ts +114 -0
  228. package/src/locus-info/{embeddedAppsUtils.js → embeddedAppsUtils.ts} +5 -6
  229. package/src/locus-info/{fullState.js → fullState.ts} +16 -12
  230. package/src/locus-info/{hostUtils.js → hostUtils.ts} +9 -8
  231. package/src/locus-info/{index.js → index.ts} +148 -64
  232. package/src/locus-info/{infoUtils.js → infoUtils.ts} +19 -8
  233. package/src/locus-info/{mediaSharesUtils.js → mediaSharesUtils.ts} +17 -17
  234. package/src/locus-info/{parser.js → parser.ts} +67 -79
  235. package/src/locus-info/{selfUtils.js → selfUtils.ts} +123 -68
  236. package/src/media/{index.js → index.ts} +181 -131
  237. package/src/media/{properties.js → properties.ts} +47 -28
  238. package/src/media/{util.js → util.ts} +2 -2
  239. package/src/mediaQualityMetrics/{config.js → config.ts} +46 -46
  240. package/src/meeting/{effectsState.js → effectsState.ts} +47 -41
  241. package/src/meeting/in-meeting-actions.ts +15 -3
  242. package/src/meeting/{index.js → index.ts} +2263 -1427
  243. package/src/meeting/{muteState.js → muteState.ts} +78 -42
  244. package/src/meeting/{request.js → request.ts} +292 -142
  245. package/src/meeting/request.type.ts +13 -0
  246. package/src/meeting/{state.js → state.ts} +50 -35
  247. package/src/meeting/{util.js → util.ts} +112 -115
  248. package/src/meeting-info/{collection.js → collection.ts} +6 -2
  249. package/src/meeting-info/{index.js → index.ts} +42 -36
  250. package/src/meeting-info/meeting-info-v2.ts +273 -0
  251. package/src/meeting-info/{request.js → request.ts} +14 -4
  252. package/src/meeting-info/{util.js → util.ts} +60 -51
  253. package/src/meeting-info/{utilv2.js → utilv2.ts} +65 -58
  254. package/src/meetings/{collection.js → collection.ts} +6 -3
  255. package/src/meetings/index.ts +1159 -0
  256. package/src/meetings/{request.js → request.ts} +32 -25
  257. package/src/meetings/{util.js → util.ts} +34 -32
  258. package/src/member/{index.js → index.ts} +102 -56
  259. package/src/member/{util.js → util.ts} +52 -25
  260. package/src/members/{collection.js → collection.ts} +2 -2
  261. package/src/members/{index.js → index.ts} +219 -142
  262. package/src/members/{request.js → request.ts} +60 -16
  263. package/src/members/{util.js → util.ts} +50 -48
  264. package/src/metrics/{config.js → config.ts} +254 -83
  265. package/src/metrics/{constants.js → constants.ts} +0 -2
  266. package/src/metrics/{index.js → index.ts} +106 -74
  267. package/src/multistream/mediaRequestManager.ts +81 -15
  268. package/src/multistream/multistreamMedia.ts +5 -0
  269. package/src/multistream/receiveSlot.ts +18 -12
  270. package/src/multistream/receiveSlotManager.ts +23 -21
  271. package/src/multistream/remoteMedia.ts +15 -5
  272. package/src/multistream/remoteMediaGroup.ts +4 -3
  273. package/src/multistream/remoteMediaManager.ts +153 -37
  274. package/src/networkQualityMonitor/{index.js → index.ts} +37 -25
  275. package/src/personal-meeting-room/{index.js → index.ts} +28 -19
  276. package/src/personal-meeting-room/{request.js → request.ts} +13 -4
  277. package/src/personal-meeting-room/{util.js → util.ts} +4 -4
  278. package/src/reachability/{index.js → index.ts} +99 -83
  279. package/src/reachability/request.ts +39 -33
  280. package/src/reactions/constants.ts +4 -0
  281. package/src/reactions/reactions.ts +104 -0
  282. package/src/reactions/reactions.type.ts +62 -0
  283. package/src/reconnection-manager/{index.js → index.ts} +195 -102
  284. package/src/recording-controller/enums.ts +8 -0
  285. package/src/recording-controller/index.ts +315 -0
  286. package/src/recording-controller/util.ts +58 -0
  287. package/src/roap/{index.js → index.ts} +73 -56
  288. package/src/roap/request.ts +157 -0
  289. package/src/roap/turnDiscovery.ts +77 -37
  290. package/src/statsAnalyzer/{global.js → global.ts} +30 -33
  291. package/src/statsAnalyzer/{index.js → index.ts} +468 -192
  292. package/src/statsAnalyzer/mqaUtil.ts +290 -0
  293. package/src/transcription/{index.js → index.ts} +46 -39
  294. package/test/integration/spec/journey.js +664 -463
  295. package/test/integration/spec/space-meeting.js +320 -206
  296. package/test/integration/spec/transcription.js +7 -8
  297. package/test/unit/spec/breakouts/breakout.ts +119 -0
  298. package/test/unit/spec/breakouts/collection.ts +15 -0
  299. package/test/unit/spec/breakouts/index.ts +293 -0
  300. package/test/unit/spec/common/browser-detection.js +9 -28
  301. package/test/unit/spec/fixture/locus.js +92 -90
  302. package/test/unit/spec/locus-info/controlsUtils.js +25 -5
  303. package/test/unit/spec/locus-info/embeddedAppsUtils.js +8 -6
  304. package/test/unit/spec/locus-info/index.js +104 -2
  305. package/test/unit/spec/locus-info/infoUtils.js +41 -32
  306. package/test/unit/spec/locus-info/lib/BasicSeqCmp.json +88 -430
  307. package/test/unit/spec/locus-info/lib/SeqCmp.json +513 -685
  308. package/test/unit/spec/locus-info/parser.js +3 -9
  309. package/test/unit/spec/locus-info/selfConstant.js +97 -103
  310. package/test/unit/spec/locus-info/selfUtils.js +105 -12
  311. package/test/unit/spec/media/index.ts +31 -47
  312. package/test/unit/spec/media/properties.ts +9 -9
  313. package/test/unit/spec/meeting/effectsState.js +39 -45
  314. package/test/unit/spec/meeting/in-meeting-actions.ts +5 -2
  315. package/test/unit/spec/meeting/index.js +2017 -742
  316. package/test/unit/spec/meeting/muteState.js +42 -33
  317. package/test/unit/spec/meeting/request.js +115 -44
  318. package/test/unit/spec/meeting/utils.js +104 -171
  319. package/test/unit/spec/meeting-info/meetinginfov2.js +100 -73
  320. package/test/unit/spec/meeting-info/request.js +7 -9
  321. package/test/unit/spec/meeting-info/util.js +11 -12
  322. package/test/unit/spec/meeting-info/utilv2.js +110 -74
  323. package/test/unit/spec/meetings/collection.js +1 -1
  324. package/test/unit/spec/meetings/index.js +439 -257
  325. package/test/unit/spec/meetings/utils.js +14 -12
  326. package/test/unit/spec/member/index.js +0 -1
  327. package/test/unit/spec/member/util.js +31 -7
  328. package/test/unit/spec/members/index.js +104 -54
  329. package/test/unit/spec/members/request.js +29 -20
  330. package/test/unit/spec/members/utils.js +8 -5
  331. package/test/unit/spec/metrics/index.js +16 -21
  332. package/test/unit/spec/multistream/mediaRequestManager.ts +316 -50
  333. package/test/unit/spec/multistream/receiveSlot.ts +6 -6
  334. package/test/unit/spec/multistream/receiveSlotManager.ts +13 -13
  335. package/test/unit/spec/multistream/remoteMedia.ts +10 -2
  336. package/test/unit/spec/multistream/remoteMediaGroup.ts +5 -5
  337. package/test/unit/spec/multistream/remoteMediaManager.ts +412 -65
  338. package/test/unit/spec/networkQualityMonitor/index.js +21 -15
  339. package/test/unit/spec/personal-meeting-room/personal-meeting-room.js +2 -7
  340. package/test/unit/spec/reachability/index.ts +58 -26
  341. package/test/unit/spec/reconnection-manager/index.js +102 -9
  342. package/test/unit/spec/recording-controller/index.js +231 -0
  343. package/test/unit/spec/recording-controller/util.js +102 -0
  344. package/test/unit/spec/roap/index.ts +2 -1
  345. package/test/unit/spec/roap/request.ts +114 -0
  346. package/test/unit/spec/roap/turnDiscovery.ts +64 -45
  347. package/test/unit/spec/stats-analyzer/index.js +27 -22
  348. package/test/utils/cmr.js +44 -42
  349. package/test/utils/testUtils.js +83 -74
  350. package/test/utils/webex-config.js +18 -18
  351. package/test/utils/webex-test-users.js +54 -50
  352. package/tsconfig.json +6 -0
  353. package/dist/media/internal-media-core-wrapper.js +0 -22
  354. package/dist/media/internal-media-core-wrapper.js.map +0 -1
  355. package/dist/peer-connection-manager/util.js +0 -124
  356. package/dist/peer-connection-manager/util.js.map +0 -1
  357. package/src/common/logs/logger-proxy.js +0 -33
  358. package/src/locus-info/controlsUtils.js +0 -102
  359. package/src/media/internal-media-core-wrapper.ts +0 -9
  360. package/src/meeting-info/meeting-info-v2.js +0 -255
  361. package/src/meetings/index.js +0 -1015
  362. package/src/peer-connection-manager/util.ts +0 -117
  363. package/src/roap/request.js +0 -127
  364. package/src/statsAnalyzer/mqaUtil.js +0 -173
  365. package/test/unit/spec/peerconnection-manager/utils.test-fixtures.ts +0 -389
@@ -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,114 @@ 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
+ breakout: {
113
+ sessions: {
114
+ active: [
115
+ {
116
+ name: 'Breakout session 2',
117
+ groupId: '0e73abb8-5584-49d8-be8d-806d2a8247ca',
118
+ sessionId: '1cf41ab1-2e57-4d95-b7e9-5613acddfb0f',
119
+ sessionType: 'BREAKOUT'
120
+ },
121
+ ],
122
+ allowed: [
123
+ {
124
+ name: 'Breakout session 2',
125
+ groupId: '0e73abb8-5584-49d8-be8d-806d2a8247ca',
126
+ sessionId: '1cf41ab1-2e57-4d95-b7e9-5613acddfb0f',
127
+ sessionType: 'BREAKOUT'
128
+ },
129
+ ]
130
+ },
131
+ meta: {
132
+ modifiedBy: '347ef89e-e1be-40a3-849c-731bdd935e62',
133
+ lastModified: '2023-01-10T10:10:06.813Z',
134
+ readOnly: true
135
+ }
128
136
  },
129
137
  localRecord: {
130
- recording: false
138
+ recording: false,
131
139
  },
132
140
  layouts: [
133
141
  {
134
142
  type: 'activePresence',
135
- deviceUrl: 'https://wdm-a.wbx2.com/wdm/api/v1/devices/20eabde3-4254-48da-9a24'
136
- }
143
+ deviceUrl: 'https://wdm-a.wbx2.com/wdm/api/v1/devices/20eabde3-4254-48da-9a24',
144
+ },
137
145
  ],
138
146
  role: {
139
147
  presenter: true,
@@ -142,11 +150,11 @@ export const self = {
142
150
  type: 'PRESENTER',
143
151
  hasRole: true,
144
152
  meta: {
145
- lastModified: '2020-07-20T20:32:35.259Z'
146
- }
147
- }
148
- ]
149
- }
153
+ lastModified: '2020-07-20T20:32:35.259Z',
154
+ },
155
+ },
156
+ ],
157
+ },
150
158
  },
151
159
  enableDTMF: true,
152
160
  id: 'e0d54e94-226c-3290-b75a-',
@@ -154,7 +162,8 @@ export const self = {
154
162
  resourceGuest: false,
155
163
  moderator: true,
156
164
  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',
165
+ mediaBaseUrl:
166
+ 'https://locus.meet-a.prod.meetapi.webex.com/locus/api/v1/loci/4e073f82-f5b6-31e5-93b3/participant/e0d54e94-226c-3290-b75a-/media',
158
167
  canNotViewTheParticipantList: false,
159
168
  isSharingBlocked: false,
160
169
  };
@@ -162,18 +171,19 @@ export const self = {
162
171
  export const selfWithInactivity = {
163
172
  deviceUrl: 'https://wdm-a.wbx2.com/wdm/api/v1/devices/20eabde3-4254-48da-9a24',
164
173
  alertHint: {
165
- action: 'NONE'
174
+ action: 'NONE',
166
175
  },
167
176
  alertType: {
168
- action: 'NONE'
177
+ action: 'NONE',
169
178
  },
170
179
  callbackInfo: {
171
180
  callbackAddress: 'alice@alpha.webex.com',
172
- callbackType: 'SIPURI'
181
+ callbackType: 'SIPURI',
173
182
  },
174
183
  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'
184
+ lookupLink:
185
+ 'https://locus.meet-a.prod.meetapi.webex.com/locus/api/v1/loci/meetingInfo/4e073f82-f5b6-31e5-93b3?type=LOCUS_ID&useUriLookup=false',
186
+ type: 'MEETING',
177
187
  },
178
188
  isCreator: false,
179
189
  identity: '344ea183-9d5d-4e77-aed2-',
@@ -185,7 +195,7 @@ export const selfWithInactivity = {
185
195
  email: 'alic@cisco.com',
186
196
  name: 'alice',
187
197
  isExternal: false,
188
- orgId: '1eb65fdf-9643-417f-9974'
198
+ orgId: '1eb65fdf-9643-417f-9974',
189
199
  },
190
200
  devices: [
191
201
  {
@@ -194,105 +204,88 @@ export const selfWithInactivity = {
194
204
  mediaConnections: [
195
205
  {
196
206
  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
- }
207
+ actionsUrl:
208
+ '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',
209
+ type: 'SDP',
210
+ },
200
211
  ],
201
212
  mediaSessions: [
202
213
  {
203
214
  mediaType: 'audio',
204
215
  mediaContent: 'main',
205
216
  direction: 'sendrecv',
206
- state: 'inactive'
217
+ state: 'inactive',
207
218
  },
208
219
  {
209
220
  mediaType: 'video',
210
221
  mediaContent: 'main',
211
222
  direction: 'sendrecv',
212
- state: 'inactive'
223
+ state: 'inactive',
213
224
  },
214
225
  {
215
226
  mediaType: 'audio',
216
227
  mediaContent: 'slides',
217
228
  direction: 'inactive',
218
- state: 'inactive'
229
+ state: 'inactive',
219
230
  },
220
231
  {
221
232
  mediaType: 'video',
222
233
  mediaContent: 'slides',
223
234
  direction: 'recvonly',
224
- state: 'inactive'
225
- }
235
+ state: 'inactive',
236
+ },
226
237
  ],
227
238
  mediaSessionsExternal: false,
228
239
  state: 'JOINED',
229
- intents: [
230
- null
231
- ],
240
+ intents: [null],
232
241
  keepAliveSecs: 20,
233
242
  callLegId: '84bbb491-598f-4828-bd27',
234
243
  correlationId: '74421718-e1f8-4555-9497',
235
244
  isVideoCallback: false,
236
- csis: [
237
- 515285760,
238
- 515285761,
239
- 3779681281,
240
- 3779681280
241
- ],
245
+ csis: [515285760, 515285761, 3779681281, 3779681280],
242
246
  serverTranscoded: true,
243
247
  serverComposed: true,
244
- availableLayouts: [
245
- 'Single',
246
- 'ActivePresence',
247
- 'Prominent',
248
- 'Equal',
249
- 'OnePlusN'
250
- ]
251
- }
248
+ availableLayouts: ['Single', 'ActivePresence', 'Prominent', 'Equal', 'OnePlusN'],
249
+ },
252
250
  ],
253
251
  status: {
254
252
  audioStatus: 'SENDRECV',
255
253
  videoStatus: 'SENDRECV',
256
254
  videoSlidesStatus: 'RECVONLY',
257
255
  audioSlidesStatus: 'INACTIVE',
258
- csis: [
259
- 515285760,
260
- 515285761,
261
- 3779681281,
262
- 3779681280
263
- ]
256
+ csis: [515285760, 515285761, 3779681281, 3779681280],
264
257
  },
265
258
  suggestedMedia: [
266
259
  {
267
260
  mediaType: 'audio',
268
261
  mediaContent: 'main',
269
- direction: 'inactive'
262
+ direction: 'inactive',
270
263
  },
271
264
  {
272
265
  mediaType: 'video',
273
266
  mediaContent: 'main',
274
- direction: 'recvonly'
267
+ direction: 'recvonly',
275
268
  },
276
269
  {
277
270
  mediaType: 'video',
278
271
  mediaContent: 'slides',
279
- direction: 'sendrecv'
280
- }
272
+ direction: 'sendrecv',
273
+ },
281
274
  ],
282
275
  controls: {
283
276
  audio: {
284
277
  muted: false,
285
278
  requestedToUnmute: false,
286
- meta: {}
279
+ meta: {},
287
280
  },
288
281
  localRecord: {
289
- recording: false
282
+ recording: false,
290
283
  },
291
284
  layouts: [
292
285
  {
293
286
  type: 'activePresence',
294
- deviceUrl: 'https://wdm-a.wbx2.com/wdm/api/v1/devices/20eabde3-4254-48da-9a24'
295
- }
287
+ deviceUrl: 'https://wdm-a.wbx2.com/wdm/api/v1/devices/20eabde3-4254-48da-9a24',
288
+ },
296
289
  ],
297
290
  role: {
298
291
  presenter: true,
@@ -301,11 +294,11 @@ export const selfWithInactivity = {
301
294
  type: 'PRESENTER',
302
295
  hasRole: true,
303
296
  meta: {
304
- lastModified: '2020-07-20T20:32:35.259Z'
305
- }
306
- }
307
- ]
308
- }
297
+ lastModified: '2020-07-20T20:32:35.259Z',
298
+ },
299
+ },
300
+ ],
301
+ },
309
302
  },
310
303
  enableDTMF: true,
311
304
  id: 'e0d54e94-226c-3290-b75a-',
@@ -313,5 +306,6 @@ export const selfWithInactivity = {
313
306
  resourceGuest: false,
314
307
  moderator: true,
315
308
  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'
309
+ mediaBaseUrl:
310
+ 'https://locus.meet-a.prod.meetapi.webex.com/locus/api/v1/loci/4e073f82-f5b6-31e5-93b3/participant/e0d54e94-226c-3290-b75a-/media',
317
311
  };
@@ -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,78 @@ describe('plugin-meetings', () => {
58
76
  });
59
77
  });
60
78
 
79
+ describe('getBreakouts', () => {
80
+ it('should return breakout sessions', () => {
81
+ assert.deepEqual(SelfUtils.getBreakouts({controls: {breakout: {sessions: 'SESSIONS'}}}), 'SESSIONS');
82
+ });
83
+ });
84
+
85
+ describe('breakoutsChanged', () => {
86
+ it('should return true if breakouts have changed', () => {
87
+ const current = {
88
+ breakoutSessions: {
89
+ allowed: [
90
+ {
91
+ name: 'Breakout session 2',
92
+ groupId: '0e73abb8-5584-49d8-be8d-806d2a8247ca',
93
+ sessionId: '1cf41ab1-2e57-4d95-b7e9-5613acddfb0f',
94
+ sessionType: 'BREAKOUT'
95
+ },
96
+ ]
97
+ }
98
+ };
99
+ const previous = {
100
+ breakoutSessions: {
101
+ active: [
102
+ {
103
+ name: 'Breakout session 2',
104
+ groupId: '0e73abb8-5584-49d8-be8d-806d2a8247ca',
105
+ sessionId: '1cf41ab1-2e57-4d95-b7e9-5613acddfb0f',
106
+ sessionType: 'BREAKOUT'
107
+ },
108
+ ]
109
+ }
110
+ };
111
+
112
+ assert.isTrue(SelfUtils.breakoutsChanged(previous, current));
113
+ });
114
+
115
+ it('should return false if breakouts have not changed', () => {
116
+ const current = {
117
+ breakoutSessions: {
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
+ }
127
+ };
128
+ const previous = {
129
+ breakoutSessions: {
130
+ active: [
131
+ {
132
+ name: 'Breakout session 2',
133
+ groupId: '0e73abb8-5584-49d8-be8d-806d2a8247ca',
134
+ sessionId: '1cf41ab1-2e57-4d95-b7e9-5613acddfb0f',
135
+ sessionType: 'BREAKOUT'
136
+ },
137
+ ]
138
+ }
139
+ };
140
+
141
+ assert.isFalse(SelfUtils.breakoutsChanged(previous, current));
142
+ });
143
+ });
144
+
61
145
  describe('canNotViewTheParticipantList', () => {
62
146
  it('should return the correct value', () => {
63
- assert.equal(SelfUtils.canNotViewTheParticipantList(self), self.canNotViewTheParticipantList);
147
+ assert.equal(
148
+ SelfUtils.canNotViewTheParticipantList(self),
149
+ self.canNotViewTheParticipantList
150
+ );
64
151
  });
65
152
 
66
153
  it('should return false if the new self does not have a value', () => {
@@ -90,17 +177,23 @@ describe('plugin-meetings', () => {
90
177
  it('get roles works', () => {
91
178
  assert.deepEqual(SelfUtils.getRoles(self), ['PRESENTER']);
92
179
 
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
- }), []);
180
+ assert.deepEqual(
181
+ SelfUtils.getRoles({
182
+ controls: {
183
+ role: {roles: [{type: 'SOME_ARBITRARY_ROLE', hasRole: true}]},
184
+ },
185
+ }),
186
+ ['SOME_ARBITRARY_ROLE']
187
+ );
188
+
189
+ assert.deepEqual(
190
+ SelfUtils.getRoles({
191
+ controls: {
192
+ role: {roles: [{type: 'SOME_ARBITRARY_ROLE', hasRole: false}]},
193
+ },
194
+ }),
195
+ []
196
+ );
104
197
 
105
198
  assert.deepEqual(SelfUtils.getRoles({}), []);
106
199
  assert.deepEqual(SelfUtils.getRoles(), []);