@webex/plugin-meetings 3.0.0-beta.24 → 3.0.0-beta.241

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 (360) hide show
  1. package/README.md +46 -8
  2. package/dist/annotation/annotation.types.js +7 -0
  3. package/dist/annotation/annotation.types.js.map +1 -0
  4. package/dist/annotation/constants.js +49 -0
  5. package/dist/annotation/constants.js.map +1 -0
  6. package/dist/annotation/index.js +342 -0
  7. package/dist/annotation/index.js.map +1 -0
  8. package/dist/breakouts/breakout.js +114 -14
  9. package/dist/breakouts/breakout.js.map +1 -1
  10. package/dist/breakouts/edit-lock-error.js +52 -0
  11. package/dist/breakouts/edit-lock-error.js.map +1 -0
  12. package/dist/breakouts/events.js +45 -0
  13. package/dist/breakouts/events.js.map +1 -0
  14. package/dist/breakouts/index.js +841 -19
  15. package/dist/breakouts/index.js.map +1 -1
  16. package/dist/breakouts/request.js +78 -0
  17. package/dist/breakouts/request.js.map +1 -0
  18. package/dist/breakouts/utils.js +67 -0
  19. package/dist/breakouts/utils.js.map +1 -0
  20. package/dist/common/errors/webex-errors.js +28 -7
  21. package/dist/common/errors/webex-errors.js.map +1 -1
  22. package/dist/common/logs/logger-proxy.js +1 -1
  23. package/dist/common/logs/logger-proxy.js.map +1 -1
  24. package/dist/common/queue.js +24 -9
  25. package/dist/common/queue.js.map +1 -1
  26. package/dist/config.js +5 -10
  27. package/dist/config.js.map +1 -1
  28. package/dist/constants.js +190 -27
  29. package/dist/constants.js.map +1 -1
  30. package/dist/controls-options-manager/constants.js +14 -0
  31. package/dist/controls-options-manager/constants.js.map +1 -0
  32. package/dist/controls-options-manager/enums.js +27 -0
  33. package/dist/controls-options-manager/enums.js.map +1 -0
  34. package/dist/controls-options-manager/index.js +297 -0
  35. package/dist/controls-options-manager/index.js.map +1 -0
  36. package/dist/controls-options-manager/types.js +7 -0
  37. package/dist/controls-options-manager/types.js.map +1 -0
  38. package/dist/controls-options-manager/util.js +319 -0
  39. package/dist/controls-options-manager/util.js.map +1 -0
  40. package/dist/index.js +106 -1
  41. package/dist/index.js.map +1 -1
  42. package/dist/interpretation/collection.js +23 -0
  43. package/dist/interpretation/collection.js.map +1 -0
  44. package/dist/interpretation/index.js +366 -0
  45. package/dist/interpretation/index.js.map +1 -0
  46. package/dist/interpretation/siLanguage.js +25 -0
  47. package/dist/interpretation/siLanguage.js.map +1 -0
  48. package/dist/locus-info/controlsUtils.js +91 -2
  49. package/dist/locus-info/controlsUtils.js.map +1 -1
  50. package/dist/locus-info/index.js +357 -62
  51. package/dist/locus-info/index.js.map +1 -1
  52. package/dist/locus-info/infoUtils.js +7 -1
  53. package/dist/locus-info/infoUtils.js.map +1 -1
  54. package/dist/locus-info/mediaSharesUtils.js +43 -1
  55. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  56. package/dist/locus-info/parser.js +219 -63
  57. package/dist/locus-info/parser.js.map +1 -1
  58. package/dist/locus-info/selfUtils.js +89 -14
  59. package/dist/locus-info/selfUtils.js.map +1 -1
  60. package/dist/media/index.js +49 -106
  61. package/dist/media/index.js.map +1 -1
  62. package/dist/media/properties.js +29 -90
  63. package/dist/media/properties.js.map +1 -1
  64. package/dist/meeting/in-meeting-actions.js +90 -2
  65. package/dist/meeting/in-meeting-actions.js.map +1 -1
  66. package/dist/meeting/index.js +2593 -2558
  67. package/dist/meeting/index.js.map +1 -1
  68. package/dist/meeting/locusMediaRequest.js +292 -0
  69. package/dist/meeting/locusMediaRequest.js.map +1 -0
  70. package/dist/meeting/muteState.js +228 -123
  71. package/dist/meeting/muteState.js.map +1 -1
  72. package/dist/meeting/request.js +255 -195
  73. package/dist/meeting/request.js.map +1 -1
  74. package/dist/meeting/util.js +601 -417
  75. package/dist/meeting/util.js.map +1 -1
  76. package/dist/meeting-info/index.js +48 -7
  77. package/dist/meeting-info/index.js.map +1 -1
  78. package/dist/meeting-info/meeting-info-v2.js +171 -51
  79. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  80. package/dist/meeting-info/util.js +1 -1
  81. package/dist/meeting-info/util.js.map +1 -1
  82. package/dist/meeting-info/utilv2.js +36 -36
  83. package/dist/meeting-info/utilv2.js.map +1 -1
  84. package/dist/meetings/collection.js +22 -0
  85. package/dist/meetings/collection.js.map +1 -1
  86. package/dist/meetings/index.js +370 -90
  87. package/dist/meetings/index.js.map +1 -1
  88. package/dist/meetings/meetings.types.js +7 -0
  89. package/dist/meetings/meetings.types.js.map +1 -0
  90. package/dist/meetings/request.js +2 -0
  91. package/dist/meetings/request.js.map +1 -1
  92. package/dist/meetings/util.js +88 -1
  93. package/dist/meetings/util.js.map +1 -1
  94. package/dist/member/index.js +49 -0
  95. package/dist/member/index.js.map +1 -1
  96. package/dist/member/types.js +25 -0
  97. package/dist/member/types.js.map +1 -0
  98. package/dist/member/util.js +121 -25
  99. package/dist/member/util.js.map +1 -1
  100. package/dist/members/collection.js +10 -0
  101. package/dist/members/collection.js.map +1 -1
  102. package/dist/members/index.js +86 -5
  103. package/dist/members/index.js.map +1 -1
  104. package/dist/members/request.js +106 -38
  105. package/dist/members/request.js.map +1 -1
  106. package/dist/members/types.js +15 -0
  107. package/dist/members/types.js.map +1 -0
  108. package/dist/members/util.js +316 -233
  109. package/dist/members/util.js.map +1 -1
  110. package/dist/metrics/constants.js +4 -5
  111. package/dist/metrics/constants.js.map +1 -1
  112. package/dist/metrics/index.js +1 -468
  113. package/dist/metrics/index.js.map +1 -1
  114. package/dist/multistream/mediaRequestManager.js +238 -49
  115. package/dist/multistream/mediaRequestManager.js.map +1 -1
  116. package/dist/multistream/receiveSlot.js +49 -16
  117. package/dist/multistream/receiveSlot.js.map +1 -1
  118. package/dist/multistream/receiveSlotManager.js +52 -34
  119. package/dist/multistream/receiveSlotManager.js.map +1 -1
  120. package/dist/multistream/remoteMedia.js +44 -18
  121. package/dist/multistream/remoteMedia.js.map +1 -1
  122. package/dist/multistream/remoteMediaGroup.js +60 -3
  123. package/dist/multistream/remoteMediaGroup.js.map +1 -1
  124. package/dist/multistream/remoteMediaManager.js +213 -62
  125. package/dist/multistream/remoteMediaManager.js.map +1 -1
  126. package/dist/reachability/index.js +81 -30
  127. package/dist/reachability/index.js.map +1 -1
  128. package/dist/reachability/request.js +16 -7
  129. package/dist/reachability/request.js.map +1 -1
  130. package/dist/reconnection-manager/index.js +199 -154
  131. package/dist/reconnection-manager/index.js.map +1 -1
  132. package/dist/recording-controller/index.js +21 -2
  133. package/dist/recording-controller/index.js.map +1 -1
  134. package/dist/recording-controller/util.js +9 -8
  135. package/dist/recording-controller/util.js.map +1 -1
  136. package/dist/roap/index.js +23 -29
  137. package/dist/roap/index.js.map +1 -1
  138. package/dist/roap/request.js +112 -89
  139. package/dist/roap/request.js.map +1 -1
  140. package/dist/roap/turnDiscovery.js +96 -36
  141. package/dist/roap/turnDiscovery.js.map +1 -1
  142. package/dist/rtcMetrics/constants.js +12 -0
  143. package/dist/rtcMetrics/constants.js.map +1 -0
  144. package/dist/rtcMetrics/index.js +117 -0
  145. package/dist/rtcMetrics/index.js.map +1 -0
  146. package/dist/statsAnalyzer/index.js +51 -34
  147. package/dist/statsAnalyzer/index.js.map +1 -1
  148. package/dist/statsAnalyzer/mqaUtil.js +6 -6
  149. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  150. package/dist/types/annotation/annotation.types.d.ts +42 -0
  151. package/dist/types/annotation/constants.d.ts +31 -0
  152. package/dist/types/annotation/index.d.ts +117 -0
  153. package/dist/types/breakouts/edit-lock-error.d.ts +15 -0
  154. package/dist/types/breakouts/events.d.ts +8 -0
  155. package/dist/types/breakouts/request.d.ts +22 -0
  156. package/dist/types/breakouts/utils.d.ts +15 -0
  157. package/dist/types/common/errors/webex-errors.d.ts +13 -1
  158. package/dist/types/common/queue.d.ts +9 -7
  159. package/dist/types/config.d.ts +1 -6
  160. package/dist/types/constants.d.ts +154 -21
  161. package/dist/types/controls-options-manager/constants.d.ts +4 -0
  162. package/dist/types/controls-options-manager/enums.d.ts +15 -0
  163. package/dist/types/controls-options-manager/index.d.ts +136 -0
  164. package/dist/types/controls-options-manager/types.d.ts +43 -0
  165. package/dist/types/controls-options-manager/util.d.ts +1 -0
  166. package/dist/types/index.d.ts +6 -4
  167. package/dist/types/interpretation/collection.d.ts +5 -0
  168. package/dist/types/interpretation/index.d.ts +5 -0
  169. package/dist/types/interpretation/siLanguage.d.ts +5 -0
  170. package/dist/types/locus-info/index.d.ts +57 -4
  171. package/dist/types/locus-info/parser.d.ts +65 -6
  172. package/dist/types/media/index.d.ts +2 -0
  173. package/dist/types/media/properties.d.ts +22 -36
  174. package/dist/types/meeting/in-meeting-actions.d.ts +90 -2
  175. package/dist/types/meeting/index.d.ts +297 -491
  176. package/dist/types/meeting/locusMediaRequest.d.ts +74 -0
  177. package/dist/types/meeting/muteState.d.ts +98 -22
  178. package/dist/types/meeting/request.d.ts +72 -43
  179. package/dist/types/meeting/util.d.ts +101 -1
  180. package/dist/types/meeting-info/index.d.ts +6 -1
  181. package/dist/types/meeting-info/meeting-info-v2.d.ts +30 -1
  182. package/dist/types/meetings/collection.d.ts +8 -0
  183. package/dist/types/meetings/index.d.ts +76 -12
  184. package/dist/types/meetings/meetings.types.d.ts +4 -0
  185. package/dist/types/member/index.d.ts +13 -0
  186. package/dist/types/member/types.d.ts +32 -0
  187. package/dist/types/members/collection.d.ts +5 -0
  188. package/dist/types/members/index.d.ts +35 -2
  189. package/dist/types/members/request.d.ts +73 -9
  190. package/dist/types/members/types.d.ts +24 -0
  191. package/dist/types/members/util.d.ts +209 -1
  192. package/dist/types/metrics/constants.d.ts +3 -4
  193. package/dist/types/metrics/index.d.ts +4 -119
  194. package/dist/types/multistream/mediaRequestManager.d.ts +73 -5
  195. package/dist/types/multistream/receiveSlot.d.ts +16 -12
  196. package/dist/types/multistream/receiveSlotManager.d.ts +19 -4
  197. package/dist/types/multistream/remoteMedia.d.ts +8 -29
  198. package/dist/types/multistream/remoteMediaGroup.d.ts +0 -9
  199. package/dist/types/multistream/remoteMediaManager.d.ts +46 -2
  200. package/dist/types/reachability/index.d.ts +15 -3
  201. package/dist/types/reachability/request.d.ts +7 -3
  202. package/dist/types/reconnection-manager/index.d.ts +9 -0
  203. package/dist/types/recording-controller/index.d.ts +15 -1
  204. package/dist/types/recording-controller/util.d.ts +5 -4
  205. package/dist/types/roap/request.d.ts +15 -11
  206. package/dist/types/roap/turnDiscovery.d.ts +18 -1
  207. package/dist/types/rtcMetrics/constants.d.ts +4 -0
  208. package/dist/types/rtcMetrics/index.d.ts +47 -0
  209. package/dist/types/statsAnalyzer/index.d.ts +6 -1
  210. package/package.json +23 -20
  211. package/src/annotation/annotation.types.ts +50 -0
  212. package/src/annotation/constants.ts +36 -0
  213. package/src/annotation/index.ts +328 -0
  214. package/src/breakouts/README.md +44 -14
  215. package/src/breakouts/breakout.ts +87 -9
  216. package/src/breakouts/edit-lock-error.ts +25 -0
  217. package/src/breakouts/events.ts +56 -0
  218. package/src/breakouts/index.ts +710 -10
  219. package/src/breakouts/request.ts +55 -0
  220. package/src/breakouts/utils.ts +57 -0
  221. package/src/common/errors/webex-errors.ts +27 -2
  222. package/src/common/logs/logger-proxy.ts +1 -1
  223. package/src/common/queue.ts +22 -8
  224. package/src/config.ts +4 -9
  225. package/src/constants.ts +175 -18
  226. package/src/controls-options-manager/constants.ts +5 -0
  227. package/src/controls-options-manager/enums.ts +18 -0
  228. package/src/controls-options-manager/index.ts +278 -0
  229. package/src/controls-options-manager/types.ts +59 -0
  230. package/src/controls-options-manager/util.ts +300 -0
  231. package/src/index.ts +39 -0
  232. package/src/interpretation/README.md +60 -0
  233. package/src/interpretation/collection.ts +19 -0
  234. package/src/interpretation/index.ts +332 -0
  235. package/src/interpretation/siLanguage.ts +18 -0
  236. package/src/locus-info/controlsUtils.ts +108 -0
  237. package/src/locus-info/index.ts +381 -59
  238. package/src/locus-info/infoUtils.ts +10 -2
  239. package/src/locus-info/mediaSharesUtils.ts +48 -0
  240. package/src/locus-info/parser.ts +224 -39
  241. package/src/locus-info/selfUtils.ts +81 -5
  242. package/src/media/index.ts +89 -109
  243. package/src/media/properties.ts +48 -87
  244. package/src/meeting/in-meeting-actions.ts +179 -3
  245. package/src/meeting/index.ts +2086 -2151
  246. package/src/meeting/locusMediaRequest.ts +313 -0
  247. package/src/meeting/muteState.ts +227 -130
  248. package/src/meeting/request.ts +171 -120
  249. package/src/meeting/util.ts +588 -395
  250. package/src/meeting-info/index.ts +54 -8
  251. package/src/meeting-info/meeting-info-v2.ts +148 -14
  252. package/src/meeting-info/util.ts +1 -1
  253. package/src/meeting-info/utilv2.ts +23 -23
  254. package/src/meetings/collection.ts +20 -0
  255. package/src/meetings/index.ts +407 -108
  256. package/src/meetings/meetings.types.ts +12 -0
  257. package/src/meetings/request.ts +2 -0
  258. package/src/meetings/util.ts +103 -4
  259. package/src/member/index.ts +49 -0
  260. package/src/member/types.ts +38 -0
  261. package/src/member/util.ts +127 -25
  262. package/src/members/collection.ts +8 -0
  263. package/src/members/index.ts +107 -6
  264. package/src/members/request.ts +97 -17
  265. package/src/members/types.ts +28 -0
  266. package/src/members/util.ts +319 -240
  267. package/src/metrics/constants.ts +3 -4
  268. package/src/metrics/index.ts +1 -490
  269. package/src/multistream/mediaRequestManager.ts +289 -79
  270. package/src/multistream/receiveSlot.ts +55 -18
  271. package/src/multistream/receiveSlotManager.ts +46 -24
  272. package/src/multistream/remoteMedia.ts +27 -2
  273. package/src/multistream/remoteMediaGroup.ts +59 -0
  274. package/src/multistream/remoteMediaManager.ts +150 -32
  275. package/src/reachability/index.ts +69 -17
  276. package/src/reachability/request.ts +16 -7
  277. package/src/reconnection-manager/index.ts +81 -54
  278. package/src/recording-controller/index.ts +20 -3
  279. package/src/recording-controller/util.ts +26 -9
  280. package/src/roap/index.ts +23 -30
  281. package/src/roap/request.ts +104 -95
  282. package/src/roap/turnDiscovery.ts +50 -25
  283. package/src/rtcMetrics/constants.ts +3 -0
  284. package/src/rtcMetrics/index.ts +100 -0
  285. package/src/statsAnalyzer/index.ts +73 -35
  286. package/src/statsAnalyzer/mqaUtil.ts +8 -10
  287. package/test/integration/spec/converged-space-meetings.js +233 -0
  288. package/test/integration/spec/journey.js +336 -259
  289. package/test/integration/spec/space-meeting.js +76 -3
  290. package/test/unit/spec/annotation/index.ts +418 -0
  291. package/test/unit/spec/breakouts/breakout.ts +142 -24
  292. package/test/unit/spec/breakouts/edit-lock-error.ts +30 -0
  293. package/test/unit/spec/breakouts/events.ts +89 -0
  294. package/test/unit/spec/breakouts/index.ts +1545 -48
  295. package/test/unit/spec/breakouts/request.ts +104 -0
  296. package/test/unit/spec/breakouts/utils.js +72 -0
  297. package/test/unit/spec/common/queue.js +31 -2
  298. package/test/unit/spec/controls-options-manager/index.js +287 -0
  299. package/test/unit/spec/controls-options-manager/util.js +582 -0
  300. package/test/unit/spec/fixture/locus.js +1 -0
  301. package/test/unit/spec/interpretation/collection.ts +15 -0
  302. package/test/unit/spec/interpretation/index.ts +589 -0
  303. package/test/unit/spec/interpretation/siLanguage.ts +28 -0
  304. package/test/unit/spec/locus-info/controlsUtils.js +316 -43
  305. package/test/unit/spec/locus-info/index.js +1169 -36
  306. package/test/unit/spec/locus-info/infoUtils.js +37 -15
  307. package/test/unit/spec/locus-info/mediaSharesUtils.ts +22 -0
  308. package/test/unit/spec/locus-info/parser.js +62 -22
  309. package/test/unit/spec/locus-info/selfConstant.js +27 -4
  310. package/test/unit/spec/locus-info/selfUtils.js +208 -17
  311. package/test/unit/spec/media/index.ts +138 -28
  312. package/test/unit/spec/meeting/in-meeting-actions.ts +89 -3
  313. package/test/unit/spec/meeting/index.js +3514 -1746
  314. package/test/unit/spec/meeting/locusMediaRequest.ts +442 -0
  315. package/test/unit/spec/meeting/muteState.js +370 -208
  316. package/test/unit/spec/meeting/request.js +440 -45
  317. package/test/unit/spec/meeting/utils.js +671 -54
  318. package/test/unit/spec/meeting-info/index.js +181 -0
  319. package/test/unit/spec/meeting-info/meetinginfov2.js +383 -5
  320. package/test/unit/spec/meeting-info/utilv2.js +21 -0
  321. package/test/unit/spec/meetings/collection.js +14 -0
  322. package/test/unit/spec/meetings/index.js +939 -150
  323. package/test/unit/spec/meetings/utils.js +206 -2
  324. package/test/unit/spec/member/index.js +58 -4
  325. package/test/unit/spec/member/util.js +479 -35
  326. package/test/unit/spec/members/index.js +319 -1
  327. package/test/unit/spec/members/request.js +206 -27
  328. package/test/unit/spec/members/utils.js +184 -0
  329. package/test/unit/spec/metrics/index.js +1 -50
  330. package/test/unit/spec/multistream/mediaRequestManager.ts +803 -162
  331. package/test/unit/spec/multistream/receiveSlot.ts +72 -13
  332. package/test/unit/spec/multistream/receiveSlotManager.ts +58 -28
  333. package/test/unit/spec/multistream/remoteMedia.ts +30 -0
  334. package/test/unit/spec/multistream/remoteMediaGroup.ts +266 -0
  335. package/test/unit/spec/multistream/remoteMediaManager.ts +326 -0
  336. package/test/unit/spec/reachability/index.ts +185 -7
  337. package/test/unit/spec/reachability/request.js +68 -0
  338. package/test/unit/spec/reconnection-manager/index.js +80 -6
  339. package/test/unit/spec/recording-controller/index.js +294 -218
  340. package/test/unit/spec/recording-controller/util.js +223 -96
  341. package/test/unit/spec/roap/index.ts +31 -51
  342. package/test/unit/spec/roap/request.ts +202 -85
  343. package/test/unit/spec/roap/turnDiscovery.ts +45 -10
  344. package/test/unit/spec/rtcMetrics/index.ts +68 -0
  345. package/test/unit/spec/stats-analyzer/index.js +29 -2
  346. package/test/utils/constants.js +9 -0
  347. package/test/utils/integrationTestUtils.js +46 -0
  348. package/test/utils/testUtils.js +0 -45
  349. package/test/utils/webex-config.js +4 -0
  350. package/test/utils/webex-test-users.js +6 -3
  351. package/dist/meeting/effectsState.js +0 -262
  352. package/dist/meeting/effectsState.js.map +0 -1
  353. package/dist/metrics/config.js +0 -299
  354. package/dist/metrics/config.js.map +0 -1
  355. package/dist/types/meeting/effectsState.d.ts +0 -42
  356. package/dist/types/metrics/config.d.ts +0 -178
  357. package/src/index.js +0 -16
  358. package/src/meeting/effectsState.ts +0 -211
  359. package/src/metrics/config.ts +0 -495
  360. package/test/unit/spec/meeting/effectsState.js +0 -285
