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

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