@webex/plugin-meetings 3.0.0-beta.25 → 3.0.0-beta.250

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 +193 -28
  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 +381 -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 +224 -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 +2627 -2557
  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 +256 -196
  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 +6 -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 +209 -59
  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 +155 -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 +312 -492
  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 +5 -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 +176 -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 +412 -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 +231 -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 +2111 -2143
  246. package/src/meeting/locusMediaRequest.ts +313 -0
  247. package/src/meeting/muteState.ts +227 -130
  248. package/src/meeting/request.ts +172 -121
  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 +5 -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 +148 -30
  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 +1283 -33
  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 +3576 -1748
  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;
@@ -364,12 +384,19 @@ export default class Meeting extends StatelessWebexPlugin {
364
384
  meetingJoinUrl: any;
365
385
  meetingNumber: any;
366
386
  meetingState: any;
367
- permissionToken: any;
387
+ permissionToken: string;
388
+ permissionTokenPayload: any;
368
389
  resourceId: any;
369
390
  resourceUrl: string;
370
391
  selfId: string;
371
392
  state: any;
393
+ localAudioTrackMuteStateHandler: (event: TrackMuteEvent) => void;
394
+ localVideoTrackMuteStateHandler: (event: TrackMuteEvent) => void;
395
+ underlyingLocalTrackChangeHandler: () => void;
396
+ roles: any[];
397
+ environment: string;
372
398
  namespace: string;
399
+ allowMediaInLobby: boolean;
373
400
  /**
374
401
  * @param {Object} attrs
375
402
  * @param {Object} options
@@ -377,6 +404,18 @@ export default class Meeting extends StatelessWebexPlugin {
377
404
  * @memberof Meeting
378
405
  */
379
406
  constructor(attrs: any, options: object);
407
+ /**
408
+ * returns meeting is joined
409
+ * @private
410
+ * @memberof Meeting
411
+ * @returns {Boolean}
412
+ */
413
+ private isJoined;
414
+ /**
415
+ * Returns whether this meeting is a Locus CALL
416
+ * @returns {Boolean}
417
+ */
418
+ isLocusCall(): boolean;
380
419
  /**
381
420
  * Fetches meeting information.
382
421
  * @param {Object} options
@@ -386,9 +425,10 @@ export default class Meeting extends StatelessWebexPlugin {
386
425
  * @memberof Meeting
387
426
  * @returns {Promise}
388
427
  */
389
- fetchMeetingInfo({ password, captchaCode, }: {
428
+ fetchMeetingInfo({ password, captchaCode, extraParams, }: {
390
429
  password?: string;
391
430
  captchaCode?: string;
431
+ extraParams?: Record<string, any>;
392
432
  }): Promise<void>;
393
433
  /**
394
434
  * Checks if the supplied password/host key is correct. It returns a promise with information whether the
@@ -416,6 +456,14 @@ export default class Meeting extends StatelessWebexPlugin {
416
456
  * @returns {Promise}
417
457
  */
418
458
  refreshCaptcha(): any;
459
+ /**
460
+ * Posts metrics event for this meeting. Allows the app to send Call Analyzer events.
461
+ * @param {String} eventName - Call Analyzer event
462
+ * @public
463
+ * @memberof Meeting
464
+ * @returns {Promise}
465
+ */
466
+ postMetrics(eventName: ClientEvent['name']): void;
419
467
  /**
420
468
  * Proxy function for all the listener set ups
421
469
  * @returns {undefined}
@@ -430,6 +478,13 @@ export default class Meeting extends StatelessWebexPlugin {
430
478
  * @memberof Meeting
431
479
  */
432
480
  setUpBreakoutsListener(): void;
481
+ /**
482
+ * Set up the listeners for interpretation
483
+ * @returns {undefined}
484
+ * @private
485
+ * @memberof Meeting
486
+ */
487
+ private setUpInterpretationListener;
433
488
  /**
434
489
  * Set up the locus info listener for meetings disconnected due to inactivity
435
490
  * @returns {undefined}
@@ -451,47 +506,6 @@ export default class Meeting extends StatelessWebexPlugin {
451
506
  * @memberof Meeting
452
507
  */
453
508
  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
509
  /**
496
510
  * sets the network status on meeting object
497
511
  * @param {String} networkStatus
@@ -554,6 +568,13 @@ export default class Meeting extends StatelessWebexPlugin {
554
568
  * @memberof Meeting
555
569
  */
556
570
  private setupLocusControlsListener;
571
+ /**
572
+ * Trigger annotation info update event
573
+ @returns {undefined}
574
+ @param {object} contentShare
575
+ @param {object} previousContentShare
576
+ */
577
+ private triggerAnnotationInfoEvent;
557
578
  /**
558
579
  * Set up the locus info media shares listener
559
580
  * update content and whiteboard sharing id value for members, and updates the member
@@ -652,13 +673,23 @@ export default class Meeting extends StatelessWebexPlugin {
652
673
  phoneNumber: string;
653
674
  }): any;
654
675
  /**
655
- * Admit the guest(s) to the call once they are waiting
676
+ * Admit the guest(s) to the call once they are waiting.
677
+ * If the host/cohost is in a breakout session, the locus url
678
+ * of the session must be provided as the authorizingLocusUrl.
679
+ * Regardless of host/cohost location, the locus Id (lid) in
680
+ * the path should be the locus Id of the main, which means the
681
+ * locus url of the api call must be from the main session.
682
+ * If these loucs urls are not provided, the function will do the check.
656
683
  * @param {Array} memberIds
684
+ * @param {Object} sessionLocusUrls: {authorizingLocusUrl, mainLocusUrl}
657
685
  * @returns {Promise} see #members.admitMembers
658
686
  * @public
659
687
  * @memberof Meeting
660
688
  */
661
- admit(memberIds: Array<any>): any;
689
+ admit(memberIds: Array<any>, sessionLocusUrls?: {
690
+ authorizingLocusUrl: string;
691
+ mainLocusUrl: string;
692
+ }): any;
662
693
  /**
663
694
  * Remove the member from the meeting, boot them
664
695
  * @param {String} memberId
@@ -692,48 +723,6 @@ export default class Meeting extends StatelessWebexPlugin {
692
723
  * @memberof Meeting
693
724
  */
694
725
  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
726
  /**
738
727
  * Sets the meeting info on the class instance
739
728
  * @param {Object} meetingInfo
@@ -756,16 +745,29 @@ export default class Meeting extends StatelessWebexPlugin {
756
745
  };
757
746
  } | any, destination?: object | string | null): void;
758
747
  /**
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
748
+ * Indicates whether policy can be applied
749
+ * @returns {boolean}
750
+ */
751
+ private arePolicyRestrictionsSupported;
752
+ /**
753
+ * Updates the meeting actions (display hints), depends on locus display hints, user policy and app api info
764
754
  * @returns {undefined}
765
755
  * @private
766
756
  * @memberof Meeting
767
757
  */
768
- private parseLocus;
758
+ private updateMeetingActions;
759
+ /**
760
+ * Sets the self user policies based on the contents of the permission token
761
+ * @returns {void}
762
+ */
763
+ setSelfUserPolicies(): void;
764
+ /**
765
+ * Sets the permission token payload on the class instance
766
+ *
767
+ * @param {String} permissionToken
768
+ * @returns {void}
769
+ */
770
+ setPermissionTokenPayload(permissionToken: string): void;
769
771
  /**
770
772
  * Sets the sip uri on the class instance
771
773
  * uses meeting info as precedence
@@ -788,7 +790,13 @@ export default class Meeting extends StatelessWebexPlugin {
788
790
  * @private
789
791
  * @memberof Meeting
790
792
  */
791
- private setLocus;
793
+ setLocus(locus: {
794
+ mediaConnections: Array<any>;
795
+ locusUrl: string;
796
+ locusId: string;
797
+ mediaId: string;
798
+ host: object;
799
+ } | any): void;
792
800
  /**
793
801
  * Upload logs for the current meeting
794
802
  * @param {object} options file name and function name
@@ -797,15 +805,6 @@ export default class Meeting extends StatelessWebexPlugin {
797
805
  * @memberof Meeting
798
806
  */
799
807
  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
808
  /**
810
809
  * Removes remote audio, video and share tracks from class instance's mediaProperties
811
810
  * @returns {undefined}
@@ -828,76 +827,37 @@ export default class Meeting extends StatelessWebexPlugin {
828
827
  */
829
828
  closeRemoteTracks(): Promise<[any, any, any]>;
830
829
  /**
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
830
+ * Stores the reference to a new microphone track, sets up the required event listeners
831
+ * on it, cleans up previous track, etc.
832
+ *
833
+ * @param {LocalMicrophoneTrack | null} localTrack local microphone track
834
+ * @returns {Promise<void>}
844
835
  */
845
836
  private setLocalAudioTrack;
846
837
  /**
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
838
+ * Stores the reference to a new camera track, sets up the required event listeners
839
+ * on it, cleans up previous track, etc.
840
+ *
841
+ * @param {LocalCameraTrack | null} localTrack local camera track
842
+ * @returns {Promise<void>}
853
843
  */
854
844
  private setLocalVideoTrack;
855
845
  /**
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
846
+ * Stores the reference to a new screen share video track, sets up the required event listeners
847
+ * on it, cleans up previous track, etc.
848
+ *
849
+ * @param {LocalDisplayTrack | undefined} localDisplayTrack local camera track
850
+ * @returns {Promise<void>}
892
851
  */
893
- unsetLocalVideoTrack(): void;
852
+ private setLocalShareVideoTrack;
894
853
  /**
895
- * Removes the local share from the class and emits an event to the developer
896
- * @returns {undefined}
897
- * @public
898
- * @memberof Meeting
854
+ * Stores the reference to a new screen share audio track, sets up the required event listeners
855
+ * on it, cleans up previous track, etc.
856
+ *
857
+ * @param {LocalSystemAudioTrack | undefined} localSystemAudioTrack local system audio track
858
+ * @returns {Promise<void>}
899
859
  */
900
- unsetLocalShareTrack(): void;
860
+ private setLocalShareAudioTrack;
901
861
  /**
902
862
  * sets up listner for mercury event
903
863
  * @returns {undefined}
@@ -930,6 +890,13 @@ export default class Meeting extends StatelessWebexPlugin {
930
890
  * @memberof Meeting
931
891
  */
932
892
  private setCorrelationId;
893
+ /**
894
+ * Enqueue request for screenshare floor and set the status to pending
895
+ * @returns {Promise}
896
+ * @private
897
+ * @memberof Meeting
898
+ */
899
+ private enqueueScreenShareFloorRequest;
933
900
  /**
934
901
  * Mute the audio for a meeting
935
902
  * @returns {Promise} resolves the data from muting audio {mute, self} or rejects if there is no audio set
@@ -962,31 +929,21 @@ export default class Meeting extends StatelessWebexPlugin {
962
929
  * Shorthand function to join AND set up media
963
930
  * @param {Object} options - options to join with media
964
931
  * @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()}
932
+ * @param {AddMediaOptions} [options.mediaOptions] - see #addMedia()
933
+ * @returns {Promise} -- {join: see join(), media: see addMedia()}
968
934
  * @public
969
935
  * @memberof Meeting
970
936
  * @example
971
937
  * joinWithMedia({
972
938
  * 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
- * }})
939
+ * mediaOptions: {
940
+ * localTracks: { microphone: microphoneTrack, camera: cameraTrack }
941
+ * }
942
+ * })
985
943
  */
986
944
  joinWithMedia(options?: {
987
945
  joinOptions?: any;
988
- mediaSettings: any;
989
- audioVideoOptions?: any;
946
+ mediaOptions?: AddMediaOptions;
990
947
  }): any;
991
948
  /**
992
949
  * Initiates the reconnection of the media in the meeting
@@ -1067,7 +1024,7 @@ export default class Meeting extends StatelessWebexPlugin {
1067
1024
  * @public
1068
1025
  * @memberof Meeting
1069
1026
  */
1070
- usePhoneAudio(phoneNumber: string): any;
1027
+ usePhoneAudio(phoneNumber: string): Promise<any>;
1071
1028
  /**
1072
1029
  * Determines if the given pstnStatus is in a state which implies the phone is provisioned
1073
1030
  * @param {String} pstnStatus
@@ -1115,38 +1072,6 @@ export default class Meeting extends StatelessWebexPlugin {
1115
1072
  * @memberof Meeting
1116
1073
  */
1117
1074
  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
1075
  /**
1151
1076
  * Handles ROAP_FAILURE event from the webrtc media connection
1152
1077
  *
@@ -1163,7 +1088,14 @@ export default class Meeting extends StatelessWebexPlugin {
1163
1088
  */
1164
1089
  setupStatsAnalyzerEventHandlers: () => void;
1165
1090
  getMediaConnectionDebugId(): string;
1166
- createMediaConnection(turnServerInfo: any): any;
1091
+ /**
1092
+ * Creates a webrtc media connection and publishes tracks to it
1093
+ *
1094
+ * @param {Object} turnServerInfo TURN server information
1095
+ * @param {BundlePolicy} [bundlePolicy] Bundle policy settings
1096
+ * @returns {RoapMediaConnection | MultistreamRoapMediaConnection}
1097
+ */
1098
+ private createMediaConnection;
1167
1099
  /**
1168
1100
  * Listens for an event emitted by eventEmitter and emits it from the meeting object
1169
1101
  *
@@ -1175,18 +1107,14 @@ export default class Meeting extends StatelessWebexPlugin {
1175
1107
  */
1176
1108
  forwardEvent(eventEmitter: any, eventTypeToForward: any, meetingEventType: any): void;
1177
1109
  /**
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
1110
+ * Creates a media connection to the server. Media connection is required for sending or receiving any audio/video.
1111
+ *
1112
+ * @param {AddMediaOptions} options
1185
1113
  * @returns {Promise}
1186
1114
  * @public
1187
1115
  * @memberof Meeting
1188
1116
  */
1189
- addMedia(options?: any): any;
1117
+ addMedia(options?: AddMediaOptions): Promise<any>;
1190
1118
  /**
1191
1119
  * Informs if the peer connection is in a state that can be updated with updateMedia (audio/video/share)
1192
1120
  * @returns {Boolean}
@@ -1217,94 +1145,25 @@ export default class Meeting extends StatelessWebexPlugin {
1217
1145
  */
1218
1146
  processNextQueuedMediaUpdate: () => void;
1219
1147
  /**
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()
1148
+ * Updates the media connection - it allows to enable/disable all audio/video/share in the meeting.
1149
+ * This does not affect the published tracks, so for example if a microphone track is published and
1150
+ * updateMedia({audioEnabled: false}) is called, the audio will not be sent or received anymore,
1151
+ * but the track's "published" state is not changed and when updateMedia({audioEnabled: true}) is called,
1152
+ * the sending of the audio from the same track will resume.
1239
1153
  *
1240
1154
  * @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
1155
+ * @param {boolean} options.audioEnabled [optional] enables/disables receiving and sending of main audio in the meeting
1156
+ * @param {boolean} options.videoEnabled [optional] enables/disables receiving and sending of main video in the meeting
1157
+ * @param {boolean} options.shareEnabled [optional] enables/disables receiving and sending of screen share in the meeting
1244
1158
  * @returns {Promise}
1245
1159
  * @public
1246
1160
  * @memberof Meeting
1247
1161
  */
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()
1284
- *
1285
- * @param {Object} options
1286
- * @param {boolean} options.sendShare
1287
- * @param {boolean} options.receiveShare
1288
- * @returns {Promise}
1289
- * @public
1290
- * @memberof Meeting
1291
- */
1292
- updateShare(options: {
1293
- sendShare?: boolean;
1162
+ updateMedia(options: {
1163
+ audioEnabled?: boolean;
1164
+ videoEnabled?: boolean;
1294
1165
  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;
1166
+ }): Promise<void>;
1308
1167
  /**
1309
1168
  * Acknowledge the meeting, outgoing or incoming
1310
1169
  * @param {String} type
@@ -1312,7 +1171,11 @@ export default class Meeting extends StatelessWebexPlugin {
1312
1171
  * @public
1313
1172
  * @memberof Meeting
1314
1173
  */
1315
- acknowledge(type: string): any;
1174
+ acknowledge(type: string): Promise<{
1175
+ response: any;
1176
+ }> | Promise<{
1177
+ message: string;
1178
+ }>;
1316
1179
  /**
1317
1180
  * Decline this meeting
1318
1181
  * @param {String} reason
@@ -1322,15 +1185,45 @@ export default class Meeting extends StatelessWebexPlugin {
1322
1185
  */
1323
1186
  decline(reason: string): any;
1324
1187
  /**
1325
- * Leave the current meeting
1188
+ * Returns a promise that will resolve to fetch options for leaving a meeting.
1189
+ *
1190
+ * This is to support quickly submitting a leave request when the browser/tab is closing.
1191
+ * Calling meeting.leave will not work because there are some async steps that will
1192
+ * not complete before the browser is closed. Instead, we pre-gather all the
1193
+ * information/options needed for the request(s), and then simply and quickly
1194
+ * fire the fetch(es) when pagehide is triggered.
1195
+ *
1196
+ * We must use fetch instead of request because fetch has a keepalive option that
1197
+ * allows the request it to outlive the page.
1198
+ *
1199
+ * Note: the $timings values will be wrong, but setRequestTimingsAndFetch() will
1200
+ * properly adjust them before submitting.
1201
+ *
1202
+ * @public
1326
1203
  * @param {Object} options leave options
1327
1204
  * @param {String} options.resourceId the device with which to leave from, empty if just the computer
1205
+ * @param {any} options.reason the reason for leaving
1206
+ * @returns {Promise} resolves to options to be used with fetch
1207
+ */
1208
+ buildLeaveFetchRequestOptions(options?: {
1209
+ resourceId?: string;
1210
+ reason?: any;
1211
+ }): any;
1212
+ /**
1213
+ * Leave the current meeting
1214
+ * @param {Object} options - leave options
1215
+ * @param {String} [options.resourceId] - the device with which to leave from, empty if just the computer
1216
+ * @param {String} [options.clientEventLeaveReason] - the leaveReason to include in the Call Analyzer event.
1217
+ * Must be one of: 'paired-leave' | 'one-to-one' | 'ended-by-locus' (defaults to no reason)
1218
+ * https://sqbu-github.cisco.com/WebExSquared/event-dictionary/blob/main/diagnostic-events.raml#L796
1219
+ * @param {String} [options.reason] - only used for logging
1328
1220
  * @returns {Promise}
1329
1221
  * @public
1330
1222
  * @memberof Meeting
1331
1223
  */
1332
1224
  leave(options?: {
1333
1225
  resourceId?: string;
1226
+ clientEventLeaveReason?: ClientEventLeaveReason;
1334
1227
  reason?: any;
1335
1228
  }): any;
1336
1229
  /**
@@ -1358,12 +1251,12 @@ export default class Meeting extends StatelessWebexPlugin {
1358
1251
  */
1359
1252
  private requestScreenShareFloor;
1360
1253
  /**
1361
- * Stops the screen share
1362
- * @returns {Promise} see #updateShare
1363
- * @public
1364
- * @memberof Meeting
1254
+ * Requests screen share floor if such request is pending.
1255
+ * It should be called whenever meeting state changes to JOINED
1256
+ *
1257
+ * @returns {void}
1365
1258
  */
1366
- stopShare(options?: {}): any;
1259
+ private requestScreenShareFloorIfPending;
1367
1260
  /**
1368
1261
  * Sends a request to Locus to release the screen share floor.
1369
1262
  * @returns {Promise} see #meetingRequest.changeMeetingFloor
@@ -1378,6 +1271,32 @@ export default class Meeting extends StatelessWebexPlugin {
1378
1271
  * @memberof Meeting
1379
1272
  */
1380
1273
  startRecording(): Promise<any>;
1274
+ /**
1275
+ * set the mute on entry flag for participants if you're the host
1276
+ * @returns {Promise}
1277
+ * @param {boolean} enabled
1278
+ * @public
1279
+ * @memberof Meeting
1280
+ */
1281
+ setMuteOnEntry(enabled: boolean): Promise<any>;
1282
+ /**
1283
+ * set the disallow unmute flag for participants if you're the host
1284
+ * @returns {Promise}
1285
+ * @param {boolean} enabled
1286
+ * @public
1287
+ * @memberof Meeting
1288
+ */
1289
+ setDisallowUnmute(enabled: boolean): Promise<any>;
1290
+ /**
1291
+ * set the mute all flag for participants if you're the host
1292
+ * @returns {Promise}
1293
+ * @param {boolean} mutedEnabled
1294
+ * @param {boolean} disallowUnmuteEnabled
1295
+ * @param {boolean} muteOnEntryEnabled
1296
+ * @public
1297
+ * @memberof Meeting
1298
+ */
1299
+ setMuteAll(mutedEnabled: boolean, disallowUnmuteEnabled: boolean, muteOnEntryEnabled: boolean): Promise<any>;
1381
1300
  /**
1382
1301
  * End the recording of this meeting
1383
1302
  * @returns {Promise}
@@ -1428,7 +1347,7 @@ export default class Meeting extends StatelessWebexPlugin {
1428
1347
  * @public
1429
1348
  * @memberof Meeting
1430
1349
  */
1431
- sendDTMF(tones: string): any;
1350
+ sendDTMF(tones: string): Promise<any>;
1432
1351
  /**
1433
1352
  * Sends request to change layout type for the current meeting for the specific participant/device only
1434
1353
  * @param {String} [layoutType] a layout type that should be available in meeting constants {@link #layout_types}
@@ -1453,53 +1372,33 @@ export default class Meeting extends StatelessWebexPlugin {
1453
1372
  height: number;
1454
1373
  };
1455
1374
  }): 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
1375
  /**
1463
1376
  * Sets the quality level of the remote incoming media
1464
1377
  * @param {String} level {LOW|MEDIUM|HIGH}
1465
1378
  * @returns {Promise}
1466
1379
  */
1467
- setRemoteQualityLevel(level: string): any;
1380
+ setRemoteQualityLevel(level: string): Promise<void>;
1468
1381
  /**
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
1382
+ * Functionality for when a share audio is ended.
1383
+ * @private
1384
+ * @memberof Meeting
1385
+ * @returns {undefined}
1473
1386
  */
1474
- setMeetingQuality(level: string): any;
1387
+ private handleShareAudioTrackEnded;
1475
1388
  /**
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}
1389
+ * Functionality for when a share video is ended.
1390
+ * @private
1391
+ * @memberof Meeting
1392
+ * @returns {undefined}
1487
1393
  */
1488
- shareScreen(options?: {
1489
- sendAudio: boolean;
1490
- sendShare: boolean;
1491
- sharePreferences: {
1492
- shareConstraints: MediaTrackConstraints;
1493
- };
1494
- }): any;
1394
+ private handleShareVideoTrackEnded;
1495
1395
  /**
1496
- * Functionality for when a share is ended.
1396
+ * Emits meeting:stoppedSharingLocal
1497
1397
  * @private
1498
- * @memberof Meeting
1499
- * @param {MediaStream} localShare
1500
1398
  * @returns {undefined}
1399
+ * @memberof Meeting
1501
1400
  */
1502
- private handleShareTrackEnded;
1401
+ private triggerStoppedSharing;
1503
1402
  /**
1504
1403
  * Emits the 'network:quality' event
1505
1404
  * 1 indicates an acceptable uplink network.
@@ -1514,92 +1413,16 @@ export default class Meeting extends StatelessWebexPlugin {
1514
1413
  private sendNetworkQualityEvent;
1515
1414
  /**
1516
1415
  * Handle logging the media
1517
- * @param {Object} audioTrack The audio track
1518
- * @param {Object} videoTrack The video track
1416
+ * @param {Object} mediaProperties
1519
1417
  * @private
1520
1418
  * @returns {undefined}
1521
1419
  */
1522
1420
  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
- /**
1584
- *
1585
- * @returns {undefined}
1586
- */
1587
- setStartJoinReqResp(): void;
1588
- /**
1589
- *
1590
- * @returns {undefined}
1591
- */
1592
- setEndJoinReqResp(): void;
1593
1421
  /**
1594
1422
  *
1595
- * @returns {string} duration between sending locus join request and receiving join response
1423
+ * @returns {string} one of 'attendee','host','cohost', returns the user type of the current user
1596
1424
  */
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;
1425
+ getCurUserType(): "host" | "cohost" | "attendee";
1603
1426
  /**
1604
1427
  * End the current meeting for all
1605
1428
  * @returns {Promise}
@@ -1614,35 +1437,6 @@ export default class Meeting extends StatelessWebexPlugin {
1614
1437
  * @memberof Meeting
1615
1438
  */
1616
1439
  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
1440
  /**
1647
1441
  * starts keepAlives being sent
1648
1442
  * @returns {void}
@@ -1675,32 +1469,58 @@ export default class Meeting extends StatelessWebexPlugin {
1675
1469
  * @public
1676
1470
  * @memberof Meeting
1677
1471
  */
1678
- toggleReactions(enable: boolean): any;
1472
+ toggleReactions(enable: boolean): Promise<any>;
1679
1473
  /**
1680
1474
  * Throws if we don't have a media connection created
1681
1475
  *
1682
1476
  * @returns {void}
1683
1477
  */
1684
1478
  private checkMediaConnection;
1479
+ /**
1480
+ * Method to enable or disable the 'Music mode' effect on audio track
1481
+ *
1482
+ * @param {boolean} shouldEnableMusicMode
1483
+ * @returns {Promise}
1484
+ */
1485
+ enableMusicMode(shouldEnableMusicMode: boolean): Promise<void>;
1486
+ /** Updates the tracks being sent on the transcoded media connection
1487
+ *
1488
+ * @returns {Promise<void>}
1489
+ */
1490
+ private updateTranscodedMediaConnection;
1491
+ /**
1492
+ * Publishes a track.
1493
+ *
1494
+ * @param {LocalTrack} track to publish
1495
+ * @returns {Promise}
1496
+ */
1497
+ private publishTrack;
1498
+ /**
1499
+ * Un-publishes a track.
1500
+ *
1501
+ * @param {LocalTrack} track to unpublish
1502
+ * @returns {Promise}
1503
+ */
1504
+ private unpublishTrack;
1685
1505
  /**
1686
1506
  * Publishes specified local tracks in the meeting
1687
1507
  *
1688
1508
  * @param {Object} tracks
1689
1509
  * @returns {Promise}
1690
1510
  */
1691
- publishTracks(tracks: {
1692
- microphone?: MediaStreamTrack;
1693
- camera?: MediaStreamTrack;
1694
- screenShare: {
1695
- audio?: MediaStreamTrack;
1696
- video?: MediaStreamTrack;
1697
- };
1698
- }): Promise<void>;
1511
+ publishTracks(tracks: LocalTracks): Promise<void>;
1699
1512
  /**
1700
1513
  * Un-publishes specified local tracks in the meeting
1701
1514
  *
1702
1515
  * @param {Array<MediaStreamTrack>} tracks
1703
1516
  * @returns {Promise}
1704
1517
  */
1705
- unpublishTracks(tracks: MediaStreamTrack[]): Promise<void>;
1518
+ unpublishTracks(tracks: LocalTrack[]): Promise<void>;
1519
+ /**
1520
+ * Gets the time left in seconds till the permission token expires
1521
+ * (from the time the function has been fired)
1522
+ *
1523
+ * @returns {number} time left in seconds
1524
+ */
1525
+ getPermissionTokenTimeLeftInSec(): number | undefined;
1706
1526
  }