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

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 +1 -17
  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 +1 -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
@@ -10,24 +10,27 @@ describe('plugin-meetings', () => {
10
10
  sites: [
11
11
  {
12
12
  siteUrl: 'site1-example.webex.com',
13
- default: false
13
+ default: false,
14
14
  },
15
15
  {
16
16
  siteUrl: 'site2-example.webex.com',
17
- default: false
17
+ default: false,
18
18
  },
19
19
  {
20
20
  siteUrl: 'go.webex.com',
21
- default: true
21
+ default: true,
22
22
  },
23
23
  {
24
24
  siteUrl: 'site3-example.webex.com',
25
- default: false
26
- }
27
- ]
25
+ default: false,
26
+ },
27
+ ],
28
28
  };
29
29
 
30
- assert.equal(MeetingsUtil.parseDefaultSiteFromMeetingPreferences(userPreferences), 'go.webex.com');
30
+ assert.equal(
31
+ MeetingsUtil.parseDefaultSiteFromMeetingPreferences(userPreferences),
32
+ 'go.webex.com'
33
+ );
31
34
  });
32
35
 
33
36
  it('should work fine if no default true site', () => {
@@ -35,16 +38,16 @@ describe('plugin-meetings', () => {
35
38
  sites: [
36
39
  {
37
40
  siteUrl: 'site1-example.webex.com',
38
- default: false
41
+ default: false,
39
42
  },
40
43
  {
41
44
  siteUrl: 'site2-example.webex.com',
42
- default: false
45
+ default: false,
43
46
  },
44
47
  {
45
48
  siteUrl: 'site3-example.webex.com',
46
- default: false
47
- }
49
+ default: false,
50
+ },
48
51
  ],
49
52
  };
50
53
 
@@ -61,4 +64,3 @@ describe('plugin-meetings', () => {
61
64
  });
62
65
  });
63
66
  });
64
-
@@ -4,7 +4,6 @@ import {assert} from '@webex/test-helper-chai';
4
4
  import MemberUtil from '@webex/plugin-meetings/src/member/util';
5
5
  import Member from '@webex/plugin-meetings/src/member';
6
6
 