@@ -1,8 +1,11 @@
1
1
  /// <reference types="node" />
2
2
  import { StatelessWebexPlugin } from '@webex/webex-core';
3
+ import { ClientEvent, ClientEventLeaveReason } from '@webex/internal-plugin-metrics';
4
+ import { LocalTrack, LocalCameraTrack, LocalDisplayTrack, LocalSystemAudioTrack, LocalMicrophoneTrack, TrackMuteEvent } from '@webex/media-helpers';
3
5
  import { StatsAnalyzer } from '../statsAnalyzer';
4
6
  import NetworkQualityMonitor from '../networkQualityMonitor';
5
7
  import Roap from '../roap/index';
8
+ import { type BundlePolicy } from '../media';
6
9
  import MediaProperties from '../media/properties';
7
10
  import ReconnectionManager from '../reconnection-manager';
8
11
  import MeetingRequest from './request';
@@ -10,17 +13,39 @@ import Members from '../members/index';
10
13
  import Transcription from '../transcription';
11
14
  import { ReceiveSlotManager } from '../multistream/receiveSlotManager';
12
15
  import { MediaRequestManager } from '../multistream/mediaRequestManager';
13
- import { RemoteMediaManager } from '../multistream/remoteMediaManager';
16
+ import { Configuration as RemoteMediaManagerConfiguration, RemoteMediaManager } from '../multistream/remoteMediaManager';
14
17
  import { ReactionServerType, SkinToneType } from '../reactions/reactions.type';
