@webex/plugin-meetings 3.0.0-beta.4 → 3.0.0-beta.400

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 (629) hide show
  1. package/README.md +58 -8
  2. package/UPGRADING.md +9 -9
  3. package/browsers.js +19 -24
  4. package/dist/annotation/annotation.types.js +7 -0
  5. package/dist/annotation/annotation.types.js.map +1 -0
  6. package/dist/annotation/constants.js +49 -0
  7. package/dist/annotation/constants.js.map +1 -0
  8. package/dist/annotation/index.js +342 -0
  9. package/dist/annotation/index.js.map +1 -0
  10. package/dist/breakouts/breakout.js +216 -0
  11. package/dist/breakouts/breakout.js.map +1 -0
  12. package/dist/breakouts/collection.js +23 -0
  13. package/dist/breakouts/collection.js.map +1 -0
  14. package/dist/breakouts/edit-lock-error.js +52 -0
  15. package/dist/breakouts/edit-lock-error.js.map +1 -0
  16. package/dist/breakouts/events.js +45 -0
  17. package/dist/breakouts/events.js.map +1 -0
  18. package/dist/breakouts/index.js +1048 -0
  19. package/dist/breakouts/index.js.map +1 -0
  20. package/dist/breakouts/request.js +78 -0
  21. package/dist/breakouts/request.js.map +1 -0
  22. package/dist/breakouts/utils.js +67 -0
  23. package/dist/breakouts/utils.js.map +1 -0
  24. package/dist/common/browser-detection.js +1 -20
  25. package/dist/common/browser-detection.js.map +1 -1
  26. package/dist/common/collection.js +5 -20
  27. package/dist/common/collection.js.map +1 -1
  28. package/dist/common/config.js +0 -7
  29. package/dist/common/config.js.map +1 -1
  30. package/dist/common/errors/captcha-error.js +10 -24
  31. package/dist/common/errors/captcha-error.js.map +1 -1
  32. package/dist/common/errors/intent-to-join.js +11 -24
  33. package/dist/common/errors/intent-to-join.js.map +1 -1
  34. package/dist/common/errors/join-meeting.js +12 -25
  35. package/dist/common/errors/join-meeting.js.map +1 -1
  36. package/dist/common/errors/media.js +10 -24
  37. package/dist/common/errors/media.js.map +1 -1
  38. package/dist/common/errors/no-meeting-info.js +51 -0
  39. package/dist/common/errors/no-meeting-info.js.map +1 -0
  40. package/dist/common/errors/parameter.js +5 -33
  41. package/dist/common/errors/parameter.js.map +1 -1
  42. package/dist/common/errors/password-error.js +10 -24
  43. package/dist/common/errors/password-error.js.map +1 -1
  44. package/dist/common/errors/permission.js +9 -23
  45. package/dist/common/errors/permission.js.map +1 -1
  46. package/dist/common/errors/reclaim-host-role-errors.js +158 -0
  47. package/dist/common/errors/reclaim-host-role-errors.js.map +1 -0
  48. package/dist/common/errors/reconnection-in-progress.js +0 -17
  49. package/dist/common/errors/reconnection-in-progress.js.map +1 -1
  50. package/dist/common/errors/reconnection.js +10 -24
  51. package/dist/common/errors/reconnection.js.map +1 -1
  52. package/dist/common/errors/stats.js +10 -24
  53. package/dist/common/errors/stats.js.map +1 -1
  54. package/dist/common/errors/webex-errors.js +54 -48
  55. package/dist/common/errors/webex-errors.js.map +1 -1
  56. package/dist/common/errors/webex-meetings-error.js +5 -25
  57. package/dist/common/errors/webex-meetings-error.js.map +1 -1
  58. package/dist/common/events/events-scope.js +0 -22
  59. package/dist/common/events/events-scope.js.map +1 -1
  60. package/dist/common/events/events.js +0 -23
  61. package/dist/common/events/events.js.map +1 -1
  62. package/dist/common/events/trigger-proxy.js +0 -12
  63. package/dist/common/events/trigger-proxy.js.map +1 -1
  64. package/dist/common/events/util.js +0 -15
  65. package/dist/common/events/util.js.map +1 -1
  66. package/dist/common/logs/logger-config.js +0 -4
  67. package/dist/common/logs/logger-config.js.map +1 -1
  68. package/dist/common/logs/logger-proxy.js +1 -8
  69. package/dist/common/logs/logger-proxy.js.map +1 -1
  70. package/dist/common/logs/request.js +41 -60
  71. package/dist/common/logs/request.js.map +1 -1
  72. package/dist/common/queue.js +28 -23
  73. package/dist/common/queue.js.map +1 -1
  74. package/dist/config.js +11 -15
  75. package/dist/config.js.map +1 -1
  76. package/dist/constants.js +347 -74
  77. package/dist/constants.js.map +1 -1
  78. package/dist/controls-options-manager/constants.js +14 -0
  79. package/dist/controls-options-manager/constants.js.map +1 -0
  80. package/dist/controls-options-manager/enums.js +27 -0
  81. package/dist/controls-options-manager/enums.js.map +1 -0
  82. package/dist/controls-options-manager/index.js +297 -0
  83. package/dist/controls-options-manager/index.js.map +1 -0
  84. package/dist/controls-options-manager/types.js +7 -0
  85. package/dist/controls-options-manager/types.js.map +1 -0
  86. package/dist/controls-options-manager/util.js +319 -0
  87. package/dist/controls-options-manager/util.js.map +1 -0
  88. package/dist/index.js +125 -18
  89. package/dist/index.js.map +1 -1
  90. package/dist/interceptors/index.js +15 -0
  91. package/dist/interceptors/index.js.map +1 -0
  92. package/dist/interceptors/locusRetry.js +93 -0
  93. package/dist/interceptors/locusRetry.js.map +1 -0
  94. package/dist/interpretation/collection.js +23 -0
  95. package/dist/interpretation/collection.js.map +1 -0
  96. package/dist/interpretation/index.js +380 -0
  97. package/dist/interpretation/index.js.map +1 -0
  98. package/dist/interpretation/siLanguage.js +25 -0
  99. package/dist/interpretation/siLanguage.js.map +1 -0
  100. package/dist/locus-info/controlsUtils.js +101 -29
  101. package/dist/locus-info/controlsUtils.js.map +1 -1
  102. package/dist/locus-info/embeddedAppsUtils.js +3 -26
  103. package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
  104. package/dist/locus-info/fullState.js +0 -15
  105. package/dist/locus-info/fullState.js.map +1 -1
  106. package/dist/locus-info/hostUtils.js +4 -12
  107. package/dist/locus-info/hostUtils.js.map +1 -1
  108. package/dist/locus-info/index.js +564 -246
  109. package/dist/locus-info/index.js.map +1 -1
  110. package/dist/locus-info/infoUtils.js +10 -38
  111. package/dist/locus-info/infoUtils.js.map +1 -1
  112. package/dist/locus-info/mediaSharesUtils.js +82 -38
  113. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  114. package/dist/locus-info/parser.js +314 -163
  115. package/dist/locus-info/parser.js.map +1 -1
  116. package/dist/locus-info/selfUtils.js +110 -92
  117. package/dist/locus-info/selfUtils.js.map +1 -1
  118. package/dist/media/index.js +107 -231
  119. package/dist/media/index.js.map +1 -1
  120. package/dist/media/properties.js +137 -222
  121. package/dist/media/properties.js.map +1 -1
  122. package/dist/media/util.js +2 -9
  123. package/dist/media/util.js.map +1 -1
  124. package/dist/mediaQualityMetrics/config.js +316 -501
  125. package/dist/mediaQualityMetrics/config.js.map +1 -1
  126. package/dist/meeting/in-meeting-actions.js +97 -14
  127. package/dist/meeting/in-meeting-actions.js.map +1 -1
  128. package/dist/meeting/index.js +5311 -3871
  129. package/dist/meeting/index.js.map +1 -1
  130. package/dist/meeting/locusMediaRequest.js +292 -0
  131. package/dist/meeting/locusMediaRequest.js.map +1 -0
  132. package/dist/meeting/muteState.js +260 -183
  133. package/dist/meeting/muteState.js.map +1 -1
  134. package/dist/meeting/request.js +421 -347
  135. package/dist/meeting/request.js.map +1 -1
  136. package/dist/meeting/request.type.js +7 -0
  137. package/dist/meeting/request.type.js.map +1 -0
  138. package/dist/meeting/state.js +21 -31
  139. package/dist/meeting/state.js.map +1 -1
  140. package/dist/meeting/util.js +672 -585
  141. package/dist/meeting/util.js.map +1 -1
  142. package/dist/meeting/voicea-meeting.js +172 -0
  143. package/dist/meeting/voicea-meeting.js.map +1 -0
  144. package/dist/meeting-info/collection.js +6 -25
  145. package/dist/meeting-info/collection.js.map +1 -1
  146. package/dist/meeting-info/index.js +87 -39
  147. package/dist/meeting-info/index.js.map +1 -1
  148. package/dist/meeting-info/meeting-info-v2.js +352 -283
  149. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  150. package/dist/meeting-info/request.js +3 -15
  151. package/dist/meeting-info/request.js.map +1 -1
  152. package/dist/meeting-info/util.js +99 -183
  153. package/dist/meeting-info/util.js.map +1 -1
  154. package/dist/meeting-info/utilv2.js +147 -234
  155. package/dist/meeting-info/utilv2.js.map +1 -1
  156. package/dist/meetings/collection.js +43 -19
  157. package/dist/meetings/collection.js.map +1 -1
  158. package/dist/meetings/index.js +895 -600
  159. package/dist/meetings/index.js.map +1 -1
  160. package/dist/meetings/meetings.types.js +7 -0
  161. package/dist/meetings/meetings.types.js.map +1 -0
  162. package/dist/meetings/request.js +26 -41
  163. package/dist/meetings/request.js.map +1 -1
  164. package/dist/meetings/util.js +184 -157
  165. package/dist/meetings/util.js.map +1 -1
  166. package/dist/member/index.js +134 -85
  167. package/dist/member/index.js.map +1 -1
  168. package/dist/member/types.js +25 -0
  169. package/dist/member/types.js.map +1 -0
  170. package/dist/member/util.js +158 -88
  171. package/dist/member/util.js.map +1 -1
  172. package/dist/members/collection.js +13 -12
  173. package/dist/members/collection.js.map +1 -1
  174. package/dist/members/index.js +194 -204
  175. package/dist/members/index.js.map +1 -1
  176. package/dist/members/request.js +113 -68
  177. package/dist/members/request.js.map +1 -1
  178. package/dist/members/types.js +15 -0
  179. package/dist/members/types.js.map +1 -0
  180. package/dist/members/util.js +324 -259
  181. package/dist/members/util.js.map +1 -1
  182. package/dist/metrics/constants.js +19 -7
  183. package/dist/metrics/constants.js.map +1 -1
  184. package/dist/metrics/index.js +11 -558
  185. package/dist/metrics/index.js.map +1 -1
  186. package/dist/multistream/mediaRequestManager.js +263 -50
  187. package/dist/multistream/mediaRequestManager.js.map +1 -1
  188. package/dist/multistream/receiveSlot.js +58 -65
  189. package/dist/multistream/receiveSlot.js.map +1 -1
  190. package/dist/multistream/receiveSlotManager.js +76 -95
  191. package/dist/multistream/receiveSlotManager.js.map +1 -1
  192. package/dist/multistream/remoteMedia.js +62 -76
  193. package/dist/multistream/remoteMedia.js.map +1 -1
  194. package/dist/multistream/remoteMediaGroup.js +82 -45
  195. package/dist/multistream/remoteMediaGroup.js.map +1 -1
  196. package/dist/multistream/remoteMediaManager.js +657 -448
  197. package/dist/multistream/remoteMediaManager.js.map +1 -1
  198. package/dist/multistream/sendSlotManager.js +255 -0
  199. package/dist/multistream/sendSlotManager.js.map +1 -0
  200. package/dist/networkQualityMonitor/index.js +40 -59
  201. package/dist/networkQualityMonitor/index.js.map +1 -1
  202. package/dist/personal-meeting-room/index.js +21 -45
  203. package/dist/personal-meeting-room/index.js.map +1 -1
  204. package/dist/personal-meeting-room/request.js +1 -31
  205. package/dist/personal-meeting-room/request.js.map +1 -1
  206. package/dist/personal-meeting-room/util.js +0 -13
  207. package/dist/personal-meeting-room/util.js.map +1 -1
  208. package/dist/reachability/clusterReachability.js +356 -0
  209. package/dist/reachability/clusterReachability.js.map +1 -0
  210. package/dist/reachability/index.js +297 -460
  211. package/dist/reachability/index.js.map +1 -1
  212. package/dist/reachability/request.js +20 -26
  213. package/dist/reachability/request.js.map +1 -1
  214. package/dist/reachability/util.js +29 -0
  215. package/dist/reachability/util.js.map +1 -0
  216. package/dist/reactions/constants.js +13 -0
  217. package/dist/reactions/constants.js.map +1 -0
  218. package/dist/reactions/reactions.js +109 -0
  219. package/dist/reactions/reactions.js.map +1 -0
  220. package/dist/reactions/reactions.type.js +36 -0
  221. package/dist/reactions/reactions.type.js.map +1 -0
  222. package/dist/reconnection-manager/index.js +413 -483
  223. package/dist/reconnection-manager/index.js.map +1 -1
  224. package/dist/recording-controller/enums.js +17 -0
  225. package/dist/recording-controller/enums.js.map +1 -0
  226. package/dist/recording-controller/index.js +362 -0
  227. package/dist/recording-controller/index.js.map +1 -0
  228. package/dist/recording-controller/util.js +64 -0
  229. package/dist/recording-controller/util.js.map +1 -0
  230. package/dist/roap/index.js +102 -86
  231. package/dist/roap/index.js.map +1 -1
  232. package/dist/roap/request.js +131 -135
  233. package/dist/roap/request.js.map +1 -1
  234. package/dist/roap/turnDiscovery.js +437 -116
  235. package/dist/roap/turnDiscovery.js.map +1 -1
  236. package/dist/rtcMetrics/constants.js +12 -0
  237. package/dist/rtcMetrics/constants.js.map +1 -0
  238. package/dist/rtcMetrics/index.js +179 -0
  239. package/dist/rtcMetrics/index.js.map +1 -0
  240. package/dist/statsAnalyzer/global.js +1 -95
  241. package/dist/statsAnalyzer/global.js.map +1 -1
  242. package/dist/statsAnalyzer/index.js +557 -583
  243. package/dist/statsAnalyzer/index.js.map +1 -1
  244. package/dist/statsAnalyzer/mqaUtil.js +326 -130
  245. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  246. package/dist/transcription/index.js +22 -47
  247. package/dist/transcription/index.js.map +1 -1
  248. package/dist/types/annotation/annotation.types.d.ts +42 -0
  249. package/dist/types/annotation/constants.d.ts +31 -0
  250. package/dist/types/annotation/index.d.ts +117 -0
  251. package/dist/types/breakouts/breakout.d.ts +8 -0
  252. package/dist/types/breakouts/collection.d.ts +5 -0
  253. package/dist/types/breakouts/edit-lock-error.d.ts +15 -0
  254. package/dist/types/breakouts/events.d.ts +8 -0
  255. package/dist/types/breakouts/index.d.ts +5 -0
  256. package/dist/types/breakouts/request.d.ts +22 -0
  257. package/dist/types/breakouts/utils.d.ts +15 -0
  258. package/dist/types/common/browser-detection.d.ts +9 -0
  259. package/dist/types/common/collection.d.ts +48 -0
  260. package/dist/types/common/config.d.ts +2 -0
  261. package/dist/types/common/errors/captcha-error.d.ts +15 -0
  262. package/dist/types/common/errors/intent-to-join.d.ts +16 -0
  263. package/dist/types/common/errors/join-meeting.d.ts +17 -0
  264. package/dist/types/common/errors/media.d.ts +15 -0
  265. package/dist/types/common/errors/no-meeting-info.d.ts +14 -0
  266. package/dist/types/common/errors/parameter.d.ts +15 -0
  267. package/dist/types/common/errors/password-error.d.ts +15 -0
  268. package/dist/types/common/errors/permission.d.ts +14 -0
  269. package/dist/types/common/errors/reclaim-host-role-errors.d.ts +60 -0
  270. package/dist/types/common/errors/reconnection-in-progress.d.ts +9 -0
  271. package/dist/types/common/errors/reconnection.d.ts +15 -0
  272. package/dist/types/common/errors/stats.d.ts +15 -0
  273. package/dist/types/common/errors/webex-errors.d.ts +93 -0
  274. package/dist/types/common/errors/webex-meetings-error.d.ts +20 -0
  275. package/dist/types/common/events/events-scope.d.ts +17 -0
  276. package/dist/types/common/events/events.d.ts +12 -0
  277. package/dist/types/common/events/trigger-proxy.d.ts +2 -0
  278. package/dist/types/common/events/util.d.ts +2 -0
  279. package/dist/types/common/logs/logger-config.d.ts +2 -0
  280. package/dist/types/common/logs/logger-proxy.d.ts +2 -0
  281. package/dist/types/common/logs/request.d.ts +36 -0
  282. package/dist/types/common/queue.d.ts +34 -0
  283. package/dist/types/config.d.ts +72 -0
  284. package/dist/types/constants.d.ts +1088 -0
  285. package/dist/types/controls-options-manager/constants.d.ts +4 -0
  286. package/dist/types/controls-options-manager/enums.d.ts +15 -0
  287. package/dist/types/controls-options-manager/index.d.ts +136 -0
  288. package/dist/types/controls-options-manager/types.d.ts +43 -0
  289. package/dist/types/controls-options-manager/util.d.ts +1 -0
  290. package/dist/types/index.d.ts +7 -0
  291. package/dist/types/interceptors/index.d.ts +2 -0
  292. package/dist/types/interceptors/locusRetry.d.ts +27 -0
  293. package/dist/types/interpretation/collection.d.ts +5 -0
  294. package/dist/types/interpretation/index.d.ts +5 -0
  295. package/dist/types/interpretation/siLanguage.d.ts +5 -0
  296. package/dist/types/locus-info/controlsUtils.d.ts +2 -0
  297. package/dist/types/locus-info/embeddedAppsUtils.d.ts +2 -0
  298. package/dist/types/locus-info/fullState.d.ts +2 -0
  299. package/dist/types/locus-info/hostUtils.d.ts +2 -0
  300. package/dist/types/locus-info/index.d.ts +322 -0
  301. package/dist/types/locus-info/infoUtils.d.ts +2 -0
  302. package/dist/types/locus-info/mediaSharesUtils.d.ts +2 -0
  303. package/dist/types/locus-info/parser.d.ts +272 -0
  304. package/dist/types/locus-info/selfUtils.d.ts +2 -0
  305. package/dist/types/media/index.d.ts +34 -0
  306. package/dist/types/media/properties.d.ts +93 -0
  307. package/dist/types/media/util.d.ts +2 -0
  308. package/dist/types/mediaQualityMetrics/config.d.ts +241 -0
  309. package/dist/types/meeting/in-meeting-actions.d.ts +167 -0
  310. package/dist/types/meeting/index.d.ts +1824 -0
  311. package/dist/types/meeting/locusMediaRequest.d.ts +74 -0
  312. package/dist/types/meeting/muteState.d.ts +178 -0
  313. package/dist/types/meeting/request.d.ts +293 -0
  314. package/dist/types/meeting/request.type.d.ts +11 -0
  315. package/dist/types/meeting/state.d.ts +9 -0
  316. package/dist/types/meeting/util.d.ts +118 -0
  317. package/dist/types/meeting/voicea-meeting.d.ts +16 -0
  318. package/dist/types/meeting-info/collection.d.ts +20 -0
  319. package/dist/types/meeting-info/index.d.ts +69 -0
  320. package/dist/types/meeting-info/meeting-info-v2.d.ts +123 -0
  321. package/dist/types/meeting-info/request.d.ts +22 -0
  322. package/dist/types/meeting-info/util.d.ts +2 -0
  323. package/dist/types/meeting-info/utilv2.d.ts +2 -0
  324. package/dist/types/meetings/collection.d.ts +40 -0
  325. package/dist/types/meetings/index.d.ts +389 -0
  326. package/dist/types/meetings/meetings.types.d.ts +4 -0
  327. package/dist/types/meetings/request.d.ts +27 -0
  328. package/dist/types/meetings/util.d.ts +18 -0
  329. package/dist/types/member/index.d.ts +160 -0
  330. package/dist/types/member/types.d.ts +32 -0
  331. package/dist/types/member/util.d.ts +2 -0
  332. package/dist/types/members/collection.d.ts +29 -0
  333. package/dist/types/members/index.d.ts +353 -0
  334. package/dist/types/members/request.d.ts +114 -0
  335. package/dist/types/members/types.d.ts +25 -0
  336. package/dist/types/members/util.d.ts +215 -0
  337. package/dist/types/metrics/constants.d.ts +70 -0
  338. package/dist/types/metrics/index.d.ts +45 -0
  339. package/dist/types/multistream/mediaRequestManager.d.ts +120 -0
  340. package/dist/types/multistream/receiveSlot.d.ts +68 -0
  341. package/dist/types/multistream/receiveSlotManager.d.ts +56 -0
  342. package/dist/types/multistream/remoteMedia.d.ts +72 -0
  343. package/dist/types/multistream/remoteMediaGroup.d.ts +49 -0
  344. package/dist/types/multistream/remoteMediaManager.d.ts +301 -0
  345. package/dist/types/multistream/sendSlotManager.d.ts +70 -0
  346. package/dist/types/networkQualityMonitor/index.d.ts +70 -0
  347. package/dist/types/personal-meeting-room/index.d.ts +47 -0
  348. package/dist/types/personal-meeting-room/request.d.ts +14 -0
  349. package/dist/types/personal-meeting-room/util.d.ts +2 -0
  350. package/dist/types/reachability/clusterReachability.d.ts +109 -0
  351. package/dist/types/reachability/index.d.ts +105 -0
  352. package/dist/types/reachability/request.d.ts +39 -0
  353. package/dist/types/reachability/util.d.ts +8 -0
  354. package/dist/types/reactions/constants.d.ts +3 -0
  355. package/dist/types/reactions/reactions.d.ts +4 -0
  356. package/dist/types/reactions/reactions.type.d.ts +52 -0
  357. package/dist/types/reconnection-manager/index.d.ts +136 -0
  358. package/dist/types/recording-controller/enums.d.ts +7 -0
  359. package/dist/types/recording-controller/index.d.ts +207 -0
  360. package/dist/types/recording-controller/util.d.ts +14 -0
  361. package/dist/types/roap/index.d.ts +86 -0
  362. package/dist/types/roap/request.d.ts +39 -0
  363. package/dist/types/roap/turnDiscovery.d.ts +155 -0
  364. package/dist/types/rtcMetrics/constants.d.ts +4 -0
  365. package/dist/types/rtcMetrics/index.d.ts +61 -0
  366. package/dist/types/statsAnalyzer/global.d.ts +36 -0
  367. package/dist/types/statsAnalyzer/index.d.ts +217 -0
  368. package/dist/types/statsAnalyzer/mqaUtil.d.ts +48 -0
  369. package/dist/types/transcription/index.d.ts +64 -0
  370. package/dist/types/webinar/collection.d.ts +16 -0
  371. package/dist/types/webinar/index.d.ts +5 -0
  372. package/dist/webinar/collection.js +44 -0
  373. package/dist/webinar/collection.js.map +1 -0
  374. package/dist/webinar/index.js +69 -0
  375. package/dist/webinar/index.js.map +1 -0
  376. package/internal-README.md +7 -6
  377. package/package.json +30 -21
  378. package/src/annotation/annotation.types.ts +50 -0
  379. package/src/annotation/constants.ts +36 -0
  380. package/src/annotation/index.ts +328 -0
  381. package/src/breakouts/README.md +220 -0
  382. package/src/breakouts/breakout.ts +188 -0
  383. package/src/breakouts/collection.ts +19 -0
  384. package/src/breakouts/edit-lock-error.ts +25 -0
  385. package/src/breakouts/events.ts +56 -0
  386. package/src/breakouts/index.ts +925 -0
  387. package/src/breakouts/request.ts +55 -0
  388. package/src/breakouts/utils.ts +57 -0
  389. package/src/common/{browser-detection.js → browser-detection.ts} +9 -6
  390. package/src/common/collection.ts +9 -7
  391. package/src/common/{config.js → config.ts} +1 -1
  392. package/src/common/errors/{captcha-error.js → captcha-error.ts} +11 -7
  393. package/src/common/errors/{intent-to-join.js → intent-to-join.ts} +12 -7
  394. package/src/common/errors/{join-meeting.js → join-meeting.ts} +17 -8
  395. package/src/common/errors/{media.js → media.ts} +11 -7
  396. package/src/common/errors/no-meeting-info.ts +24 -0
  397. package/src/common/errors/parameter.ts +11 -7
  398. package/src/common/errors/{password-error.js → password-error.ts} +11 -7
  399. package/src/common/errors/{permission.js → permission.ts} +10 -6
  400. package/src/common/errors/reclaim-host-role-errors.ts +134 -0
  401. package/src/common/errors/{reconnection.js → reconnection.ts} +11 -7
  402. package/src/common/errors/{stats.js → stats.ts} +11 -7
  403. package/src/common/errors/{webex-errors.js → webex-errors.ts} +51 -8
  404. package/src/common/errors/{webex-meetings-error.js → webex-meetings-error.ts} +4 -2
  405. package/src/common/events/{events-scope.js → events-scope.ts} +6 -2
  406. package/src/common/events/{events.js → events.ts} +5 -1
  407. package/src/common/events/{trigger-proxy.js → trigger-proxy.ts} +9 -5
  408. package/src/common/events/{util.js → util.ts} +2 -3
  409. package/src/common/logs/{logger-config.js → logger-config.ts} +1 -2
  410. package/src/common/logs/logger-proxy.ts +44 -0
  411. package/src/common/logs/{request.js → request.ts} +26 -9
  412. package/src/common/queue.ts +22 -9
  413. package/src/{config.js → config.ts} +19 -21
  414. package/src/constants.ts +296 -27
  415. package/src/controls-options-manager/constants.ts +5 -0
  416. package/src/controls-options-manager/enums.ts +18 -0
  417. package/src/controls-options-manager/index.ts +278 -0
  418. package/src/controls-options-manager/types.ts +59 -0
  419. package/src/controls-options-manager/util.ts +300 -0
  420. package/src/index.ts +45 -0
  421. package/src/interceptors/index.ts +3 -0
  422. package/src/interceptors/locusRetry.ts +67 -0
  423. package/src/interpretation/README.md +60 -0
  424. package/src/interpretation/collection.ts +19 -0
  425. package/src/interpretation/index.ts +349 -0
  426. package/src/interpretation/siLanguage.ts +18 -0
  427. package/src/locus-info/controlsUtils.ts +222 -0
  428. package/src/locus-info/{embeddedAppsUtils.js → embeddedAppsUtils.ts} +5 -6
  429. package/src/locus-info/{fullState.js → fullState.ts} +16 -12
  430. package/src/locus-info/{hostUtils.js → hostUtils.ts} +9 -8
  431. package/src/locus-info/{index.js → index.ts} +561 -119
  432. package/src/locus-info/{infoUtils.js → infoUtils.ts} +29 -10
  433. package/src/locus-info/{mediaSharesUtils.js → mediaSharesUtils.ts} +97 -17
  434. package/src/locus-info/{parser.js → parser.ts} +303 -104
  435. package/src/locus-info/{selfUtils.js → selfUtils.ts} +199 -68
  436. package/src/media/index.ts +460 -0
  437. package/src/media/properties.ts +283 -0
  438. package/src/media/{util.js → util.ts} +2 -2
  439. package/src/mediaQualityMetrics/config.ts +249 -0
  440. package/src/meeting/in-meeting-actions.ts +199 -3
  441. package/src/meeting/index.ts +8494 -0
  442. package/src/meeting/locusMediaRequest.ts +313 -0
  443. package/src/meeting/muteState.ts +465 -0
  444. package/src/meeting/request.ts +912 -0
  445. package/src/meeting/request.type.ts +13 -0
  446. package/src/meeting/{state.js → state.ts} +50 -35
  447. package/src/meeting/util.ts +799 -0
  448. package/src/meeting/voicea-meeting.ts +122 -0
  449. package/src/meeting-info/{collection.js → collection.ts} +6 -2
  450. package/src/meeting-info/index.ts +210 -0
  451. package/src/meeting-info/meeting-info-v2.ts +423 -0
  452. package/src/meeting-info/{request.js → request.ts} +14 -4
  453. package/src/meeting-info/{util.js → util.ts} +70 -58
  454. package/src/meeting-info/{utilv2.js → utilv2.ts} +99 -82
  455. package/src/meetings/collection.ts +76 -0
  456. package/src/meetings/index.ts +1539 -0
  457. package/src/meetings/meetings.types.ts +12 -0
  458. package/src/meetings/{request.js → request.ts} +34 -25
  459. package/src/meetings/{util.js → util.ts} +133 -38
  460. package/src/member/{index.js → index.ts} +159 -56
  461. package/src/member/types.ts +38 -0
  462. package/src/member/util.ts +397 -0
  463. package/src/members/{collection.js → collection.ts} +10 -2
  464. package/src/members/{index.js → index.ts} +351 -146
  465. package/src/members/request.ts +255 -0
  466. package/src/members/types.ts +29 -0
  467. package/src/members/util.ts +353 -0
  468. package/src/metrics/{constants.js → constants.ts} +17 -6
  469. package/src/metrics/index.ts +73 -0
  470. package/src/multistream/mediaRequestManager.ts +341 -64
  471. package/src/multistream/receiveSlot.ts +69 -26
  472. package/src/multistream/receiveSlotManager.ts +66 -42
  473. package/src/multistream/remoteMedia.ts +40 -5
  474. package/src/multistream/remoteMediaGroup.ts +82 -3
  475. package/src/multistream/remoteMediaManager.ts +401 -81
  476. package/src/multistream/sendSlotManager.ts +199 -0
  477. package/src/networkQualityMonitor/{index.js → index.ts} +41 -29
  478. package/src/personal-meeting-room/{index.js → index.ts} +28 -19
  479. package/src/personal-meeting-room/{request.js → request.ts} +13 -4
  480. package/src/personal-meeting-room/{util.js → util.ts} +4 -4
  481. package/src/reachability/clusterReachability.ts +320 -0
  482. package/src/reachability/index.ts +371 -0
  483. package/src/reachability/request.ts +50 -35
  484. package/src/reachability/util.ts +24 -0
  485. package/src/reactions/constants.ts +4 -0
  486. package/src/reactions/reactions.ts +104 -0
  487. package/src/reactions/reactions.type.ts +62 -0
  488. package/src/reconnection-manager/index.ts +643 -0
  489. package/src/recording-controller/enums.ts +8 -0
  490. package/src/recording-controller/index.ts +332 -0
  491. package/src/recording-controller/util.ts +75 -0
  492. package/src/roap/index.ts +288 -0
  493. package/src/roap/request.ts +153 -0
  494. package/src/roap/turnDiscovery.ts +374 -70
  495. package/src/rtcMetrics/constants.ts +3 -0
  496. package/src/rtcMetrics/index.ts +166 -0
  497. package/src/statsAnalyzer/global.ts +37 -0
  498. package/src/statsAnalyzer/index.ts +1275 -0
  499. package/src/statsAnalyzer/mqaUtil.ts +440 -0
  500. package/src/transcription/{index.js → index.ts} +46 -39
  501. package/src/webinar/collection.ts +31 -0
  502. package/src/webinar/index.ts +62 -0
  503. package/test/integration/spec/converged-space-meetings.js +233 -0
  504. package/test/integration/spec/journey.js +791 -531
  505. package/test/integration/spec/space-meeting.js +391 -204
  506. package/test/integration/spec/transcription.js +7 -8
  507. package/test/unit/spec/annotation/index.ts +418 -0
  508. package/test/unit/spec/breakouts/breakout.ts +238 -0
  509. package/test/unit/spec/breakouts/collection.ts +15 -0
  510. package/test/unit/spec/breakouts/edit-lock-error.ts +30 -0
  511. package/test/unit/spec/breakouts/events.ts +89 -0
  512. package/test/unit/spec/breakouts/index.ts +1793 -0
  513. package/test/unit/spec/breakouts/request.ts +104 -0
  514. package/test/unit/spec/breakouts/utils.js +72 -0
  515. package/test/unit/spec/common/browser-detection.js +9 -28
  516. package/test/unit/spec/common/queue.js +31 -2
  517. package/test/unit/spec/controls-options-manager/index.js +287 -0
  518. package/test/unit/spec/controls-options-manager/util.js +582 -0
  519. package/test/unit/spec/fixture/locus.js +93 -90
  520. package/test/unit/spec/interceptors/locusRetry.ts +131 -0
  521. package/test/unit/spec/interpretation/collection.ts +15 -0
  522. package/test/unit/spec/interpretation/index.ts +625 -0
  523. package/test/unit/spec/interpretation/siLanguage.ts +28 -0
  524. package/test/unit/spec/locus-info/controlsUtils.js +325 -32
  525. package/test/unit/spec/locus-info/embeddedAppsUtils.js +8 -6
  526. package/test/unit/spec/locus-info/index.js +1458 -21
  527. package/test/unit/spec/locus-info/infoUtils.js +71 -40
  528. package/test/unit/spec/locus-info/lib/BasicSeqCmp.json +88 -430
  529. package/test/unit/spec/locus-info/lib/SeqCmp.json +529 -685
  530. package/test/unit/spec/locus-info/mediaSharesUtils.ts +41 -0
  531. package/test/unit/spec/locus-info/parser.js +119 -44
  532. package/test/unit/spec/locus-info/selfConstant.js +120 -103
  533. package/test/unit/spec/locus-info/selfUtils.js +291 -12
  534. package/test/unit/spec/media/index.ts +194 -111
  535. package/test/unit/spec/media/properties.ts +11 -11
  536. package/test/unit/spec/meeting/in-meeting-actions.ts +96 -3
  537. package/test/unit/spec/meeting/index.js +8616 -1921
  538. package/test/unit/spec/meeting/locusMediaRequest.ts +442 -0
  539. package/test/unit/spec/meeting/muteState.js +568 -207
  540. package/test/unit/spec/meeting/request.js +602 -82
  541. package/test/unit/spec/meeting/utils.js +867 -179
  542. package/test/unit/spec/meeting/voicea-meeting.ts +266 -0
  543. package/test/unit/spec/meeting-info/index.js +300 -0
  544. package/test/unit/spec/meeting-info/meetinginfov2.js +631 -78
  545. package/test/unit/spec/meeting-info/request.js +7 -9
  546. package/test/unit/spec/meeting-info/util.js +11 -12
  547. package/test/unit/spec/meeting-info/utilv2.js +131 -74
  548. package/test/unit/spec/meetings/collection.js +27 -1
  549. package/test/unit/spec/meetings/index.js +1826 -374
  550. package/test/unit/spec/meetings/utils.js +243 -14
  551. package/test/unit/spec/member/index.js +61 -7
  552. package/test/unit/spec/member/util.js +526 -26
  553. package/test/unit/spec/members/index.js +536 -55
  554. package/test/unit/spec/members/request.js +228 -40
  555. package/test/unit/spec/members/utils.js +217 -4
  556. package/test/unit/spec/metrics/index.js +13 -68
  557. package/test/unit/spec/multistream/mediaRequestManager.ts +1032 -110
  558. package/test/unit/spec/multistream/receiveSlot.ts +77 -18
  559. package/test/unit/spec/multistream/receiveSlotManager.ts +69 -39
  560. package/test/unit/spec/multistream/remoteMedia.ts +40 -2
  561. package/test/unit/spec/multistream/remoteMediaGroup.ts +350 -5
  562. package/test/unit/spec/multistream/remoteMediaManager.ts +937 -65
  563. package/test/unit/spec/multistream/sendSlotManager.ts +274 -0
  564. package/test/unit/spec/networkQualityMonitor/index.js +24 -18
  565. package/test/unit/spec/personal-meeting-room/personal-meeting-room.js +2 -7
  566. package/test/unit/spec/reachability/clusterReachability.ts +279 -0
  567. package/test/unit/spec/reachability/index.ts +606 -26
  568. package/test/unit/spec/reachability/request.js +68 -0
  569. package/test/unit/spec/reachability/util.ts +40 -0
  570. package/test/unit/spec/reconnection-manager/index.js +222 -34
  571. package/test/unit/spec/recording-controller/index.js +306 -0
  572. package/test/unit/spec/recording-controller/util.js +229 -0
  573. package/test/unit/spec/roap/index.ts +238 -82
  574. package/test/unit/spec/roap/request.ts +255 -0
  575. package/test/unit/spec/roap/turnDiscovery.ts +707 -110
  576. package/test/unit/spec/rtcMetrics/index.ts +122 -0
  577. package/test/unit/spec/stats-analyzer/index.js +1331 -62
  578. package/test/unit/spec/webinar/collection.ts +13 -0
  579. package/test/unit/spec/webinar/index.ts +60 -0
  580. package/test/utils/cmr.js +44 -42
  581. package/test/utils/constants.js +9 -0
  582. package/test/utils/integrationTestUtils.js +46 -0
  583. package/test/utils/testUtils.js +63 -99
  584. package/test/utils/webex-config.js +22 -18
  585. package/test/utils/webex-test-users.js +65 -50
  586. package/tsconfig.json +6 -0
  587. package/dist/media/internal-media-core-wrapper.js +0 -22
  588. package/dist/media/internal-media-core-wrapper.js.map +0 -1
  589. package/dist/meeting/effectsState.js +0 -327
  590. package/dist/meeting/effectsState.js.map +0 -1
  591. package/dist/metrics/config.js +0 -301
  592. package/dist/metrics/config.js.map +0 -1
  593. package/dist/multistream/multistreamMedia.js +0 -116
  594. package/dist/multistream/multistreamMedia.js.map +0 -1
  595. package/dist/peer-connection-manager/util.js +0 -124
  596. package/dist/peer-connection-manager/util.js.map +0 -1
  597. package/src/common/logs/logger-proxy.js +0 -33
  598. package/src/index.js +0 -15
  599. package/src/locus-info/controlsUtils.js +0 -102
  600. package/src/media/index.js +0 -459
  601. package/src/media/internal-media-core-wrapper.ts +0 -9
  602. package/src/media/properties.js +0 -289
  603. package/src/mediaQualityMetrics/config.js +0 -382
  604. package/src/meeting/effectsState.js +0 -205
  605. package/src/meeting/index.js +0 -6284
  606. package/src/meeting/muteState.js +0 -318
  607. package/src/meeting/request.js +0 -684
  608. package/src/meeting/util.js +0 -506
  609. package/src/meeting-info/index.js +0 -131
  610. package/src/meeting-info/meeting-info-v2.js +0 -255
  611. package/src/meetings/collection.js +0 -40
  612. package/src/meetings/index.js +0 -1015
  613. package/src/member/util.js +0 -254
  614. package/src/members/request.js +0 -131
  615. package/src/members/util.js +0 -258
  616. package/src/metrics/config.js +0 -324
  617. package/src/metrics/index.js +0 -530
  618. package/src/multistream/multistreamMedia.ts +0 -92
  619. package/src/peer-connection-manager/util.ts +0 -117
  620. package/src/reachability/index.js +0 -464
  621. package/src/reconnection-manager/index.js +0 -519
  622. package/src/roap/index.js +0 -220
  623. package/src/roap/request.js +0 -127
  624. package/src/statsAnalyzer/global.js +0 -133
  625. package/src/statsAnalyzer/index.js +0 -1006
  626. package/src/statsAnalyzer/mqaUtil.js +0 -173
  627. package/test/unit/spec/meeting/effectsState.js +0 -291
  628. package/test/unit/spec/peerconnection-manager/utils.test-fixtures.ts +0 -389
  629. /package/src/common/errors/{reconnection-in-progress.js → reconnection-in-progress.ts} +0 -0
