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

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