15
18
  import InMeetingActions from './in-meeting-actions';
16
19
  import RecordingController from '../recording-controller';
20
+ import ControlsOptionsManager from '../controls-options-manager';
21
+ import { LocusMediaRequest } from './locusMediaRequest';
22
+ export type LocalTracks = {
23
+ microphone?: LocalMicrophoneTrack;
24
+ camera?: LocalCameraTrack;
25
+ screenShare?: {
26
+ audio?: LocalSystemAudioTrack;
27
+ video?: LocalDisplayTrack;
28
+ };
29
+ };
30
+ export type AddMediaOptions = {
31
+ localTracks?: LocalTracks;
32
+ audioEnabled?: boolean;
33
+ videoEnabled?: boolean;
34
+ receiveShare?: boolean;
35
+ remoteMediaManagerConfig?: RemoteMediaManagerConfiguration;
36
+ bundlePolicy?: BundlePolicy;
37
+ allowMediaInLobby?: boolean;
38
+ };
17
39
  export declare const MEDIA_UPDATE_TYPE: {
18
- ALL: string;
19
- AUDIO: string;
20
- VIDEO: string;
21
- SHARE: string;
22
- LAMBDA: string;
40
+ TRANSCODED_MEDIA_CONNECTION: string;
41
+ SHARE_FLOOR_REQUEST: string;
42
+ UPDATE_MEDIA: string;
23
43
  };
44
+ export declare enum ScreenShareFloorStatus {
45
+ PENDING = "floor_request_pending",
46
+ GRANTED = "floor_request_granted",
47
+ RELEASED = "floor_released"
48
+ }
24
49
  /**
25
50
  * MediaDirection
26
51
  * @typedef {Object} MediaDirection
@@ -32,15 +57,6 @@ export declare const MEDIA_UPDATE_TYPE: {
32
57
  * @property {boolean} receiveShare
33
58
  * @property {boolean} isSharing
34
59
  */
35
- /**
36
- * AudioVideo
37
- * @typedef {Object} AudioVideo
38
- * @property {Object} audio
39
- * @property {String} audio.deviceId
40
- * @property {Object} video
41
- * @property {String} video.deviceId
42
- * @property {String} video.localVideoQuality // [240p, 360p, 480p, 720p, 1080p]
43
- */
44
60
  /**
45
61
  * SharePreferences
46
62
  * @typedef {Object} SharePreferences
@@ -54,18 +70,10 @@ export declare const MEDIA_UPDATE_TYPE: {
54
70
  * @property {String} [pin]
55
71
  * @property {Boolean} [moderator]
56
72
  * @property {String|Object} [meetingQuality]
57
- * @property {String} [meetingQuality.local]
58
73
  * @property {String} [meetingQuality.remote]
59
74
  * @property {Boolean} [rejoin]
60
75
  * @property {Boolean} [enableMultistream]
61
76
  */
62
- /**
63
- * SendOptions
64
- * @typedef {Object} SendOptions
65
- * @property {Boolean} sendAudio
66
- * @property {Boolean} sendVideo
67
- * @property {Boolean} sendShare
68
- */
69
77
  /**
70
78
  * Recording
71
79
  * @typedef {Object} Recording
@@ -147,7 +155,11 @@ export declare const MEDIA_UPDATE_TYPE: {
147
155
  * @instance
148
156
  * @type {Object}
149
157
  * @property {Boolean} memberId id of the meeting member that started screen share
158
+ * @property {String} url of this content share
159
+ * @property {String} shareInstanceId of this content share
160
+ * @property {Object} annotation Info of this content share
150
161
  * @memberof Meeting
162
+ *
151
163
  */
