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

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 (576) hide show
  1. package/README.md +45 -7
  2. package/UPGRADING.md +9 -9
  3. package/browsers.js +19 -24
  4. package/dist/annotation/annotation.types.js +7 -0
  5. package/dist/annotation/annotation.types.js.map +1 -0
  6. package/dist/annotation/constants.js +49 -0
  7. package/dist/annotation/constants.js.map +1 -0
  8. package/dist/annotation/index.js +342 -0
  9. package/dist/annotation/index.js.map +1 -0
  10. package/dist/breakouts/breakout.js +216 -0
  11. package/dist/breakouts/breakout.js.map +1 -0
  12. package/dist/breakouts/collection.js +23 -0
  13. package/dist/breakouts/collection.js.map +1 -0
  14. package/dist/breakouts/edit-lock-error.js +52 -0
  15. package/dist/breakouts/edit-lock-error.js.map +1 -0
  16. package/dist/breakouts/events.js +45 -0
  17. package/dist/breakouts/events.js.map +1 -0
  18. package/dist/breakouts/index.js +1048 -0
  19. package/dist/breakouts/index.js.map +1 -0
  20. package/dist/breakouts/request.js +78 -0
  21. package/dist/breakouts/request.js.map +1 -0
  22. package/dist/breakouts/utils.js +67 -0
  23. package/dist/breakouts/utils.js.map +1 -0
  24. package/dist/common/browser-detection.js +1 -20
  25. package/dist/common/browser-detection.js.map +1 -1
  26. package/dist/common/collection.js +5 -20
  27. package/dist/common/collection.js.map +1 -1
  28. package/dist/common/config.js +0 -7
  29. package/dist/common/config.js.map +1 -1
  30. package/dist/common/errors/captcha-error.js +10 -24
  31. package/dist/common/errors/captcha-error.js.map +1 -1
  32. package/dist/common/errors/intent-to-join.js +11 -24
  33. package/dist/common/errors/intent-to-join.js.map +1 -1
  34. package/dist/common/errors/join-meeting.js +12 -25
  35. package/dist/common/errors/join-meeting.js.map +1 -1
  36. package/dist/common/errors/media.js +10 -24
  37. package/dist/common/errors/media.js.map +1 -1
  38. package/dist/common/errors/parameter.js +5 -33
  39. package/dist/common/errors/parameter.js.map +1 -1
  40. package/dist/common/errors/password-error.js +10 -24
  41. package/dist/common/errors/password-error.js.map +1 -1
  42. package/dist/common/errors/permission.js +9 -23
  43. package/dist/common/errors/permission.js.map +1 -1
  44. package/dist/common/errors/reconnection-in-progress.js +0 -17
  45. package/dist/common/errors/reconnection-in-progress.js.map +1 -1
  46. package/dist/common/errors/reconnection.js +10 -24
  47. package/dist/common/errors/reconnection.js.map +1 -1
  48. package/dist/common/errors/stats.js +10 -24
  49. package/dist/common/errors/stats.js.map +1 -1
  50. package/dist/common/errors/webex-errors.js +9 -43
  51. package/dist/common/errors/webex-errors.js.map +1 -1
  52. package/dist/common/errors/webex-meetings-error.js +5 -25
  53. package/dist/common/errors/webex-meetings-error.js.map +1 -1
  54. package/dist/common/events/events-scope.js +0 -22
  55. package/dist/common/events/events-scope.js.map +1 -1
  56. package/dist/common/events/events.js +0 -23
  57. package/dist/common/events/events.js.map +1 -1
  58. package/dist/common/events/trigger-proxy.js +0 -12
  59. package/dist/common/events/trigger-proxy.js.map +1 -1
  60. package/dist/common/events/util.js +0 -15
  61. package/dist/common/events/util.js.map +1 -1
  62. package/dist/common/logs/logger-config.js +0 -4
  63. package/dist/common/logs/logger-config.js.map +1 -1
  64. package/dist/common/logs/logger-proxy.js +1 -8
  65. package/dist/common/logs/logger-proxy.js.map +1 -1
  66. package/dist/common/logs/request.js +37 -60
  67. package/dist/common/logs/request.js.map +1 -1
  68. package/dist/common/queue.js +28 -23
  69. package/dist/common/queue.js.map +1 -1
  70. package/dist/config.js +8 -13
  71. package/dist/config.js.map +1 -1
  72. package/dist/constants.js +250 -66
  73. package/dist/constants.js.map +1 -1
  74. package/dist/controls-options-manager/constants.js +14 -0
  75. package/dist/controls-options-manager/constants.js.map +1 -0
  76. package/dist/controls-options-manager/enums.js +27 -0
  77. package/dist/controls-options-manager/enums.js.map +1 -0
  78. package/dist/controls-options-manager/index.js +297 -0
  79. package/dist/controls-options-manager/index.js.map +1 -0
  80. package/dist/controls-options-manager/types.js +7 -0
  81. package/dist/controls-options-manager/types.js.map +1 -0
  82. package/dist/controls-options-manager/util.js +319 -0
  83. package/dist/controls-options-manager/util.js.map +1 -0
  84. package/dist/index.js +108 -17
  85. package/dist/index.js.map +1 -1
  86. package/dist/interpretation/collection.js +23 -0
  87. package/dist/interpretation/collection.js.map +1 -0
  88. package/dist/interpretation/index.js +366 -0
  89. package/dist/interpretation/index.js.map +1 -0
  90. package/dist/interpretation/siLanguage.js +25 -0
  91. package/dist/interpretation/siLanguage.js.map +1 -0
  92. package/dist/locus-info/controlsUtils.js +101 -29
  93. package/dist/locus-info/controlsUtils.js.map +1 -1
  94. package/dist/locus-info/embeddedAppsUtils.js +3 -26
  95. package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
  96. package/dist/locus-info/fullState.js +0 -15
  97. package/dist/locus-info/fullState.js.map +1 -1
  98. package/dist/locus-info/hostUtils.js +4 -12
  99. package/dist/locus-info/hostUtils.js.map +1 -1
  100. package/dist/locus-info/index.js +532 -240
  101. package/dist/locus-info/index.js.map +1 -1
  102. package/dist/locus-info/infoUtils.js +3 -37
  103. package/dist/locus-info/infoUtils.js.map +1 -1
  104. package/dist/locus-info/mediaSharesUtils.js +54 -38
  105. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  106. package/dist/locus-info/parser.js +284 -154
  107. package/dist/locus-info/parser.js.map +1 -1
  108. package/dist/locus-info/selfUtils.js +110 -92
  109. package/dist/locus-info/selfUtils.js.map +1 -1
  110. package/dist/media/index.js +95 -226
  111. package/dist/media/index.js.map +1 -1
  112. package/dist/media/properties.js +99 -194
  113. package/dist/media/properties.js.map +1 -1
  114. package/dist/media/util.js +2 -9
  115. package/dist/media/util.js.map +1 -1
  116. package/dist/mediaQualityMetrics/config.js +505 -495
  117. package/dist/mediaQualityMetrics/config.js.map +1 -1
  118. package/dist/meeting/in-meeting-actions.js +83 -14
  119. package/dist/meeting/in-meeting-actions.js.map +1 -1
  120. package/dist/meeting/index.js +3478 -3563
  121. package/dist/meeting/index.js.map +1 -1
  122. package/dist/meeting/locusMediaRequest.js +291 -0
  123. package/dist/meeting/locusMediaRequest.js.map +1 -0
  124. package/dist/meeting/muteState.js +247 -183
  125. package/dist/meeting/muteState.js.map +1 -1
  126. package/dist/meeting/request.js +344 -344
  127. package/dist/meeting/request.js.map +1 -1
  128. package/dist/meeting/request.type.js +7 -0
  129. package/dist/meeting/request.type.js.map +1 -0
  130. package/dist/meeting/state.js +21 -31
  131. package/dist/meeting/state.js.map +1 -1
  132. package/dist/meeting/util.js +529 -588
  133. package/dist/meeting/util.js.map +1 -1
  134. package/dist/meeting-info/collection.js +6 -25
  135. package/dist/meeting-info/collection.js.map +1 -1
  136. package/dist/meeting-info/index.js +62 -39
  137. package/dist/meeting-info/index.js.map +1 -1
  138. package/dist/meeting-info/meeting-info-v2.js +328 -283
  139. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  140. package/dist/meeting-info/request.js +3 -15
  141. package/dist/meeting-info/request.js.map +1 -1
  142. package/dist/meeting-info/util.js +98 -183
  143. package/dist/meeting-info/util.js.map +1 -1
  144. package/dist/meeting-info/utilv2.js +156 -232
  145. package/dist/meeting-info/utilv2.js.map +1 -1
  146. package/dist/meetings/collection.js +26 -19
  147. package/dist/meetings/collection.js.map +1 -1
  148. package/dist/meetings/index.js +795 -574
  149. package/dist/meetings/index.js.map +1 -1
  150. package/dist/meetings/meetings.types.js +7 -0
  151. package/dist/meetings/meetings.types.js.map +1 -0
  152. package/dist/meetings/request.js +26 -41
  153. package/dist/meetings/request.js.map +1 -1
  154. package/dist/meetings/util.js +186 -155
  155. package/dist/meetings/util.js.map +1 -1
  156. package/dist/member/index.js +126 -85
  157. package/dist/member/index.js.map +1 -1
  158. package/dist/member/types.js +25 -0
  159. package/dist/member/types.js.map +1 -0
  160. package/dist/member/util.js +147 -88
  161. package/dist/member/util.js.map +1 -1
  162. package/dist/members/collection.js +13 -12
  163. package/dist/members/collection.js.map +1 -1
  164. package/dist/members/index.js +178 -204
  165. package/dist/members/index.js.map +1 -1
  166. package/dist/members/request.js +113 -68
  167. package/dist/members/request.js.map +1 -1
  168. package/dist/members/types.js +15 -0
  169. package/dist/members/types.js.map +1 -0
  170. package/dist/members/util.js +314 -260
  171. package/dist/members/util.js.map +1 -1
  172. package/dist/metrics/constants.js +4 -7
  173. package/dist/metrics/constants.js.map +1 -1
  174. package/dist/metrics/index.js +11 -558
  175. package/dist/metrics/index.js.map +1 -1
  176. package/dist/multistream/mediaRequestManager.js +264 -50
  177. package/dist/multistream/mediaRequestManager.js.map +1 -1
  178. package/dist/multistream/receiveSlot.js +58 -65
  179. package/dist/multistream/receiveSlot.js.map +1 -1
  180. package/dist/multistream/receiveSlotManager.js +76 -95
  181. package/dist/multistream/receiveSlotManager.js.map +1 -1
  182. package/dist/multistream/remoteMedia.js +62 -76
  183. package/dist/multistream/remoteMedia.js.map +1 -1
  184. package/dist/multistream/remoteMediaGroup.js +66 -43
  185. package/dist/multistream/remoteMediaGroup.js.map +1 -1
  186. package/dist/multistream/remoteMediaManager.js +502 -442
  187. package/dist/multistream/remoteMediaManager.js.map +1 -1
  188. package/dist/networkQualityMonitor/index.js +40 -59
  189. package/dist/networkQualityMonitor/index.js.map +1 -1
  190. package/dist/personal-meeting-room/index.js +21 -45
  191. package/dist/personal-meeting-room/index.js.map +1 -1
  192. package/dist/personal-meeting-room/request.js +1 -31
  193. package/dist/personal-meeting-room/request.js.map +1 -1
  194. package/dist/personal-meeting-room/util.js +0 -13
  195. package/dist/personal-meeting-room/util.js.map +1 -1
  196. package/dist/reachability/index.js +192 -191
  197. package/dist/reachability/index.js.map +1 -1
  198. package/dist/reachability/request.js +15 -23
  199. package/dist/reachability/request.js.map +1 -1
  200. package/dist/reactions/constants.js +13 -0
  201. package/dist/reactions/constants.js.map +1 -0
  202. package/dist/reactions/reactions.js +109 -0
  203. package/dist/reactions/reactions.js.map +1 -0
  204. package/dist/reactions/reactions.type.js +36 -0
  205. package/dist/reactions/reactions.type.js.map +1 -0
  206. package/dist/reconnection-manager/index.js +384 -476
  207. package/dist/reconnection-manager/index.js.map +1 -1
  208. package/dist/recording-controller/enums.js +17 -0
  209. package/dist/recording-controller/enums.js.map +1 -0
  210. package/dist/recording-controller/index.js +363 -0
  211. package/dist/recording-controller/index.js.map +1 -0
  212. package/dist/recording-controller/util.js +64 -0
  213. package/dist/recording-controller/util.js.map +1 -0
  214. package/dist/roap/index.js +58 -91
  215. package/dist/roap/index.js.map +1 -1
  216. package/dist/roap/request.js +137 -135
  217. package/dist/roap/request.js.map +1 -1
  218. package/dist/roap/turnDiscovery.js +148 -100
  219. package/dist/roap/turnDiscovery.js.map +1 -1
  220. package/dist/rtcMetrics/constants.js +12 -0
  221. package/dist/rtcMetrics/constants.js.map +1 -0
  222. package/dist/rtcMetrics/index.js +115 -0
  223. package/dist/rtcMetrics/index.js.map +1 -0
  224. package/dist/statsAnalyzer/global.js +1 -95
  225. package/dist/statsAnalyzer/global.js.map +1 -1
  226. package/dist/statsAnalyzer/index.js +385 -460
  227. package/dist/statsAnalyzer/index.js.map +1 -1
  228. package/dist/statsAnalyzer/mqaUtil.js +143 -87
  229. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  230. package/dist/transcription/index.js +22 -47
  231. package/dist/transcription/index.js.map +1 -1
  232. package/dist/types/annotation/annotation.types.d.ts +42 -0
  233. package/dist/types/annotation/constants.d.ts +31 -0
  234. package/dist/types/annotation/index.d.ts +117 -0
  235. package/dist/types/breakouts/breakout.d.ts +8 -0
  236. package/dist/types/breakouts/collection.d.ts +5 -0
  237. package/dist/types/breakouts/edit-lock-error.d.ts +15 -0
  238. package/dist/types/breakouts/events.d.ts +8 -0
  239. package/dist/types/breakouts/index.d.ts +5 -0
  240. package/dist/types/breakouts/request.d.ts +22 -0
  241. package/dist/types/breakouts/utils.d.ts +15 -0
  242. package/dist/types/common/browser-detection.d.ts +9 -0
  243. package/dist/types/common/collection.d.ts +48 -0
  244. package/dist/types/common/config.d.ts +2 -0
  245. package/dist/types/common/errors/captcha-error.d.ts +15 -0
  246. package/dist/types/common/errors/intent-to-join.d.ts +16 -0
  247. package/dist/types/common/errors/join-meeting.d.ts +17 -0
  248. package/dist/types/common/errors/media.d.ts +15 -0
  249. package/dist/types/common/errors/parameter.d.ts +15 -0
  250. package/dist/types/common/errors/password-error.d.ts +15 -0
  251. package/dist/types/common/errors/permission.d.ts +14 -0
  252. package/dist/types/common/errors/reconnection-in-progress.d.ts +9 -0
  253. package/dist/types/common/errors/reconnection.d.ts +15 -0
  254. package/dist/types/common/errors/stats.d.ts +15 -0
  255. package/dist/types/common/errors/webex-errors.d.ts +69 -0
  256. package/dist/types/common/errors/webex-meetings-error.d.ts +20 -0
  257. package/dist/types/common/events/events-scope.d.ts +17 -0
  258. package/dist/types/common/events/events.d.ts +12 -0
  259. package/dist/types/common/events/trigger-proxy.d.ts +2 -0
  260. package/dist/types/common/events/util.d.ts +2 -0
  261. package/dist/types/common/logs/logger-config.d.ts +2 -0
  262. package/dist/types/common/logs/logger-proxy.d.ts +2 -0
  263. package/dist/types/common/logs/request.d.ts +34 -0
  264. package/dist/types/common/queue.d.ts +34 -0
  265. package/dist/types/config.d.ts +72 -0
  266. package/dist/types/constants.d.ts +1016 -0
  267. package/dist/types/controls-options-manager/constants.d.ts +4 -0
  268. package/dist/types/controls-options-manager/enums.d.ts +15 -0
  269. package/dist/types/controls-options-manager/index.d.ts +136 -0
  270. package/dist/types/controls-options-manager/types.d.ts +43 -0
  271. package/dist/types/controls-options-manager/util.d.ts +1 -0
  272. package/dist/types/index.d.ts +7 -0
  273. package/dist/types/interpretation/collection.d.ts +5 -0
  274. package/dist/types/interpretation/index.d.ts +5 -0
  275. package/dist/types/interpretation/siLanguage.d.ts +5 -0
  276. package/dist/types/locus-info/controlsUtils.d.ts +2 -0
  277. package/dist/types/locus-info/embeddedAppsUtils.d.ts +2 -0
  278. package/dist/types/locus-info/fullState.d.ts +2 -0
  279. package/dist/types/locus-info/hostUtils.d.ts +2 -0
  280. package/dist/types/locus-info/index.d.ts +322 -0
  281. package/dist/types/locus-info/infoUtils.d.ts +2 -0
  282. package/dist/types/locus-info/mediaSharesUtils.d.ts +2 -0
  283. package/dist/types/locus-info/parser.d.ts +271 -0
  284. package/dist/types/locus-info/selfUtils.d.ts +2 -0
  285. package/dist/types/media/index.d.ts +34 -0
  286. package/dist/types/media/properties.d.ts +93 -0
  287. package/dist/types/media/util.d.ts +2 -0
  288. package/dist/types/mediaQualityMetrics/config.d.ts +365 -0
  289. package/dist/types/meeting/in-meeting-actions.d.ts +153 -0
  290. package/dist/types/meeting/index.d.ts +1471 -0
  291. package/dist/types/meeting/locusMediaRequest.d.ts +70 -0
  292. package/dist/types/meeting/muteState.d.ts +184 -0
  293. package/dist/types/meeting/request.d.ts +257 -0
  294. package/dist/types/meeting/request.type.d.ts +11 -0
  295. package/dist/types/meeting/state.d.ts +9 -0
  296. package/dist/types/meeting/util.d.ts +78 -0
  297. package/dist/types/meeting-info/collection.d.ts +20 -0
  298. package/dist/types/meeting-info/index.d.ts +62 -0
  299. package/dist/types/meeting-info/meeting-info-v2.d.ts +122 -0
  300. package/dist/types/meeting-info/request.d.ts +22 -0
  301. package/dist/types/meeting-info/util.d.ts +2 -0
  302. package/dist/types/meeting-info/utilv2.d.ts +2 -0
  303. package/dist/types/meetings/collection.d.ts +31 -0
  304. package/dist/types/meetings/index.d.ts +367 -0
  305. package/dist/types/meetings/meetings.types.d.ts +4 -0
  306. package/dist/types/meetings/request.d.ts +27 -0
  307. package/dist/types/meetings/util.d.ts +18 -0
  308. package/dist/types/member/index.d.ts +159 -0
  309. package/dist/types/member/types.d.ts +32 -0
  310. package/dist/types/member/util.d.ts +2 -0
  311. package/dist/types/members/collection.d.ts +29 -0
  312. package/dist/types/members/index.d.ts +353 -0
  313. package/dist/types/members/request.d.ts +114 -0
  314. package/dist/types/members/types.d.ts +24 -0
  315. package/dist/types/members/util.d.ts +210 -0
  316. package/dist/types/metrics/constants.d.ts +55 -0
  317. package/dist/types/metrics/index.d.ts +45 -0
  318. package/dist/types/multistream/mediaRequestManager.d.ts +118 -0
  319. package/dist/types/multistream/receiveSlot.d.ts +68 -0
  320. package/dist/types/multistream/receiveSlotManager.d.ts +56 -0
  321. package/dist/types/multistream/remoteMedia.d.ts +72 -0
  322. package/dist/types/multistream/remoteMediaGroup.d.ts +47 -0
  323. package/dist/types/multistream/remoteMediaManager.d.ts +277 -0
  324. package/dist/types/networkQualityMonitor/index.d.ts +70 -0
  325. package/dist/types/personal-meeting-room/index.d.ts +47 -0
  326. package/dist/types/personal-meeting-room/request.d.ts +14 -0
  327. package/dist/types/personal-meeting-room/util.d.ts +2 -0
  328. package/dist/types/reachability/index.d.ts +152 -0
  329. package/dist/types/reachability/request.d.ts +37 -0
  330. package/dist/types/reactions/constants.d.ts +3 -0
  331. package/dist/types/reactions/reactions.d.ts +4 -0
  332. package/dist/types/reactions/reactions.type.d.ts +52 -0
  333. package/dist/types/reconnection-manager/index.d.ts +126 -0
  334. package/dist/types/recording-controller/enums.d.ts +7 -0
  335. package/dist/types/recording-controller/index.d.ts +208 -0
  336. package/dist/types/recording-controller/util.d.ts +14 -0
  337. package/dist/types/roap/index.d.ts +77 -0
  338. package/dist/types/roap/request.d.ts +36 -0
  339. package/dist/types/roap/turnDiscovery.d.ts +91 -0
  340. package/dist/types/rtcMetrics/constants.d.ts +4 -0
  341. package/dist/types/rtcMetrics/index.d.ts +46 -0
  342. package/dist/types/statsAnalyzer/global.d.ts +36 -0
  343. package/dist/types/statsAnalyzer/index.d.ts +200 -0
  344. package/dist/types/statsAnalyzer/mqaUtil.d.ts +24 -0
  345. package/dist/types/transcription/index.d.ts +64 -0
  346. package/internal-README.md +7 -6
  347. package/package.json +29 -21
  348. package/src/annotation/annotation.types.ts +50 -0
  349. package/src/annotation/constants.ts +36 -0
  350. package/src/annotation/index.ts +328 -0
  351. package/src/breakouts/README.md +220 -0
  352. package/src/breakouts/breakout.ts +188 -0
  353. package/src/breakouts/collection.ts +19 -0
  354. package/src/breakouts/edit-lock-error.ts +25 -0
  355. package/src/breakouts/events.ts +56 -0
  356. package/src/breakouts/index.ts +925 -0
  357. package/src/breakouts/request.ts +55 -0
  358. package/src/breakouts/utils.ts +57 -0
  359. package/src/common/{browser-detection.js → browser-detection.ts} +9 -6
  360. package/src/common/collection.ts +9 -7
  361. package/src/common/{config.js → config.ts} +1 -1
  362. package/src/common/errors/{captcha-error.js → captcha-error.ts} +11 -7
  363. package/src/common/errors/{intent-to-join.js → intent-to-join.ts} +12 -7
  364. package/src/common/errors/{join-meeting.js → join-meeting.ts} +17 -8
  365. package/src/common/errors/{media.js → media.ts} +11 -7
  366. package/src/common/errors/parameter.ts +11 -7
  367. package/src/common/errors/{password-error.js → password-error.ts} +11 -7
  368. package/src/common/errors/{permission.js → permission.ts} +10 -6
  369. package/src/common/errors/{reconnection.js → reconnection.ts} +11 -7
  370. package/src/common/errors/{stats.js → stats.ts} +11 -7
  371. package/src/common/errors/{webex-errors.js → webex-errors.ts} +14 -9
  372. package/src/common/errors/{webex-meetings-error.js → webex-meetings-error.ts} +4 -2
  373. package/src/common/events/{events-scope.js → events-scope.ts} +6 -2
  374. package/src/common/events/{events.js → events.ts} +5 -1
  375. package/src/common/events/{trigger-proxy.js → trigger-proxy.ts} +9 -5
  376. package/src/common/events/{util.js → util.ts} +2 -3
  377. package/src/common/logs/{logger-config.js → logger-config.ts} +1 -2
  378. package/src/common/logs/logger-proxy.ts +44 -0
  379. package/src/common/logs/{request.js → request.ts} +22 -9
  380. package/src/common/queue.ts +22 -9
  381. package/src/{config.js → config.ts} +17 -17
  382. package/src/constants.ts +197 -22
  383. package/src/controls-options-manager/constants.ts +5 -0
  384. package/src/controls-options-manager/enums.ts +18 -0
  385. package/src/controls-options-manager/index.ts +278 -0
  386. package/src/controls-options-manager/types.ts +59 -0
  387. package/src/controls-options-manager/util.ts +300 -0
  388. package/src/index.ts +39 -0
  389. package/src/interpretation/README.md +60 -0
  390. package/src/interpretation/collection.ts +19 -0
  391. package/src/interpretation/index.ts +332 -0
  392. package/src/interpretation/siLanguage.ts +18 -0
  393. package/src/locus-info/controlsUtils.ts +222 -0
  394. package/src/locus-info/{embeddedAppsUtils.js → embeddedAppsUtils.ts} +5 -6
  395. package/src/locus-info/{fullState.js → fullState.ts} +16 -12
  396. package/src/locus-info/{hostUtils.js → hostUtils.ts} +9 -8
  397. package/src/locus-info/{index.js → index.ts} +518 -111
  398. package/src/locus-info/{infoUtils.js → infoUtils.ts} +19 -8
  399. package/src/locus-info/{mediaSharesUtils.js → mediaSharesUtils.ts} +65 -17
  400. package/src/locus-info/{parser.js → parser.ts} +271 -98
  401. package/src/locus-info/{selfUtils.js → selfUtils.ts} +199 -68
  402. package/src/media/index.ts +456 -0
  403. package/src/media/{properties.js → properties.ts} +80 -102
  404. package/src/media/{util.js → util.ts} +2 -2
  405. package/src/mediaQualityMetrics/config.ts +384 -0
  406. package/src/meeting/in-meeting-actions.ts +171 -3
  407. package/src/meeting/index.ts +7070 -0
  408. package/src/meeting/locusMediaRequest.ts +309 -0
  409. package/src/meeting/muteState.ts +450 -0
  410. package/src/meeting/{request.js → request.ts} +354 -214
  411. package/src/meeting/request.type.ts +13 -0
  412. package/src/meeting/{state.js → state.ts} +50 -35
  413. package/src/meeting/util.ts +615 -0
  414. package/src/meeting-info/{collection.js → collection.ts} +6 -2
  415. package/src/meeting-info/index.ts +183 -0
  416. package/src/meeting-info/meeting-info-v2.ts +407 -0
  417. package/src/meeting-info/{request.js → request.ts} +14 -4
  418. package/src/meeting-info/{util.js → util.ts} +60 -51
  419. package/src/meeting-info/{utilv2.js → utilv2.ts} +77 -60
  420. package/src/meetings/{collection.js → collection.ts} +26 -3
  421. package/src/meetings/index.ts +1467 -0
  422. package/src/meetings/meetings.types.ts +12 -0
  423. package/src/meetings/{request.js → request.ts} +34 -25
  424. package/src/meetings/{util.js → util.ts} +137 -36
  425. package/src/member/{index.js → index.ts} +151 -56
  426. package/src/member/types.ts +38 -0
  427. package/src/member/util.ts +383 -0
  428. package/src/members/{collection.js → collection.ts} +10 -2
  429. package/src/members/{index.js → index.ts} +323 -145
  430. package/src/members/request.ts +255 -0
  431. package/src/members/types.ts +28 -0
  432. package/src/members/util.ts +339 -0
  433. package/src/metrics/{constants.js → constants.ts} +2 -6
  434. package/src/metrics/index.ts +73 -0
  435. package/src/multistream/mediaRequestManager.ts +337 -61
  436. package/src/multistream/receiveSlot.ts +69 -26
  437. package/src/multistream/receiveSlotManager.ts +66 -42
  438. package/src/multistream/remoteMedia.ts +40 -5
  439. package/src/multistream/remoteMediaGroup.ts +63 -3
  440. package/src/multistream/remoteMediaManager.ts +263 -66
  441. package/src/networkQualityMonitor/{index.js → index.ts} +41 -29
  442. package/src/personal-meeting-room/{index.js → index.ts} +28 -19
  443. package/src/personal-meeting-room/{request.js → request.ts} +13 -4
  444. package/src/personal-meeting-room/{util.js → util.ts} +4 -4
  445. package/src/reachability/{index.js → index.ts} +157 -94
  446. package/src/reachability/request.ts +46 -35
  447. package/src/reactions/constants.ts +4 -0
  448. package/src/reactions/reactions.ts +104 -0
  449. package/src/reactions/reactions.type.ts +62 -0
  450. package/src/reconnection-manager/{index.js → index.ts} +254 -136
  451. package/src/recording-controller/enums.ts +8 -0
  452. package/src/recording-controller/index.ts +333 -0
  453. package/src/recording-controller/util.ts +75 -0
  454. package/src/roap/{index.js → index.ts} +86 -78
  455. package/src/roap/request.ts +163 -0
  456. package/src/roap/turnDiscovery.ts +111 -49
  457. package/src/rtcMetrics/constants.ts +3 -0
  458. package/src/rtcMetrics/index.ts +96 -0
  459. package/src/statsAnalyzer/global.ts +37 -0
  460. package/src/statsAnalyzer/index.ts +1272 -0
  461. package/src/statsAnalyzer/mqaUtil.ts +291 -0
  462. package/src/transcription/{index.js → index.ts} +46 -39
  463. package/test/integration/spec/converged-space-meetings.js +233 -0
  464. package/test/integration/spec/journey.js +804 -526
  465. package/test/integration/spec/space-meeting.js +391 -204
  466. package/test/integration/spec/transcription.js +7 -8
  467. package/test/unit/spec/annotation/index.ts +418 -0
  468. package/test/unit/spec/breakouts/breakout.ts +237 -0
  469. package/test/unit/spec/breakouts/collection.ts +15 -0
  470. package/test/unit/spec/breakouts/edit-lock-error.ts +30 -0
  471. package/test/unit/spec/breakouts/events.ts +89 -0
  472. package/test/unit/spec/breakouts/index.ts +1790 -0
  473. package/test/unit/spec/breakouts/request.ts +104 -0
  474. package/test/unit/spec/breakouts/utils.js +72 -0
  475. package/test/unit/spec/common/browser-detection.js +9 -28
  476. package/test/unit/spec/common/queue.js +31 -2
  477. package/test/unit/spec/controls-options-manager/index.js +287 -0
  478. package/test/unit/spec/controls-options-manager/util.js +582 -0
  479. package/test/unit/spec/fixture/locus.js +93 -90
  480. package/test/unit/spec/interpretation/collection.ts +15 -0
  481. package/test/unit/spec/interpretation/index.ts +589 -0
  482. package/test/unit/spec/interpretation/siLanguage.ts +28 -0
  483. package/test/unit/spec/locus-info/controlsUtils.js +325 -32
  484. package/test/unit/spec/locus-info/embeddedAppsUtils.js +8 -6
  485. package/test/unit/spec/locus-info/index.js +1176 -18
  486. package/test/unit/spec/locus-info/infoUtils.js +41 -32
  487. package/test/unit/spec/locus-info/lib/BasicSeqCmp.json +88 -430
  488. package/test/unit/spec/locus-info/lib/SeqCmp.json +513 -685
  489. package/test/unit/spec/locus-info/mediaSharesUtils.ts +22 -0
  490. package/test/unit/spec/locus-info/parser.js +65 -31
  491. package/test/unit/spec/locus-info/selfConstant.js +120 -103
  492. package/test/unit/spec/locus-info/selfUtils.js +296 -12
  493. package/test/unit/spec/media/index.ts +162 -68
  494. package/test/unit/spec/media/properties.ts +9 -9
  495. package/test/unit/spec/meeting/in-meeting-actions.ts +82 -3
  496. package/test/unit/spec/meeting/index.js +4569 -1773
  497. package/test/unit/spec/meeting/locusMediaRequest.ts +436 -0
  498. package/test/unit/spec/meeting/muteState.js +382 -211
  499. package/test/unit/spec/meeting/request.js +444 -78
  500. package/test/unit/spec/meeting/utils.js +517 -192
  501. package/test/unit/spec/meeting-info/index.js +181 -0
  502. package/test/unit/spec/meeting-info/meetinginfov2.js +481 -76
  503. package/test/unit/spec/meeting-info/request.js +7 -9
  504. package/test/unit/spec/meeting-info/util.js +11 -12
  505. package/test/unit/spec/meeting-info/utilv2.js +131 -74
  506. package/test/unit/spec/meetings/collection.js +15 -1
  507. package/test/unit/spec/meetings/index.js +1254 -330
  508. package/test/unit/spec/meetings/utils.js +220 -14
  509. package/test/unit/spec/member/index.js +58 -5
  510. package/test/unit/spec/member/util.js +494 -26
  511. package/test/unit/spec/members/index.js +423 -55
  512. package/test/unit/spec/members/request.js +228 -40
  513. package/test/unit/spec/members/utils.js +191 -4
  514. package/test/unit/spec/metrics/index.js +12 -66
  515. package/test/unit/spec/multistream/mediaRequestManager.ts +1013 -106
  516. package/test/unit/spec/multistream/receiveSlot.ts +77 -18
  517. package/test/unit/spec/multistream/receiveSlotManager.ts +69 -39
  518. package/test/unit/spec/multistream/remoteMedia.ts +40 -2
  519. package/test/unit/spec/multistream/remoteMediaGroup.ts +271 -5
  520. package/test/unit/spec/multistream/remoteMediaManager.ts +730 -65
  521. package/test/unit/spec/networkQualityMonitor/index.js +24 -18
  522. package/test/unit/spec/personal-meeting-room/personal-meeting-room.js +2 -7
  523. package/test/unit/spec/reachability/index.ts +176 -27
  524. package/test/unit/spec/reachability/request.js +66 -0
  525. package/test/unit/spec/reconnection-manager/index.js +155 -9
  526. package/test/unit/spec/recording-controller/index.js +307 -0
  527. package/test/unit/spec/recording-controller/util.js +229 -0
  528. package/test/unit/spec/roap/index.ts +28 -52
  529. package/test/unit/spec/roap/request.ts +225 -0
  530. package/test/unit/spec/roap/turnDiscovery.ts +92 -50
  531. package/test/unit/spec/rtcMetrics/index.ts +60 -0
  532. package/test/unit/spec/stats-analyzer/index.js +116 -60
  533. package/test/utils/cmr.js +44 -42
  534. package/test/utils/constants.js +9 -0
  535. package/test/utils/integrationTestUtils.js +46 -0
  536. package/test/utils/testUtils.js +63 -99
  537. package/test/utils/webex-config.js +22 -18
  538. package/test/utils/webex-test-users.js +57 -50
  539. package/tsconfig.json +6 -0
  540. package/dist/media/internal-media-core-wrapper.js +0 -22
  541. package/dist/media/internal-media-core-wrapper.js.map +0 -1
  542. package/dist/meeting/effectsState.js +0 -327
  543. package/dist/meeting/effectsState.js.map +0 -1
  544. package/dist/metrics/config.js +0 -301
  545. package/dist/metrics/config.js.map +0 -1
  546. package/dist/multistream/multistreamMedia.js +0 -116
  547. package/dist/multistream/multistreamMedia.js.map +0 -1
  548. package/dist/peer-connection-manager/util.js +0 -124
  549. package/dist/peer-connection-manager/util.js.map +0 -1
  550. package/src/common/logs/logger-proxy.js +0 -33
  551. package/src/index.js +0 -15
  552. package/src/locus-info/controlsUtils.js +0 -102
  553. package/src/media/index.js +0 -459
  554. package/src/media/internal-media-core-wrapper.ts +0 -9
  555. package/src/mediaQualityMetrics/config.js +0 -382
  556. package/src/meeting/effectsState.js +0 -205
  557. package/src/meeting/index.js +0 -6284
  558. package/src/meeting/muteState.js +0 -318
  559. package/src/meeting/util.js +0 -506
  560. package/src/meeting-info/index.js +0 -131
  561. package/src/meeting-info/meeting-info-v2.js +0 -255
  562. package/src/meetings/index.js +0 -1015
  563. package/src/member/util.js +0 -254
  564. package/src/members/request.js +0 -131
  565. package/src/members/util.js +0 -258
  566. package/src/metrics/config.js +0 -324
  567. package/src/metrics/index.js +0 -530
  568. package/src/multistream/multistreamMedia.ts +0 -92
  569. package/src/peer-connection-manager/util.ts +0 -117
  570. package/src/roap/request.js +0 -127
  571. package/src/statsAnalyzer/global.js +0 -133
  572. package/src/statsAnalyzer/index.js +0 -1006
  573. package/src/statsAnalyzer/mqaUtil.js +0 -173
  574. package/test/unit/spec/meeting/effectsState.js +0 -291
  575. package/test/unit/spec/peerconnection-manager/utils.test-fixtures.ts +0 -389
  576. /package/src/common/errors/{reconnection-in-progress.js → reconnection-in-progress.ts} +0 -0
