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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (506) hide show
  1. package/UPGRADING.md +9 -9
  2. package/browsers.js +19 -24
  3. package/dist/breakouts/breakout.js +178 -0
  4. package/dist/breakouts/breakout.js.map +1 -0
  5. package/dist/breakouts/collection.js +23 -0
  6. package/dist/breakouts/collection.js.map +1 -0
  7. package/dist/breakouts/edit-lock-error.js +52 -0
  8. package/dist/breakouts/edit-lock-error.js.map +1 -0
  9. package/dist/breakouts/index.js +843 -0
  10. package/dist/breakouts/index.js.map +1 -0
  11. package/dist/breakouts/request.js +78 -0
  12. package/dist/breakouts/request.js.map +1 -0
  13. package/dist/breakouts/utils.js +56 -0
  14. package/dist/breakouts/utils.js.map +1 -0
  15. package/dist/common/browser-detection.js +1 -20
  16. package/dist/common/browser-detection.js.map +1 -1
  17. package/dist/common/collection.js +5 -20
  18. package/dist/common/collection.js.map +1 -1
  19. package/dist/common/config.js +0 -7
  20. package/dist/common/config.js.map +1 -1
  21. package/dist/common/errors/captcha-error.js +10 -24
  22. package/dist/common/errors/captcha-error.js.map +1 -1
  23. package/dist/common/errors/intent-to-join.js +11 -24
  24. package/dist/common/errors/intent-to-join.js.map +1 -1
  25. package/dist/common/errors/join-meeting.js +12 -25
  26. package/dist/common/errors/join-meeting.js.map +1 -1
  27. package/dist/common/errors/media.js +10 -24
  28. package/dist/common/errors/media.js.map +1 -1
  29. package/dist/common/errors/parameter.js +5 -33
  30. package/dist/common/errors/parameter.js.map +1 -1
  31. package/dist/common/errors/password-error.js +10 -24
  32. package/dist/common/errors/password-error.js.map +1 -1
  33. package/dist/common/errors/permission.js +9 -23
  34. package/dist/common/errors/permission.js.map +1 -1
  35. package/dist/common/errors/reconnection-in-progress.js +0 -17
  36. package/dist/common/errors/reconnection-in-progress.js.map +1 -1
  37. package/dist/common/errors/reconnection.js +10 -24
  38. package/dist/common/errors/reconnection.js.map +1 -1
  39. package/dist/common/errors/stats.js +10 -24
  40. package/dist/common/errors/stats.js.map +1 -1
  41. package/dist/common/errors/webex-errors.js +6 -41
  42. package/dist/common/errors/webex-errors.js.map +1 -1
  43. package/dist/common/errors/webex-meetings-error.js +5 -25
  44. package/dist/common/errors/webex-meetings-error.js.map +1 -1
  45. package/dist/common/events/events-scope.js +0 -22
  46. package/dist/common/events/events-scope.js.map +1 -1
  47. package/dist/common/events/events.js +0 -23
  48. package/dist/common/events/events.js.map +1 -1
  49. package/dist/common/events/trigger-proxy.js +0 -12
  50. package/dist/common/events/trigger-proxy.js.map +1 -1
  51. package/dist/common/events/util.js +0 -15
  52. package/dist/common/events/util.js.map +1 -1
  53. package/dist/common/logs/logger-config.js +0 -4
  54. package/dist/common/logs/logger-config.js.map +1 -1
  55. package/dist/common/logs/logger-proxy.js +1 -8
  56. package/dist/common/logs/logger-proxy.js.map +1 -1
  57. package/dist/common/logs/request.js +37 -60
  58. package/dist/common/logs/request.js.map +1 -1
  59. package/dist/common/queue.js +4 -14
  60. package/dist/common/queue.js.map +1 -1
  61. package/dist/config.js +6 -6
  62. package/dist/config.js.map +1 -1
  63. package/dist/constants.js +143 -52
  64. package/dist/constants.js.map +1 -1
  65. package/dist/controls-options-manager/constants.js +14 -0
  66. package/dist/controls-options-manager/constants.js.map +1 -0
  67. package/dist/controls-options-manager/enums.js +16 -0
  68. package/dist/controls-options-manager/enums.js.map +1 -0
  69. package/dist/controls-options-manager/index.js +261 -0
  70. package/dist/controls-options-manager/index.js.map +1 -0
  71. package/dist/controls-options-manager/util.js +39 -0
  72. package/dist/controls-options-manager/util.js.map +1 -0
  73. package/dist/index.js +11 -18
  74. package/dist/index.js.map +1 -1
  75. package/dist/locus-info/controlsUtils.js +31 -29
  76. package/dist/locus-info/controlsUtils.js.map +1 -1
  77. package/dist/locus-info/embeddedAppsUtils.js +3 -26
  78. package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
  79. package/dist/locus-info/fullState.js +0 -15
  80. package/dist/locus-info/fullState.js.map +1 -1
  81. package/dist/locus-info/hostUtils.js +4 -12
  82. package/dist/locus-info/hostUtils.js.map +1 -1
  83. package/dist/locus-info/index.js +237 -198
  84. package/dist/locus-info/index.js.map +1 -1
  85. package/dist/locus-info/infoUtils.js +3 -37
  86. package/dist/locus-info/infoUtils.js.map +1 -1
  87. package/dist/locus-info/mediaSharesUtils.js +12 -38
  88. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  89. package/dist/locus-info/parser.js +92 -118
  90. package/dist/locus-info/parser.js.map +1 -1
  91. package/dist/locus-info/selfUtils.js +80 -89
  92. package/dist/locus-info/selfUtils.js.map +1 -1
  93. package/dist/media/index.js +56 -146
  94. package/dist/media/index.js.map +1 -1
  95. package/dist/media/properties.js +83 -117
  96. package/dist/media/properties.js.map +1 -1
  97. package/dist/media/util.js +2 -9
  98. package/dist/media/util.js.map +1 -1
  99. package/dist/mediaQualityMetrics/config.js +505 -495
  100. package/dist/mediaQualityMetrics/config.js.map +1 -1
  101. package/dist/meeting/in-meeting-actions.js +31 -14
  102. package/dist/meeting/in-meeting-actions.js.map +1 -1
  103. package/dist/meeting/index.js +2225 -2244
  104. package/dist/meeting/index.js.map +1 -1
  105. package/dist/meeting/muteState.js +102 -100
  106. package/dist/meeting/muteState.js.map +1 -1
  107. package/dist/meeting/request.js +308 -264
  108. package/dist/meeting/request.js.map +1 -1
  109. package/dist/meeting/request.type.js +7 -0
  110. package/dist/meeting/request.type.js.map +1 -0
  111. package/dist/meeting/state.js +21 -31
  112. package/dist/meeting/state.js.map +1 -1
  113. package/dist/meeting/util.js +63 -217
  114. package/dist/meeting/util.js.map +1 -1
  115. package/dist/meeting-info/collection.js +6 -25
  116. package/dist/meeting-info/collection.js.map +1 -1
  117. package/dist/meeting-info/index.js +14 -32
  118. package/dist/meeting-info/index.js.map +1 -1
  119. package/dist/meeting-info/meeting-info-v2.js +193 -268
  120. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  121. package/dist/meeting-info/request.js +3 -15
  122. package/dist/meeting-info/request.js.map +1 -1
  123. package/dist/meeting-info/util.js +98 -183
  124. package/dist/meeting-info/util.js.map +1 -1
  125. package/dist/meeting-info/utilv2.js +137 -228
  126. package/dist/meeting-info/utilv2.js.map +1 -1
  127. package/dist/meetings/collection.js +26 -19
  128. package/dist/meetings/collection.js.map +1 -1
  129. package/dist/meetings/index.js +565 -552
  130. package/dist/meetings/index.js.map +1 -1
  131. package/dist/meetings/request.js +26 -41
  132. package/dist/meetings/request.js.map +1 -1
  133. package/dist/meetings/util.js +151 -155
  134. package/dist/meetings/util.js.map +1 -1
  135. package/dist/member/index.js +100 -85
  136. package/dist/member/index.js.map +1 -1
  137. package/dist/member/types.js +15 -0
  138. package/dist/member/types.js.map +1 -0
  139. package/dist/member/util.js +90 -68
  140. package/dist/member/util.js.map +1 -1
  141. package/dist/members/collection.js +13 -12
  142. package/dist/members/collection.js.map +1 -1
  143. package/dist/members/index.js +152 -204
  144. package/dist/members/index.js.map +1 -1
  145. package/dist/members/request.js +35 -39
  146. package/dist/members/request.js.map +1 -1
  147. package/dist/members/types.js +15 -0
  148. package/dist/members/types.js.map +1 -0
  149. package/dist/members/util.js +76 -46
  150. package/dist/members/util.js.map +1 -1
  151. package/dist/metrics/config.js +4 -14
  152. package/dist/metrics/config.js.map +1 -1
  153. package/dist/metrics/constants.js +1 -6
  154. package/dist/metrics/constants.js.map +1 -1
  155. package/dist/metrics/index.js +59 -156
  156. package/dist/metrics/index.js.map +1 -1
  157. package/dist/multistream/mediaRequestManager.js +116 -52
  158. package/dist/multistream/mediaRequestManager.js.map +1 -1
  159. package/dist/multistream/receiveSlot.js +58 -65
  160. package/dist/multistream/receiveSlot.js.map +1 -1
  161. package/dist/multistream/receiveSlotManager.js +58 -93
  162. package/dist/multistream/receiveSlotManager.js.map +1 -1
  163. package/dist/multistream/remoteMedia.js +55 -74
  164. package/dist/multistream/remoteMedia.js.map +1 -1
  165. package/dist/multistream/remoteMediaGroup.js +6 -40
  166. package/dist/multistream/remoteMediaGroup.js.map +1 -1
  167. package/dist/multistream/remoteMediaManager.js +466 -442
  168. package/dist/multistream/remoteMediaManager.js.map +1 -1
  169. package/dist/networkQualityMonitor/index.js +40 -59
  170. package/dist/networkQualityMonitor/index.js.map +1 -1
  171. package/dist/personal-meeting-room/index.js +21 -45
  172. package/dist/personal-meeting-room/index.js.map +1 -1
  173. package/dist/personal-meeting-room/request.js +1 -31
  174. package/dist/personal-meeting-room/request.js.map +1 -1
  175. package/dist/personal-meeting-room/util.js +0 -13
  176. package/dist/personal-meeting-room/util.js.map +1 -1
  177. package/dist/reachability/index.js +192 -191
  178. package/dist/reachability/index.js.map +1 -1
  179. package/dist/reachability/request.js +15 -23
  180. package/dist/reachability/request.js.map +1 -1
  181. package/dist/reactions/constants.js +13 -0
  182. package/dist/reactions/constants.js.map +1 -0
  183. package/dist/reactions/reactions.js +109 -0
  184. package/dist/reactions/reactions.js.map +1 -0
  185. package/dist/reactions/reactions.type.js +36 -0
  186. package/dist/reactions/reactions.type.js.map +1 -0
  187. package/dist/reconnection-manager/index.js +342 -460
  188. package/dist/reconnection-manager/index.js.map +1 -1
  189. package/dist/recording-controller/enums.js +17 -0
  190. package/dist/recording-controller/enums.js.map +1 -0
  191. package/dist/recording-controller/index.js +343 -0
  192. package/dist/recording-controller/index.js.map +1 -0
  193. package/dist/recording-controller/util.js +63 -0
  194. package/dist/recording-controller/util.js.map +1 -0
  195. package/dist/roap/index.js +48 -70
  196. package/dist/roap/index.js.map +1 -1
  197. package/dist/roap/request.js +143 -131
  198. package/dist/roap/request.js.map +1 -1
  199. package/dist/roap/turnDiscovery.js +91 -98
  200. package/dist/roap/turnDiscovery.js.map +1 -1
  201. package/dist/statsAnalyzer/global.js +1 -95
  202. package/dist/statsAnalyzer/global.js.map +1 -1
  203. package/dist/statsAnalyzer/index.js +372 -455
  204. package/dist/statsAnalyzer/index.js.map +1 -1
  205. package/dist/statsAnalyzer/mqaUtil.js +143 -87
  206. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  207. package/dist/transcription/index.js +22 -47
  208. package/dist/transcription/index.js.map +1 -1
  209. package/dist/types/breakouts/breakout.d.ts +8 -0
  210. package/dist/types/breakouts/collection.d.ts +5 -0
  211. package/dist/types/breakouts/edit-lock-error.d.ts +15 -0
  212. package/dist/types/breakouts/index.d.ts +5 -0
  213. package/dist/types/breakouts/request.d.ts +22 -0
  214. package/dist/types/breakouts/utils.d.ts +8 -0
  215. package/dist/types/common/browser-detection.d.ts +9 -0
  216. package/dist/types/common/collection.d.ts +48 -0
  217. package/dist/types/common/config.d.ts +2 -0
  218. package/dist/types/common/errors/captcha-error.d.ts +15 -0
  219. package/dist/types/common/errors/intent-to-join.d.ts +16 -0
  220. package/dist/types/common/errors/join-meeting.d.ts +17 -0
  221. package/dist/types/common/errors/media.d.ts +15 -0
  222. package/dist/types/common/errors/parameter.d.ts +15 -0
  223. package/dist/types/common/errors/password-error.d.ts +15 -0
  224. package/dist/types/common/errors/permission.d.ts +14 -0
  225. package/dist/types/common/errors/reconnection-in-progress.d.ts +9 -0
  226. package/dist/types/common/errors/reconnection.d.ts +15 -0
  227. package/dist/types/common/errors/stats.d.ts +15 -0
  228. package/dist/types/common/errors/webex-errors.d.ts +69 -0
  229. package/dist/types/common/errors/webex-meetings-error.d.ts +20 -0
  230. package/dist/types/common/events/events-scope.d.ts +17 -0
  231. package/dist/types/common/events/events.d.ts +12 -0
  232. package/dist/types/common/events/trigger-proxy.d.ts +2 -0
  233. package/dist/types/common/events/util.d.ts +2 -0
  234. package/dist/types/common/logs/logger-config.d.ts +2 -0
  235. package/dist/types/common/logs/logger-proxy.d.ts +2 -0
  236. package/dist/types/common/logs/request.d.ts +34 -0
  237. package/dist/types/common/queue.d.ts +32 -0
  238. package/dist/types/config.d.ts +77 -0
  239. package/dist/types/constants.d.ts +944 -0
  240. package/dist/types/controls-options-manager/constants.d.ts +4 -0
  241. package/dist/types/controls-options-manager/enums.d.ts +6 -0
  242. package/dist/types/controls-options-manager/index.d.ts +128 -0
  243. package/dist/types/controls-options-manager/util.d.ts +9 -0
  244. package/dist/types/index.d.ts +6 -0
  245. package/dist/types/locus-info/controlsUtils.d.ts +2 -0
  246. package/dist/types/locus-info/embeddedAppsUtils.d.ts +2 -0
  247. package/dist/types/locus-info/fullState.d.ts +2 -0
  248. package/dist/types/locus-info/hostUtils.d.ts +2 -0
  249. package/dist/types/locus-info/index.d.ts +276 -0
  250. package/dist/types/locus-info/infoUtils.d.ts +2 -0
  251. package/dist/types/locus-info/mediaSharesUtils.d.ts +2 -0
  252. package/dist/types/locus-info/parser.d.ts +212 -0
  253. package/dist/types/locus-info/selfUtils.d.ts +2 -0
  254. package/dist/types/media/index.d.ts +32 -0
  255. package/dist/types/media/properties.d.ts +108 -0
  256. package/dist/types/media/util.d.ts +2 -0
  257. package/dist/types/mediaQualityMetrics/config.d.ts +365 -0
  258. package/dist/types/meeting/in-meeting-actions.d.ts +101 -0
  259. package/dist/types/meeting/index.d.ts +1720 -0
  260. package/dist/types/meeting/muteState.d.ts +132 -0
  261. package/dist/types/meeting/request.d.ts +271 -0
  262. package/dist/types/meeting/request.type.d.ts +11 -0
  263. package/dist/types/meeting/state.d.ts +9 -0
  264. package/dist/types/meeting/util.d.ts +2 -0
  265. package/dist/types/meeting-info/collection.d.ts +20 -0
  266. package/dist/types/meeting-info/index.d.ts +57 -0
  267. package/dist/types/meeting-info/meeting-info-v2.d.ts +93 -0
  268. package/dist/types/meeting-info/request.d.ts +22 -0
  269. package/dist/types/meeting-info/util.d.ts +2 -0
  270. package/dist/types/meeting-info/utilv2.d.ts +2 -0
  271. package/dist/types/meetings/collection.d.ts +31 -0
  272. package/dist/types/meetings/index.d.ts +315 -0
  273. package/dist/types/meetings/request.d.ts +27 -0
  274. package/dist/types/meetings/util.d.ts +18 -0
  275. package/dist/types/member/index.d.ts +156 -0
  276. package/dist/types/member/types.d.ts +21 -0
  277. package/dist/types/member/util.d.ts +2 -0
  278. package/dist/types/members/collection.d.ts +29 -0
  279. package/dist/types/members/index.d.ts +343 -0
  280. package/dist/types/members/request.d.ts +58 -0
  281. package/dist/types/members/types.d.ts +24 -0
  282. package/dist/types/members/util.d.ts +2 -0
  283. package/dist/types/metrics/config.d.ts +171 -0
  284. package/dist/types/metrics/constants.d.ts +53 -0
  285. package/dist/types/metrics/index.d.ts +152 -0
  286. package/dist/types/multistream/mediaRequestManager.d.ts +68 -0
  287. package/dist/types/multistream/receiveSlot.d.ts +68 -0
  288. package/dist/types/multistream/receiveSlotManager.d.ts +49 -0
  289. package/dist/types/multistream/remoteMedia.d.ts +100 -0
  290. package/dist/types/multistream/remoteMediaGroup.d.ts +56 -0
  291. package/dist/types/multistream/remoteMediaManager.d.ts +263 -0
  292. package/dist/types/networkQualityMonitor/index.d.ts +70 -0
  293. package/dist/types/personal-meeting-room/index.d.ts +47 -0
  294. package/dist/types/personal-meeting-room/request.d.ts +14 -0
  295. package/dist/types/personal-meeting-room/util.d.ts +2 -0
  296. package/dist/types/reachability/index.d.ts +152 -0
  297. package/dist/types/reachability/request.d.ts +37 -0
  298. package/dist/types/reactions/constants.d.ts +3 -0
  299. package/dist/types/reactions/reactions.d.ts +4 -0
  300. package/dist/types/reactions/reactions.type.d.ts +52 -0
  301. package/dist/types/reconnection-manager/index.d.ts +126 -0
  302. package/dist/types/recording-controller/enums.d.ts +7 -0
  303. package/dist/types/recording-controller/index.d.ts +193 -0
  304. package/dist/types/recording-controller/util.d.ts +13 -0
  305. package/dist/types/roap/index.d.ts +77 -0
  306. package/dist/types/roap/request.d.ts +38 -0
  307. package/dist/types/roap/turnDiscovery.d.ts +74 -0
  308. package/dist/types/statsAnalyzer/global.d.ts +36 -0
  309. package/dist/types/statsAnalyzer/index.d.ts +195 -0
  310. package/dist/types/statsAnalyzer/mqaUtil.d.ts +24 -0
  311. package/dist/types/transcription/index.d.ts +64 -0
  312. package/internal-README.md +7 -6
  313. package/package.json +27 -21
  314. package/src/breakouts/README.md +219 -0
  315. package/src/breakouts/breakout.ts +153 -0
  316. package/src/breakouts/collection.ts +19 -0
  317. package/src/breakouts/edit-lock-error.ts +25 -0
  318. package/src/breakouts/index.ts +745 -0
  319. package/src/breakouts/request.ts +55 -0
  320. package/src/breakouts/utils.ts +44 -0
  321. package/src/common/{browser-detection.js → browser-detection.ts} +9 -6
  322. package/src/common/collection.ts +9 -7
  323. package/src/common/{config.js → config.ts} +1 -1
  324. package/src/common/errors/{captcha-error.js → captcha-error.ts} +11 -7
  325. package/src/common/errors/{intent-to-join.js → intent-to-join.ts} +12 -7
  326. package/src/common/errors/{join-meeting.js → join-meeting.ts} +17 -8
  327. package/src/common/errors/{media.js → media.ts} +11 -7
  328. package/src/common/errors/parameter.ts +11 -7
  329. package/src/common/errors/{password-error.js → password-error.ts} +11 -7
  330. package/src/common/errors/{permission.js → permission.ts} +10 -6
  331. package/src/common/errors/{reconnection.js → reconnection.ts} +11 -7
  332. package/src/common/errors/{stats.js → stats.ts} +11 -7
  333. package/src/common/errors/{webex-errors.js → webex-errors.ts} +8 -7
  334. package/src/common/errors/{webex-meetings-error.js → webex-meetings-error.ts} +4 -2
  335. package/src/common/events/{events-scope.js → events-scope.ts} +6 -2
  336. package/src/common/events/{events.js → events.ts} +5 -1
  337. package/src/common/events/{trigger-proxy.js → trigger-proxy.ts} +9 -5
  338. package/src/common/events/{util.js → util.ts} +2 -3
  339. package/src/common/logs/{logger-config.js → logger-config.ts} +1 -2
  340. package/src/common/logs/logger-proxy.ts +44 -0
  341. package/src/common/logs/{request.js → request.ts} +22 -9
  342. package/src/common/queue.ts +1 -2
  343. package/src/{config.js → config.ts} +17 -12
  344. package/src/constants.ts +92 -5
  345. package/src/controls-options-manager/constants.ts +5 -0
  346. package/src/controls-options-manager/enums.ts +7 -0
  347. package/src/controls-options-manager/index.ts +240 -0
  348. package/src/controls-options-manager/util.ts +30 -0
  349. package/src/index.js +4 -1
  350. package/src/locus-info/controlsUtils.ts +141 -0
  351. package/src/locus-info/{embeddedAppsUtils.js → embeddedAppsUtils.ts} +5 -6
  352. package/src/locus-info/{fullState.js → fullState.ts} +16 -12
  353. package/src/locus-info/{hostUtils.js → hostUtils.ts} +9 -8
  354. package/src/locus-info/{index.js → index.ts} +211 -71
  355. package/src/locus-info/{infoUtils.js → infoUtils.ts} +19 -8
  356. package/src/locus-info/{mediaSharesUtils.js → mediaSharesUtils.ts} +17 -17
  357. package/src/locus-info/{parser.js → parser.ts} +67 -79
  358. package/src/locus-info/{selfUtils.js → selfUtils.ts} +183 -67
  359. package/src/media/{index.js → index.ts} +179 -176
  360. package/src/media/{properties.js → properties.ts} +60 -37
  361. package/src/media/{util.js → util.ts} +2 -2
  362. package/src/mediaQualityMetrics/config.ts +384 -0
  363. package/src/meeting/in-meeting-actions.ts +67 -3
  364. package/src/meeting/{index.js → index.ts} +2605 -1605
  365. package/src/meeting/{muteState.js → muteState.ts} +138 -73
  366. package/src/meeting/{request.js → request.ts} +326 -142
  367. package/src/meeting/request.type.ts +13 -0
  368. package/src/meeting/{state.js → state.ts} +50 -35
  369. package/src/meeting/{util.js → util.ts} +131 -115
  370. package/src/meeting-info/{collection.js → collection.ts} +6 -2
  371. package/src/meeting-info/{index.js → index.ts} +42 -36
  372. package/src/meeting-info/meeting-info-v2.ts +273 -0
  373. package/src/meeting-info/{request.js → request.ts} +14 -4
  374. package/src/meeting-info/{util.js → util.ts} +60 -51
  375. package/src/meeting-info/{utilv2.js → utilv2.ts} +65 -58
  376. package/src/meetings/{collection.js → collection.ts} +26 -3
  377. package/src/meetings/index.ts +1275 -0
  378. package/src/meetings/{request.js → request.ts} +34 -25
  379. package/src/meetings/{util.js → util.ts} +99 -33
  380. package/src/member/{index.js → index.ts} +124 -56
  381. package/src/member/types.ts +24 -0
  382. package/src/member/{util.js → util.ts} +105 -25
  383. package/src/members/{collection.js → collection.ts} +10 -2
  384. package/src/members/{index.js → index.ts} +281 -144
  385. package/src/members/{request.js → request.ts} +80 -16
  386. package/src/members/types.ts +28 -0
  387. package/src/members/{util.js → util.ts} +108 -55
  388. package/src/metrics/{config.js → config.ts} +255 -92
  389. package/src/metrics/{constants.js → constants.ts} +0 -6
  390. package/src/metrics/{index.js → index.ts} +110 -94
  391. package/src/multistream/mediaRequestManager.ts +144 -40
  392. package/src/multistream/receiveSlot.ts +69 -26
  393. package/src/multistream/receiveSlotManager.ts +50 -38
  394. package/src/multistream/remoteMedia.ts +30 -4
  395. package/src/multistream/remoteMediaGroup.ts +4 -3
  396. package/src/multistream/remoteMediaManager.ts +230 -66
  397. package/src/networkQualityMonitor/{index.js → index.ts} +41 -29
  398. package/src/personal-meeting-room/{index.js → index.ts} +28 -19
  399. package/src/personal-meeting-room/{request.js → request.ts} +13 -4
  400. package/src/personal-meeting-room/{util.js → util.ts} +4 -4
  401. package/src/reachability/{index.js → index.ts} +157 -94
  402. package/src/reachability/request.ts +46 -35
  403. package/src/reactions/constants.ts +4 -0
  404. package/src/reactions/reactions.ts +104 -0
  405. package/src/reactions/reactions.type.ts +62 -0
  406. package/src/reconnection-manager/{index.js → index.ts} +228 -120
  407. package/src/recording-controller/enums.ts +8 -0
  408. package/src/recording-controller/index.ts +315 -0
  409. package/src/recording-controller/util.ts +58 -0
  410. package/src/roap/{index.js → index.ts} +77 -60
  411. package/src/roap/request.ts +172 -0
  412. package/src/roap/turnDiscovery.ts +81 -41
  413. package/src/statsAnalyzer/global.ts +37 -0
  414. package/src/statsAnalyzer/index.ts +1242 -0
  415. package/src/statsAnalyzer/mqaUtil.ts +291 -0
  416. package/src/transcription/{index.js → index.ts} +46 -39
  417. package/test/integration/spec/converged-space-meetings.js +176 -0
  418. package/test/integration/spec/journey.js +665 -464
  419. package/test/integration/spec/space-meeting.js +320 -206
  420. package/test/integration/spec/transcription.js +7 -8
  421. package/test/unit/spec/breakouts/breakout.ts +178 -0
  422. package/test/unit/spec/breakouts/collection.ts +15 -0
  423. package/test/unit/spec/breakouts/edit-lock-error.ts +30 -0
  424. package/test/unit/spec/breakouts/index.ts +1252 -0
  425. package/test/unit/spec/breakouts/request.ts +104 -0
  426. package/test/unit/spec/breakouts/utils.js +54 -0
  427. package/test/unit/spec/common/browser-detection.js +9 -28
  428. package/test/unit/spec/controls-options-manager/index.js +204 -0
  429. package/test/unit/spec/controls-options-manager/util.js +86 -0
  430. package/test/unit/spec/fixture/locus.js +92 -90
  431. package/test/unit/spec/locus-info/controlsUtils.js +133 -34
  432. package/test/unit/spec/locus-info/embeddedAppsUtils.js +8 -6
  433. package/test/unit/spec/locus-info/index.js +303 -2
  434. package/test/unit/spec/locus-info/infoUtils.js +41 -32
  435. package/test/unit/spec/locus-info/lib/BasicSeqCmp.json +88 -430
  436. package/test/unit/spec/locus-info/lib/SeqCmp.json +513 -685
  437. package/test/unit/spec/locus-info/parser.js +3 -9
  438. package/test/unit/spec/locus-info/selfConstant.js +101 -103
  439. package/test/unit/spec/locus-info/selfUtils.js +165 -12
  440. package/test/unit/spec/media/index.ts +72 -8
  441. package/test/unit/spec/media/properties.ts +9 -9
  442. package/test/unit/spec/meeting/in-meeting-actions.ts +29 -2
  443. package/test/unit/spec/meeting/index.js +2503 -802
  444. package/test/unit/spec/meeting/muteState.js +146 -61
  445. package/test/unit/spec/meeting/request.js +141 -43
  446. package/test/unit/spec/meeting/utils.js +135 -164
  447. package/test/unit/spec/meeting-info/meetinginfov2.js +100 -73
  448. package/test/unit/spec/meeting-info/request.js +7 -9
  449. package/test/unit/spec/meeting-info/util.js +11 -12
  450. package/test/unit/spec/meeting-info/utilv2.js +110 -74
  451. package/test/unit/spec/meetings/collection.js +15 -1
  452. package/test/unit/spec/meetings/index.js +622 -263
  453. package/test/unit/spec/meetings/utils.js +65 -14
  454. package/test/unit/spec/member/index.js +24 -1
  455. package/test/unit/spec/member/util.js +359 -32
  456. package/test/unit/spec/members/index.js +294 -54
  457. package/test/unit/spec/members/request.js +50 -20
  458. package/test/unit/spec/members/utils.js +147 -4
  459. package/test/unit/spec/metrics/index.js +16 -21
  460. package/test/unit/spec/multistream/mediaRequestManager.ts +369 -68
  461. package/test/unit/spec/multistream/receiveSlot.ts +76 -17
  462. package/test/unit/spec/multistream/receiveSlotManager.ts +60 -38
  463. package/test/unit/spec/multistream/remoteMedia.ts +32 -2
  464. package/test/unit/spec/multistream/remoteMediaGroup.ts +5 -5
  465. package/test/unit/spec/multistream/remoteMediaManager.ts +549 -65
  466. package/test/unit/spec/networkQualityMonitor/index.js +24 -18
  467. package/test/unit/spec/personal-meeting-room/personal-meeting-room.js +2 -7
  468. package/test/unit/spec/reachability/index.ts +176 -27
  469. package/test/unit/spec/reachability/request.js +66 -0
  470. package/test/unit/spec/reconnection-manager/index.js +58 -30
  471. package/test/unit/spec/recording-controller/index.js +231 -0
  472. package/test/unit/spec/recording-controller/util.js +102 -0
  473. package/test/unit/spec/roap/index.ts +12 -8
  474. package/test/unit/spec/roap/request.ts +217 -0
  475. package/test/unit/spec/roap/turnDiscovery.ts +72 -49
  476. package/test/unit/spec/stats-analyzer/index.js +108 -57
  477. package/test/utils/cmr.js +44 -42
  478. package/test/utils/constants.js +9 -0
  479. package/test/utils/testUtils.js +98 -77
  480. package/test/utils/webex-config.js +22 -18
  481. package/test/utils/webex-test-users.js +57 -50
  482. package/tsconfig.json +6 -0
  483. package/dist/media/internal-media-core-wrapper.js +0 -22
  484. package/dist/media/internal-media-core-wrapper.js.map +0 -1
  485. package/dist/meeting/effectsState.js +0 -327
  486. package/dist/meeting/effectsState.js.map +0 -1
  487. package/dist/multistream/multistreamMedia.js +0 -116
  488. package/dist/multistream/multistreamMedia.js.map +0 -1
  489. package/dist/peer-connection-manager/util.js +0 -124
  490. package/dist/peer-connection-manager/util.js.map +0 -1
  491. package/src/common/logs/logger-proxy.js +0 -33
  492. package/src/locus-info/controlsUtils.js +0 -102
  493. package/src/media/internal-media-core-wrapper.ts +0 -9
  494. package/src/mediaQualityMetrics/config.js +0 -382
  495. package/src/meeting/effectsState.js +0 -205
  496. package/src/meeting-info/meeting-info-v2.js +0 -255
  497. package/src/meetings/index.js +0 -1015
  498. package/src/multistream/multistreamMedia.ts +0 -92
  499. package/src/peer-connection-manager/util.ts +0 -117
  500. package/src/roap/request.js +0 -127
  501. package/src/statsAnalyzer/global.js +0 -133
  502. package/src/statsAnalyzer/index.js +0 -1006
  503. package/src/statsAnalyzer/mqaUtil.js +0 -173
  504. package/test/unit/spec/meeting/effectsState.js +0 -291
  505. package/test/unit/spec/peerconnection-manager/utils.test-fixtures.ts +0 -389
  506. /package/src/common/errors/{reconnection-in-progress.js → reconnection-in-progress.ts} +0 -0