@@ -2,64 +2,97 @@
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
- import {MEETINGS, EVENT_TRIGGERS, FLOOR_ACTION, CONTENT, WHITEBOARD} from '../constants';
8
+ import {
9
+ MEETINGS,
10
+ EVENT_TRIGGERS,
11
+ FLOOR_ACTION,
12
+ CONTENT,
13
+ WHITEBOARD,
14
+ ASSIGN_ROLES_ERROR_CODES,
15
+ } from '../constants';
8
16
  import Trigger from '../common/events/trigger-proxy';
9
17
  import Member from '../member';
10
18
  import LoggerProxy from '../common/logs/logger-proxy';
11
19
  import ParameterError from '../common/errors/parameter';
20
+ import {
21
+ ReclaimHostEmptyWrongKeyError,
22
+ ReclaimHostIsHostAlreadyError,
23
+ ReclaimHostNotAllowedError,
24
+ ReclaimHostNotSupportedError,
25
+ } from '../common/errors/reclaim-host-role-errors';
12
26
 
13
27
  import MembersCollection from './collection';
14
28
  import MembersRequest from './request';
15
29
  import MembersUtil from './util';
30
+ import {ReceiveSlotManager} from '../multistream/receiveSlotManager';
31
+ import {MediaRequestManager} from '../multistream/mediaRequestManager';
32
+ import {ServerRoleShape} from './types';
16
33
 