152
164
  /**
153
165
  * Meeting Stopped Sharing Remote Event
@@ -284,12 +296,13 @@ export default class Meeting extends StatelessWebexPlugin {
284
296
  attrs: any;
285
297
  audio: any;
286
298
  breakouts: any;
299
+ simultaneousInterpretation: any;
300
+ annotation: any;
287
301
  conversationUrl: string;
288
302
  correlationId: string;
289
303
  destination: string;
290
304
  destinationType: string;
291
305
  deviceUrl: string;
292
- effects: any;
293
306
  hostId: string;
294
307
  id: string;
295
308
  isMultistream: boolean;
@@ -297,7 +310,7 @@ export default class Meeting extends StatelessWebexPlugin {
297
310
  mediaConnections: any[];
298
311
  mediaId?: string;
299
312
  meetingFiniteStateMachine: any;
300
- meetingInfo: object;
313
+ meetingInfo: any;
301
314
  meetingRequest: MeetingRequest;
302
315
  members: Members;
303
316
  options: object;
@@ -309,11 +322,13 @@ export default class Meeting extends StatelessWebexPlugin {
309
322
  resource: string;
310
323
  roap: Roap;
311
324
  roapSeq: number;
325
+ selfUrl?: string;
312
326
  sipUri: string;
313
327
  type: string;
314
328
  userId: string;
315
329
  video: any;
316
330
  callEvents: any[];
331
+ datachannelUrl: string;
317
332
  deferJoin: Promise<any>;
318
333
  dialInDeviceStatus: string;
319
334
  dialInUrl: string;
@@ -326,10 +341,10 @@ export default class Meeting extends StatelessWebexPlugin {
326
341
  inMeetingActions: InMeetingActions;
327
342
  isLocalShareLive: boolean;
328
343
  isRoapInProgress: boolean;
329
- isSharing: boolean;
330
344
  keepAliveTimerId: NodeJS.Timeout;
331
345
  lastVideoLayoutInfo: any;
332
346
  locusInfo: any;
347
+ locusMediaRequest?: LocusMediaRequest;
333
348
  mediaProperties: MediaProperties;
334
349
  mediaRequestManagers: {
335
350
  audio: MediaRequestManager;
@@ -338,6 +353,7 @@ export default class Meeting extends StatelessWebexPlugin {
338
353
  screenShareVideo: MediaRequestManager;
339
354
  };
340
355
  meetingInfoFailureReason: string;
356
+ meetingInfoFailureCode?: number;
341
357
  networkQualityMonitor: NetworkQualityMonitor;
342
358
  networkStatus: string;
343
359
  passwordStatus: string;
@@ -345,18 +361,22 @@ export default class Meeting extends StatelessWebexPlugin {
345
361
  recording: any;
346
362
  remoteMediaManager: RemoteMediaManager | null;
347
363
  recordingController: RecordingController;
364
+ controlsOptionsManager: ControlsOptionsManager;
348
365
  requiredCaptcha: any;
349
366
  receiveSlotManager: ReceiveSlotManager;
367
+ selfUserPolicies: any;
350
368
  shareStatus: string;
369
+ screenShareFloorState: ScreenShareFloorStatus;
351
370
  statsAnalyzer: StatsAnalyzer;
352
371
  transcription: Transcription;
353
372
  updateMediaConnections: (mediaConnections: any[]) => void;
354
- endCallInitiateJoinReq: any;
373
+ userDisplayHints: any;
374
+ endCallInitJoinReq: any;
355
375
  endJoinReqResp: any;
356
376
  endLocalSDPGenRemoteSDPRecvDelay: any;
357
377
  joinedWith: any;
358
378
  locusId: any;
359
- startCallInitiateJoinReq: any;
379
+ startCallInitJoinReq: any;
360
380
  startJoinReqResp: any;
361
381
  startLocalSDPGenRemoteSDPRecvDelay: any;
362
382
  wirelessShare: any;
@@ -369,7 +389,13 @@ export default class Meeting extends StatelessWebexPlugin {
369
389
  resourceUrl: string;
370
390
  selfId: string;
371
391
  state: any;
392
+ localAudioTrackMuteStateHandler: (event: TrackMuteEvent) => void;
393
+ localVideoTrackMuteStateHandler: (event: TrackMuteEvent) => void;
394
+ underlyingLocalTrackChangeHandler: () => void;
395
+ roles: any[];
396
+ environment: string;
372
397
  namespace: string;
398
+ allowMediaInLobby: boolean;
373
399
  /**
374
400
  * @param {Object} attrs
375
401
  * @param {Object} options
@@ -377,6 +403,18 @@ export default class Meeting extends StatelessWebexPlugin {
377
403
  * @memberof Meeting
378
404
  */
379
405
  constructor(attrs: any, options: object);
406
+ /**
407
+ * returns meeting is joined
408
+ * @private
409
+ * @memberof Meeting
410
+ * @returns {Boolean}
411
+ */
412
+ private isJoined;
413
+ /**
414
+ * Returns whether this meeting is a Locus CALL
415
+ * @returns {Boolean}
416
+ */
417
+ isLocusCall(): boolean;
380
418
  /**
381
419
  * Fetches meeting information.
382
420
  * @param {Object} options
@@ -386,9 +424,10 @@ export default class Meeting extends StatelessWebexPlugin {
386
424
  * @memberof Meeting
387
425
  * @returns {Promise}
388
426
  */