@@ -1,3 +1,4 @@
1
+ // @ts-ignore
1
2
  import {StatelessWebexPlugin} from '@webex/webex-core';
2
3
 
3
4
  import {MEETINGS} from '../constants';
@@ -5,7 +6,6 @@ import ParameterError from '../common/errors/parameter';
5
6
 
6
7
  import MembersUtil from './util';
7
8
 
8
-
9
9
  /**
10
10
  * @class MembersRequest
11
11
  */
@@ -19,12 +19,24 @@ export default class MembersRequest extends StatelessWebexPlugin {
19
19
  * @throws {Error} if the options are not valid and complete, must have invitee with emailAddress OR email AND locusUrl
20
20
  * @memberof MembersRequest
21
21
  */
22
- addMembers(options) {
23
- if (!(!options || !options.invitee || (!options.invitee.emailAddress || !options.invitee.email || !options.invitee.phoneNumber) || !options.locusUrl)) {
24
- throw new ParameterError('invitee must be passed and the associated locus url for this meeting object must be defined.');
22
+ addMembers(options: any) {
23
+ if (
24
+ !(
25
+ !options ||
26
+ !options.invitee ||
27
+ !options.invitee.emailAddress ||
28
+ !options.invitee.email ||
29
+ !options.invitee.phoneNumber ||
30
+ !options.locusUrl
31
+ )
32
+ ) {
33
+ throw new ParameterError(
34
+ 'invitee must be passed and the associated locus url for this meeting object must be defined.'
35
+ );
25
36
  }
26
37
  const requestParams = MembersUtil.getAddMemberRequestParams(options);
27
38
 
39
+ // @ts-ignore
28
40
  return this.request(requestParams);
29
41
  }
30
42
 
@@ -35,62 +47,100 @@ export default class MembersRequest extends StatelessWebexPlugin {
35
47
  * @throws {Error} if the options are not valid and complete, must have memberIds AND locusUrl
36
48
  * @memberof MembersRequest
37
49
  */
38
- admitMember(options) {
50
+ admitMember(options: any) {
39
51
  if (!options || !options.locusUrl || !options.memberIds) {
40
- throw new ParameterError('memberIds must be an array passed and the associated locus url for this meeting object must be defined.');
52
+ throw new ParameterError(
53
+ 'memberIds must be an array passed and the associated locus url for this meeting object must be defined.'
54
+ );
41
55
  }
42
56
  const requestParams = MembersUtil.getAdmitMemberRequestParams(options);
43
57
 
58
+ // @ts-ignore
44
59
  return this.request(requestParams);
45
60
  }
46
61
 
47
62
  removeMember(options) {
48
63
  if (!options || !options.locusUrl || !options.memberId) {
49
- throw new ParameterError('memberId must be defined, and the associated locus url for this meeting object must be defined.');
64
+ throw new ParameterError(
65
+ 'memberId must be defined, and the associated locus url for this meeting object must be defined.'
66
+ );
50
67
  }
51
68
 
52
69
  const requestParams = MembersUtil.getRemoveMemberRequestParams(options);
53
70
 
71
+ // @ts-ignore
54
72
  return this.request(requestParams);
55
73
  }
56
74
 
57
75
  muteMember(options) {
58
76
  if (!options || !options.locusUrl || !options.memberId) {
59
- throw new ParameterError('memberId must be defined, and the associated locus url for this meeting object must be defined.');
77
+ throw new ParameterError(
78
+ 'memberId must be defined, and the associated locus url for this meeting object must be defined.'
79
+ );
60
80
  }
61
81
 
62
82
  const requestParams = MembersUtil.getMuteMemberRequestParams(options);
63
83
 
84
+ // @ts-ignore
85
+ return this.request(requestParams);
86
+ }
87
+
88
+ /**
89
+ * Sends a request to the DTMF endpoint to send tones
90
+ * @param {Object} options
91
+ * @param {String} options.locusUrl
92
+ * @param {String} options.memberId ID of PSTN user
93
+ * @returns {Promise}
94
+ */
95
+ assignRolesMember(options: any) {
96
+ if (!options || !options.locusUrl || !options.memberId) {
97
+ throw new ParameterError(
98
+ 'memberId must be defined, and the associated locus url for this meeting object must be defined.'
99
+ );
100
+ }
101
+
102
+ const requestParams = MembersUtil.getRoleAssignmentMemberRequestParams(options);
103
+
104
+ // @ts-ignore
64
105
  return this.request(requestParams);
65
106
  }
66
107
 
67
108
  raiseOrLowerHandMember(options) {
68
109
  if (!options || !options.locusUrl || !options.memberId) {
69
- throw new ParameterError('memberId must be defined, and the associated locus url for this meeting object must be defined.');
110
+ throw new ParameterError(
111
+ 'memberId must be defined, and the associated locus url for this meeting object must be defined.'
112
+ );
70
113
  }
71
114
 
72
115
  const requestParams = MembersUtil.getRaiseHandMemberRequestParams(options);
73
116
 
117
+ // @ts-ignore
74
118
  return this.request(requestParams);
75
119
  }
76
120
 
77
121
  lowerAllHandsMember(options) {
78
122
  if (!options || !options.locusUrl || !options.requestingParticipantId) {
79
- throw new ParameterError('requestingParticipantId must be defined, and the associated locus url for this meeting object must be defined.');
123
+ throw new ParameterError(
124
+ 'requestingParticipantId must be defined, and the associated locus url for this meeting object must be defined.'
125
+ );
80
126
  }
81
127
 
82
128
  const requestParams = MembersUtil.getLowerAllHandsMemberRequestParams(options);
83
129
 
130
+ // @ts-ignore
84
131
  return this.request(requestParams);
85
132
  }
86
133
 
87
134
  transferHostToMember(options) {
88
135
  if (!options || !options.locusUrl || !options.memberId || !options.moderator) {
89
- throw new ParameterError('memberId must be defined, the associated locus url, and the moderator for this meeting object must be defined.');
136
+ throw new ParameterError(
137
+ 'memberId must be defined, the associated locus url, and the moderator for this meeting object must be defined.'
138
+ );
90
139
  }
91
140
 
92
141
  const requestParams = MembersUtil.getTransferHostToMemberRequestParams(options);
93
142
 
143
+ // @ts-ignore
94
144
  return this.request(requestParams);
95
145
  }
96
146
 
@@ -103,13 +153,24 @@ export default class MembersRequest extends StatelessWebexPlugin {
103
153
  * @param {String} options.memberId ID of PSTN user
104
154
  * @returns {Promise}
105
155
  */
106
- sendDialPadKey(options) {
107
- if (!options || !options.locusUrl || !options.memberId || !options.url || !options.tones && options.tones !== 0) {
108
- throw new ParameterError('memberId must be defined, the associated locus url, the device url and DTMF tones for this meeting object must be defined.');
156
+ sendDialPadKey(options: {locusUrl: string; url: string; tones: string; memberId: string}) {
157
+ // @ts-ignore
158
+ if (
159
+ !options ||
160
+ !options.locusUrl ||
161
+ !options.memberId ||
162
+ !options.url ||
163
+ // @ts-ignore
164
+ (!options.tones && options.tones !== 0)
165
+ ) {
166
+ throw new ParameterError(
167
+ 'memberId must be defined, the associated locus url, the device url and DTMF tones for this meeting object must be defined.'
168
+ );
109
169
  }
110
170
 
111
171
  const requestParams = MembersUtil.generateSendDTMFRequestParams(options);
112
172
 
173
+ // @ts-ignore
113
174
  return this.request(requestParams);
114
175
  }
115
176
 
@@ -119,13 +180,16 @@ export default class MembersRequest extends StatelessWebexPlugin {
119
180
  * @throws {Error} if the options are not valid and complete, must have invitee with emailAddress OR email AND locusUrl
120
181
  * @memberof MembersRequest
121
182
  */
122
- cancelPhoneInvite(options) {
183
+ cancelPhoneInvite(options: any) {
123
184
  if (!(options?.invitee?.phoneNumber || options?.locusUrl)) {
124
- throw new ParameterError('invitee must be passed and the associated locus url for this meeting object must be defined.');
185
+ throw new ParameterError(
186
+ 'invitee must be passed and the associated locus url for this meeting object must be defined.'
187
+ );
125
188
  }
126
189
 
127
190
  const requestParams = MembersUtil.generateCancelInviteRequestParams(options);
128
191
 
192
+ // @ts-ignore
129
193
  return this.request(requestParams);
130
194
  }
131
195
  }
@@ -0,0 +1,28 @@
1
+ export enum ServerRoles {
2
+ Cohost = 'COHOST',
3
+ Moderator = 'MODERATOR',
4
+ Presenter = 'PRESENTER',
5
+ }
6
+
7
+ export type ServerRoleShape = {
8
+ type: ServerRoles;
9
+ hasRole: boolean;
10
+ };
11
+
12
+ export type RoleAssignmentOptions = {
13
+ roles: Array<ServerRoleShape>;
14
+ locusUrl: string;
15
+ memberId: string;
16
+ };
17
+
18
+ export type RoleAssignmentBody = {
19
+ role: {
20
+ roles: Array<ServerRoleShape>;
21
+ };
22
+ };
23
+
24
+ export type RoleAssignmentRequest = {
25
+ method: string;
26
+ uri: string;
27
+ body: RoleAssignmentBody;
28
+ };
@@ -1,5 +1,4 @@
1
1
  import uuid from 'uuid';
2
-
3
2
  import {
4
3
  HTTP_VERBS,
5
4
  CONTROLS,
@@ -9,10 +8,12 @@ import {
9
8
  VALID_EMAIL_ADDRESS,
10
9
  DIALER_REGEX,
11
10
  SEND_DTMF_ENDPOINT,
12
- _REMOVE_
11
+ _REMOVE_,
13
12
  } from '../constants';
14
13
 
15
- const MembersUtil = {};
14
+ import {RoleAssignmentOptions, RoleAssignmentRequest, ServerRoleShape} from './types';
15
+
16
+ const MembersUtil: any = {};
16
17
 
17
18
  /**
18
19
  * @param {Object} invitee with emailAddress, email or phoneNumber
@@ -20,10 +21,14 @@ const MembersUtil = {};
20
21
  * @param {Boolean} alertIfActive
21
22
  * @returns {Object} the format object
22
23
  */
23
- MembersUtil.generateAddMemberOptions = (invitee, locusUrl, alertIfActive) => ({
24
+ MembersUtil.generateAddMemberOptions = (
25
+ invitee: object,
26
+ locusUrl: string,
27
+ alertIfActive: boolean
28
+ ) => ({
24
29
  invitee,
25
30
  locusUrl,
26
- alertIfActive
31
+ alertIfActive,
27
32
  });
28
33
 
29
34
  /**
@@ -31,44 +36,55 @@ MembersUtil.generateAddMemberOptions = (invitee, locusUrl, alertIfActive) => ({
31
36
  * @param {String} locusUrl
32
37
  * @returns {Object} the format object
33
38
  */
34
- MembersUtil.generateAdmitMemberOptions = (memberIds, locusUrl) => ({
39
+ MembersUtil.generateAdmitMemberOptions = (memberIds: Array<any>, locusUrl: string) => ({
35
40
  locusUrl,
36
- memberIds
41
+ memberIds,
37
42
  });
38
43
 
39
44
  /**
40
45
  * @param {Object} options with {invitee: {emailAddress, email, phoneNumber}, alertIfActive}
41
46
  * @returns {Object} with {invitees: [{address}], alertIfActive}
42
47
  */
43
- MembersUtil.getAddMemberBody = (options) => ({
48
+ MembersUtil.getAddMemberBody = (options: any) => ({
44
49
  invitees: [
45
50
  {
46
- address: options.invitee.emailAddress || options.invitee.email || options.invitee.phoneNumber
47
- }
51
+ address: options.invitee.emailAddress || options.invitee.email || options.invitee.phoneNumber,
52
+ },
48
53
  ],
49
- alertIfActive: options.alertIfActive
54
+ alertIfActive: options.alertIfActive,
50
55
  });
51
56
 
52
57
  /**
53
- * @param {Object} options with {memberIds}
58
+ * @param {Object} options with {memberIds, authorizingLocusUrl}
54
59
  * @returns {Object} admit with {memberIds}
55
60
  */
56
- MembersUtil.getAdmitMemberRequestBody = (options) => ({
57
- admit: {participantIds: options.memberIds}
58
- });
61
+ MembersUtil.getAdmitMemberRequestBody = (options: any) => {
62
+ const {memberIds, sessionLocusUrls} = options;
63
+ const body: any = {admit: {participantIds: memberIds}};
64
+ if (sessionLocusUrls) {
65
+ const {authorizingLocusUrl} = sessionLocusUrls;
66
+
67
+ return {authorizingLocusUrl, ...body};
68
+ }
69
+
70
+ return body;
71
+ };
59
72
 
60
73
  /**
61
- * @param {Object} format with {memberIds, locusUrl}
74
+ * @param {Object} format with {memberIds, locusUrl, sessionLocusUrls}
62
75
  * @returns {Object} the request parameters (method, uri, body) needed to make a admitMember request
76
+ * if a host/cohost is in a breakout session, the locus url should be the main session locus url
63
77
  */
64
- MembersUtil.getAdmitMemberRequestParams = (format) => {
78
+ MembersUtil.getAdmitMemberRequestParams = (format: any) => {
65
79
  const body = MembersUtil.getAdmitMemberRequestBody(format);
66
- const uri = `${format.locusUrl}/${CONTROLS}`;
80
+ const {locusUrl, sessionLocusUrls} = format;
81
+ const baseUrl = sessionLocusUrls?.mainLocusUrl || locusUrl;
82
+ const uri = `${baseUrl}/${CONTROLS}`;
67
83
 
68
84
  return {
69
85
  method: HTTP_VERBS.PUT,
70
86
  uri,
71
- body
87
+ body,
72
88
  };
73
89
  };
74
90
 
@@ -76,12 +92,12 @@ MembersUtil.getAdmitMemberRequestParams = (format) => {
76
92
  * @param {Object} format with {invitee {emailAddress, email, phoneNumber}, locusUrl, alertIfActive}
77
93
  * @returns {Object} the request parameters (method, uri, body) needed to make a addMember request
78
94
  */
79
- MembersUtil.getAddMemberRequestParams = (format) => {
95
+ MembersUtil.getAddMemberRequestParams = (format: any) => {
80
96
  const body = MembersUtil.getAddMemberBody(format);
81
97
  const requestParams = {
82
98
  method: HTTP_VERBS.PUT,
83
99
  uri: format.locusUrl,
84
- body
100
+ body,
85
101
  };
86
102
 
87
103
  return requestParams;
@@ -101,104 +117,143 @@ MembersUtil.isInvalidInvitee = (invitee) => {
101
117
 
102
118
  MembersUtil.getRemoveMemberRequestParams = (options) => {
103
119
  const body = {
104
- reason: options.reason
120
+ reason: options.reason,
105
121
  };
106
122
  const uri = `${options.locusUrl}/${PARTICIPANT}/${options.memberId}/${LEAVE}`;
107
123
 
108
124
  return {
109
125
  method: HTTP_VERBS.PUT,
110
126
  uri,
111
- body
127
+ body,
112
128
  };
113
129
  };
114
130
 
115
131
  MembersUtil.generateTransferHostMemberOptions = (transfer, moderator, locusUrl) => ({
116
132
  moderator,
117
133
  locusUrl,
118
- memberId: transfer
134
+ memberId: transfer,
119
135
  });
120
136
 
121
137
  MembersUtil.generateRemoveMemberOptions = (removal, locusUrl) => ({
122
138
  reason: _FORCED_,
123
139
  memberId: removal,
124
- locusUrl
140
+ locusUrl,
125
141
  });
126
142
 
127
- MembersUtil.generateMuteMemberOptions = (memberId, status, locusUrl) => ({
143
+ MembersUtil.generateMuteMemberOptions = (memberId, status, locusUrl, isAudio) => ({
128
144
  memberId,
129
145
  muted: status,
130
- locusUrl
146
+ locusUrl,
147
+ isAudio,
131
148
  });
132
149
 
133
150
  MembersUtil.generateRaiseHandMemberOptions = (memberId, status, locusUrl) => ({
134
151
  memberId,
135
152
  raised: status,
136
- locusUrl
153
+ locusUrl,
154
+ });
155
+
156
+ /**
157
+ * @param {String} memberId
158
+ * @param {[ServerRoleShape]} roles
159
+ * @param {String} locusUrl
160
+ * @returns {RoleAssignmentOptions}
161
+ */
162
+ MembersUtil.generateRoleAssignmentMemberOptions = (
163
+ memberId: string,
164
+ roles: Array<ServerRoleShape>,
165
+ locusUrl: string
166
+ ): RoleAssignmentOptions => ({
167
+ memberId,
168
+ roles,
169
+ locusUrl,
137
170
  });
138
171
 
139
172
  MembersUtil.generateLowerAllHandsMemberOptions = (requestingParticipantId, locusUrl) => ({
140
173
  requestingParticipantId,
141
- locusUrl
174
+ locusUrl,
142
175
  });
143
176
 
144
177
  MembersUtil.getMuteMemberRequestParams = (options) => {
178
+ const property = options.isAudio === false ? 'video' : 'audio';
145
179
  const body = {
146
- audio: {
147
- muted: options.muted
148
- }
180
+ [property]: {
181
+ muted: options.muted,
182
+ },
149
183
  };
150
184
  const uri = `${options.locusUrl}/${PARTICIPANT}/${options.memberId}/${CONTROLS}`;
151
185
 
152
186
  return {
153
187
  method: HTTP_VERBS.PATCH,
154
188
  uri,
155
- body
189
+ body,
190
+ };
191
+ };
192
+
193
+ /**
194
+ * @param {RoleAssignmentOptions} options
195
+ * @returns {RoleAssignmentRequest} the request parameters (method, uri, body) needed to make a addMember request
196
+ */
197
+ MembersUtil.getRoleAssignmentMemberRequestParams = (
198
+ options: RoleAssignmentOptions
199
+ ): RoleAssignmentRequest => {
200
+ const body = {role: {roles: []}};
201
+ options.roles.forEach((role) => {
202
+ body.role.roles.push({type: role.type, hasRole: role.hasRole});
203
+ });
204
+
205
+ const uri = `${options.locusUrl}/${PARTICIPANT}/${options.memberId}/${CONTROLS}`;
206
+
207
+ return {
208
+ method: HTTP_VERBS.PATCH,
209
+ uri,
210
+ body,
156
211
  };
157
212
  };
158
213
 
159
214
  MembersUtil.getRaiseHandMemberRequestParams = (options) => {
160
215
  const body = {
161
216
  hand: {
162
- raised: options.raised
163
- }
217
+ raised: options.raised,
218
+ },
164
219
  };
165
220
  const uri = `${options.locusUrl}/${PARTICIPANT}/${options.memberId}/${CONTROLS}`;
166
221
 
167
222
  return {
168
223
  method: HTTP_VERBS.PATCH,
169
224
  uri,
170
- body
225
+ body,
171
226
  };
172
227
  };
173
228
 
174
229
  MembersUtil.getLowerAllHandsMemberRequestParams = (options) => {
175
230
  const body = {
176
231
  hand: {
177
- raised: false
232
+ raised: false,
178
233
  },
179
- requestingParticipantId: options.requestingParticipantId
234
+ requestingParticipantId: options.requestingParticipantId,
180
235
  };
181
236
  const uri = `${options.locusUrl}/${CONTROLS}`;
182
237
 
183
238
  return {
184
239
  method: HTTP_VERBS.PATCH,
185
240
  uri,
186
- body
241
+ body,
187
242
  };
188
243
  };
189
244
 
190
245
  MembersUtil.getTransferHostToMemberRequestParams = (options) => {
191
246
  const body = {
192
247
  role: {
193
- moderator: options.moderator
194
- }
248
+ moderator: options.moderator,
249
+ },
195
250
  };
196
251
  const uri = `${options.locusUrl}/${PARTICIPANT}/${options.memberId}/${CONTROLS}`;
197
252
 
198
253
  return {
199
254
  method: HTTP_VERBS.PATCH,
200
255
  uri,
201
- body
256
+ body,
202
257
  };
203
258
  };
204
259
 
@@ -206,35 +261,33 @@ MembersUtil.genderateSendDTMFOptions = (url, tones, memberId, locusUrl) => ({
206
261
  url,
207
262
  tones,
208
263
  memberId,
209
- locusUrl
264
+ locusUrl,
210
265
  });
211
266
 
212
- MembersUtil.generateSendDTMFRequestParams = ({
213
- url, tones, memberId, locusUrl
214
- }) => {
267
+ MembersUtil.generateSendDTMFRequestParams = ({url, tones, memberId, locusUrl}) => {
215
268
  const body = {
216
269
  device: {
217
- url
270
+ url,
218
271
  },
219
272
  memberId,
220
273
  dtmf: {
221
274
  correlationId: uuid.v4(),
222
275
  tones,
223
- direction: 'transmit'
224
- }
276
+ direction: 'transmit',
277
+ },
225
278
  };
226
279
  const uri = `${locusUrl}/${PARTICIPANT}/${memberId}/${SEND_DTMF_ENDPOINT}`;
227
280
 
228
281
  return {
229
282
  method: HTTP_VERBS.POST,
230
283
  uri,
231
- body
284
+ body,
232
285
  };
233
286
  };
234
287
 
235
288
  MembersUtil.cancelPhoneInviteOptions = (invitee, locusUrl) => ({
236
289
  invitee,
237
- locusUrl
290
+ locusUrl,
238
291
  });
239
292
 
240
293
  MembersUtil.generateCancelInviteRequestParams = (options) => {
@@ -242,14 +295,14 @@ MembersUtil.generateCancelInviteRequestParams = (options) => {
242
295
  actionType: _REMOVE_,
243
296
  invitees: [
244
297
  {
245
- address: options.invitee.phoneNumber
246
- }
247
- ]
298
+ address: options.invitee.phoneNumber,
299
+ },
300
+ ],
248
301
  };
249
302
  const requestParams = {
250
303
  method: HTTP_VERBS.PUT,
251
304
  uri: options.locusUrl,
252
- body
305
+ body,
253
306
  };
254
307
 
255
308
  return requestParams;