@@ -14,13 +14,15 @@ import ParameterError from '@webex/plugin-meetings/src/common/errors/parameter';
14
14
  import Meetings from '@webex/plugin-meetings';
15
15
  import Members from '@webex/plugin-meetings/src/members';
16
16
  import MembersUtil from '@webex/plugin-meetings/src/members/util';
17
+ import * as MembersRequestImport from '@webex/plugin-meetings/src/members/request';
18
+ import Trigger from '@webex/plugin-meetings/src/common/events/trigger-proxy';
19
+ import {EVENT_TRIGGERS} from '@webex/plugin-meetings/src/constants';
17
20
 
18
21
  const {assert} = chai;
19
22
 
20
23
  chai.use(chaiAsPromised);
21
24
  sinon.assert.expose(chai.assert, {prefix: ''});
22
25
 
23
-
24
26
  describe('plugin-meetings', () => {
25
27
  let webex;
26
28
  let url1;
@@ -34,37 +36,33 @@ describe('plugin-meetings', () => {
34
36
  id: '6eb08f8b-bf69-3251-a126-b161bead2d21',
35
37
  phoneNumber: '+18578675309',
36
38
  isExternal: true,
37
- primaryDisplayString: '+18578675309'
39
+ primaryDisplayString: '+18578675309',
38
40
  },
39
41
  devices: [
40
42
  {
41
43
  url: 'https://fakeURL.com',
42
44
  deviceType: 'SIP',
43
45
  state: 'JOINED',
44
- intents: [
45
- null
46
- ],
46
+ intents: [null],
47
47
  correlationId: '1234',
48
48
  provisionalUrl: 'dialout:///fake',
49
- isSparkPstn: true
49
+ isSparkPstn: true,
50
50
  },
51
51
  {
52
52
  url: 'dialout:///fakeagain',
53
53
  deviceType: 'PROVISIONAL',
54
54
  state: 'JOINED',
55
- intents: [
56
- null
57
- ],
55
+ intents: [null],
58
56
  correlationId: '4321',
59
57
  isVideoCallback: false,
60
58
  clientUrl: 'https://fakeURL',
61
59
  provisionalType: 'DIAL_OUT_ONLY',
62
- dialingStatus: 'SUCCESS'
63
- }
60
+ dialingStatus: 'SUCCESS',
61
+ },
64
62
  ],
65
63
  status: {
66
64
  audioStatus: 'SENDRECV',
67
- videoStatus: 'INACTIVE'
65
+ videoStatus: 'INACTIVE',
68
66
  },
69
67
  id: 'abc-123-abc-123',
70
68
  guest: true,
@@ -72,51 +70,70 @@ describe('plugin-meetings', () => {
72
70
  moderator: false,
73
71
  panelist: false,
74
72
  moveToLobbyNotAllowed: true,
75
- deviceUrl: 'https://fakeDeviceurl'
73
+ deviceUrl: 'https://fakeDeviceurl',
76
74
  },
77
75
  id: 'abc-123-abc-123',
78
76
  status: 'IN_MEETING',
79
77
  type: 'MEETING',
80
- isModerator: false
81
- }
78
+ isModerator: false,
79
+ },
82
80
  };