17
34
  /**
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
- */
35
+ * Members Update Event
36
+ * Emitted when something in the roster list needs to be updated
37
+ * @event members:update
38
+ * @instance
39
+ * @property {Object} delta the changes to the members list
40
+ * @property {Array} delta.updated array only the updates, includes removals, as they will have updated status and member properties
41
+ * @property {Array} delta.added array added members to the meeting
42
+ * @property {Array} full array the full members collection
43
+ * @memberof Members
44
+ */
28
45
 
29
46
  /**
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
- */
47
+ * Members Content Update Event
48
+ * Emitted when who is sharing changes
49
+ * @event members:content:update
50
+ * @instance
51
+ * @property {String} activeContentSharingId
52
+ * @property {String} endedContentSharingId
53
+ * @memberof Members
54
+ */
38
55
 
39
56
  /**
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
- */
57
+ * Members Host Update Event
58
+ * Emitted when who is the host changes
59
+ * @event members:host:update
60
+ * @instance
61
+ * @property {String} activeHostId
62
+ * @property {String} endedHostId
63
+ * @memberof Members
64
+ */
48
65
 
49
66
  /**
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
- */
67
+ * Members Self Update Event
68
+ * Emitted when who is the self changes
69
+ * @event members:self:update
70
+ * @instance
71
+ * @property {String} activeSelfId
72
+ * @property {String} endedSelfId
73
+ * @memberof Members
74
+ */
58
75
 
