@webex/plugin-meetings 3.0.0-beta.6 → 3.0.0-beta.60

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 +137 -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 +725 -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 +52 -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 +135 -51
  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 +259 -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 +17 -30
  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 +220 -192
  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 +61 -90
  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 +2214 -2243
  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 +5 -20
  128. package/dist/meetings/collection.js.map +1 -1
  129. package/dist/meetings/index.js +493 -560
  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 +116 -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 +3 -12
  142. package/dist/members/collection.js.map +1 -1
  143. package/dist/members/index.js +131 -203
  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 +1 -13
  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 +54 -156
  156. package/dist/metrics/index.js.map +1 -1
  157. package/dist/multistream/mediaRequestManager.js +74 -52
  158. package/dist/multistream/mediaRequestManager.js.map +1 -1
  159. package/dist/multistream/receiveSlot.js +48 -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 +62 -76
  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 +446 -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 +939 -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 +1719 -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 +23 -0
  272. package/dist/types/meetings/index.d.ts +297 -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 +24 -0
  279. package/dist/types/members/index.d.ts +335 -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 +169 -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 +51 -0
  287. package/dist/types/multistream/receiveSlot.d.ts +64 -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 +259 -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 +208 -0
  315. package/src/breakouts/breakout.ts +129 -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 +659 -0
  319. package/src/breakouts/request.ts +55 -0
  320. package/src/breakouts/utils.ts +39 -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 +87 -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 +234 -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 +122 -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} +192 -67
  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} +157 -68
  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} +2581 -1588
  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} +6 -3
  377. package/src/meetings/index.ts +1167 -0
  378. package/src/meetings/{request.js → request.ts} +34 -25
  379. package/src/meetings/{util.js → util.ts} +58 -32
  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} +2 -2
  384. package/src/members/{index.js → index.ts} +258 -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} +253 -92
  389. package/src/metrics/{constants.js → constants.ts} +0 -6
  390. package/src/metrics/{index.js → index.ts} +105 -94
  391. package/src/multistream/mediaRequestManager.ts +101 -39
  392. package/src/multistream/receiveSlot.ts +62 -26
  393. package/src/multistream/receiveSlotManager.ts +50 -38
  394. package/src/multistream/remoteMedia.ts +40 -5
  395. package/src/multistream/remoteMediaGroup.ts +4 -3
  396. package/src/multistream/remoteMediaManager.ts +209 -62
  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 +146 -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 +944 -0
  425. package/test/unit/spec/breakouts/request.ts +104 -0
  426. package/test/unit/spec/breakouts/utils.js +47 -0
  427. package/test/unit/spec/common/browser-detection.js +9 -28
  428. package/test/unit/spec/controls-options-manager/index.js +180 -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 +112 -34
  432. package/test/unit/spec/locus-info/embeddedAppsUtils.js +8 -6
  433. package/test/unit/spec/locus-info/index.js +219 -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 +128 -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 +2490 -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 +1 -1
  452. package/test/unit/spec/meetings/index.js +439 -257
  453. package/test/unit/spec/meetings/utils.js +14 -12
  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 +256 -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 +318 -64
  461. package/test/unit/spec/multistream/receiveSlot.ts +68 -17
  462. package/test/unit/spec/multistream/receiveSlotManager.ts +60 -38
  463. package/test/unit/spec/multistream/remoteMedia.ts +40 -2
  464. package/test/unit/spec/multistream/remoteMediaGroup.ts +5 -5
  465. package/test/unit/spec/multistream/remoteMediaManager.ts +539 -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
@@ -2,6 +2,7 @@
2
2
  * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
3
3
  */
4
4
  import {isEmpty} from 'lodash';
5
+ // @ts-ignore
5
6
  import {StatelessWebexPlugin} from '@webex/webex-core';
6
7
 
7
8
  import {MEETINGS, EVENT_TRIGGERS, FLOOR_ACTION, CONTENT, WHITEBOARD} from '../constants';
@@ -13,53 +14,72 @@ import ParameterError from '../common/errors/parameter';
13
14
  import MembersCollection from './collection';
14
15
  import MembersRequest from './request';
15
16
  import MembersUtil from './util';
17
+ import {ReceiveSlotManager} from '../multistream/receiveSlotManager';
18
+ import {MediaRequestManager} from '../multistream/mediaRequestManager';
19
+ import {ServerRoleShape} from './types';
16
20
 
17
21
  /**
18
- * Members Update Event
19
- * Emitted when something in the roster list needs to be updated
20
- * @event members:update
21
- * @instance
22
- * @property {Object} delta the changes to the members list
23
- * @property {Array} delta.updated array only the updates, includes removals, as they will have updated status and member properties
24
- * @property {Array} delta.added array added members to the meeting
25
- * @property {Array} full array the full members collection
26
- * @memberof Members
27
- */
22
+ * Members Update Event
23
+ * Emitted when something in the roster list needs to be updated
24
+ * @event members:update
25
+ * @instance
26
+ * @property {Object} delta the changes to the members list
27
+ * @property {Array} delta.updated array only the updates, includes removals, as they will have updated status and member properties
28
+ * @property {Array} delta.added array added members to the meeting
29
+ * @property {Array} full array the full members collection
30
+ * @memberof Members
31
+ */
28
32
 