83
81
 
84
-
85
82
  describe('members', () => {
86
83
  const sandbox = sinon.createSandbox();
87
84
  let createMembers;
85
+ let meeting;
86
+ let membersRequestSpy;
88
87
 
89
88
  beforeEach(() => {
90
89
  webex = new MockWebex({
91
90
  children: {
92
91
  meetings: Meetings,
93
92
  credentials: Credentials,
94
- support: Support
93
+ support: Support,
95
94
  },
96
95
  config: {
97
96
  credentials: {
98
- client_id: 'mock-client-id'
97
+ client_id: 'mock-client-id',
99
98
  },
100
99
  meetings: {
101
100
  reconnection: {
102
- enabled: false
101
+ enabled: false,
103
102
  },
104
103
  mediaSettings: {},
105
104
  metrics: {},
106
- stats: {}
107
- }
108
- }
105
+ stats: {},
106
+ },
107
+ },
109
108
  });
110
109
 
111
110
  url1 = `https://example.com/${uuid.v4()}`;
112
111
 
113
- createMembers = (options) => new Members({locusUrl: options.url}, {parent: webex});
112
+ membersRequestSpy = sinon.spy(MembersRequestImport, 'default');
113
+
114
+ meeting = {
115
+ request: sinon.mock().returns(Promise.resolve()),
116
+ locusInfo: {
117
+ sequence: {}
118
+ }
119
+ }
120
+
121
+ createMembers = (options) => new Members({locusUrl: options.url, meeting}, {parent: webex});
114
122
  });