389
- fetchMeetingInfo({ password, captchaCode, }: {
427
+ fetchMeetingInfo({ password, captchaCode, extraParams, }: {
390
428
  password?: string;
391
429
  captchaCode?: string;
430
+ extraParams?: Record<string, any>;
392
431
  }): Promise<void>;
393
432
  /**
394
433
  * Checks if the supplied password/host key is correct. It returns a promise with information whether the
@@ -416,6 +455,14 @@ export default class Meeting extends StatelessWebexPlugin {
416
455
  * @returns {Promise}
417
456
  */
418
457
  refreshCaptcha(): any;
458
+ /**
459
+ * Posts metrics event for this meeting. Allows the app to send Call Analyzer events.
460
+ * @param {String} eventName - Call Analyzer event
461
+ * @public
462
+ * @memberof Meeting
463
+ * @returns {Promise}
464
+ */
465
+ postMetrics(eventName: ClientEvent['name']): void;
419
466
  /**
420
467
  * Proxy function for all the listener set ups
421
468
  * @returns {undefined}
@@ -430,6 +477,13 @@ export default class Meeting extends StatelessWebexPlugin {
430
477
  * @memberof Meeting
431
478
  */
432
479
  setUpBreakoutsListener(): void;
480
+ /**
481
+ * Set up the listeners for interpretation
482
+ * @returns {undefined}
483
+ * @private
484
+ * @memberof Meeting
485
+ */
486
+ private setUpInterpretationListener;
433
487
  /**
434
488
  * Set up the locus info listener for meetings disconnected due to inactivity
435
489
  * @returns {undefined}
@@ -451,47 +505,6 @@ export default class Meeting extends StatelessWebexPlugin {
451
505
  * @memberof Meeting
452
506
  */
453
507
  private setUpLocusFullStateListener;
454
- /**
455
- * get the metrics payload pre
456
- * @param {Object} options
457
- * @param {String} options.event
458
- * @param {String} options.trackingId
459
- * @param {Object} options.locus
460
- * @param {Array} options.mediaConnections
461
- * @param {Object} options.errors
462
- * @returns {Object}
463
- * @memberof Meeting
464
- */
465
- getAnalyzerMetricsPrePayload(options: {
466
- event: string;
467
- trackingId: string;
468
- locus: object;
469
- mediaConnections: Array<any>;
470
- errors: object;
471
- } | any): {};
472
- /**
473
- * Send the metrics to call-analyzer dashboard
474
- * @param {Object} options
475
- * @param {String} options.event
476
- * @param {String} options.trackingId
477
- * @param {Object} options.locus
478
- * @param {Object} options.errors
479
- * @returns {Promise}
480
- * @private
481
- * @memberof Meeting
482
- */
483
- private sendCallAnalyzerMetrics;
484
- /**
485
- * Send the metrics to Media Quality Analyzer dashboard
486
- * @param {Object} options
487
- * @param {String} options.event
488
- * @param {String} options.trackingId
489
- * @param {Object} options.locus
490
- * @returns {Promise}
491
- * @private
492
- * @memberof Meeting
493
- */
494
- private sendMediaQualityAnalyzerMetrics;
495
508
  /**
496
509
  * sets the network status on meeting object
497
510
  * @param {String} networkStatus
@@ -554,6 +567,13 @@ export default class Meeting extends StatelessWebexPlugin {
554
567
  * @memberof Meeting
555
568
  */
556
569
  private setupLocusControlsListener;
570
+ /**
571
+ * Trigger annotation info update event
572
+ @returns {undefined}
573
+ @param {object} contentShare
574
+ @param {object} previousContentShare
575
+ */
576
+ private triggerAnnotationInfoEvent;
557
577
  /**
558
578
  * Set up the locus info media shares listener
559
579
  * update content and whiteboard sharing id value for members, and updates the member
@@ -652,13 +672,23 @@ export default class Meeting extends StatelessWebexPlugin {
652
672
  phoneNumber: string;
653
673
  }): any;
654
674
  /**
655
- * Admit the guest(s) to the call once they are waiting
675
+ * Admit the guest(s) to the call once they are waiting.
676
+ * If the host/cohost is in a breakout session, the locus url
677
+ * of the session must be provided as the authorizingLocusUrl.
678
+ * Regardless of host/cohost location, the locus Id (lid) in
679
+ * the path should be the locus Id of the main, which means the
680
+ * locus url of the api call must be from the main session.
681
+ * If these loucs urls are not provided, the function will do the check.
656
682
  * @param {Array} memberIds
683
+ * @param {Object} sessionLocusUrls: {authorizingLocusUrl, mainLocusUrl}
657
684
  * @returns {Promise} see #members.admitMembers
658
685
  * @public
659
686
  * @memberof Meeting
660
687
  */
661
- admit(memberIds: Array<any>): any;
688
+ admit(memberIds: Array<any>, sessionLocusUrls?: {
689
+ authorizingLocusUrl: string;
690
+ mainLocusUrl: string;
691
+ }): any;
662
692
  /**
663
693
  * Remove the member from the meeting, boot them
664
694
  * @param {String} memberId
@@ -692,48 +722,6 @@ export default class Meeting extends StatelessWebexPlugin {
692
722
  * @memberof Meeting
693
723
  */
694
724
  getMembers(): Members;
695
- /**
696
- * Truthy when a meeting has an audio connection established
697
- * @returns {Boolean} true if meeting audio is connected otherwise false
698
- * @public
699
- * @memberof Meeting
700
- */
701
- isAudioConnected(): boolean;
702
- /**
703
- * Convenience function to tell whether a meeting is muted
704
- * @returns {Boolean} if meeting audio muted or not
705
- * @public
706
- * @memberof Meeting
707
- */
708
- isAudioMuted(): any;
709
- /**
710
- * Convenience function to tell if the end user last changed the audio state
711
- * @returns {Boolean} if audio was manipulated by the end user
712
- * @public
713
- * @memberof Meeting
714
- */
715
- isAudioSelf(): any;
716
- /**
717
- * Truthy when a meeting has a video connection established
718
- * @returns {Boolean} true if meeting video connected otherwise false
719
- * @public
720
- * @memberof Meeting
721
- */
722
- isVideoConnected(): boolean;
723
- /**
724
- * Convenience function to tell whether video is muted
725
- * @returns {Boolean} if meeting video is muted or not
726
- * @public
727
- * @memberof Meeting
728
- */
729
- isVideoMuted(): any;
730
- /**
731
- * Convenience function to tell whether the end user changed the video state
732
- * @returns {Boolean} if meeting video is muted or not
733
- * @public
734
- * @memberof Meeting
735
- */
736
- isVideoSelf(): any;
737
725
  /**
738
726
  * Sets the meeting info on the class instance
739
727
  * @param {Object} meetingInfo
@@ -756,16 +744,23 @@ export default class Meeting extends StatelessWebexPlugin {
756
744
  };
757
745
  } | any, destination?: object | string | null): void;
758
746
  /**
759
- * Sets the first locus info on the class instance
760
- * @param {Object} locus
761
- * @param {String} locus.url
762
- * @param {Array} locus.participants
763
- * @param {Object} locus.self
747
+ * Indicates whether policy can be applied
748
+ * @returns {boolean}
749
+ */
750
+ private arePolicyRestrictionsSupported;
751
+ /**
752
+ * Updates the meeting actions (display hints), depends on locus display hints, user policy and app api info
764
753
  * @returns {undefined}
765
754
  * @private
766
755
  * @memberof Meeting
767
756
  */
768
- private parseLocus;
757
+ private updateMeetingActions;
758
+ /**
759
+ * Sets the self user policies based on the contents of the permission token
760
+ * @param {String} permissionToken
761
+ * @returns {void}
762
+ */
763
+ setSelfUserPolicies(permissionToken: string): void;
769
764
  /**
770
765
  * Sets the sip uri on the class instance
771
766
  * uses meeting info as precedence
@@ -788,7 +783,13 @@ export default class Meeting extends StatelessWebexPlugin {
788
783
  * @private
789
784
  * @memberof Meeting
790
785
  */
791
- private setLocus;
786
+ setLocus(locus: {
787
+ mediaConnections: Array<any>;
788
+ locusUrl: string;
789
+ locusId: string;
790
+ mediaId: string;
791
+ host: object;
792
+ } | any): void;
792
793
  /**
793
794
  * Upload logs for the current meeting
794
795
  * @param {object} options file name and function name
@@ -797,15 +798,6 @@ export default class Meeting extends StatelessWebexPlugin {
797
798
  * @memberof Meeting
798
799
  */
799
800
  uploadLogs(options?: object): void;
800
- /**
801
- * Removes remote audio and video stream on the class instance and triggers an event
802
- * to developers
803
- * @returns {undefined}
804
- * @public
805
- * @memberof Meeting
806
- * @deprecated after v1.89.3
807
- */
808
- unsetRemoteStream(): void;
809
801
  /**
810
802
  * Removes remote audio, video and share tracks from class instance's mediaProperties
811
803
  * @returns {undefined}
@@ -828,76 +820,37 @@ export default class Meeting extends StatelessWebexPlugin {
828
820
  */
829
821
  closeRemoteTracks(): Promise<[any, any, any]>;
830
822
  /**
831
- * Emits the 'media:ready' event with a local stream that consists of 1 local audio and 1 local video track
832
- * @returns {undefined}
833
- * @private
834
- * @memberof Meeting
835
- */
836
- private sendLocalMediaReadyEvent;
837
- /**
838
- * Sets the local audio track on the class and emits an event to the developer
839
- * @param {MediaStreamTrack} audioTrack
840
- * @param {Boolean} emitEvent if true, a media ready event is emitted to the developer
841
- * @returns {undefined}
842
- * @private
843
- * @memberof Meeting
823
+ * Stores the reference to a new microphone track, sets up the required event listeners
824
+ * on it, cleans up previous track, etc.
825
+ *
826
+ * @param {LocalMicrophoneTrack | null} localTrack local microphone track
827
+ * @returns {Promise<void>}
844
828
  */
845
829
  private setLocalAudioTrack;
846
830
  /**
847
- * Sets the local video track on the class and emits an event to the developer
848
- * @param {MediaStreamTrack} videoTrack
849
- * @param {Boolean} emitEvent if true, a media ready event is emitted to the developer
850
- * @returns {undefined}
851
- * @private
852
- * @memberof Meeting
831
+ * Stores the reference to a new camera track, sets up the required event listeners
832
+ * on it, cleans up previous track, etc.
833
+ *
834
+ * @param {LocalCameraTrack | null} localTrack local camera track
835
+ * @returns {Promise<void>}
853
836
  */
854
837
  private setLocalVideoTrack;
855
838
  /**
856
- * Sets the local media stream on the class and emits an event to the developer
857
- * @param {Stream} localStream the local media stream
858
- * @returns {undefined}
859
- * @public
860
- * @memberof Meeting
861
- */
862
- setLocalTracks(localStream: any): void;
863
- /**
864
- * Sets the local media stream on the class and emits an event to the developer
865
- * @param {MediaStreamTrack} localShareTrack the local media stream
866
- * @returns {undefined}
867
- * @public
868
- * @memberof Meeting
869
- */
870
- setLocalShareTrack(localShareTrack: MediaStreamTrack): void;
871
- /**
872
- * Closes the local stream from the class and emits an event to the developer
873
- * @returns {undefined}
874
- * @event media:stopped
875
- * @public
876
- * @memberof Meeting
877
- */
878
- closeLocalStream(): any;
879
- /**
880
- * Closes the local stream from the class and emits an event to the developer
881
- * @returns {undefined}
882
- * @event media:stopped
883
- * @public
884
- * @memberof Meeting
885
- */
886
- closeLocalShare(): any;
887
- /**
888
- * Removes the local stream from the class and emits an event to the developer
889
- * @returns {undefined}
890
- * @public
891
- * @memberof Meeting
839
+ * Stores the reference to a new screen share video track, sets up the required event listeners
840
+ * on it, cleans up previous track, etc.
841
+ *
842
+ * @param {LocalDisplayTrack | undefined} localDisplayTrack local camera track
843
+ * @returns {Promise<void>}
892
844
  */
893
- unsetLocalVideoTrack(): void;
845
+ private setLocalShareVideoTrack;
894
846
  /**
895
- * Removes the local share from the class and emits an event to the developer
896
- * @returns {undefined}
897
- * @public
898
- * @memberof Meeting
847
+ * Stores the reference to a new screen share audio track, sets up the required event listeners
848
+ * on it, cleans up previous track, etc.
849
+ *
850
+ * @param {LocalSystemAudioTrack | undefined} localSystemAudioTrack local system audio track
851
+ * @returns {Promise<void>}
899
852
  */
900
- unsetLocalShareTrack(): void;
853
+ private setLocalShareAudioTrack;
901
854
  /**
902
855
  * sets up listner for mercury event
903
856
  * @returns {undefined}
@@ -930,6 +883,13 @@ export default class Meeting extends StatelessWebexPlugin {
930
883
  * @memberof Meeting
931
884
  */
932
885
  private setCorrelationId;
886
+ /**
887
+ * Enqueue request for screenshare floor and set the status to pending
888
+ * @returns {Promise}
889
+ * @private
890
+ * @memberof Meeting
891
+ */
892
+ private enqueueScreenShareFloorRequest;
933
893
  /**
934
894
  * Mute the audio for a meeting
935
895
  * @returns {Promise} resolves the data from muting audio {mute, self} or rejects if there is no audio set
@@ -962,31 +922,21 @@ export default class Meeting extends StatelessWebexPlugin {
962
922
  * Shorthand function to join AND set up media
963
923
  * @param {Object} options - options to join with media
964
924
  * @param {JoinOptions} [options.joinOptions] - see #join()
965
- * @param {MediaDirection} options.mediaSettings - see #addMedia()
966
- * @param {AudioVideo} [options.audioVideoOptions] - see #getMediaStreams()
967
- * @returns {Promise} -- {join: see join(), media: see addMedia(), local: see getMediaStreams()}
925
+ * @param {AddMediaOptions} [options.mediaOptions] - see #addMedia()
926
+ * @returns {Promise} -- {join: see join(), media: see addMedia()}
968
927
  * @public
969
928
  * @memberof Meeting
970
929
  * @example
971
930
  * joinWithMedia({
972
931
  * joinOptions: {resourceId: 'resourceId' },
973
- * mediaSettings: {
974
- * sendAudio: true,
975
- * sendVideo: true,
976
- * sendShare: false,
977
- * receiveVideo:true,
978
- * receiveAudio: true,
979
- * receiveShare: true
980
- * }
981
- * audioVideoOptions: {
982
- * audio: 'audioDeviceId',
983
- * video: 'videoDeviceId'
984
- * }})
932
+ * mediaOptions: {
933
+ * localTracks: { microphone: microphoneTrack, camera: cameraTrack }
934
+ * }
935
+ * })
985
936
  */
986
937
  joinWithMedia(options?: {
987
938
  joinOptions?: any;
988
- mediaSettings: any;
989
- audioVideoOptions?: any;
939
+ mediaOptions?: AddMediaOptions;
990
940
  }): any;
991
941
  /**
992
942
  * Initiates the reconnection of the media in the meeting
@@ -1067,7 +1017,7 @@ export default class Meeting extends StatelessWebexPlugin {
1067
1017
  * @public
1068
1018
  * @memberof Meeting
1069
1019
  */
1070
- usePhoneAudio(phoneNumber: string): any;
1020
+ usePhoneAudio(phoneNumber: string): Promise<any>;
1071
1021
  /**
1072
1022
  * Determines if the given pstnStatus is in a state which implies the phone is provisioned
1073
1023
  * @param {String} pstnStatus
@@ -1115,38 +1065,6 @@ export default class Meeting extends StatelessWebexPlugin {
1115
1065
  * @memberof Meeting
1116
1066
  */
1117
1067
  moveFrom(resourceId: string): any;
1118
- /**
1119
- * Get local media streams based on options passed
1120
- *
1121
- * NOTE: this method can only be used with transcoded meetings, not with multistream meetings
1122
- *
1123
- * @param {MediaDirection} mediaDirection A configurable options object for joining a meeting
1124
- * @param {AudioVideo} [audioVideo] audio/video object to set audioinput and videoinput devices, see #Media.getUserMedia
1125
- * @param {SharePreferences} [sharePreferences] audio/video object to set audioinput and videoinput devices, see #Media.getUserMedia
1126
- * @returns {Promise} see #Media.getUserMedia
1127
- * @public
1128
- * @todo should be static, or moved so can be called outside of a meeting
1129
- * @memberof Meeting
1130
- */
1131
- getMediaStreams: (mediaDirection: any, audioVideo?: any, sharePreferences?: any) => any;
1132
- /**
1133
- * Checks if the machine has at least one audio or video device
1134
- * @param {Object} options
1135
- * @param {Boolean} options.sendAudio
1136
- * @param {Boolean} options.sendVideo
1137
- * @returns {Object}
1138
- * @memberof Meetings
1139
- */
1140
- getSupportedDevices: ({ sendAudio, sendVideo, }: {
1141
- sendAudio: boolean;
1142
- sendVideo: boolean;
1143
- }) => any;
1144
- /**
1145
- * Get the devices from the Media module
1146
- * @returns {Promise} resolves to an array of DeviceInfo
1147
- * @memberof Meetings
1148
- */
1149
- getDevices: () => any;
1150
1068
  /**
1151
1069
  * Handles ROAP_FAILURE event from the webrtc media connection
1152
1070
  *
@@ -1163,7 +1081,14 @@ export default class Meeting extends StatelessWebexPlugin {
1163
1081
  */
1164
1082
  setupStatsAnalyzerEventHandlers: () => void;
1165
1083
  getMediaConnectionDebugId(): string;
1166
- createMediaConnection(turnServerInfo: any): any;
1084
+ /**
1085
+ * Creates a webrtc media connection and publishes tracks to it
1086
+ *
1087
+ * @param {Object} turnServerInfo TURN server information
1088
+ * @param {BundlePolicy} [bundlePolicy] Bundle policy settings
1089
+ * @returns {RoapMediaConnection | MultistreamRoapMediaConnection}
1090
+ */
1091
+ private createMediaConnection;
1167
1092
  /**
1168
1093
  * Listens for an event emitted by eventEmitter and emits it from the meeting object
1169
1094
  *
@@ -1175,18 +1100,14 @@ export default class Meeting extends StatelessWebexPlugin {
1175
1100
  */
1176
1101
  forwardEvent(eventEmitter: any, eventTypeToForward: any, meetingEventType: any): void;
1177
1102
  /**
1178
- * Specify joining via audio (option: pstn), video, screenshare
1179
- * @param {Object} options A configurable options object for joining a meeting
1180
- * @param {Object} options.resourceId pass the deviceId
1181
- * @param {MediaDirection} options.mediaSettings pass media options
1182
- * @param {MediaStream} options.localStream
1183
- * @param {MediaStream} options.localShare
1184
- * @param {RemoteMediaManagerConfig} options.remoteMediaManagerConfig only applies if multistream is enabled
1103
+ * Creates a media connection to the server. Media connection is required for sending or receiving any audio/video.
1104
+ *
1105
+ * @param {AddMediaOptions} options
1185
1106
  * @returns {Promise}
1186
1107
  * @public
1187
1108
  * @memberof Meeting
1188
1109
  */
1189
- addMedia(options?: any): any;
1110
+ addMedia(options?: AddMediaOptions): Promise<any>;
1190
1111
  /**
1191
1112
  * Informs if the peer connection is in a state that can be updated with updateMedia (audio/video/share)
1192
1113
  * @returns {Boolean}
@@ -1217,94 +1138,25 @@ export default class Meeting extends StatelessWebexPlugin {
1217
1138
  */
1218
1139
  processNextQueuedMediaUpdate: () => void;
1219
1140
  /**
1220
- * A confluence of updateAudio, updateVideo, and updateShare
1221
- * this function re-establishes all of the media streams with new options
1222
- * @param {Object} options
1223
- * @param {MediaStream} options.localStream
1224
- * @param {MediaStream} options.localShare
1225
- * @param {MediaDirection} options.mediaSettings
1226
- * @returns {Promise}
1227
- * @public
1228
- * @memberof Meeting
1229
- */
1230
- updateMedia(options?: {
1231
- localStream?: MediaStream;
1232
- localShare?: MediaStream;
1233
- mediaSettings?: any;
1234
- }): any;
1235
- /**
1236
- * Update the main audio track with new parameters
1237
- *
1238
- * NOTE: this method can only be used with transcoded meetings, for multistream meetings use publishTrack()
1239
- *
1240
- * @param {Object} options
1241
- * @param {boolean} options.sendAudio
1242
- * @param {boolean} options.receiveAudio
1243
- * @param {MediaStream} options.stream Stream that contains the audio track to update
1244
- * @returns {Promise}
1245
- * @public
1246
- * @memberof Meeting
1247
- */
1248
- updateAudio(options: {
1249
- sendAudio: boolean;
1250
- receiveAudio: boolean;
1251
- stream: MediaStream;
1252
- }): Promise<any>;
1253
- /**
1254
- * Update the main video track with new parameters
1255
- *
1256
- * NOTE: this method can only be used with transcoded meetings, for multistream meetings use publishTrack()
1257
- *
1258
- * @param {Object} options
1259
- * @param {boolean} options.sendVideo
1260
- * @param {boolean} options.receiveVideo
1261
- * @param {MediaStream} options.stream Stream that contains the video track to update
1262
- * @returns {Promise}
1263
- * @public
1264
- * @memberof Meeting
1265
- */
1266
- updateVideo(options: {
1267
- sendVideo: boolean;
1268
- receiveVideo: boolean;
1269
- stream: MediaStream;
1270
- }): any;
1271
- /**
1272
- * Internal function when stopping a share stream, cleanup
1273
- * @param {boolean} sendShare
1274
- * @param {boolean} previousShareStatus
1275
- * @returns {Promise}
1276
- * @private
1277
- * @memberof Meeting
1278
- */
1279
- private checkForStopShare;
1280
- /**
1281
- * Update the share streams, can be used to start sharing
1282
- *
1283
- * NOTE: this method can only be used with transcoded meetings, for multistream meetings use publishTrack()
1141
+ * Updates the media connection - it allows to enable/disable all audio/video/share in the meeting.
1142
+ * This does not affect the published tracks, so for example if a microphone track is published and
1143
+ * updateMedia({audioEnabled: false}) is called, the audio will not be sent or received anymore,
1144
+ * but the track's "published" state is not changed and when updateMedia({audioEnabled: true}) is called,
1145
+ * the sending of the audio from the same track will resume.
1284
1146
  *
1285
1147
  * @param {Object} options
1286
- * @param {boolean} options.sendShare
1287
- * @param {boolean} options.receiveShare
1148
+ * @param {boolean} options.audioEnabled [optional] enables/disables receiving and sending of main audio in the meeting
1149
+ * @param {boolean} options.videoEnabled [optional] enables/disables receiving and sending of main video in the meeting
1150
+ * @param {boolean} options.shareEnabled [optional] enables/disables receiving and sending of screen share in the meeting
1288
1151
  * @returns {Promise}
1289
1152
  * @public
1290
1153
  * @memberof Meeting
1291
1154
  */
1292
- updateShare(options: {
1293
- sendShare?: boolean;
1155
+ updateMedia(options: {
1156
+ audioEnabled?: boolean;
1157
+ videoEnabled?: boolean;
1294
1158
  receiveShare?: boolean;
1295
- stream?: any;
1296
- skipSignalingCheck?: boolean;
1297
- }): any;
1298
- /**
1299
- * Do all the attach media pre set up before executing the actual attach
1300
- * @param {MediaStream} localStream
1301
- * @param {MediaStream} localShare
1302
- * @param {MediaDirection} mediaSettings
1303
- * @returns {undefined}
1304
- * @private
1305
- * @memberof Meeting
1306
- */
1307
- private preMedia;
1159
+ }): Promise<void>;
1308
1160
  /**
1309
1161
  * Acknowledge the meeting, outgoing or incoming
1310
1162
  * @param {String} type
@@ -1312,7 +1164,11 @@ export default class Meeting extends StatelessWebexPlugin {
1312
1164
  * @public
1313
1165
  * @memberof Meeting
1314
1166
  */
1315
- acknowledge(type: string): any;
1167
+ acknowledge(type: string): Promise<{
1168
+ response: any;
1169
+ }> | Promise<{
1170
+ message: string;
1171
+ }>;
1316
1172
  /**
1317
1173
  * Decline this meeting
1318
1174
  * @param {String} reason
@@ -1322,15 +1178,45 @@ export default class Meeting extends StatelessWebexPlugin {
1322
1178
  */
1323
1179
  decline(reason: string): any;
1324
1180
  /**
1325
- * Leave the current meeting
1181
+ * Returns a promise that will resolve to fetch options for leaving a meeting.
1182
+ *
1183
+ * This is to support quickly submitting a leave request when the browser/tab is closing.
1184
+ * Calling meeting.leave will not work because there are some async steps that will
1185
+ * not complete before the browser is closed. Instead, we pre-gather all the
1186
+ * information/options needed for the request(s), and then simply and quickly
1187
+ * fire the fetch(es) when pagehide is triggered.
1188
+ *
1189
+ * We must use fetch instead of request because fetch has a keepalive option that
1190
+ * allows the request it to outlive the page.
1191
+ *
1192
+ * Note: the $timings values will be wrong, but setRequestTimingsAndFetch() will
1193
+ * properly adjust them before submitting.
1194
+ *
1195
+ * @public
1326
1196
  * @param {Object} options leave options
1327
1197
  * @param {String} options.resourceId the device with which to leave from, empty if just the computer
1198
+ * @param {any} options.reason the reason for leaving
1199
+ * @returns {Promise} resolves to options to be used with fetch
1200
+ */
1201
+ buildLeaveFetchRequestOptions(options?: {
1202
+ resourceId?: string;
1203
+ reason?: any;
1204
+ }): any;
1205
+ /**
1206
+ * Leave the current meeting
1207
+ * @param {Object} options - leave options
1208
+ * @param {String} [options.resourceId] - the device with which to leave from, empty if just the computer
1209
+ * @param {String} [options.clientEventLeaveReason] - the leaveReason to include in the Call Analyzer event.
1210
+ * Must be one of: 'paired-leave' | 'one-to-one' | 'ended-by-locus' (defaults to no reason)
1211
+ * https://sqbu-github.cisco.com/WebExSquared/event-dictionary/blob/main/diagnostic-events.raml#L796
1212
+ * @param {String} [options.reason] - only used for logging
1328
1213
  * @returns {Promise}
1329
1214
  * @public
1330
1215
  * @memberof Meeting
1331
1216
  */
1332
1217
  leave(options?: {
1333
1218
  resourceId?: string;
1219
+ clientEventLeaveReason?: ClientEventLeaveReason;
1334
1220
  reason?: any;
1335
1221
  }): any;
1336
1222
  /**
@@ -1358,12 +1244,12 @@ export default class Meeting extends StatelessWebexPlugin {
1358
1244
  */
1359
1245
  private requestScreenShareFloor;
1360
1246
  /**
1361
- * Stops the screen share
1362
- * @returns {Promise} see #updateShare
1363
- * @public
1364
- * @memberof Meeting
1247
+ * Requests screen share floor if such request is pending.
1248
+ * It should be called whenever meeting state changes to JOINED
1249
+ *
1250
+ * @returns {void}
1365
1251
  */
1366
- stopShare(options?: {}): any;
1252
+ private requestScreenShareFloorIfPending;
1367
1253
  /**
1368
1254
  * Sends a request to Locus to release the screen share floor.
1369
1255
  * @returns {Promise} see #meetingRequest.changeMeetingFloor
@@ -1378,6 +1264,32 @@ export default class Meeting extends StatelessWebexPlugin {
1378
1264
  * @memberof Meeting
1379
1265
  */
1380
1266
  startRecording(): Promise<any>;
1267
+ /**
1268
+ * set the mute on entry flag for participants if you're the host
1269
+ * @returns {Promise}
1270
+ * @param {boolean} enabled
1271
+ * @public
1272
+ * @memberof Meeting
1273
+ */
1274
+ setMuteOnEntry(enabled: boolean): Promise<any>;
1275
+ /**
1276
+ * set the disallow unmute flag for participants if you're the host
1277
+ * @returns {Promise}
1278
+ * @param {boolean} enabled
1279
+ * @public
1280
+ * @memberof Meeting
1281
+ */
1282
+ setDisallowUnmute(enabled: boolean): Promise<any>;
1283
+ /**
1284
+ * set the mute all flag for participants if you're the host
1285
+ * @returns {Promise}
1286
+ * @param {boolean} mutedEnabled
1287
+ * @param {boolean} disallowUnmuteEnabled
1288
+ * @param {boolean} muteOnEntryEnabled
1289
+ * @public
1290
+ * @memberof Meeting
1291
+ */
1292
+ setMuteAll(mutedEnabled: boolean, disallowUnmuteEnabled: boolean, muteOnEntryEnabled: boolean): Promise<any>;
1381
1293
  /**
1382
1294
  * End the recording of this meeting
1383
1295
  * @returns {Promise}
@@ -1428,7 +1340,7 @@ export default class Meeting extends StatelessWebexPlugin {
1428
1340
  * @public
1429
1341
  * @memberof Meeting
1430
1342
  */
1431
- sendDTMF(tones: string): any;
1343
+ sendDTMF(tones: string): Promise<any>;
1432
1344
  /**
1433
1345
  * Sends request to change layout type for the current meeting for the specific participant/device only
1434
1346
  * @param {String} [layoutType] a layout type that should be available in meeting constants {@link #layout_types}
@@ -1453,53 +1365,33 @@ export default class Meeting extends StatelessWebexPlugin {
1453
1365
  height: number;
1454
1366
  };
1455
1367
  }): any;
1456
- /**
1457
- * Sets the quality of the local video stream
1458
- * @param {String} level {LOW|MEDIUM|HIGH}
1459
- * @returns {Promise<MediaStream>} localStream
1460
- */
1461
- setLocalVideoQuality(level: string): any;
1462
1368
  /**
1463
1369
  * Sets the quality level of the remote incoming media
1464
1370
  * @param {String} level {LOW|MEDIUM|HIGH}
1465
1371
  * @returns {Promise}
1466
1372
  */
1467
- setRemoteQualityLevel(level: string): any;
1373
+ setRemoteQualityLevel(level: string): Promise<void>;
1468
1374
  /**
1469
- * This is deprecated, please use setLocalVideoQuality for setting local and setRemoteQualityLevel for remote
1470
- * @param {String} level {LOW|MEDIUM|HIGH}
1471
- * @returns {Promise}
1472
- * @deprecated After FHD support
1375
+ * Functionality for when a share audio is ended.
1376
+ * @private
1377
+ * @memberof Meeting
1378
+ * @returns {undefined}
1473
1379
  */
1474
- setMeetingQuality(level: string): any;
1380
+ private handleShareAudioTrackEnded;
1475
1381
  /**
1476
- *
1477
- * NOTE: this method can only be used with transcoded meetings, for multistream use publishTrack()
1478
- *
1479
- * @param {Object} options parameter
1480
- * @param {Boolean} options.sendAudio send audio from the display share
1481
- * @param {Boolean} options.sendShare send video from the display share
1482
- * @param {Object} options.sharePreferences
1483
- * @param {MediaTrackConstraints} options.sharePreferences.shareConstraints constraints to apply to video
1484
- * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/MediaTrackConstraints}
1485
- * @param {Boolean} options.sharePreferences.highFrameRate if shareConstraints isn't provided, set default values based off of this boolean
1486
- * @returns {Promise}
1382
+ * Functionality for when a share video is ended.
1383
+ * @private
1384
+ * @memberof Meeting
1385
+ * @returns {undefined}
1487
1386
  */
1488
- shareScreen(options?: {
1489
- sendAudio: boolean;
1490
- sendShare: boolean;
1491
- sharePreferences: {
1492
- shareConstraints: MediaTrackConstraints;
1493
- };
1494
- }): any;
1387
+ private handleShareVideoTrackEnded;
1495
1388
  /**
1496
- * Functionality for when a share is ended.
1389
+ * Emits meeting:stoppedSharingLocal
1497
1390
  * @private
1498
- * @memberof Meeting
1499
- * @param {MediaStream} localShare
1500
1391
  * @returns {undefined}
1392
+ * @memberof Meeting
1501
1393
  */
1502
- private handleShareTrackEnded;
1394
+ private triggerStoppedSharing;
1503
1395
  /**
1504
1396
  * Emits the 'network:quality' event
1505
1397
  * 1 indicates an acceptable uplink network.
@@ -1514,92 +1406,16 @@ export default class Meeting extends StatelessWebexPlugin {
1514
1406
  private sendNetworkQualityEvent;
1515
1407
  /**
1516
1408
  * Handle logging the media
1517
- * @param {Object} audioTrack The audio track
1518
- * @param {Object} videoTrack The video track
1409
+ * @param {Object} mediaProperties
1519
1410
  * @private
1520
1411
  * @returns {undefined}
1521
1412
  */
1522
1413
  private handleMediaLogging;
1523
- /**
1524
- * @param {string} typeMedia 'audio' or 'video'
1525
- * @returns {undefined}
1526
- */
1527
- setStartSetupDelay(typeMedia: string): void;
1528
- /**
1529
- * @param {string} typeMedia 'audio' or 'video'
1530
- * @returns {undefined}
1531
- */
1532
- setEndSetupDelay(typeMedia: string): void;
1533
- /**
1534
- * @param {string} typeMedia 'audio' or 'video'
1535
- * @returns {string} duration between start and end of setup
1536
- */
1537
- getSetupDelayDuration(typeMedia: string): number;
1538
- /**
1539
- * @param {string} typeMedia 'audio' or 'video'
1540
- * @returns {undefined}
1541
- */
1542
- setStartSendingMediaDelay(typeMedia: string): void;
1543
- /**
1544
- * @param {string} typeMedia 'audio' or 'video'
1545
- * @returns {undefined}
1546
- */
1547
- setEndSendingMediaDelay(typeMedia: string): void;
1548
- /**
1549
- * @param {string} typeMedia 'audio' or 'video'
1550
- * @returns {string} duration between join response and first media tx
1551
- */
1552
- getSendingMediaDelayDuration(typeMedia: string): number;
1553
- /**
1554
- *
1555
- * @returns {undefined}
1556
- */
1557
- setStartLocalSDPGenRemoteSDPRecvDelay(): void;
1558
- /**
1559
- *
1560
- * @returns {undefined}
1561
- */
1562
- setEndLocalSDPGenRemoteSDPRecvDelay(): void;
1563
- /**
1564
- *
1565
- * @returns {string} duration between local SDP generation and remote SDP reception
1566
- */
1567
- getLocalSDPGenRemoteSDPRecvDelay(): number;
1568
- /**
1569
- *
1570
- * @returns {undefined}
1571
- */
1572
- setStartCallInitiateJoinReq(): void;
1573
- /**
1574
- *
1575
- * @returns {undefined}
1576
- */
1577
- setEndCallInitiateJoinReq(): void;
1578
- /**
1579
- *
1580
- * @returns {string} duration between call initiate and sending join request to locus
1581
- */
1582
- getCallInitiateJoinReq(): number;
1583
1414
  /**
1584
1415
  *
1585
- * @returns {undefined}
1586
- */
1587
- setStartJoinReqResp(): void;
1588
- /**
1589
- *
1590
- * @returns {undefined}
1416
+ * @returns {string} one of 'attendee','host','cohost', returns the user type of the current user
1591
1417
  */
1592
- setEndJoinReqResp(): void;
1593
- /**
1594
- *
1595
- * @returns {string} duration between sending locus join request and receiving join response
1596
- */
1597
- getJoinReqResp(): number;
1598
- /**
1599
- *
1600
- * @returns {string} duration between call initiate and successful locus join (even if it is in lobby)
1601
- */
1602
- getTotalJmt(): number;
1418
+ getCurUserType(): "host" | "cohost" | "attendee";
1603
1419
  /**
1604
1420
  * End the current meeting for all
1605
1421
  * @returns {Promise}
@@ -1614,35 +1430,6 @@ export default class Meeting extends StatelessWebexPlugin {
1614
1430
  * @memberof Meeting
1615
1431
  */
1616
1432
  clearMeetingData: () => void;
1617
- /**
1618
- * Internal API to return status of BNR
1619
- * @returns {Boolean}
1620
- * @public
1621
- * @memberof Meeting
1622
- */
1623
- isBnrEnabled(): any;
1624
- /**
1625
- * Internal API to obtain BNR enabled MediaStream
1626
- * @returns {Promise<MediaStreamTrack>}
1627
- * @private
1628
- * @param {MedaiStreamTrack} audioTrack from updateAudio
1629
- * @memberof Meeting
1630
- */
1631
- private internal_enableBNR;
1632
- /**
1633
- * Enable the audio track with BNR for a meeting
1634
- * @returns {Promise} resolves the data from enable bnr or rejects if there is no audio or audio is muted
1635
- * @public
1636
- * @memberof Meeting
1637
- */
1638
- enableBNR(): any;
1639
- /**
1640
- * Disable the BNR for an audio track
1641
- * @returns {Promise} resolves the data from disable bnr or rejects if there is no audio set
1642
- * @public
1643
- * @memberof Meeting
1644
- */
1645
- disableBNR(): any;
1646
1433
  /**
1647
1434
  * starts keepAlives being sent
1648
1435
  * @returns {void}
@@ -1675,32 +1462,51 @@ export default class Meeting extends StatelessWebexPlugin {
1675
1462
  * @public
1676
1463
  * @memberof Meeting
1677
1464
  */
1678
- toggleReactions(enable: boolean): any;
1465
+ toggleReactions(enable: boolean): Promise<any>;
1679
1466
  /**
1680
1467
  * Throws if we don't have a media connection created
1681
1468
  *
1682
1469
  * @returns {void}
1683
1470
  */
1684
1471
  private checkMediaConnection;
1472
+ /**
1473
+ * Method to enable or disable the 'Music mode' effect on audio track
1474
+ *
1475
+ * @param {boolean} shouldEnableMusicMode
1476
+ * @returns {Promise}
1477
+ */
1478
+ enableMusicMode(shouldEnableMusicMode: boolean): Promise<void>;
1479
+ /** Updates the tracks being sent on the transcoded media connection
1480
+ *
1481
+ * @returns {Promise<void>}
1482
+ */
1483
+ private updateTranscodedMediaConnection;
1484
+ /**
1485
+ * Publishes a track.
1486
+ *
1487
+ * @param {LocalTrack} track to publish
1488
+ * @returns {Promise}
1489
+ */
1490
+ private publishTrack;
1491
+ /**
1492
+ * Un-publishes a track.
1493
+ *
1494
+ * @param {LocalTrack} track to unpublish
1495
+ * @returns {Promise}
1496
+ */
1497
+ private unpublishTrack;
1685
1498
  /**
1686
1499
  * Publishes specified local tracks in the meeting
1687
1500
  *
1688
1501
  * @param {Object} tracks
1689
1502
  * @returns {Promise}
1690
1503
  */
1691
- publishTracks(tracks: {
1692
- microphone?: MediaStreamTrack;
1693
- camera?: MediaStreamTrack;
1694
- screenShare: {
1695
- audio?: MediaStreamTrack;
1696
- video?: MediaStreamTrack;
1697
- };
1698
- }): Promise<void>;
1504
+ publishTracks(tracks: LocalTracks): Promise<void>;
1699
1505
  /**
1700
1506
  * Un-publishes specified local tracks in the meeting
1701
1507
  *
1702
1508
  * @param {Array<MediaStreamTrack>} tracks
1703
1509
  * @returns {Promise}
1704
1510
  */
1705
- unpublishTracks(tracks: MediaStreamTrack[]): Promise<void>;
1511
+ unpublishTracks(tracks: LocalTrack[]): Promise<void>;
1706
1512
  }