59
76
  /**
60
77
  * @class Members
61
78
  */
62
79
  export default class Members extends StatelessWebexPlugin {
80
+ hostId: any;
81
+ locusUrl: any;
82
+ mediaShareContentId: any;
83
+ mediaShareWhiteboardId: any;
84
+ membersCollection: any;
85
+ membersRequest: any;
86
+ receiveSlotManager: ReceiveSlotManager;
87
+ mediaRequestManagers: {
88
+ audio: MediaRequestManager;
89
+ video: MediaRequestManager;
90
+ };
91
+
92
+ recordingId: any;
93
+ selfId: any;
94
+ type: any;
95
+
63
96
  namespace = MEETINGS;
64
97
 
65
98
  /**
@@ -68,7 +101,7 @@ export default class Members extends StatelessWebexPlugin {
68
101
  * @param {Object} options
69
102
  * @memberof Members
70
103
  */
71
- constructor(attrs, options) {
104
+ constructor(attrs: any, options: object) {
72
105
  super({}, options);
73
106
  /**
74
107
  * The Members Request object to interact with server
@@ -76,15 +109,22 @@ export default class Members extends StatelessWebexPlugin {
76
109
  * @type {MembersRequest}
77
110
  * @private
78
111
  * @memberof Members
79
- */
80
- this.membersRequest = new MembersRequest({}, options);
112
+ */
113
+
114
+ // @ts-ignore
115
+ this.membersRequest = new MembersRequest(
116
+ {
117
+ meeting: attrs.meeting,
118
+ },
119
+ options
120
+ );
81
121
  /**
82
122
  * The Members Collection cache
83
123
  * @instance
84
124
  * @type {MembersCollection}
85
125
  * @private
86
126
  * @memberof Members
87
- */
127
+ */
88
128
  this.membersCollection = new MembersCollection();
89
129
  /**
90
130
  * The current locus url for the active meeting
@@ -92,7 +132,7 @@ export default class Members extends StatelessWebexPlugin {
92
132
  * @type {String}
93
133
  * @private
94
134
  * @memberof Members
95
- */
135
+ */
96
136
  this.locusUrl = attrs.locusUrl || null;
97
137
  /**
98
138
  * The current hostId for the meeting
@@ -100,7 +140,7 @@ export default class Members extends StatelessWebexPlugin {
100
140
  * @type {String}
101
141
  * @private
102
142
  * @memberof Members
103
- */
143
+ */
104
144
  this.hostId = null;
105
145
  /**
106
146
  * The current type for the meeting, could be MEETING or CALL
@@ -108,7 +148,7 @@ export default class Members extends StatelessWebexPlugin {
108
148
  * @type {String}
109
149
  * @private
110
150
  * @memberof Members
111
- */
151
+ */
112
152
  this.type = null;
113
153
  /**
114
154
  * Locus has a self object, sent individually to the client
@@ -122,7 +162,7 @@ export default class Members extends StatelessWebexPlugin {
122
162
  * @type {String}
123
163
  * @private
124
164
  * @memberof Members
125
- */
165
+ */
126
166
  this.selfId = null;
127
167
  /**
128
168
  * The current mediaShareContentId for the meeting
@@ -130,7 +170,7 @@ export default class Members extends StatelessWebexPlugin {
130
170
  * @type {String}
131
171
  * @private
132
172
  * @memberof Members
133
- */
173
+ */
134
174
  this.mediaShareContentId = null;
135
175
  /**
136
176
  * The current mediaShareWhiteboardId for the meeting
@@ -138,7 +178,7 @@ export default class Members extends StatelessWebexPlugin {
138
178
  * @type {String}
139
179
  * @private
140
180
  * @memberof Members
141
- */
181
+ */
142
182
  this.mediaShareWhiteboardId = null;
143
183
  /**
144
184
  * The current recordingId for the meeting, if it exists
@@ -146,7 +186,7 @@ export default class Members extends StatelessWebexPlugin {
146
186
  * @type {String}
147
187
  * @private
148
188
  * @memberof Members
149
- */
189
+ */
150
190
  this.recordingId = null;
151
191
 
152
192
  /**
@@ -171,7 +211,7 @@ export default class Members extends StatelessWebexPlugin {
171
211
  * @private
172
212
  * @memberof Members
173
213
  */
174
- locusSelfUpdate(payload) {
214
+ locusSelfUpdate(payload: {newSelf: any; oldSelf: any}) {
175
215
  let newSelfId = null;
176
216
  let oldSelfId = null;
177
217
 
@@ -202,12 +242,12 @@ export default class Members extends StatelessWebexPlugin {
202
242
  this,
203
243
  {
204
244
  file: 'members',
205
- function: 'locusSelfUpdate'
245
+ function: 'locusSelfUpdate',
206
246
  },
207
247
  EVENT_TRIGGERS.MEMBERS_SELF_UPDATE,
208
248
  {
209
249
  activeSelfId: newSelfId,
210
- endedSelfId: oldSelfId
250
+ endedSelfId: oldSelfId,
211
251
  }
212
252
  );
213
253
  }
@@ -221,7 +261,7 @@ export default class Members extends StatelessWebexPlugin {
221
261
  * @private
222
262
  * @memberof Members
223
263
  */
224
- locusHostUpdate(payload) {
264
+ locusHostUpdate(payload: {newHost: any; oldHost: any}) {
225
265
  let newHostId = null;
226
266
  let oldHostId = null;
227
267
 
@@ -252,16 +292,35 @@ export default class Members extends StatelessWebexPlugin {
252
292
  this,
253
293
  {
254
294
  file: 'members',
255
- function: 'locusHostUpdate'
295
+ function: 'locusHostUpdate',
256
296
  },
257
297
  EVENT_TRIGGERS.MEMBERS_HOST_UPDATE,
258
298
  {
259
299
  activeHostId: newHostId,
260
- endedHostId: oldHostId
300
+ endedHostId: oldHostId,
261
301
  }
262
302
  );
263
303
  }
264
304
 
305
+ /**
306
+ * clear member collection
307
+ * @returns {void}
308
+ * @private
309
+ * @memberof Members
310
+ */
311
+ clearMembers() {
312
+ this.membersCollection.reset();
313
+ Trigger.trigger(
314
+ this,
315
+ {
316
+ file: 'members',
317
+ function: 'clearMembers',
318
+ },
319
+ EVENT_TRIGGERS.MEMBERS_CLEAR,
320
+ {}
321
+ );
322
+ }
323
+
265
324
  /**
266
325
  * when new participant updates come in, both delta and full participants, update them in members collection
267
326
  * delta object in the event will have {updated, added} and full will be the full membersCollection
@@ -271,21 +330,27 @@ export default class Members extends StatelessWebexPlugin {
271
330
  * @private
272
331
  * @memberof Members
273
332
  */
274
- locusParticipantsUpdate(payload) {
333
+ locusParticipantsUpdate(payload: {participants: object; isReplace?: boolean}) {
275
334
  if (payload) {
335
+ if (payload.isReplace) {
336
+ this.clearMembers();
337
+ }
276
338
  const delta = this.handleLocusInfoUpdatedParticipants(payload);
277
339
  const full = this.handleMembersUpdate(delta); // SDK should propagate the full list for both delta and non delta updates
278
340
 
341
+ this.receiveSlotManager?.updateMemberIds();
342
+
279
343
  Trigger.trigger(
280
344
  this,
281
345
  {
282
346
  file: 'members',
283
- function: 'locusParticipantsUpdate'
347
+ function: 'locusParticipantsUpdate',
284
348
  },
285
349
  EVENT_TRIGGERS.MEMBERS_UPDATE,
286
350
  {
287
351
  delta,
288
- full
352
+ full,
353
+ isReplace: !!payload.isReplace,
289
354
  }
290
355
  );
291
356
  }
@@ -300,7 +365,7 @@ export default class Members extends StatelessWebexPlugin {
300
365
  * @private
301
366
  * @memberof Members
302
367
  */
303
- locusMediaSharesUpdate(payload) {
368
+ locusMediaSharesUpdate(payload: {current: any; previous: any}) {
304
369
  const currentContent = payload.current?.content;
305
370
  const previousContent = payload.previous?.content;
306
371
  const currentWhiteboard = payload.current?.whiteboard;
@@ -319,8 +384,10 @@ export default class Members extends StatelessWebexPlugin {
319
384
  if (currentContent.disposition === FLOOR_ACTION.RELEASED) {
320
385
  whoStopped = currentContent.beneficiaryId;
321
386
  this.mediaShareContentId = null;
322
- }
323
- else if (currentContent.disposition === FLOOR_ACTION.GRANTED && currentContent.beneficiaryId !== previousContent.beneficiaryId) {
387
+ } else if (
388
+ currentContent.disposition === FLOOR_ACTION.GRANTED &&
389
+ currentContent.beneficiaryId !== previousContent.beneficiaryId
390
+ ) {
324
391
  whoStopped = previousContent.beneficiaryId;
325
392
  }
326
393
  }
@@ -337,8 +404,10 @@ export default class Members extends StatelessWebexPlugin {
337
404
  if (currentWhiteboard.disposition === FLOOR_ACTION.RELEASED) {
338
405
  whoStopped = currentWhiteboard.beneficiaryId;
339
406
  this.mediaShareWhiteboardId = null;
340
- }
341
- else if (currentWhiteboard.disposition === FLOOR_ACTION.GRANTED && currentWhiteboard.beneficiaryId !== previousWhiteboard.beneficiaryId) {
407
+ } else if (
408
+ currentWhiteboard.disposition === FLOOR_ACTION.GRANTED &&
409
+ currentWhiteboard.beneficiaryId !== previousWhiteboard.beneficiaryId
410
+ ) {
342
411
  whoStopped = previousWhiteboard.beneficiaryId;
343
412
  }
344
413
  }
@@ -363,17 +432,16 @@ export default class Members extends StatelessWebexPlugin {
363
432
  this,
364
433
  {
365
434
  file: 'members',
366
- function: 'locusMediaSharesUpdate'
435
+ function: 'locusMediaSharesUpdate',
367
436
  },
368
437
  EVENT_TRIGGERS.MEMBERS_CONTENT_UPDATE,
369
438
  {
370
439
  activeSharingId: whoSharing,
371
- endedSharingId: whoStopped
440
+ endedSharingId: whoStopped,
372
441
  }
373
442
  );
374
443
  }
375
444
 
376
-
377
445
  /**
378
446
  * Internal update the locus url value
379
447
  * @param {Object} payload
@@ -382,7 +450,7 @@ export default class Members extends StatelessWebexPlugin {
382
450
  * @private
383
451
  * @memberof Members
384
452
  */
385
- locusUrlUpdate(payload) {
453
+ locusUrlUpdate(payload: any) {
386
454
  if (payload) {
387
455
  this.setLocusUrl(null, payload);
388
456
  }
@@ -396,7 +464,7 @@ export default class Members extends StatelessWebexPlugin {
396
464
  * @private
397
465
  * @memberof Members
398
466
  */
399
- locusFullStateTypeUpdate(payload) {
467
+ locusFullStateTypeUpdate(payload: {type: string}) {
400
468
  // TODO: at some point there could be a timing issue here, for updating each member
401
469
  // ie., if the type changes AND there is no locus update, then each member will not know the type of call
402
470
  // which means they cannot determine isMutable && isRemovable
@@ -415,7 +483,7 @@ export default class Members extends StatelessWebexPlugin {
415
483
  * @private
416
484
  * @memberof Members
417
485
  */
418
- handleMembersUpdate(membersUpdate) {
486
+ private handleMembersUpdate(membersUpdate: any) {
419
487
  if (membersUpdate) {
420
488
  if (membersUpdate.updated) {
421
489
  this.constructMembers(membersUpdate.updated);
@@ -435,7 +503,7 @@ export default class Members extends StatelessWebexPlugin {
435
503
  * @private
436
504
  * @memberof Members
437
505
  */
438
- constructMembers(list) {
506
+ private constructMembers(list: Array<any>) {
439
507
  list.forEach((member) => {
440
508
  this.membersCollection.set(member.id, member);
441
509
  });
@@ -448,12 +516,14 @@ export default class Members extends StatelessWebexPlugin {
448
516
  * @private
449
517
  * @memberof Members
450
518
  */
451
- handleLocusInfoUpdatedParticipants(payload) {
519
+ private handleLocusInfoUpdatedParticipants(payload: any) {
452
520
  this.hostId = payload.hostId || this.hostId;
453
521
  this.selfId = payload.selfId || this.selfId;
454
522
  this.recordingId = payload.recordingId;
455
523
  if (!payload.participants) {
456
- LoggerProxy.logger.warn('Members:index#handleLocusInfoUpdatedParticipants --> participants payload is missing.');
524
+ LoggerProxy.logger.warn(
525
+ 'Members:index#handleLocusInfoUpdatedParticipants --> participants payload is missing.'
526
+ );
457
527
  }
458
528
  const memberUpdate = this.update(payload.participants);
459
529
 
@@ -469,15 +539,15 @@ export default class Members extends StatelessWebexPlugin {
469
539
  * @public
470
540
  * @memberof Members
471
541
  */
472
- setLocusUrl(locus, locusUrl = null) {
542
+ public setLocusUrl(locus: any, locusUrl: string = null) {
473
543
  if (locusUrl) {
474
544
  this.locusUrl = locusUrl;
475
- }
476
- else if (locus && (locus.locusUrl || locus.url)) {
545
+ } else if (locus && (locus.locusUrl || locus.url)) {
477
546
  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');
547
+ } else {
548
+ throw new ParameterError(
549
+ 'Setting locusUrl for the Members module should be done with a locus object or locusUrl'
550
+ );
481
551
  }
482
552
  }
483
553
 
@@ -490,15 +560,15 @@ export default class Members extends StatelessWebexPlugin {
490
560
  * @public
491
561
  * @memberof Members
492
562
  */
493
- setHostId(locus, hostId = null) {
563
+ public setHostId(locus: any, hostId: string = null) {
494
564
  if (hostId) {
495
565
  this.hostId = hostId;
496
- }
497
- else if (locus) {
566
+ } else if (locus) {
498
567
  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');
568
+ } else {
569
+ throw new ParameterError(
570
+ 'Setting hostid for the Members module should be done with a locus object or hostId'
571
+ );
502
572
  }
503
573
  }
504
574
 
@@ -511,15 +581,15 @@ export default class Members extends StatelessWebexPlugin {
511
581
  * @public
512
582
  * @memberof Members
513
583
  */
514
- setType(fullState, type = null) {
584
+ public setType(fullState: any, type: string = null) {
515
585
  if (type) {
516
586
  this.type = type;
517
- }
518
- else if (fullState) {
587
+ } else if (fullState) {
519
588
  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');
589
+ } else {
590
+ throw new ParameterError(
591
+ 'Setting type for the Members module should be done with a fullstate object or type string'
592
+ );
523
593
  }
524
594
  }
525
595
 
@@ -531,15 +601,18 @@ export default class Members extends StatelessWebexPlugin {
531
601
  * @returns {undefined}
532
602
  * @memberof Members
533
603
  */
534
- setSelfId(locus, selfId = null) {
604
+ setSelfId(locus: any, selfId: string = null) {
535
605
  if (selfId) {
536
606
  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');
607
+ } else if (locus) {
608
+ this.selfId =
609
+ locus && locus.self && locus.self.person && locus.self.person.id
610
+ ? locus.self.person.id
611
+ : null;
612
+ } else {
613
+ throw new ParameterError(
614
+ 'Setting selfid for the Members module should be done with a locus object or selfId'
615
+ );
543
616
  }
544
617
  }
545
618
 
@@ -551,11 +624,10 @@ export default class Members extends StatelessWebexPlugin {
551
624
  * @returns {undefined}
552
625
  * @memberof Members
553
626
  */
554
- setMediaShareContentId(locus, contentId) {
627
+ setMediaShareContentId(locus: any, contentId?: string) {
555
628
  if (contentId) {
556
629
  this.mediaShareContentId = contentId;
557
- }
558
- else if (locus) {
630
+ } else if (locus) {
559
631
  const contentMediaShare =
560
632
  locus.mediaShares &&
561
633
  locus.mediaShares.length &&
@@ -567,9 +639,10 @@ export default class Members extends StatelessWebexPlugin {
567
639
  contentMediaShare.floor.beneficiary &&
568
640
  contentMediaShare.floor.beneficiary.id) ||
569
641
  null;
570
- }
571
- else {
572
- throw new ParameterError('Setting hostid for the Members module should be done with a locus object or hostId');
642
+ } else {
643
+ throw new ParameterError(
644
+ 'Setting hostid for the Members module should be done with a locus object or hostId'
645
+ );
573
646
  }
574
647
  }
575
648
 
@@ -581,11 +654,10 @@ export default class Members extends StatelessWebexPlugin {
581
654
  * @returns {undefined}
582
655
  * @memberof Members
583
656
  */
584
- setMediaShareWhiteboardId(locus, whiteboardId) {
657
+ setMediaShareWhiteboardId(locus: any, whiteboardId?: string) {
585
658
  if (whiteboardId) {
586
659
  this.mediaShareWhiteboardId = whiteboardId;
587
- }
588
- else if (locus) {
660
+ } else if (locus) {
589
661
  const whiteboardMediaShare =
590
662
  locus.mediaShares &&
591
663
  locus.mediaShares.length &&
@@ -597,9 +669,10 @@ export default class Members extends StatelessWebexPlugin {
597
669
  whiteboardMediaShare.floor.beneficiary &&
598
670
  whiteboardMediaShare.floor.beneficiary.id) ||
599
671
  null;
600
- }
601
- else {
602
- throw new ParameterError('Setting hostid for the Members module should be done with a locus object or hostId');
672
+ } else {
673
+ throw new ParameterError(
674
+ 'Setting hostid for the Members module should be done with a locus object or hostId'
675
+ );
603
676
  }
604
677
  }
605
678
 
@@ -612,7 +685,7 @@ export default class Members extends StatelessWebexPlugin {
612
685
  * @private
613
686
  * @memberof Members
614
687
  */
615
- update(participants) {
688
+ private update(participants: Array<any>) {
616
689
  const membersUpdate = {added: [], updated: []};
617
690
 
618
691
  if (participants) {
@@ -632,11 +705,10 @@ export default class Members extends StatelessWebexPlugin {
632
705
  hostId: this.hostId,
633
706
  contentSharingId: this.mediaShareContentId,
634
707
  whiteboardSharingId: this.mediaShareWhiteboardId,
635
- type: this.type
708
+ type: this.type,
636
709
  })
637
710
  );
638
- }
639
- else {
711
+ } else {
640
712
  membersUpdate.added.push(
641
713
  new Member(participant, {
642
714
  recordingId: this.recordingId,
@@ -644,7 +716,7 @@ export default class Members extends StatelessWebexPlugin {
644
716
  hostId: this.hostId,
645
717
  contentSharingId: this.mediaShareContentId,
646
718
  whiteboardSharingId: this.mediaShareWhiteboardId,
647
- type: this.type
719
+ type: this.type,
648
720
  })
649
721
  );
650
722
  }
@@ -661,13 +733,17 @@ export default class Members extends StatelessWebexPlugin {
661
733
  * @returns {Promise}
662
734
  * @memberof Members
663
735
  */
664
- addMember(invitee, alertIfActive) {
736
+ addMember(invitee: any, alertIfActive?: boolean) {
665
737
  if (!this.locusUrl) {
666
- return Promise.reject(new ParameterError('The associated locus url for this meeting object must be defined.'));
738
+ return Promise.reject(
739
+ new ParameterError('The associated locus url for this meeting object must be defined.')
740
+ );
667
741
  }
668
742
  if (MembersUtil.isInvalidInvitee(invitee)) {
669
743
  return Promise.reject(
670
- new ParameterError('The invitee must be defined with either a valid email, emailAddress or phoneNumber property.')
744
+ new ParameterError(
745
+ 'The invitee must be defined with either a valid email, emailAddress or phoneNumber property.'
746
+ )
671
747
  );
672
748
  }
673
749
  const options = MembersUtil.generateAddMemberOptions(invitee, this.locusUrl, alertIfActive);
@@ -681,9 +757,11 @@ export default class Members extends StatelessWebexPlugin {
681
757
  * @returns {Promise}
682
758
  * @memberof Members
683
759
  */
684
- cancelPhoneInvite(invitee) {
760
+ cancelPhoneInvite(invitee: any) {
685
761
  if (!this.locusUrl) {
686
- return Promise.reject(new ParameterError('The associated locus url for this meeting object must be defined.'));
762
+ return Promise.reject(
763
+ new ParameterError('The associated locus url for this meeting object must be defined.')
764
+ );
687
765
  }
688
766
  if (MembersUtil.isInvalidInvitee(invitee)) {
689
767
  return Promise.reject(
@@ -692,22 +770,28 @@ export default class Members extends StatelessWebexPlugin {
692
770
  }
693
771
  const options = MembersUtil.cancelPhoneInviteOptions(invitee, this.locusUrl);
694
772
 
695
-
696
773
  return this.membersRequest.cancelPhoneInvite(options);
697
774
  }
698
775
 
699
776
  /**
700
777
  * Admits waiting members (invited guests to meeting)
701
778
  * @param {Array} memberIds
779
+ * @param {Object} sessionLocusUrls: {authorizingLocusUrl, mainLocusUrl}
702
780
  * @returns {Promise}
703
781
  * @public
704
782
  * @memberof Members
705
783
  */
706
- admitMembers(memberIds) {
784
+ public admitMembers(
785
+ memberIds: Array<any>,
786
+ sessionLocusUrls?: {authorizingLocusUrl: string; mainLocusUrl: string}
787
+ ) {
707
788
  if (isEmpty(memberIds)) {
708
789
  return Promise.reject(new ParameterError('No member ids provided to admit.'));
709
790
  }
710
- const options = MembersUtil.generateAdmitMemberOptions(memberIds, this.locusUrl);
791
+ const options = {
792
+ sessionLocusUrls,
793
+ ...MembersUtil.generateAdmitMemberOptions(memberIds, this.locusUrl),
794
+ };
711
795
 
712
796
  return this.membersRequest.admitMember(options);
713
797
  }
@@ -719,12 +803,16 @@ export default class Members extends StatelessWebexPlugin {
719
803
  * @public
720
804
  * @memberof Members
721
805
  */
722
- removeMember(memberId) {
806
+ public removeMember(memberId: string) {
723
807
  if (!this.locusUrl) {
724
- return Promise.reject(new ParameterError('The associated locus url for this meeting object must be defined.'));
808
+ return Promise.reject(
809
+ new ParameterError('The associated locus url for this meeting object must be defined.')
810
+ );
725
811
  }
726
812
  if (!memberId) {
727
- return Promise.reject(new ParameterError('The member id must be defined to remove the member.'));
813
+ return Promise.reject(
814
+ new ParameterError('The member id must be defined to remove the member.')
815
+ );
728
816
  }
729
817
  const options = MembersUtil.generateRemoveMemberOptions(memberId, this.locusUrl);
730
818
 
@@ -735,22 +823,69 @@ export default class Members extends StatelessWebexPlugin {
735
823
  * Audio mutes another member in a meeting
736
824
  * @param {String} memberId
737
825
  * @param {boolean} [mute] default true
826
+ * @param {boolean} [isAudio] default true
738
827
  * @returns {Promise}
739
828
  * @public
740
829
  * @memberof Members
741
830
  */
742
- muteMember(memberId, mute = true) {
831
+ public muteMember(memberId: string, mute = true, isAudio = true) {
743
832
  if (!this.locusUrl) {
744
- return Promise.reject(new ParameterError('The associated locus url for this meetings members object must be defined.'));
833
+ return Promise.reject(
834
+ new ParameterError(
835
+ 'The associated locus url for this meetings members object must be defined.'
836
+ )
837
+ );
745
838
  }
746
839
  if (!memberId) {
747
- return Promise.reject(new ParameterError('The member id must be defined to mute the member.'));
840
+ return Promise.reject(
841
+ new ParameterError('The member id must be defined to mute the member.')
842
+ );
748
843
  }
749
- const options = MembersUtil.generateMuteMemberOptions(memberId, mute, this.locusUrl);
844
+ const options = MembersUtil.generateMuteMemberOptions(memberId, mute, this.locusUrl, isAudio);
750
845
 
751
846
  return this.membersRequest.muteMember(options);
752
847
  }
753
848
 
849
+ /**
850
+ * Assign role(s) to a member in the meeting
851
+ * @param {String} memberId
852
+ * @param {[ServerRoleShape]} roles - to assign an array of roles
853
+ * @returns {Promise}
854
+ * @public
855
+ * @memberof Members
856
+ */
857
+ public assignRoles(memberId: string, roles: Array<ServerRoleShape>) {
858
+ if (!this.locusUrl) {
859
+ return Promise.reject(
860
+ new ParameterError(
861
+ 'The associated locus url for this meetings members object must be defined.'
862
+ )
863
+ );
864
+ }
865
+ if (!memberId) {
866
+ return Promise.reject(
867
+ new ParameterError('The member id must be defined to assign the roles to a member.')
868
+ );
869
+ }
870
+ const options = MembersUtil.generateRoleAssignmentMemberOptions(memberId, roles, this.locusUrl);
871
+
872
+ return this.membersRequest.assignRolesMember(options).catch((error: any) => {
873
+ const errorCode = error.body?.errorCode;
874
+ switch (errorCode) {
875
+ case ASSIGN_ROLES_ERROR_CODES.ReclaimHostNotSupportedErrorCode:
876
+ return Promise.reject(new ReclaimHostNotSupportedError());
877
+ case ASSIGN_ROLES_ERROR_CODES.ReclaimHostNotAllowedErrorCode:
878
+ return Promise.reject(new ReclaimHostNotAllowedError());
879
+ case ASSIGN_ROLES_ERROR_CODES.ReclaimHostEmptyWrongKeyErrorCode:
880
+ return Promise.reject(new ReclaimHostEmptyWrongKeyError());
881
+ case ASSIGN_ROLES_ERROR_CODES.ReclaimHostIsHostAlreadyErrorCode:
882
+ return Promise.reject(new ReclaimHostIsHostAlreadyError());
883
+ default:
884
+ return Promise.reject(error);
885
+ }
886
+ });
887
+ }
888
+
754
889
  /**
755
890
  * Raise or lower the hand of a member in a meeting
756
891
  * @param {String} memberId
@@ -759,12 +894,18 @@ export default class Members extends StatelessWebexPlugin {
759
894
  * @public
760
895
  * @memberof Members
761
896
  */
762
- raiseOrLowerHand(memberId, raise = true) {
897
+ public raiseOrLowerHand(memberId: string, raise = true) {
763
898
  if (!this.locusUrl) {
764
- 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
+ );
765
904
  }
766
905
  if (!memberId) {
767
- return Promise.reject(new ParameterError('The member id must be defined to raise/lower the hand of the member.'));
906
+ return Promise.reject(
907
+ new ParameterError('The member id must be defined to raise/lower the hand of the member.')
908
+ );
768
909
  }
769
910
  const options = MembersUtil.generateRaiseHandMemberOptions(memberId, raise, this.locusUrl);
770
911
 
@@ -778,19 +919,29 @@ export default class Members extends StatelessWebexPlugin {
778
919
  * @public
779
920
  * @memberof Members
780
921
  */
781
- lowerAllHands(requestingMemberId) {
922
+ public lowerAllHands(requestingMemberId: string) {
782
923
  if (!this.locusUrl) {
783
- return Promise.reject(new ParameterError('The associated locus url for this meetings members object must be defined.'));
924
+ return Promise.reject(
925
+ new ParameterError(
926
+ 'The associated locus url for this meetings members object must be defined.'
927
+ )
928
+ );
784
929
  }
785
930
  if (!requestingMemberId) {
786
- return Promise.reject(new ParameterError('The requestingMemberId must be defined to lower all hands in a meeting.'));
931
+ return Promise.reject(
932
+ new ParameterError(
933
+ 'The requestingMemberId must be defined to lower all hands in a meeting.'
934
+ )
935
+ );
787
936
  }
788
- const options = MembersUtil.generateLowerAllHandsMemberOptions(requestingMemberId, this.locusUrl);
937
+ const options = MembersUtil.generateLowerAllHandsMemberOptions(
938
+ requestingMemberId,
939
+ this.locusUrl
940
+ );
789
941
 
790
942
  return this.membersRequest.lowerAllHandsMember(options);
791
943
  }
792
944
 
793
-
794
945
  /**
795
946
  * Transfers the host to another member
796
947
  * @param {String} memberId
@@ -799,19 +950,28 @@ export default class Members extends StatelessWebexPlugin {
799
950
  * @public
800
951
  * @memberof Members
801
952
  */
802
- transferHostToMember(memberId, moderator = true) {
953
+ public transferHostToMember(memberId: string, moderator = true) {
803
954
  if (!this.locusUrl) {
804
- return Promise.reject(new ParameterError('The associated locus url for this meetings members object must be defined.'));
955
+ return Promise.reject(
956
+ new ParameterError(
957
+ 'The associated locus url for this meetings members object must be defined.'
958
+ )
959
+ );
805
960
  }
806
961
  if (!memberId) {
807
- return Promise.reject(new ParameterError('The member id must be defined to transfer host to the member.'));
962
+ return Promise.reject(
963
+ new ParameterError('The member id must be defined to transfer host to the member.')
964
+ );
808
965
  }
809
- const options = MembersUtil.generateTransferHostMemberOptions(memberId, moderator, this.locusUrl);
966
+ const options = MembersUtil.generateTransferHostMemberOptions(
967
+ memberId,
968
+ moderator,
969
+ this.locusUrl
970
+ );
810
971
 
811
972
  return this.membersRequest.transferHostToMember(options);
812
973
  }
813
974
 
814
-
815
975
  /**
816
976
  * Sends DTMF tones for the PSTN member of a meeting
817
977
  * @param {String} tones a string of one or more DTMF tones to send
@@ -820,7 +980,8 @@ export default class Members extends StatelessWebexPlugin {
820
980
  * @public
821
981
  * @memberof Members
822
982
  */
823
- sendDialPadKey(tones = '', memberId = '') {
983
+ public sendDialPadKey(tones = '', memberId = '') {
984
+ // @ts-ignore
824
985
  if (!tones && tones !== 0) {
825
986
  return Promise.reject(new ParameterError('DMTF tones must be passed in'));
826
987
  }
@@ -843,7 +1004,11 @@ export default class Members extends StatelessWebexPlugin {
843
1004
  return this.membersRequest.sendDialPadKey(options);
844
1005
  }
845
1006
 
846
- return Promise.reject(new Error('Members:index#sendDialPadKey --> cannot send DTMF, meeting does not have a connection to the "locus" call control service.'));
1007
+ return Promise.reject(
1008
+ new Error(
1009
+ 'Members:index#sendDialPadKey --> cannot send DTMF, meeting does not have a connection to the "locus" call control service.'
1010
+ )
1011
+ );
847
1012
  }
848
1013
 
849
1014
  /** Finds a member that has any device with a csi matching provided value
@@ -852,10 +1017,12 @@ export default class Members extends StatelessWebexPlugin {
852
1017
  * @returns {Member}
853
1018
  */
854
1019
  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)))));
1020
+ return Object.values(this.membersCollection.getAll()).find((member) =>
1021
+ // @ts-ignore
1022
+ member.participant?.devices?.find((device) =>
1023
+ device.csis?.find((memberCsi) => memberCsi === csi)
1024
+ )
1025
+ );
859
1026
  }
860
1027
 
861
1028
  /**
@@ -872,7 +1039,10 @@ export default class Members extends StatelessWebexPlugin {
872
1039
  this.membersCollection.get(memberId)?.participant?.devices?.forEach((device) => {
873
1040
  if (device.mediaSessions) {
874
1041
  const deviceCsis = device.mediaSessions
875
- ?.filter((mediaSession) => mediaSession.mediaType === mediaType && mediaSession.mediaContent === mediaContent)
1042
+ ?.filter(
1043
+ (mediaSession) =>
1044
+ mediaSession.mediaType === mediaType && mediaSession.mediaContent === mediaContent
1045
+ )
876
1046
  .map((mediaSession) => mediaSession.csi);
877
1047
 
878
1048
  csis.push(...deviceCsis);
@@ -881,4 +1051,39 @@ export default class Members extends StatelessWebexPlugin {
881
1051
 
882
1052
  return csis;
883
1053
  }
1054
+
1055
+ /**
1056
+ * Edit display name of participants in a meeting
1057
+ * @param {string} memberId - id of the participant who is receiving request
1058
+ * @param {string} requestingParticipantId - id of the participant who is sending request (optional)
1059
+ * @param {string} [alias] - alias name
1060
+ * @returns {Promise}
1061
+ * @public
1062
+ * @memberof Members
1063
+ */
1064
+ public editDisplayName(memberId: string, requestingParticipantId: string, alias: string) {
1065
+ if (!this.locusUrl) {
1066
+ return Promise.reject(
1067
+ new ParameterError(
1068
+ 'The associated locus url for this meetings members object must be defined.'
1069
+ )
1070
+ );
1071
+ }
1072
+ if (!memberId) {
1073
+ return Promise.reject(
1074
+ new ParameterError('The member id must be defined to edit display name of the member.')
1075
+ );
1076
+ }
1077
+
1078
+ const {locusUrl} = this;
1079
+
1080
+ const options = MembersUtil.generateEditDisplayNameMemberOptions(
1081
+ memberId,
1082
+ requestingParticipantId,
1083
+ alias,
1084
+ locusUrl
1085
+ );
1086
+
1087
+ return this.membersRequest.editDisplayNameMember(options);
1088
+ }
884
1089
  }