7
-
8
7
  describe('member', () => {
9
8
  afterEach(() => {
10
9
  sinon.restore();
@@ -1,8 +1,6 @@
1
1
  import {assert} from '@webex/test-helper-chai';
2
-
3
2
  import MemberUtil from '@webex/plugin-meetings/src/member/util';
4
3
 
5
-
6
4
  describe('isHandRaised', () => {
7
5
  it('throws error when there is no participant', () => {
8
6
  assert.throws(() => {
@@ -18,7 +16,7 @@ describe('isHandRaised', () => {
18
16
 
19
17
  it('returns false when hand is not there in controls', () => {
20
18
  const participant = {
21
- controls: {}
19
+ controls: {},
22
20
  };
23
21
 
24
22
  assert.isFalse(MemberUtil.isHandRaised(participant));
@@ -28,9 +26,9 @@ describe('isHandRaised', () => {
28
26
  const participant = {
29
27
  controls: {
30
28
  hand: {
31
- raised: true
29
+ raised: true,
32
30
  },
33
- }
31
+ },
34
32
  };
35
33
 
36
34
  assert.isTrue(MemberUtil.isHandRaised(participant));
@@ -40,11 +38,37 @@ describe('isHandRaised', () => {
40
38
  const participant = {
41
39
  controls: {
42
40
  hand: {
43
- raised: false
41
+ raised: false,
44
42
  },
45
- }
43
+ },
46
44
  };
47
45
 
48
46
  assert.isFalse(MemberUtil.isHandRaised(participant));
49
47
  });
50
48
  });
49
+
50
+ describe('plugin-meetings', () => {
51
+ describe('MemberUtil.isBreakoutsSupported', () => {
52
+ it('throws error when there is no participant', () => {
53
+ assert.throws(() => {
54
+ MemberUtil.isBreakoutsSupported();
55
+ }, 'Breakout support could not be processed, participant is undefined.');
56
+ });
57
+
58
+ it('returns true when hand breakouts are supported', () => {
59
+ const participant = {
60
+ doesNotSupportBreakouts: false
61
+ };
62
+
63
+ assert.isTrue(MemberUtil.isBreakoutsSupported(participant));
64
+ });
65
+
66
+ it('returns false when hand breakouts are not supported', () => {
67
+ const participant = {
68
+ doesNotSupportBreakouts: true
69
+ };
70
+
71
+ assert.isFalse(MemberUtil.isBreakoutsSupported(participant));
72
+ });
73
+ });
74
+ });
@@ -20,7 +20,6 @@ const {assert} = chai;
20
20
  chai.use(chaiAsPromised);
21
21
  sinon.assert.expose(chai.assert, {prefix: ''});
22
22
 
23
-
24
23
  describe('plugin-meetings', () => {
25
24
  let webex;
26
25
  let url1;
@@ -34,37 +33,33 @@ describe('plugin-meetings', () => {
34
33
  id: '6eb08f8b-bf69-3251-a126-b161bead2d21',
35
34
  phoneNumber: '+18578675309',
36
35
  isExternal: true,
37
- primaryDisplayString: '+18578675309'
36
+ primaryDisplayString: '+18578675309',
38
37
  },
39
38
  devices: [
40
39
  {
41
40
  url: 'https://fakeURL.com',
42
41
  deviceType: 'SIP',
43
42
  state: 'JOINED',
44
- intents: [
45
- null
46
- ],
43
+ intents: [null],
47
44
  correlationId: '1234',
48
45
  provisionalUrl: 'dialout:///fake',
49
- isSparkPstn: true
46
+ isSparkPstn: true,
50
47
  },
51
48
  {
52
49
  url: 'dialout:///fakeagain',
53
50
  deviceType: 'PROVISIONAL',
54
51
  state: 'JOINED',
55
- intents: [
56
- null
57
- ],
52
+ intents: [null],
58
53
  correlationId: '4321',
59
54
  isVideoCallback: false,
60
55
  clientUrl: 'https://fakeURL',
61
56
  provisionalType: 'DIAL_OUT_ONLY',
62
- dialingStatus: 'SUCCESS'
63
- }
57
+ dialingStatus: 'SUCCESS',
58
+ },
64
59
  ],
65
60
  status: {
66
61
  audioStatus: 'SENDRECV',
67
- videoStatus: 'INACTIVE'
62
+ videoStatus: 'INACTIVE',
68
63
  },
69
64
  id: 'abc-123-abc-123',
70
65
  guest: true,
@@ -72,16 +67,15 @@ describe('plugin-meetings', () => {
72
67
  moderator: false,
73
68
  panelist: false,
74
69
  moveToLobbyNotAllowed: true,
75
- deviceUrl: 'https://fakeDeviceurl'
70
+ deviceUrl: 'https://fakeDeviceurl',
76
71
  },
77
72
  id: 'abc-123-abc-123',
78
73
  status: 'IN_MEETING',
79
74
  type: 'MEETING',
80
- isModerator: false
81
- }
75
+ isModerator: false,
76
+ },
82
77
  };
83
78
 
84
-
85
79
  describe('members', () => {
86
80
  const sandbox = sinon.createSandbox();
87
81
  let createMembers;
@@ -91,21 +85,21 @@ describe('plugin-meetings', () => {
91
85
  children: {
92
86
  meetings: Meetings,
93
87
  credentials: Credentials,
94
- support: Support
88
+ support: Support,
95
89
  },
96
90
  config: {
97
91
  credentials: {
98
- client_id: 'mock-client-id'
92
+ client_id: 'mock-client-id',
99
93
  },
100
94
  meetings: {
101
95
  reconnection: {
102
- enabled: false
96
+ enabled: false,
103
97
  },
104
98
  mediaSettings: {},
105
99
  metrics: {},
106
- stats: {}
107
- }
108
- }
100
+ stats: {},
101
+ },
102
+ },
109
103
  });
110
104
 
111
105
  url1 = `https://example.com/${uuid.v4()}`;
@@ -155,7 +149,13 @@ describe('plugin-meetings', () => {
155
149
 
156
150
  members.membersCollection.setAll(fakeMembersCollection);
157
151
  await members.sendDialPadKey('1', 'test1');
158
- assert.calledWith(MembersUtil.genderateSendDTMFOptions, 'https://fakeURL.com', '1', 'test1', url1);
152
+ assert.calledWith(
153
+ MembersUtil.genderateSendDTMFOptions,
154
+ 'https://fakeURL.com',
155
+ '1',
156
+ 'test1',
157
+ url1
158
+ );
159
159
  });
160
160
 
161
161
  it('should call the sendDialPadKey method on membersRequest if the member is valid', async () => {
@@ -196,7 +196,10 @@ describe('plugin-meetings', () => {
196
196
  const members = createMembers({url: locusUrl});
197
197
 
198
198
  const spies = {
199
- generateRaiseHandMemberOptions: sandbox.spy(MembersUtil, 'generateRaiseHandMemberOptions'),
199
+ generateRaiseHandMemberOptions: sandbox.spy(
200
+ MembersUtil,
201
+ 'generateRaiseHandMemberOptions'
202
+ ),
200
203
  raiseOrLowerHandMember: sandbox.spy(members.membersRequest, 'raiseOrLowerHandMember'),
201
204
  };
202
205
 
@@ -209,10 +212,25 @@ describe('plugin-meetings', () => {
209
212
  assert.notCalled(spies.raiseOrLowerHandMember);
210
213
  };
211
214
 
212
- const checkValid = async (resultPromise, spies, expectedMemberId, expectedRaise, expectedLocusUrl) => {
215
+ const checkValid = async (
216
+ resultPromise,
217
+ spies,
218
+ expectedMemberId,
219
+ expectedRaise,
220
+ expectedLocusUrl
221
+ ) => {
213
222
  await assert.isFulfilled(resultPromise);
214
- assert.calledOnceWithExactly(spies.generateRaiseHandMemberOptions, expectedMemberId, expectedRaise, expectedLocusUrl);
215
- assert.calledOnceWithExactly(spies.raiseOrLowerHandMember, {memberId: expectedMemberId, raised: expectedRaise, locusUrl: expectedLocusUrl});
223
+ assert.calledOnceWithExactly(
224
+ spies.generateRaiseHandMemberOptions,
225
+ expectedMemberId,
226
+ expectedRaise,
227
+ expectedLocusUrl
228
+ );
229
+ assert.calledOnceWithExactly(spies.raiseOrLowerHandMember, {
230
+ memberId: expectedMemberId,
231
+ raised: expectedRaise,
232
+ locusUrl: expectedLocusUrl,
233
+ });
216
234
  assert.strictEqual(resultPromise, spies.raiseOrLowerHandMember.getCall(0).returnValue);
217
235
  };
218
236
 
@@ -221,7 +239,11 @@ describe('plugin-meetings', () => {
221
239
 
222
240
  const resultPromise = members.raiseOrLowerHand();
223
241
 
224
- await checkInvalid(resultPromise, 'The member id must be defined to raise/lower the hand of the member.', spies);
242
+ await checkInvalid(
243
+ resultPromise,
244
+ 'The member id must be defined to raise/lower the hand of the member.',
245
+ spies
246
+ );
225
247
  });
226
248
 
227
249
  it('should not make a request if there is no locus url', async () => {
@@ -229,7 +251,11 @@ describe('plugin-meetings', () => {
229
251
 
230
252
  const resultPromise = members.raiseOrLowerHand(uuid.v4());
231
253
 
232
- await checkInvalid(resultPromise, 'The associated locus url for this meetings members object must be defined.', spies);
254
+ await checkInvalid(
255
+ resultPromise,
256
+ 'The associated locus url for this meetings members object must be defined.',
257
+ spies
258
+ );
233
259
  });
234
260
 
235
261
  it('should make the correct request when called with raise as true', async () => {
@@ -265,7 +291,10 @@ describe('plugin-meetings', () => {
265
291
  const members = createMembers({url: locusUrl});
266
292
 
267
293
  const spies = {
268
- generateLowerAllHandsMemberOptions: sandbox.spy(MembersUtil, 'generateLowerAllHandsMemberOptions'),
294
+ generateLowerAllHandsMemberOptions: sandbox.spy(
295
+ MembersUtil,
296
+ 'generateLowerAllHandsMemberOptions'
297
+ ),
269
298
  lowerAllHandsMember: sandbox.spy(members.membersRequest, 'lowerAllHandsMember'),
270
299
  };
271
300
 
@@ -278,10 +307,22 @@ describe('plugin-meetings', () => {
278
307
  assert.notCalled(spies.lowerAllHandsMember);
279
308
  };
280
309
 
281
- const checkValid = async (resultPromise, spies, expectedRequestingMemberId, expectedLocusUrl) => {
310
+ const checkValid = async (
311
+ resultPromise,
312
+ spies,
313
+ expectedRequestingMemberId,
314
+ expectedLocusUrl
315
+ ) => {
282
316
  await assert.isFulfilled(resultPromise);
283
- assert.calledOnceWithExactly(spies.generateLowerAllHandsMemberOptions, expectedRequestingMemberId, expectedLocusUrl);
284
- assert.calledOnceWithExactly(spies.lowerAllHandsMember, {requestingParticipantId: expectedRequestingMemberId, locusUrl: expectedLocusUrl});
317
+ assert.calledOnceWithExactly(
318
+ spies.generateLowerAllHandsMemberOptions,
319
+ expectedRequestingMemberId,
320
+ expectedLocusUrl
321
+ );
322
+ assert.calledOnceWithExactly(spies.lowerAllHandsMember, {
323
+ requestingParticipantId: expectedRequestingMemberId,
324
+ locusUrl: expectedLocusUrl,
325
+ });
285
326
  assert.strictEqual(resultPromise, spies.lowerAllHandsMember.getCall(0).returnValue);
286
327
  };
287
328
 
@@ -290,7 +331,11 @@ describe('plugin-meetings', () => {
290
331
 
291
332
  const resultPromise = members.lowerAllHands();
292
333
 
293
- await checkInvalid(resultPromise, 'The requestingMemberId must be defined to lower all hands in a meeting.', spies);
334
+ await checkInvalid(
335
+ resultPromise,
336
+ 'The requestingMemberId must be defined to lower all hands in a meeting.',
337
+ spies
338
+ );
294
339
  });
295
340
 
296
341
  it('should not make a request if there is no locus url', async () => {
@@ -298,7 +343,11 @@ describe('plugin-meetings', () => {
298
343
 
299
344
  const resultPromise = members.lowerAllHands(uuid.v4());
300
345
 
301
- await checkInvalid(resultPromise, 'The associated locus url for this meetings members object must be defined.', spies);
346
+ await checkInvalid(
347
+ resultPromise,
348
+ 'The associated locus url for this meetings members object must be defined.',
349
+ spies
350
+ );
302
351
  });
303
352
 
304
353
  it('should make the correct request when called with requestingMemberId', async () => {
@@ -317,13 +366,12 @@ describe('plugin-meetings', () => {
317
366
  // fake collection that contains all combinations of members data structure (with respect to CSIs)
318
367
  const fakeCollection = {
319
368
  oneWithoutDevices: {
320
- participant: {
321
- }
369
+ participant: {},
322
370
  },
323
371
  oneWithEmptyDevices: {
324
372
  participant: {
325
373
  devices: [],
326
- }
374
+ },
327
375
  },
328
376
  oneWithDevicesWithoutCsis: {
329
377
  participant: {
@@ -338,7 +386,7 @@ describe('plugin-meetings', () => {
338
386
  url: 'dialout:///fakeagain',
339
387
  deviceType: 'PROVISIONAL',
340
388
  state: 'JOINED',
341
- }
389
+ },
342
390
  ],
343
391
  },
344
392
  id: 'abc-123-abc-123',
@@ -358,10 +406,10 @@ describe('plugin-meetings', () => {
358
406
  deviceType: 'SIP',
359
407
  state: 'JOINED',
360
408
  csis: [2000, 2001, 2002],
361
- }
362
- ]
363
- }
364
- }
409
+ },
410
+ ],
411
+ },
412
+ },
365
413
  };
366
414
 
367
415
  beforeEach(() => {
@@ -392,14 +440,13 @@ describe('plugin-meetings', () => {
392
440
  },
393
441
  oneWithoutDevices: {
394
442
  id: 'oneWithoutDevices',
395
- participant: {
396
- }
443
+ participant: {},
397
444
  },
398
445
  oneWithEmptyDevices: {
399
446
  id: 'oneWithEmptyDevices',
400
447
  participant: {
401
448
  devices: [],
402
- }
449
+ },
403
450
  },
404
451
  oneWithDevicesWithoutCsis: {
405
452
  id: 'oneWithDevicesWithoutCsis',
@@ -415,7 +462,7 @@ describe('plugin-meetings', () => {
415
462
  url: 'dialout:///fakeagain',
416
463
  deviceType: 'PROVISIONAL',
417
464
  state: 'JOINED',
418
- }
465
+ },
419
466
  ],
420
467
  },
421
468
  status: 'IN_MEETING',
@@ -431,7 +478,7 @@ describe('plugin-meetings', () => {
431
478
  mediaSessions: [
432
479
  {mediaType: 'audio', mediaContent: 'main', csi: 1000},
433
480
  {mediaType: 'video', mediaContent: 'main', csi: 1001},
434
- {mediaType: 'video', mediaContent: 'content', csi: 1002}
481
+ {mediaType: 'video', mediaContent: 'content', csi: 1002},
435
482
  ],
436
483
  },
437
484
  {
@@ -441,12 +488,12 @@ describe('plugin-meetings', () => {
441
488
  mediaSessions: [
442
489
  {mediaType: 'audio', mediaContent: 'main', csi: 2000},
443
490
  {mediaType: 'video', mediaContent: 'main', csi: 2001},
444
- {mediaType: 'video', mediaContent: 'content', csi: 2002}
491
+ {mediaType: 'video', mediaContent: 'content', csi: 2002},
445
492
  ],
446
- }
447
- ]
448
- }
449
- }
493
+ },
494
+ ],
495
+ },
496
+ },
450
497
  };
451
498
 
452
499
  beforeEach(() => {
@@ -470,7 +517,10 @@ describe('plugin-meetings', () => {
470
517
  });
471
518
 
472
519
  it('returns correct CSI values when there is a match', () => {
473
- assert.deepEqual(members.getCsisForMember('oneWithSomeCsis', 'video', 'main'), [1001, 2001]);
520
+ assert.deepEqual(
521
+ members.getCsisForMember('oneWithSomeCsis', 'video', 'main'),
522
+ [1001, 2001]
523
+ );
474
524
  });
475
525
  });
476
526
  });
@@ -22,17 +22,20 @@ describe('plugin-meetings', () => {
22
22
  beforeEach(() => {
23
23
  const webex = new MockWebex({
24
24
  children: {
25
- meetings: Meetings
26
- }
25
+ meetings: Meetings,
26
+ },
27
27
  });
28
28
 
29
29
  sandbox = sinon.createSandbox();
30
30
 
31
31
  url1 = `https://example.com/${uuid.v4()}`;
32
32
 
33
- membersRequest = new MembersRequest({}, {
34
- parent: webex
35
- });
33
+ membersRequest = new MembersRequest(
34
+ {},
35
+ {
36
+ parent: webex,
37
+ }
38
+ );
36
39
  membersRequest.request = sinon.mock().returns(Promise.resolve({}));
37
40
  });
38
41
 
@@ -40,7 +43,6 @@ describe('plugin-meetings', () => {
40
43
  sandbox.restore();
41
44
  });
42
45
 
43
-
44
46
  describe('members request library', () => {
45
47
  describe('#sendDialPadKey', () => {
46
48
  it('sends a POST to the sendDtmf locus endpoint', async () => {
@@ -53,7 +55,7 @@ describe('plugin-meetings', () => {
53
55
  url,
54
56
  tones,
55
57
  memberId,
56
- locusUrl
58
+ locusUrl,
57
59
  });
58
60
  const requestParams = membersRequest.request.getCall(0).args[0];
59
61
 
@@ -68,9 +70,9 @@ describe('plugin-meetings', () => {
68
70
  it('sends a PUT to the locus endpoint', async () => {
69
71
  const options = {
70
72
  invitee: {
71
- phoneNumber: '+18578675309'
73
+ phoneNumber: '+18578675309',
72
74
  },
73
- locusUrl: url1
75
+ locusUrl: url1,
74
76
  };
75
77
 
76
78
  await membersRequest.addMembers(options);
@@ -86,9 +88,9 @@ describe('plugin-meetings', () => {
86
88
  it('sends a PUT to the locus endpoint', async () => {
87
89
  const options = {
88
90
  invitee: {
89
- phoneNumber: '+18578675309'
91
+ phoneNumber: '+18578675309',
90
92
  },
91
- locusUrl: url1
93
+ locusUrl: url1,
92
94
  };
93
95
 
94
96
  await membersRequest.cancelPhoneInvite(options);
@@ -109,7 +111,7 @@ describe('plugin-meetings', () => {
109
111
  const options = {
110
112
  memberId,
111
113
  locusUrl,
112
- raised: true
114
+ raised: true,
113
115
  };
114
116
 
115
117
  await membersRequest.raiseOrLowerHandMember(options);
@@ -122,10 +124,15 @@ describe('plugin-meetings', () => {
122
124
  });
123
125
 
124
126
  describe('#lowerAllHands', () => {
125
- const parameterErrorMessage = 'requestingParticipantId must be defined, and the associated locus url for this meeting object must be defined.';
127
+ const parameterErrorMessage =
128
+ 'requestingParticipantId must be defined, and the associated locus url for this meeting object must be defined.';
126
129
 
127
130
  const checkInvalid = async (functionParams) => {
128
- assert.throws(() => membersRequest.lowerAllHandsMember(functionParams), ParameterError, parameterErrorMessage);
131
+ assert.throws(
132
+ () => membersRequest.lowerAllHandsMember(functionParams),
133
+ ParameterError,
134
+ parameterErrorMessage
135
+ );
129
136
  assert(membersRequest.request.notCalled);
130
137
  assert(membersUtil.getLowerAllHandsMemberRequestParams.notCalled);
131
138
  };
@@ -151,7 +158,10 @@ describe('plugin-meetings', () => {
151
158
  locusUrl,
152
159
  };
153
160
 
154
- assert.strictEqual(membersRequest.lowerAllHandsMember(options), membersRequest.request.getCall(0).returnValue);
161
+ assert.strictEqual(
162
+ membersRequest.lowerAllHandsMember(options),
163
+ membersRequest.request.getCall(0).returnValue
164
+ );
155
165
  });
156
166
 
157
167
  it('sends a PATCH to the locus endpoint', async () => {
@@ -163,14 +173,13 @@ describe('plugin-meetings', () => {
163
173
  locusUrl,
164
174
  };
165
175
 
166
-
167
176
  const getRequestParamsSpy = sandbox.spy(membersUtil, 'getLowerAllHandsMemberRequestParams');
168
177
 
169
178
  await membersRequest.lowerAllHandsMember(options);
170
179
 
171
180
  assert.calledOnceWithExactly(getRequestParamsSpy, {
172
181
  requestingParticipantId: memberId,
173
- locusUrl: url1
182
+ locusUrl: url1,
174
183
  });
175
184
 
176
185
  const requestParams = membersRequest.request.getCall(0).args[0];
@@ -180,10 +189,10 @@ describe('plugin-meetings', () => {
180
189
  uri: `${locusUrl}/controls`,
181
190
  body: {
182
191
  hand: {
183
- raised: false
192
+ raised: false,
184
193
  },
185
- requestingParticipantId: memberId
186
- }
194
+ requestingParticipantId: memberId,
195
+ },
187
196
  });
188
197
  });
189
198
  });
@@ -20,7 +20,7 @@ describe('plugin-meetings', () => {
20
20
  assert.deepEqual(MembersUtil.generateRaiseHandMemberOptions(memberId, status, locusUrl), {
21
21
  memberId,
22
22
  raised: status,
23
- locusUrl
23
+ locusUrl,
24
24
  });
25
25
  });
26
26
  });
@@ -29,10 +29,13 @@ describe('plugin-meetings', () => {
29
29
  const requestingParticipantId = 'test';
30
30
  const locusUrl = 'urlTest1';
31
31
 
32
- assert.deepEqual(MembersUtil.generateLowerAllHandsMemberOptions(requestingParticipantId, locusUrl), {
33
- requestingParticipantId,
34
- locusUrl
35
- });
32
+ assert.deepEqual(
33
+ MembersUtil.generateLowerAllHandsMemberOptions(requestingParticipantId, locusUrl),
34
+ {
35
+ requestingParticipantId,
36
+ locusUrl,
37
+ }
38
+ );
36
39
  });
37
40
  });
38
41
  });