@webex/plugin-meetings 3.0.0-beta.11 → 3.0.0-beta.111

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