29
33
  /**
30
- * Members Content Update Event
31
- * Emitted when who is sharing changes
32
- * @event members:content:update
33
- * @instance
34
- * @property {String} activeContentSharingId
35
- * @property {String} endedContentSharingId
36
- * @memberof Members
37
- */
34
+ * Members Content Update Event
35
+ * Emitted when who is sharing changes
36
+ * @event members:content:update
37
+ * @instance
38
+ * @property {String} activeContentSharingId
39
+ * @property {String} endedContentSharingId
40
+ * @memberof Members
41
+ */
38
42
 
39
43
  /**
40
- * Members Host Update Event
41
- * Emitted when who is the host changes
42
- * @event members:host:update
43
- * @instance
44
- * @property {String} activeHostId
45
- * @property {String} endedHostId
46
- * @memberof Members
47
- */
44
+ * Members Host Update Event
45
+ * Emitted when who is the host changes
46
+ * @event members:host:update
47
+ * @instance
48
+ * @property {String} activeHostId
49
+ * @property {String} endedHostId
50
+ * @memberof Members
51
+ */
48
52
 
49
53
  /**
50
- * Members Self Update Event
51
- * Emitted when who is the self changes
52
- * @event members:self:update
53
- * @instance
54
- * @property {String} activeSelfId
55
- * @property {String} endedSelfId
56
- * @memberof Members
57
- */
54
+ * Members Self Update Event
55
+ * Emitted when who is the self changes
56
+ * @event members:self:update
57
+ * @instance
58
+ * @property {String} activeSelfId
59
+ * @property {String} endedSelfId
60
+ * @memberof Members
61
+ */
58
62
 
59
63
  /**
60
64
  * @class Members
61
65
  */