115
123
 
116
124
  afterEach(() => {
125
+ membersRequestSpy.restore();
117
126
  sandbox.restore();
118
127
  });
119
128
 
129
+ describe('constructor', () => {
130
+ it('passes the meeting to the MembersRequest', () => {
131
+ createMembers({});
132
+
133
+ assert.calledOnceWithExactly(membersRequestSpy, {meeting}, {parent: webex});
134
+ });
135
+ });
136
+
120
137
  describe('#addMembers', () => {
121
138
  it('should invoke isInvalidInvitee and generateAddMemberOptions from MembersUtil when addMember is called with valid params', async () => {
122
139
  sandbox.spy(MembersUtil, 'isInvalidInvitee');
@@ -136,6 +153,128 @@ describe('plugin-meetings', () => {
136
153
  });
137
154
  });
138
155
 
156
+ describe('#admitMembers', () => {
157
+ let members;
158
+ beforeEach(() => {
159
+ members = createMembers({url: url1});
160
+ members.membersRequest.admitMember = sinon.stub().returns(Promise.resolve(true));
161
+ });
162
+ it('should return error if param memberIds is not provided', async () => {
163
+ let error;
164
+ await members.admitMembers().catch((e) => {
165
+ error = e;
166
+ });
167
+ assert.deepEqual(error, new ParameterError('No member ids provided to admit.'));
168
+ });
169
+
170
+ it('should call membersRequest.admitMember as expected', async () => {
171
+ await members.admitMembers(['uuid']);
172
+ const arg1 = members.membersRequest.admitMember.getCall(0).args[0];
173
+ assert.equal(arg1.sessionLocusUrls, undefined);
174
+ assert.equal(arg1.locusUrl.includes('https://example.com/'), true);
175
+ assert.deepEqual(arg1.memberIds, ['uuid']);
176
+
177
+ const sessionLocusUrls = {
178
+ authorizingLocusUrl: 'authorizingLocusUrl',
179
+ mainLocusUrl: 'mainLocusUrl',
180
+ };
181
+ await members.admitMembers(['uuid'], sessionLocusUrls);
182
+ const arg2 = members.membersRequest.admitMember.getCall(1).args[0];
183
+ assert.equal(arg2.sessionLocusUrls, sessionLocusUrls);
184
+ assert.equal(arg1.locusUrl.includes('https://example.com/'), true);
185
+ assert.deepEqual(arg1.memberIds, ['uuid']);
186
+ });
187
+ });
188
+
189
+ describe('#muteMember', () => {
190
+ const testMuteMember = async (mute, isAudio) => {
191
+ sandbox.spy(MembersUtil, 'generateMuteMemberOptions');
192
+
193
+ const locusUrl = 'locus-url';
194
+ const members = createMembers({url: locusUrl});
195
+ const {membersRequest} = members;
196
+ sandbox.spy(membersRequest, 'muteMember');
197
+
198
+ const memberId = 'bob';
199
+
200
+ await members.muteMember(memberId, mute, isAudio);
201
+ assert.calledOnce(MembersUtil.generateMuteMemberOptions);
202
+ assert.calledWith(
203
+ MembersUtil.generateMuteMemberOptions,
204
+ memberId,
205
+ mute,
206
+ members.locusUrl,
207
+ isAudio
208
+ );
209
+
210
+ assert.calledOnce(membersRequest.muteMember);
211
+ assert.calledWith(membersRequest.muteMember, {memberId, muted: mute, locusUrl, isAudio});
212
+ };
213
+
214
+ it('invokes expected functions when muteMember is called for mute=true, isAudio=true', async () => {
215
+ testMuteMember(true, true);
216
+ });
217
+
218
+ it('invokes expected functions when muteMember is called for mute=true, isAudio=false', async () => {
219
+ testMuteMember(true, false);
220
+ });
221
+
222
+ it('invokes expected functions when muteMember is called for mute=false, isAudio=true', async () => {
223
+ testMuteMember(false, true);
224
+ });
225
+
226
+ it('invokes expected functions when muteMember is called for mute=false, isAudio=false', async () => {
227
+ testMuteMember(false, false);
228
+ });
229
+ });
230
+
231
+ describe('#clearMembers', () => {
232
+ it('should send clear event if clear members', () => {
233
+ const members = createMembers({url: url1});
234
+ members.membersCollection.setAll(fakeMembersCollection);
235
+ sinon.stub(Trigger, 'trigger');
236
+ members.clearMembers();
237
+ assert.deepEqual(members.membersCollection.members, {});
238
+ assert.calledWith(
239
+ Trigger.trigger,
240
+ members,
241
+ {
242
+ file: 'members',
243
+ function: 'clearMembers',
244
+ },
245
+ EVENT_TRIGGERS.MEMBERS_CLEAR,
246
+ {}
247
+ );
248
+ });
249
+ });
250
+ describe('#locusParticipantsUpdate', () => {
251
+ it('should send member update event with session info', () => {
252
+ const members = createMembers({url: url1});
253
+ const fakePayload = {
254
+ participants: {
255
+ forEach: sinon.stub(),
256
+ },
257
+ isReplace: true,
258
+ };
259
+
260
+ members.locusParticipantsUpdate(fakePayload);
261
+
262
+ assert.calledWith(
263
+ Trigger.trigger,
264
+ members,
265
+ {
266
+ file: 'members',
267
+ function: 'locusParticipantsUpdate',
268
+ },
269
+ EVENT_TRIGGERS.MEMBERS_UPDATE,
270
+ {
271
+ delta: {added: [], updated: []},
272
+ full: {},
273
+ isReplace: true,
274
+ }
275
+ );
276
+ });
277
+ });
139
278
  describe('#sendDialPadKey', () => {
140
279
  it('should throw a rejection when calling sendDialPadKey with no tones', async () => {
141
280
  const members = createMembers({url: url1});
@@ -155,7 +294,13 @@ describe('plugin-meetings', () => {
155
294
 
156
295
  members.membersCollection.setAll(fakeMembersCollection);
157
296
  await members.sendDialPadKey('1', 'test1');
158
- assert.calledWith(MembersUtil.genderateSendDTMFOptions, 'https://fakeURL.com', '1', 'test1', url1);
297
+ assert.calledWith(
298
+ MembersUtil.genderateSendDTMFOptions,
299
+ 'https://fakeURL.com',
300
+ '1',
301
+ 'test1',
302
+ url1
303
+ );
159
304
  });
160
305
 
161
306
  it('should call the sendDialPadKey method on membersRequest if the member is valid', async () => {
@@ -191,12 +336,106 @@ describe('plugin-meetings', () => {
191
336
  });
192
337
  });
193
338
 
339
+ describe('#assignRoles', () => {
340
+ const setup = (locusUrl) => {
341
+ const members = createMembers({url: locusUrl});
342
+
343
+ const spies = {
344
+ generateRoleAssignmentMemberOptions: sandbox.spy(
345
+ MembersUtil,
346
+ 'generateRoleAssignmentMemberOptions'
347
+ ),
348
+ assignRolesMember: sandbox.spy(members.membersRequest, 'assignRolesMember'),
349
+ };
350
+
351
+ return {members, spies};
352
+ };
353
+
354
+ const checkInvalid = async (resultPromise, expectedMessage, spies) => {
355
+ await assert.isRejected(resultPromise, ParameterError, expectedMessage);
356
+ assert.notCalled(spies.generateRoleAssignmentMemberOptions);
357
+ assert.notCalled(spies.assignRolesMember);
358
+ };
359
+
360
+ const checkValid = async (
361
+ resultPromise,
362
+ spies,
363
+ expectedMemberId,
364
+ expectedRoles,
365
+ expectedLocusUrl
366
+ ) => {
367
+ await assert.isFulfilled(resultPromise);
368
+ assert.calledOnceWithExactly(
369
+ spies.generateRoleAssignmentMemberOptions,
370
+ expectedMemberId,
371
+ expectedRoles,
372
+ expectedLocusUrl
373
+ );
374
+ assert.calledOnceWithExactly(spies.assignRolesMember, {
375
+ memberId: expectedMemberId,
376
+ roles: expectedRoles,
377
+ locusUrl: expectedLocusUrl,
378
+ });
379
+ assert.strictEqual(resultPromise, spies.assignRolesMember.getCall(0).returnValue);
380
+ };
381
+
382
+ it('should not make a request if there is no member id', async () => {
383
+ const {members, spies} = setup(url1);
384
+
385
+ const resultPromise = members.assignRoles();
386
+
387
+ await checkInvalid(
388
+ resultPromise,
389
+ 'The member id must be defined to assign the roles to a member.',
390
+ spies
391
+ );
392
+ });
393
+
394
+ it('should not make a request if there is no locus url', async () => {
395
+ const {members, spies} = setup();
396
+
397
+ const resultPromise = members.assignRoles(uuid.v4());
398
+
399
+ await checkInvalid(
400
+ resultPromise,
401
+ 'The associated locus url for this meetings members object must be defined.',
402
+ spies
403
+ );
404
+ });
405
+
406
+ it('should make the correct request when called with roles', async () => {
407
+ const memberId = uuid.v4();
408
+ const {members, spies} = setup(url1);
409
+
410
+ const resultPromise = members.assignRoles(memberId, [
411
+ {type: 'PRESENTER', hasRole: true},
412
+ {type: 'MODERATOR', hasRole: false},
413
+ {type: 'COHOST', hasRole: true},
414
+ ]);
415
+
416
+ await checkValid(
417
+ resultPromise,
418
+ spies,
419
+ memberId,
420
+ [
421
+ {type: 'PRESENTER', hasRole: true},
422
+ {type: 'MODERATOR', hasRole: false},
423
+ {type: 'COHOST', hasRole: true},
424
+ ],
425
+ url1
426
+ );
427
+ });
428
+ });
429
+
194
430
  describe('#raiseOrLowerHand', () => {
195
431
  const setup = (locusUrl) => {
196
432
  const members = createMembers({url: locusUrl});
197
433
 
198
434
  const spies = {
199
- generateRaiseHandMemberOptions: sandbox.spy(MembersUtil, 'generateRaiseHandMemberOptions'),
435
+ generateRaiseHandMemberOptions: sandbox.spy(
436
+ MembersUtil,
437
+ 'generateRaiseHandMemberOptions'
438
+ ),
200
439
  raiseOrLowerHandMember: sandbox.spy(members.membersRequest, 'raiseOrLowerHandMember'),
201
440
  };
202
441
 
@@ -209,10 +448,25 @@ describe('plugin-meetings', () => {
209
448
  assert.notCalled(spies.raiseOrLowerHandMember);
210
449
  };
211
450
 
212
- const checkValid = async (resultPromise, spies, expectedMemberId, expectedRaise, expectedLocusUrl) => {
451
+ const checkValid = async (
452
+ resultPromise,
453
+ spies,
454
+ expectedMemberId,
455
+ expectedRaise,
456
+ expectedLocusUrl
457
+ ) => {
213
458
  await assert.isFulfilled(resultPromise);
214
- assert.calledOnceWithExactly(spies.generateRaiseHandMemberOptions, expectedMemberId, expectedRaise, expectedLocusUrl);
215
- assert.calledOnceWithExactly(spies.raiseOrLowerHandMember, {memberId: expectedMemberId, raised: expectedRaise, locusUrl: expectedLocusUrl});
459
+ assert.calledOnceWithExactly(
460
+ spies.generateRaiseHandMemberOptions,
461
+ expectedMemberId,
462
+ expectedRaise,
463
+ expectedLocusUrl
464
+ );
465
+ assert.calledOnceWithExactly(spies.raiseOrLowerHandMember, {
466
+ memberId: expectedMemberId,
467
+ raised: expectedRaise,
468
+ locusUrl: expectedLocusUrl,
469
+ });
216
470
  assert.strictEqual(resultPromise, spies.raiseOrLowerHandMember.getCall(0).returnValue);
217
471
  };
218
472
 
@@ -221,7 +475,11 @@ describe('plugin-meetings', () => {
221
475
 
222
476
  const resultPromise = members.raiseOrLowerHand();
223
477
 
224
- await checkInvalid(resultPromise, 'The member id must be defined to raise/lower the hand of the member.', spies);
478
+ await checkInvalid(
479
+ resultPromise,
480
+ 'The member id must be defined to raise/lower the hand of the member.',
481
+ spies
482
+ );
225
483
  });
226
484
 
227
485
  it('should not make a request if there is no locus url', async () => {
@@ -229,7 +487,11 @@ describe('plugin-meetings', () => {
229
487
 
230
488
  const resultPromise = members.raiseOrLowerHand(uuid.v4());
231
489
 
232
- await checkInvalid(resultPromise, 'The associated locus url for this meetings members object must be defined.', spies);
490
+ await checkInvalid(
491
+ resultPromise,
492
+ 'The associated locus url for this meetings members object must be defined.',
493
+ spies
494
+ );
233
495
  });
234
496
 
235
497
  it('should make the correct request when called with raise as true', async () => {
@@ -265,7 +527,10 @@ describe('plugin-meetings', () => {
265
527
  const members = createMembers({url: locusUrl});
266
528
 
267
529
  const spies = {
268
- generateLowerAllHandsMemberOptions: sandbox.spy(MembersUtil, 'generateLowerAllHandsMemberOptions'),
530
+ generateLowerAllHandsMemberOptions: sandbox.spy(
531
+ MembersUtil,
532
+ 'generateLowerAllHandsMemberOptions'
533
+ ),
269
534
  lowerAllHandsMember: sandbox.spy(members.membersRequest, 'lowerAllHandsMember'),
270
535
  };
271
536
 
@@ -278,10 +543,22 @@ describe('plugin-meetings', () => {
278
543
  assert.notCalled(spies.lowerAllHandsMember);
279
544
  };
280
545
 
281
- const checkValid = async (resultPromise, spies, expectedRequestingMemberId, expectedLocusUrl) => {
546
+ const checkValid = async (
547
+ resultPromise,
548
+ spies,
549
+ expectedRequestingMemberId,
550
+ expectedLocusUrl
551
+ ) => {
282
552
  await assert.isFulfilled(resultPromise);
283
- assert.calledOnceWithExactly(spies.generateLowerAllHandsMemberOptions, expectedRequestingMemberId, expectedLocusUrl);
284
- assert.calledOnceWithExactly(spies.lowerAllHandsMember, {requestingParticipantId: expectedRequestingMemberId, locusUrl: expectedLocusUrl});
553
+ assert.calledOnceWithExactly(
554
+ spies.generateLowerAllHandsMemberOptions,
555
+ expectedRequestingMemberId,
556
+ expectedLocusUrl
557
+ );
558
+ assert.calledOnceWithExactly(spies.lowerAllHandsMember, {
559
+ requestingParticipantId: expectedRequestingMemberId,
560
+ locusUrl: expectedLocusUrl,
561
+ });
285
562
  assert.strictEqual(resultPromise, spies.lowerAllHandsMember.getCall(0).returnValue);
286
563
  };
287
564
 
@@ -290,7 +567,11 @@ describe('plugin-meetings', () => {
290
567
 
291
568
  const resultPromise = members.lowerAllHands();
292
569
 
293
- await checkInvalid(resultPromise, 'The requestingMemberId must be defined to lower all hands in a meeting.', spies);
570
+ await checkInvalid(
571
+ resultPromise,
572
+ 'The requestingMemberId must be defined to lower all hands in a meeting.',
573
+ spies
574
+ );
294
575
  });
295
576
 
296
577
  it('should not make a request if there is no locus url', async () => {
@@ -298,7 +579,11 @@ describe('plugin-meetings', () => {
298
579
 
299
580
  const resultPromise = members.lowerAllHands(uuid.v4());
300
581
 
301
- await checkInvalid(resultPromise, 'The associated locus url for this meetings members object must be defined.', spies);
582
+ await checkInvalid(
583
+ resultPromise,
584
+ 'The associated locus url for this meetings members object must be defined.',
585
+ spies
586
+ );
302
587
  });
303
588
 
304
589
  it('should make the correct request when called with requestingMemberId', async () => {
@@ -311,19 +596,100 @@ describe('plugin-meetings', () => {
311
596
  });
312
597
  });
313
598
 
599
+ describe('#editDisplayName', () => {
600
+ const setup = (locusUrl) => {
601
+ const members = createMembers({url: locusUrl});
602
+
603
+ const spies = {
604
+ generateEditDisplayNameMemberOptions: sandbox.spy(
605
+ MembersUtil,
606
+ 'generateEditDisplayNameMemberOptions'
607
+ ),
608
+ editDisplayNameMember: sandbox.spy(members.membersRequest, 'editDisplayNameMember'),
609
+ };
610
+
611
+ return {members, spies};
612
+ };
613
+
614
+ const checkInvalid = async (resultPromise, expectedMessage, spies) => {
615
+ await assert.isRejected(resultPromise, ParameterError, expectedMessage);
616
+ assert.notCalled(spies.generateEditDisplayNameMemberOptions);
617
+ assert.notCalled(spies.editDisplayNameMember);
618
+ };
619
+
620
+ const checkValid = async (
621
+ resultPromise,
622
+ spies,
623
+ expectedMemberId,
624
+ expectedRequestingParticipantId,
625
+ expectedAlias,
626
+ expectedLocusUrl
627
+ ) => {
628
+ await assert.isFulfilled(resultPromise);
629
+ assert.calledOnceWithExactly(
630
+ spies.generateEditDisplayNameMemberOptions,
631
+ expectedMemberId,
632
+ expectedRequestingParticipantId,
633
+ expectedAlias,
634
+ expectedLocusUrl
635
+ );
636
+ assert.calledOnceWithExactly(spies.editDisplayNameMember, {
637
+ memberId: expectedMemberId,
638
+ requestingParticipantId: expectedRequestingParticipantId,
639
+ alias: expectedAlias,
640
+ locusUrl: expectedLocusUrl,
641
+ });
642
+ assert.strictEqual(resultPromise, spies.editDisplayNameMember.getCall(0).returnValue);
643
+ };
644
+
645
+ it('should not make a request if there is no memberId', async () => {
646
+ const {members, spies} = setup(url1);
647
+
648
+ const resultPromise = members.editDisplayName();
649
+
650
+ await checkInvalid(
651
+ resultPromise,
652
+ 'The member id must be defined to edit display name of the member.',
653
+ spies
654
+ );
655
+ });
656
+
657
+ it('should not make a request if there is no locus url', async () => {
658
+ const {members, spies} = setup();
659
+
660
+ const resultPromise = members.editDisplayName(uuid.v4());
661
+
662
+ await checkInvalid(
663
+ resultPromise,
664
+ 'The associated locus url for this meetings members object must be defined.',
665
+ spies
666
+ );
667
+ });
668
+
669
+ it('should make the correct request when called with respective parameters', async () => {
670
+ const requestingParticipantId = uuid.v4();
671
+ const memberId = uuid.v4();
672
+ const alias = 'aliasName';
673
+ const {members, spies} = setup(url1);
674
+
675
+ const resultPromise = members.editDisplayName(memberId, requestingParticipantId, alias);
676
+
677
+ await checkValid(resultPromise, spies, memberId, requestingParticipantId, alias, url1);
678
+ });
679
+ });
680
+
314
681
  describe('findMemberByCsi()', () => {
315
682
  let members;
316
683
 
317
684
  // fake collection that contains all combinations of members data structure (with respect to CSIs)
318
685
  const fakeCollection = {
319
686
  oneWithoutDevices: {
320
- participant: {
321
- }
687
+ participant: {},
322
688
  },
323
689
  oneWithEmptyDevices: {
324
690
  participant: {
325
691
  devices: [],
326
- }
692
+ },
327
693
  },
328
694
  oneWithDevicesWithoutCsis: {
329
695
  participant: {
@@ -338,7 +704,7 @@ describe('plugin-meetings', () => {
338
704
  url: 'dialout:///fakeagain',
339
705
  deviceType: 'PROVISIONAL',
340
706
  state: 'JOINED',
341
- }
707
+ },
342
708
  ],
343
709
  },
344
710
  id: 'abc-123-abc-123',
@@ -358,10 +724,10 @@ describe('plugin-meetings', () => {
358
724
  deviceType: 'SIP',
359
725
  state: 'JOINED',
360
726
  csis: [2000, 2001, 2002],
361
- }
362
- ]
363
- }
364
- }
727
+ },
728
+ ],
729
+ },
730
+ },
365
731
  };
366
732
 
367
733
  beforeEach(() => {
@@ -392,14 +758,13 @@ describe('plugin-meetings', () => {
392
758
  },
393
759
  oneWithoutDevices: {
394
760
  id: 'oneWithoutDevices',
395
- participant: {
396
- }
761
+ participant: {},
397
762
  },
398
763
  oneWithEmptyDevices: {
399
764
  id: 'oneWithEmptyDevices',
400
765
  participant: {
401
766
  devices: [],
402
- }
767
+ },
403
768
  },
404
769
  oneWithDevicesWithoutCsis: {
405
770
  id: 'oneWithDevicesWithoutCsis',
@@ -415,7 +780,7 @@ describe('plugin-meetings', () => {
415
780
  url: 'dialout:///fakeagain',
416
781
  deviceType: 'PROVISIONAL',
417
782
  state: 'JOINED',
418
- }
783
+ },
419
784
  ],
420
785
  },
421
786
  status: 'IN_MEETING',
@@ -431,7 +796,7 @@ describe('plugin-meetings', () => {
431
796
  mediaSessions: [
432
797
  {mediaType: 'audio', mediaContent: 'main', csi: 1000},
433
798
  {mediaType: 'video', mediaContent: 'main', csi: 1001},
434
- {mediaType: 'video', mediaContent: 'content', csi: 1002}
799
+ {mediaType: 'video', mediaContent: 'content', csi: 1002},
435
800
  ],
436
801
  },
437
802
  {
@@ -441,12 +806,12 @@ describe('plugin-meetings', () => {
441
806
  mediaSessions: [
442
807
  {mediaType: 'audio', mediaContent: 'main', csi: 2000},
443
808
  {mediaType: 'video', mediaContent: 'main', csi: 2001},
444
- {mediaType: 'video', mediaContent: 'content', csi: 2002}
809
+ {mediaType: 'video', mediaContent: 'content', csi: 2002},
445
810
  ],
446
- }
447
- ]
448
- }
449
- }
811
+ },
812
+ ],
813
+ },
814
+ },
450
815
  };
451
816
 
452
817
  beforeEach(() => {
@@ -470,7 +835,10 @@ describe('plugin-meetings', () => {
470
835
  });
471
836
 
472
837
  it('returns correct CSI values when there is a match', () => {
473
- assert.deepEqual(members.getCsisForMember('oneWithSomeCsis', 'video', 'main'), [1001, 2001]);
838
+ assert.deepEqual(
839
+ members.getCsisForMember('oneWithSomeCsis', 'video', 'main'),
840
+ [1001, 2001]
841
+ );
474
842
  });
475
843
  });
476
844
  });