62
66
  export default class Members extends StatelessWebexPlugin {
67
+ hostId: any;
68
+ locusUrl: any;
69
+ mediaShareContentId: any;
70
+ mediaShareWhiteboardId: any;
71
+ membersCollection: any;
72
+ membersRequest: any;
73
+ receiveSlotManager: ReceiveSlotManager;
74
+ mediaRequestManagers: {
75
+ audio: MediaRequestManager;
76
+ video: MediaRequestManager;
77
+ };
78
+
79
+ recordingId: any;
80
+ selfId: any;
81
+ type: any;
82
+
63
83
  namespace = MEETINGS;
64
84
 
65
85
  /**
@@ -68,7 +88,7 @@ export default class Members extends StatelessWebexPlugin {
68
88
  * @param {Object} options
69
89
  * @memberof Members
70
90
  */
71
- constructor(attrs, options) {
91
+ constructor(attrs: any, options: object) {
72
92
  super({}, options);
73
93
  /**
74
94
  * The Members Request object to interact with server
@@ -76,7 +96,8 @@ export default class Members extends StatelessWebexPlugin {
76
96
  * @type {MembersRequest}
77
97
  * @private
78
98
  * @memberof Members
79
- */
99
+ */
100
+ // @ts-ignore
80
101
  this.membersRequest = new MembersRequest({}, options);
81
102
  /**
82
103
  * The Members Collection cache
@@ -84,7 +105,7 @@ export default class Members extends StatelessWebexPlugin {
84
105
  * @type {MembersCollection}
85
106
  * @private
86
107
  * @memberof Members
87
- */
108
+ */
88
109
  this.membersCollection = new MembersCollection();
89
110
  /**
90
111
  * The current locus url for the active meeting
@@ -92,7 +113,7 @@ export default class Members extends StatelessWebexPlugin {
92
113
  * @type {String}
93
114
  * @private
94
115
  * @memberof Members
95
- */
116
+ */
96
117
  this.locusUrl = attrs.locusUrl || null;
97
118
  /**
98
119
  * The current hostId for the meeting
@@ -100,7 +121,7 @@ export default class Members extends StatelessWebexPlugin {
100
121
  * @type {String}
101
122
  * @private
102
123
  * @memberof Members
103
- */
124
+ */
104
125
  this.hostId = null;
105
126
  /**
106
127
  * The current type for the meeting, could be MEETING or CALL
@@ -108,7 +129,7 @@ export default class Members extends StatelessWebexPlugin {
108
129
  * @type {String}
109
130
  * @private
110
131
  * @memberof Members
111
- */
132
+ */
112
133
  this.type = null;
113
134
  /**
114
135
  * Locus has a self object, sent individually to the client
@@ -122,7 +143,7 @@ export default class Members extends StatelessWebexPlugin {
122
143
  * @type {String}
123
144
  * @private
124
145
  * @memberof Members
125
- */
146
+ */
126
147
  this.selfId = null;
127
148
  /**
128
149
  * The current mediaShareContentId for the meeting
@@ -130,7 +151,7 @@ export default class Members extends StatelessWebexPlugin {
130
151
  * @type {String}
131
152
  * @private
132
153
  * @memberof Members
133
- */
154
+ */
134
155
  this.mediaShareContentId = null;
135
156
  /**
136
157
  * The current mediaShareWhiteboardId for the meeting
@@ -138,7 +159,7 @@ export default class Members extends StatelessWebexPlugin {
138
159
  * @type {String}
139
160
  * @private
140
161
  * @memberof Members
141
- */
162
+ */
142
163
  this.mediaShareWhiteboardId = null;
143
164
  /**
144
165
  * The current recordingId for the meeting, if it exists
@@ -146,7 +167,7 @@ export default class Members extends StatelessWebexPlugin {
146
167
  * @type {String}
147
168
  * @private
148
169
  * @memberof Members
149
- */
170
+ */
150
171
  this.recordingId = null;
151
172
 
152
173
  /**
@@ -171,7 +192,7 @@ export default class Members extends StatelessWebexPlugin {
171
192
  * @private
172
193
  * @memberof Members
173
194
  */
174
- locusSelfUpdate(payload) {
195
+ locusSelfUpdate(payload: {newSelf: any; oldSelf: any}) {
175
196
  let newSelfId = null;
176
197
  let oldSelfId = null;
177
198
 
@@ -202,12 +223,12 @@ export default class Members extends StatelessWebexPlugin {
202
223
  this,
203
224
  {
204
225
  file: 'members',
205
- function: 'locusSelfUpdate'
226
+ function: 'locusSelfUpdate',
206
227
  },
207
228
  EVENT_TRIGGERS.MEMBERS_SELF_UPDATE,
208
229
  {
209
230
  activeSelfId: newSelfId,
210
- endedSelfId: oldSelfId
231
+ endedSelfId: oldSelfId,
211
232
  }
212
233
  );
213
234
  }
@@ -221,7 +242,7 @@ export default class Members extends StatelessWebexPlugin {
221
242
  * @private
222
243
  * @memberof Members
223
244
  */
224
- locusHostUpdate(payload) {
245
+ locusHostUpdate(payload: {newHost: any; oldHost: any}) {
225
246
  let newHostId = null;
226
247
  let oldHostId = null;
227
248
 
@@ -252,12 +273,12 @@ export default class Members extends StatelessWebexPlugin {
252
273
  this,
253
274
  {
254
275
  file: 'members',
255
- function: 'locusHostUpdate'
276
+ function: 'locusHostUpdate',
256
277
  },
257
278
  EVENT_TRIGGERS.MEMBERS_HOST_UPDATE,
258
279
  {
259
280
  activeHostId: newHostId,
260
- endedHostId: oldHostId
281
+ endedHostId: oldHostId,
261
282
  }
262
283
  );
263
284
  }
@@ -271,21 +292,23 @@ export default class Members extends StatelessWebexPlugin {
271
292
  * @private
272
293
  * @memberof Members
273
294
  */
274
- locusParticipantsUpdate(payload) {
295
+ locusParticipantsUpdate(payload: {participants: object}) {
275
296
  if (payload) {
276
297
  const delta = this.handleLocusInfoUpdatedParticipants(payload);
277
298
  const full = this.handleMembersUpdate(delta); // SDK should propagate the full list for both delta and non delta updates
278
299
 
300
+ this.receiveSlotManager?.updateMemberIds();
301
+
279
302
  Trigger.trigger(
280
303
  this,
281
304
  {
282
305
  file: 'members',
283
- function: 'locusParticipantsUpdate'
306
+ function: 'locusParticipantsUpdate',
284
307
  },
285
308
  EVENT_TRIGGERS.MEMBERS_UPDATE,
286
309
  {
287
310
  delta,
288
- full
311
+ full,
289
312
  }
290
313
  );
291
314
  }
@@ -300,7 +323,7 @@ export default class Members extends StatelessWebexPlugin {
300
323
  * @private
301
324
  * @memberof Members
302
325
  */
303
- locusMediaSharesUpdate(payload) {
326
+ locusMediaSharesUpdate(payload: {current: any; previous: any}) {
304
327
  const currentContent = payload.current?.content;
305
328
  const previousContent = payload.previous?.content;
306
329
  const currentWhiteboard = payload.current?.whiteboard;
@@ -319,8 +342,10 @@ export default class Members extends StatelessWebexPlugin {
319
342
  if (currentContent.disposition === FLOOR_ACTION.RELEASED) {
320
343
  whoStopped = currentContent.beneficiaryId;
321
344
  this.mediaShareContentId = null;
322
- }
323
- else if (currentContent.disposition === FLOOR_ACTION.GRANTED && currentContent.beneficiaryId !== previousContent.beneficiaryId) {
345
+ } else if (
346
+ currentContent.disposition === FLOOR_ACTION.GRANTED &&
347
+ currentContent.beneficiaryId !== previousContent.beneficiaryId
348
+ ) {
324
349
  whoStopped = previousContent.beneficiaryId;
325
350
  }
326
351
  }
@@ -337,8 +362,10 @@ export default class Members extends StatelessWebexPlugin {
337
362
  if (currentWhiteboard.disposition === FLOOR_ACTION.RELEASED) {
338
363
  whoStopped = currentWhiteboard.beneficiaryId;
339
364
  this.mediaShareWhiteboardId = null;
340
- }
341
- else if (currentWhiteboard.disposition === FLOOR_ACTION.GRANTED && currentWhiteboard.beneficiaryId !== previousWhiteboard.beneficiaryId) {
365
+ } else if (
366
+ currentWhiteboard.disposition === FLOOR_ACTION.GRANTED &&
367
+ currentWhiteboard.beneficiaryId !== previousWhiteboard.beneficiaryId
368
+ ) {
342
369
  whoStopped = previousWhiteboard.beneficiaryId;
343
370
  }
344
371
  }
@@ -363,17 +390,16 @@ export default class Members extends StatelessWebexPlugin {
363
390
  this,
364
391
  {
365
392
  file: 'members',
366
- function: 'locusMediaSharesUpdate'
393
+ function: 'locusMediaSharesUpdate',
367
394
  },
368
395
  EVENT_TRIGGERS.MEMBERS_CONTENT_UPDATE,
369
396
  {
370
397
  activeSharingId: whoSharing,
371
- endedSharingId: whoStopped
398
+ endedSharingId: whoStopped,
372
399
  }
373
400
  );
374
401
  }
375
402
 
376
-
377
403
  /**
378
404
  * Internal update the locus url value
379
405
  * @param {Object} payload
@@ -382,7 +408,7 @@ export default class Members extends StatelessWebexPlugin {
382
408
  * @private
383
409
  * @memberof Members
384
410
  */
385
- locusUrlUpdate(payload) {
411
+ locusUrlUpdate(payload: any) {
386
412
  if (payload) {
387
413
  this.setLocusUrl(null, payload);
388
414
  }
@@ -396,7 +422,7 @@ export default class Members extends StatelessWebexPlugin {
396
422
  * @private
397
423
  * @memberof Members
398
424
  */
399
- locusFullStateTypeUpdate(payload) {
425
+ locusFullStateTypeUpdate(payload: {type: string}) {
400
426
  // TODO: at some point there could be a timing issue here, for updating each member
401
427
  // ie., if the type changes AND there is no locus update, then each member will not know the type of call
402
428
  // which means they cannot determine isMutable && isRemovable
@@ -415,7 +441,7 @@ export default class Members extends StatelessWebexPlugin {
415
441
  * @private
416
442
  * @memberof Members
417
443
  */
418
- handleMembersUpdate(membersUpdate) {
444
+ private handleMembersUpdate(membersUpdate: any) {
419
445
  if (membersUpdate) {
420
446
  if (membersUpdate.updated) {
421
447
  this.constructMembers(membersUpdate.updated);
@@ -435,7 +461,7 @@ export default class Members extends StatelessWebexPlugin {
435
461
  * @private
436
462
  * @memberof Members
437
463
  */
438
- constructMembers(list) {
464
+ private constructMembers(list: Array<any>) {
439
465
  list.forEach((member) => {
440
466
  this.membersCollection.set(member.id, member);
441
467
  });
@@ -448,12 +474,14 @@ export default class Members extends StatelessWebexPlugin {
448
474
  * @private
449
475
  * @memberof Members
450
476
  */
451
- handleLocusInfoUpdatedParticipants(payload) {
477
+ private handleLocusInfoUpdatedParticipants(payload: any) {
452
478
  this.hostId = payload.hostId || this.hostId;
453
479
  this.selfId = payload.selfId || this.selfId;
454
480
  this.recordingId = payload.recordingId;
455
481
  if (!payload.participants) {
456
- LoggerProxy.logger.warn('Members:index#handleLocusInfoUpdatedParticipants --> participants payload is missing.');
482
+ LoggerProxy.logger.warn(
483
+ 'Members:index#handleLocusInfoUpdatedParticipants --> participants payload is missing.'
484
+ );
457
485
  }
458
486
  const memberUpdate = this.update(payload.participants);
459
487
 
@@ -469,15 +497,15 @@ export default class Members extends StatelessWebexPlugin {
469
497
  * @public
470
498
  * @memberof Members
471
499
  */
472
- setLocusUrl(locus, locusUrl = null) {
500
+ public setLocusUrl(locus: any, locusUrl: string = null) {
473
501
  if (locusUrl) {
474
502
  this.locusUrl = locusUrl;
475
- }
476
- else if (locus && (locus.locusUrl || locus.url)) {
503
+ } else if (locus && (locus.locusUrl || locus.url)) {
477
504
  this.locusUrl = locus.locusUrl || locus.url;
478
- }
479
- else {
480
- throw new ParameterError('Setting locusUrl for the Members module should be done with a locus object or locusUrl');
505
+ } else {
506
+ throw new ParameterError(
507
+ 'Setting locusUrl for the Members module should be done with a locus object or locusUrl'
508
+ );
481
509
  }
482
510
  }
483
511
 
@@ -490,15 +518,15 @@ export default class Members extends StatelessWebexPlugin {
490
518
  * @public
491
519
  * @memberof Members
492
520
  */
493
- setHostId(locus, hostId = null) {
521
+ public setHostId(locus: any, hostId: string = null) {
494
522
  if (hostId) {
495
523
  this.hostId = hostId;
496
- }
497
- else if (locus) {
524
+ } else if (locus) {
498
525
  this.hostId = locus && locus.owner && locus.owner.info ? locus.owner.info : null;
499
- }
500
- else {
501
- throw new ParameterError('Setting hostid for the Members module should be done with a locus object or hostId');
526
+ } else {
527
+ throw new ParameterError(
528
+ 'Setting hostid for the Members module should be done with a locus object or hostId'
529
+ );
502
530
  }
503
531
  }
504
532
 
@@ -511,15 +539,15 @@ export default class Members extends StatelessWebexPlugin {
511
539
  * @public
512
540
  * @memberof Members
513
541
  */
514
- setType(fullState, type = null) {
542
+ public setType(fullState: any, type: string = null) {
515
543
  if (type) {
516
544
  this.type = type;
517
- }
518
- else if (fullState) {
545
+ } else if (fullState) {
519
546
  this.type = (fullState && fullState.type) || null;
520
- }
521
- else {
522
- throw new ParameterError('Setting type for the Members module should be done with a fullstate object or type string');
547
+ } else {
548
+ throw new ParameterError(
549
+ 'Setting type for the Members module should be done with a fullstate object or type string'
550
+ );
523
551
  }
524
552
  }
525
553
 
@@ -531,15 +559,18 @@ export default class Members extends StatelessWebexPlugin {
531
559
  * @returns {undefined}
532
560
  * @memberof Members
533
561
  */
534
- setSelfId(locus, selfId = null) {
562
+ setSelfId(locus: any, selfId: string = null) {
535
563
  if (selfId) {
536
564
  this.selfId = selfId;
537
- }
538
- else if (locus) {
539
- this.selfId = locus && locus.self && locus.self.person && locus.self.person.id ? locus.self.person.id : null;
540
- }
541
- else {
542
- throw new ParameterError('Setting selfid for the Members module should be done with a locus object or selfId');
565
+ } else if (locus) {
566
+ this.selfId =
567
+ locus && locus.self && locus.self.person && locus.self.person.id
568
+ ? locus.self.person.id
569
+ : null;
570
+ } else {
571
+ throw new ParameterError(
572
+ 'Setting selfid for the Members module should be done with a locus object or selfId'
573
+ );
543
574
  }
544
575
  }
545
576
 
@@ -551,11 +582,10 @@ export default class Members extends StatelessWebexPlugin {
551
582
  * @returns {undefined}
552
583
  * @memberof Members
553
584
  */
554
- setMediaShareContentId(locus, contentId) {
585
+ setMediaShareContentId(locus: any, contentId?: string) {
555
586
  if (contentId) {
556
587
  this.mediaShareContentId = contentId;
557
- }
558
- else if (locus) {
588
+ } else if (locus) {
559
589
  const contentMediaShare =
560
590
  locus.mediaShares &&
561
591
  locus.mediaShares.length &&
@@ -567,9 +597,10 @@ export default class Members extends StatelessWebexPlugin {
567
597
  contentMediaShare.floor.beneficiary &&
568
598
  contentMediaShare.floor.beneficiary.id) ||
569
599
  null;
570
- }
571
- else {
572
- throw new ParameterError('Setting hostid for the Members module should be done with a locus object or hostId');
600
+ } else {
601
+ throw new ParameterError(
602
+ 'Setting hostid for the Members module should be done with a locus object or hostId'
603
+ );
573
604
  }
574
605
  }
575
606
 
@@ -581,11 +612,10 @@ export default class Members extends StatelessWebexPlugin {
581
612
  * @returns {undefined}
582
613
  * @memberof Members
583
614
  */
584
- setMediaShareWhiteboardId(locus, whiteboardId) {
615
+ setMediaShareWhiteboardId(locus: any, whiteboardId?: string) {
585
616
  if (whiteboardId) {
586
617
  this.mediaShareWhiteboardId = whiteboardId;
587
- }
588
- else if (locus) {
618
+ } else if (locus) {
589
619
  const whiteboardMediaShare =
590
620
  locus.mediaShares &&
591
621
  locus.mediaShares.length &&
@@ -597,9 +627,10 @@ export default class Members extends StatelessWebexPlugin {
597
627
  whiteboardMediaShare.floor.beneficiary &&
598
628
  whiteboardMediaShare.floor.beneficiary.id) ||
599
629
  null;
600
- }
601
- else {
602
- throw new ParameterError('Setting hostid for the Members module should be done with a locus object or hostId');
630
+ } else {
631
+ throw new ParameterError(
632
+ 'Setting hostid for the Members module should be done with a locus object or hostId'
633
+ );
603
634
  }
604
635
  }
605
636
 
@@ -612,7 +643,7 @@ export default class Members extends StatelessWebexPlugin {
612
643
  * @private
613
644
  * @memberof Members
614
645
  */
615
- update(participants) {
646
+ private update(participants: Array<any>) {
616
647
  const membersUpdate = {added: [], updated: []};
617
648
 
618
649
  if (participants) {
@@ -632,11 +663,10 @@ export default class Members extends StatelessWebexPlugin {
632
663
  hostId: this.hostId,
633
664
  contentSharingId: this.mediaShareContentId,
634
665
  whiteboardSharingId: this.mediaShareWhiteboardId,
635
- type: this.type
666
+ type: this.type,
636
667
  })
637
668
  );
638
- }
639
- else {
669
+ } else {
640
670
  membersUpdate.added.push(
641
671
  new Member(participant, {
642
672
  recordingId: this.recordingId,
@@ -644,7 +674,7 @@ export default class Members extends StatelessWebexPlugin {
644
674
  hostId: this.hostId,
645
675
  contentSharingId: this.mediaShareContentId,
646
676
  whiteboardSharingId: this.mediaShareWhiteboardId,
647
- type: this.type
677
+ type: this.type,
648
678
  })
649
679
  );
650
680
  }
@@ -661,13 +691,17 @@ export default class Members extends StatelessWebexPlugin {
661
691
  * @returns {Promise}
662
692
  * @memberof Members
663
693
  */
664
- addMember(invitee, alertIfActive) {
694
+ addMember(invitee: any, alertIfActive?: boolean) {
665
695
  if (!this.locusUrl) {
666
- return Promise.reject(new ParameterError('The associated locus url for this meeting object must be defined.'));
696
+ return Promise.reject(
697
+ new ParameterError('The associated locus url for this meeting object must be defined.')
698
+ );
667
699
  }
668
700
  if (MembersUtil.isInvalidInvitee(invitee)) {
669
701
  return Promise.reject(
670
- new ParameterError('The invitee must be defined with either a valid email, emailAddress or phoneNumber property.')
702
+ new ParameterError(
703
+ 'The invitee must be defined with either a valid email, emailAddress or phoneNumber property.'
704
+ )
671
705
  );
672
706
  }
673
707
  const options = MembersUtil.generateAddMemberOptions(invitee, this.locusUrl, alertIfActive);
@@ -681,9 +715,11 @@ export default class Members extends StatelessWebexPlugin {
681
715
  * @returns {Promise}
682
716
  * @memberof Members
683
717
  */
684
- cancelPhoneInvite(invitee) {
718
+ cancelPhoneInvite(invitee: any) {
685
719
  if (!this.locusUrl) {
686
- return Promise.reject(new ParameterError('The associated locus url for this meeting object must be defined.'));
720
+ return Promise.reject(
721
+ new ParameterError('The associated locus url for this meeting object must be defined.')
722
+ );
687
723
  }
688
724
  if (MembersUtil.isInvalidInvitee(invitee)) {
689
725
  return Promise.reject(
@@ -692,22 +728,28 @@ export default class Members extends StatelessWebexPlugin {
692
728
  }
693
729
  const options = MembersUtil.cancelPhoneInviteOptions(invitee, this.locusUrl);
694
730
 
695
-
696
731
  return this.membersRequest.cancelPhoneInvite(options);
697
732
  }
698
733
 
699
734
  /**
700
735
  * Admits waiting members (invited guests to meeting)
701
736
  * @param {Array} memberIds
737
+ * @param {Object} sessionLocusUrls: {authorizingLocusUrl, mainLocusUrl}
702
738
  * @returns {Promise}
703
739
  * @public
704
740
  * @memberof Members
705
741
  */
706
- admitMembers(memberIds) {
742
+ public admitMembers(
743
+ memberIds: Array<any>,
744
+ sessionLocusUrls?: {authorizingLocusUrl: string; mainLocusUrl: string}
745
+ ) {
707
746
  if (isEmpty(memberIds)) {
708
747
  return Promise.reject(new ParameterError('No member ids provided to admit.'));
709
748
  }
710
- const options = MembersUtil.generateAdmitMemberOptions(memberIds, this.locusUrl);
749
+ const options = {
750
+ sessionLocusUrls,
751
+ ...MembersUtil.generateAdmitMemberOptions(memberIds, this.locusUrl),
752
+ };
711
753
 
712
754
  return this.membersRequest.admitMember(options);
713
755
  }
@@ -719,12 +761,16 @@ export default class Members extends StatelessWebexPlugin {
719
761
  * @public
720
762
  * @memberof Members
721
763
  */
722
- removeMember(memberId) {
764
+ public removeMember(memberId: string) {
723
765
  if (!this.locusUrl) {
724
- return Promise.reject(new ParameterError('The associated locus url for this meeting object must be defined.'));
766
+ return Promise.reject(
767
+ new ParameterError('The associated locus url for this meeting object must be defined.')
768
+ );
725
769
  }
726
770
  if (!memberId) {
727
- return Promise.reject(new ParameterError('The member id must be defined to remove the member.'));
771
+ return Promise.reject(
772
+ new ParameterError('The member id must be defined to remove the member.')
773
+ );
728
774
  }
729
775
  const options = MembersUtil.generateRemoveMemberOptions(memberId, this.locusUrl);
730
776
 
@@ -735,22 +781,55 @@ export default class Members extends StatelessWebexPlugin {
735
781
  * Audio mutes another member in a meeting
736
782
  * @param {String} memberId
737
783
  * @param {boolean} [mute] default true
784
+ * @param {boolean} [isAudio] default true
738
785
  * @returns {Promise}
739
786
  * @public
740
787
  * @memberof Members
741
788
  */
742
- muteMember(memberId, mute = true) {
789
+ public muteMember(memberId: string, mute = true, isAudio = true) {
743
790
  if (!this.locusUrl) {
744
- return Promise.reject(new ParameterError('The associated locus url for this meetings members object must be defined.'));
791
+ return Promise.reject(
792
+ new ParameterError(
793
+ 'The associated locus url for this meetings members object must be defined.'
794
+ )
795
+ );
745
796
  }
746
797
  if (!memberId) {
747
- return Promise.reject(new ParameterError('The member id must be defined to mute the member.'));
798
+ return Promise.reject(
799
+ new ParameterError('The member id must be defined to mute the member.')
800
+ );
748
801
  }
749
- const options = MembersUtil.generateMuteMemberOptions(memberId, mute, this.locusUrl);
802
+ const options = MembersUtil.generateMuteMemberOptions(memberId, mute, this.locusUrl, isAudio);
750
803
 
751
804
  return this.membersRequest.muteMember(options);
752
805
  }
753
806
 
807
+ /**
808
+ * Assign role(s) to a member in the meeting
809
+ * @param {String} memberId
810
+ * @param {[ServerRoleShape]} roles - to assign an array of roles
811
+ * @returns {Promise}
812
+ * @public
813
+ * @memberof Members
814
+ */
815
+ public assignRoles(memberId: string, roles: Array<ServerRoleShape>) {
816
+ if (!this.locusUrl) {
817
+ return Promise.reject(
818
+ new ParameterError(
819
+ 'The associated locus url for this meetings members object must be defined.'
820
+ )
821
+ );
822
+ }
823
+ if (!memberId) {
824
+ return Promise.reject(
825
+ new ParameterError('The member id must be defined to assign the roles to a member.')
826
+ );
827
+ }
828
+ const options = MembersUtil.generateRoleAssignmentMemberOptions(memberId, roles, this.locusUrl);
829
+
830
+ return this.membersRequest.assignRolesMember(options);
831
+ }
832
+
754
833
  /**
755
834
  * Raise or lower the hand of a member in a meeting
756
835
  * @param {String} memberId
@@ -759,12 +838,18 @@ export default class Members extends StatelessWebexPlugin {
759
838
  * @public
760
839
  * @memberof Members
761
840
  */
762
- raiseOrLowerHand(memberId, raise = true) {
841
+ public raiseOrLowerHand(memberId: string, raise = true) {
763
842
  if (!this.locusUrl) {
764
- return Promise.reject(new ParameterError('The associated locus url for this meetings members object must be defined.'));
843
+ return Promise.reject(
844
+ new ParameterError(
845
+ 'The associated locus url for this meetings members object must be defined.'
846
+ )
847
+ );
765
848
  }
766
849
  if (!memberId) {
767
- return Promise.reject(new ParameterError('The member id must be defined to raise/lower the hand of the member.'));
850
+ return Promise.reject(
851
+ new ParameterError('The member id must be defined to raise/lower the hand of the member.')
852
+ );
768
853
  }
769
854
  const options = MembersUtil.generateRaiseHandMemberOptions(memberId, raise, this.locusUrl);
770
855
 
@@ -778,19 +863,29 @@ export default class Members extends StatelessWebexPlugin {
778
863
  * @public
779
864
  * @memberof Members
780
865
  */
781
- lowerAllHands(requestingMemberId) {
866
+ public lowerAllHands(requestingMemberId: string) {
782
867
  if (!this.locusUrl) {
783
- return Promise.reject(new ParameterError('The associated locus url for this meetings members object must be defined.'));
868
+ return Promise.reject(
869
+ new ParameterError(
870
+ 'The associated locus url for this meetings members object must be defined.'
871
+ )
872
+ );
784
873
  }
785
874
  if (!requestingMemberId) {
786
- return Promise.reject(new ParameterError('The requestingMemberId must be defined to lower all hands in a meeting.'));
875
+ return Promise.reject(
876
+ new ParameterError(
877
+ 'The requestingMemberId must be defined to lower all hands in a meeting.'
878
+ )
879
+ );
787
880
  }
788
- const options = MembersUtil.generateLowerAllHandsMemberOptions(requestingMemberId, this.locusUrl);
881
+ const options = MembersUtil.generateLowerAllHandsMemberOptions(
882
+ requestingMemberId,
883
+ this.locusUrl
884
+ );
789
885
 
790
886
  return this.membersRequest.lowerAllHandsMember(options);
791
887
  }
792
888
 
793
-
794
889
  /**
795
890
  * Transfers the host to another member
796
891
  * @param {String} memberId
@@ -799,19 +894,28 @@ export default class Members extends StatelessWebexPlugin {
799
894
  * @public
800
895
  * @memberof Members
801
896
  */
802
- transferHostToMember(memberId, moderator = true) {
897
+ public transferHostToMember(memberId: string, moderator = true) {
803
898
  if (!this.locusUrl) {
804
- return Promise.reject(new ParameterError('The associated locus url for this meetings members object must be defined.'));
899
+ return Promise.reject(
900
+ new ParameterError(
901
+ 'The associated locus url for this meetings members object must be defined.'
902
+ )
903
+ );
805
904
  }
806
905
  if (!memberId) {
807
- return Promise.reject(new ParameterError('The member id must be defined to transfer host to the member.'));
906
+ return Promise.reject(
907
+ new ParameterError('The member id must be defined to transfer host to the member.')
908
+ );
808
909
  }
809
- const options = MembersUtil.generateTransferHostMemberOptions(memberId, moderator, this.locusUrl);
910
+ const options = MembersUtil.generateTransferHostMemberOptions(
911
+ memberId,
912
+ moderator,
913
+ this.locusUrl
914
+ );
810
915
 
811
916
  return this.membersRequest.transferHostToMember(options);
812
917
  }
813
918
 
814
-
815
919
  /**
816
920
  * Sends DTMF tones for the PSTN member of a meeting
817
921
  * @param {String} tones a string of one or more DTMF tones to send
@@ -820,7 +924,8 @@ export default class Members extends StatelessWebexPlugin {
820
924
  * @public
821
925
  * @memberof Members
822
926
  */
823
- sendDialPadKey(tones = '', memberId = '') {
927
+ public sendDialPadKey(tones = '', memberId = '') {
928
+ // @ts-ignore
824
929
  if (!tones && tones !== 0) {
825
930
  return Promise.reject(new ParameterError('DMTF tones must be passed in'));
826
931
  }
@@ -843,7 +948,11 @@ export default class Members extends StatelessWebexPlugin {
843
948
  return this.membersRequest.sendDialPadKey(options);
844
949
  }
845
950
 
846
- return Promise.reject(new Error('Members:index#sendDialPadKey --> cannot send DTMF, meeting does not have a connection to the "locus" call control service.'));
951
+ return Promise.reject(
952
+ new Error(
953
+ 'Members:index#sendDialPadKey --> cannot send DTMF, meeting does not have a connection to the "locus" call control service.'
954
+ )
955
+ );
847
956
  }
848
957
 
849
958
  /** Finds a member that has any device with a csi matching provided value
@@ -852,10 +961,12 @@ export default class Members extends StatelessWebexPlugin {
852
961
  * @returns {Member}
853
962
  */
854
963
  findMemberByCsi(csi) {
855
- return Object.values(this.membersCollection.getAll())
856
- .find((member) => (
857
- member.participant?.devices?.find((device) => (
858
- device.csis?.find((memberCsi) => memberCsi === csi)))));
964
+ return Object.values(this.membersCollection.getAll()).find((member) =>
965
+ // @ts-ignore
966
+ member.participant?.devices?.find((device) =>
967
+ device.csis?.find((memberCsi) => memberCsi === csi)
968
+ )
969
+ );
859
970
  }
860
971
 
861
972
  /**
@@ -872,7 +983,10 @@ export default class Members extends StatelessWebexPlugin {
872
983
  this.membersCollection.get(memberId)?.participant?.devices?.forEach((device) => {
873
984
  if (device.mediaSessions) {
874
985
  const deviceCsis = device.mediaSessions
875
- ?.filter((mediaSession) => mediaSession.mediaType === mediaType && mediaSession.mediaContent === mediaContent)
986
+ ?.filter(
987
+ (mediaSession) =>
988
+ mediaSession.mediaType === mediaType && mediaSession.mediaContent === mediaContent
989
+ )
876
990
  .map((mediaSession) => mediaSession.csi);
877
991
 
878
992
  csis.push(...deviceCsis);