@webex/plugin-meetings 3.0.0-beta.22 → 3.0.0-beta.221

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 (419) 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 +3 -2
  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 +3 -8
  27. package/dist/config.js.map +1 -1
  28. package/dist/constants.js +188 -30
  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/mediaQualityMetrics/config.js +505 -493
  65. package/dist/mediaQualityMetrics/config.js.map +1 -1
  66. package/dist/meeting/in-meeting-actions.js +90 -2
  67. package/dist/meeting/in-meeting-actions.js.map +1 -1
  68. package/dist/meeting/index.js +2587 -2560
  69. package/dist/meeting/index.js.map +1 -1
  70. package/dist/meeting/locusMediaRequest.js +292 -0
  71. package/dist/meeting/locusMediaRequest.js.map +1 -0
  72. package/dist/meeting/muteState.js +228 -123
  73. package/dist/meeting/muteState.js.map +1 -1
  74. package/dist/meeting/request.js +244 -194
  75. package/dist/meeting/request.js.map +1 -1
  76. package/dist/meeting/util.js +568 -414
  77. package/dist/meeting/util.js.map +1 -1
  78. package/dist/meeting-info/index.js +48 -7
  79. package/dist/meeting-info/index.js.map +1 -1
  80. package/dist/meeting-info/meeting-info-v2.js +171 -51
  81. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  82. package/dist/meeting-info/utilv2.js +20 -5
  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 +361 -84
  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 +3 -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 +173 -59
  125. package/dist/multistream/remoteMediaManager.js.map +1 -1
  126. package/dist/networkQualityMonitor/index.js +4 -2
  127. package/dist/networkQualityMonitor/index.js.map +1 -1
  128. package/dist/reachability/index.js +90 -30
  129. package/dist/reachability/index.js.map +1 -1
  130. package/dist/reachability/request.js +16 -7
  131. package/dist/reachability/request.js.map +1 -1
  132. package/dist/reconnection-manager/index.js +196 -155
  133. package/dist/reconnection-manager/index.js.map +1 -1
  134. package/dist/recording-controller/index.js +21 -2
  135. package/dist/recording-controller/index.js.map +1 -1
  136. package/dist/recording-controller/util.js +9 -8
  137. package/dist/recording-controller/util.js.map +1 -1
  138. package/dist/roap/index.js +25 -29
  139. package/dist/roap/index.js.map +1 -1
  140. package/dist/roap/request.js +111 -89
  141. package/dist/roap/request.js.map +1 -1
  142. package/dist/roap/turnDiscovery.js +97 -36
  143. package/dist/roap/turnDiscovery.js.map +1 -1
  144. package/dist/rtcMetrics/constants.js +12 -0
  145. package/dist/rtcMetrics/constants.js.map +1 -0
  146. package/dist/rtcMetrics/index.js +117 -0
  147. package/dist/rtcMetrics/index.js.map +1 -0
  148. package/dist/statsAnalyzer/global.js +1 -93
  149. package/dist/statsAnalyzer/global.js.map +1 -1
  150. package/dist/statsAnalyzer/index.js +326 -311
  151. package/dist/statsAnalyzer/index.js.map +1 -1
  152. package/dist/statsAnalyzer/mqaUtil.js +90 -53
  153. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  154. package/dist/types/annotation/annotation.types.d.ts +42 -0
  155. package/dist/types/annotation/constants.d.ts +31 -0
  156. package/dist/types/annotation/index.d.ts +117 -0
  157. package/dist/types/breakouts/breakout.d.ts +8 -0
  158. package/dist/types/breakouts/collection.d.ts +5 -0
  159. package/dist/types/breakouts/edit-lock-error.d.ts +15 -0
  160. package/dist/types/breakouts/events.d.ts +8 -0
  161. package/dist/types/breakouts/index.d.ts +5 -0
  162. package/dist/types/breakouts/request.d.ts +22 -0
  163. package/dist/types/breakouts/utils.d.ts +15 -0
  164. package/dist/types/common/browser-detection.d.ts +9 -0
  165. package/dist/types/common/collection.d.ts +48 -0
  166. package/dist/types/common/config.d.ts +2 -0
  167. package/dist/types/common/errors/captcha-error.d.ts +15 -0
  168. package/dist/types/common/errors/intent-to-join.d.ts +16 -0
  169. package/dist/types/common/errors/join-meeting.d.ts +17 -0
  170. package/dist/types/common/errors/media.d.ts +15 -0
  171. package/dist/types/common/errors/parameter.d.ts +15 -0
  172. package/dist/types/common/errors/password-error.d.ts +15 -0
  173. package/dist/types/common/errors/permission.d.ts +14 -0
  174. package/dist/types/common/errors/reconnection-in-progress.d.ts +9 -0
  175. package/dist/types/common/errors/reconnection.d.ts +15 -0
  176. package/dist/types/common/errors/stats.d.ts +15 -0
  177. package/dist/types/common/errors/webex-errors.d.ts +69 -0
  178. package/dist/types/common/errors/webex-meetings-error.d.ts +20 -0
  179. package/dist/types/common/events/events-scope.d.ts +17 -0
  180. package/dist/types/common/events/events.d.ts +12 -0
  181. package/dist/types/common/events/trigger-proxy.d.ts +2 -0
  182. package/dist/types/common/events/util.d.ts +2 -0
  183. package/dist/types/common/logs/logger-config.d.ts +2 -0
  184. package/dist/types/common/logs/logger-proxy.d.ts +2 -0
  185. package/dist/types/common/logs/request.d.ts +34 -0
  186. package/dist/types/common/queue.d.ts +34 -0
  187. package/dist/types/config.d.ts +72 -0
  188. package/dist/types/constants.d.ts +1028 -0
  189. package/dist/types/controls-options-manager/constants.d.ts +4 -0
  190. package/dist/types/controls-options-manager/enums.d.ts +15 -0
  191. package/dist/types/controls-options-manager/index.d.ts +136 -0
  192. package/dist/types/controls-options-manager/types.d.ts +43 -0
  193. package/dist/types/controls-options-manager/util.d.ts +1 -0
  194. package/dist/types/index.d.ts +7 -0
  195. package/dist/types/interpretation/collection.d.ts +5 -0
  196. package/dist/types/interpretation/index.d.ts +5 -0
  197. package/dist/types/interpretation/siLanguage.d.ts +5 -0
  198. package/dist/types/locus-info/controlsUtils.d.ts +2 -0
  199. package/dist/types/locus-info/embeddedAppsUtils.d.ts +2 -0
  200. package/dist/types/locus-info/fullState.d.ts +2 -0
  201. package/dist/types/locus-info/hostUtils.d.ts +2 -0
  202. package/dist/types/locus-info/index.d.ts +322 -0
  203. package/dist/types/locus-info/infoUtils.d.ts +2 -0
  204. package/dist/types/locus-info/mediaSharesUtils.d.ts +2 -0
  205. package/dist/types/locus-info/parser.d.ts +271 -0
  206. package/dist/types/locus-info/selfUtils.d.ts +2 -0
  207. package/dist/types/media/index.d.ts +34 -0
  208. package/dist/types/media/properties.d.ts +93 -0
  209. package/dist/types/media/util.d.ts +2 -0
  210. package/dist/types/mediaQualityMetrics/config.d.ts +365 -0
  211. package/dist/types/meeting/in-meeting-actions.d.ts +163 -0
  212. package/dist/types/meeting/index.d.ts +1512 -0
  213. package/dist/types/meeting/locusMediaRequest.d.ts +75 -0
  214. package/dist/types/meeting/muteState.d.ts +184 -0
  215. package/dist/types/meeting/request.d.ts +289 -0
  216. package/dist/types/meeting/request.type.d.ts +11 -0
  217. package/dist/types/meeting/state.d.ts +9 -0
  218. package/dist/types/meeting/util.d.ts +94 -0
  219. package/dist/types/meeting-info/collection.d.ts +20 -0
  220. package/dist/types/meeting-info/index.d.ts +62 -0
  221. package/dist/types/meeting-info/meeting-info-v2.d.ts +122 -0
  222. package/dist/types/meeting-info/request.d.ts +22 -0
  223. package/dist/types/meeting-info/util.d.ts +2 -0
  224. package/dist/types/meeting-info/utilv2.d.ts +2 -0
  225. package/dist/types/meetings/collection.d.ts +31 -0
  226. package/dist/types/meetings/index.d.ts +361 -0
  227. package/dist/types/meetings/meetings.types.d.ts +4 -0
  228. package/dist/types/meetings/request.d.ts +27 -0
  229. package/dist/types/meetings/util.d.ts +18 -0
  230. package/dist/types/member/index.d.ts +159 -0
  231. package/dist/types/member/types.d.ts +32 -0
  232. package/dist/types/member/util.d.ts +2 -0
  233. package/dist/types/members/collection.d.ts +29 -0
  234. package/dist/types/members/index.d.ts +353 -0
  235. package/dist/types/members/request.d.ts +114 -0
  236. package/dist/types/members/types.d.ts +24 -0
  237. package/dist/types/members/util.d.ts +210 -0
  238. package/dist/types/metrics/constants.d.ts +55 -0
  239. package/dist/types/metrics/index.d.ts +45 -0
  240. package/dist/types/multistream/mediaRequestManager.d.ts +118 -0
  241. package/dist/types/multistream/receiveSlot.d.ts +68 -0
  242. package/dist/types/multistream/receiveSlotManager.d.ts +56 -0
  243. package/dist/types/multistream/remoteMedia.d.ts +72 -0
  244. package/dist/types/multistream/remoteMediaGroup.d.ts +47 -0
  245. package/dist/types/multistream/remoteMediaManager.d.ts +277 -0
  246. package/dist/types/networkQualityMonitor/index.d.ts +70 -0
  247. package/dist/types/personal-meeting-room/index.d.ts +47 -0
  248. package/dist/types/personal-meeting-room/request.d.ts +14 -0
  249. package/dist/types/personal-meeting-room/util.d.ts +2 -0
  250. package/dist/types/reachability/index.d.ts +158 -0
  251. package/dist/types/reachability/request.d.ts +39 -0
  252. package/dist/types/reactions/constants.d.ts +3 -0
  253. package/dist/types/reactions/reactions.d.ts +4 -0
  254. package/dist/types/reactions/reactions.type.d.ts +52 -0
  255. package/dist/types/reconnection-manager/index.d.ts +126 -0
  256. package/dist/types/recording-controller/enums.d.ts +7 -0
  257. package/dist/types/recording-controller/index.d.ts +207 -0
  258. package/dist/types/recording-controller/util.d.ts +14 -0
  259. package/dist/types/roap/index.d.ts +77 -0
  260. package/dist/types/roap/request.d.ts +38 -0
  261. package/dist/types/roap/turnDiscovery.d.ts +91 -0
  262. package/dist/types/rtcMetrics/constants.d.ts +4 -0
  263. package/dist/types/rtcMetrics/index.d.ts +47 -0
  264. package/dist/types/statsAnalyzer/global.d.ts +36 -0
  265. package/dist/types/statsAnalyzer/index.d.ts +200 -0
  266. package/dist/types/statsAnalyzer/mqaUtil.d.ts +24 -0
  267. package/dist/types/transcription/index.d.ts +64 -0
  268. package/package.json +23 -20
  269. package/src/annotation/annotation.types.ts +50 -0
  270. package/src/annotation/constants.ts +36 -0
  271. package/src/annotation/index.ts +328 -0
  272. package/src/breakouts/README.md +44 -14
  273. package/src/breakouts/breakout.ts +87 -9
  274. package/src/breakouts/edit-lock-error.ts +25 -0
  275. package/src/breakouts/events.ts +56 -0
  276. package/src/breakouts/index.ts +710 -10
  277. package/src/breakouts/request.ts +55 -0
  278. package/src/breakouts/utils.ts +57 -0
  279. package/src/common/errors/webex-errors.ts +6 -2
  280. package/src/common/logs/logger-proxy.ts +1 -1
  281. package/src/common/queue.ts +22 -8
  282. package/src/config.ts +2 -7
  283. package/src/constants.ts +175 -21
  284. package/src/controls-options-manager/constants.ts +5 -0
  285. package/src/controls-options-manager/enums.ts +18 -0
  286. package/src/controls-options-manager/index.ts +278 -0
  287. package/src/controls-options-manager/types.ts +59 -0
  288. package/src/controls-options-manager/util.ts +300 -0
  289. package/src/index.ts +39 -0
  290. package/src/interpretation/README.md +60 -0
  291. package/src/interpretation/collection.ts +19 -0
  292. package/src/interpretation/index.ts +332 -0
  293. package/src/interpretation/siLanguage.ts +18 -0
  294. package/src/locus-info/controlsUtils.ts +108 -0
  295. package/src/locus-info/index.ts +381 -59
  296. package/src/locus-info/infoUtils.ts +10 -2
  297. package/src/locus-info/mediaSharesUtils.ts +48 -0
  298. package/src/locus-info/parser.ts +224 -39
  299. package/src/locus-info/selfUtils.ts +81 -5
  300. package/src/media/index.ts +89 -109
  301. package/src/media/properties.ts +49 -90
  302. package/src/mediaQualityMetrics/config.ts +379 -377
  303. package/src/meeting/in-meeting-actions.ts +179 -3
  304. package/src/meeting/index.ts +2062 -2137
  305. package/src/meeting/locusMediaRequest.ts +314 -0
  306. package/src/meeting/muteState.ts +227 -130
  307. package/src/meeting/request.ts +157 -116
  308. package/src/meeting/util.ts +555 -396
  309. package/src/meeting-info/index.ts +54 -8
  310. package/src/meeting-info/meeting-info-v2.ts +148 -14
  311. package/src/meeting-info/utilv2.ts +13 -3
  312. package/src/meetings/collection.ts +20 -0
  313. package/src/meetings/index.ts +397 -102
  314. package/src/meetings/meetings.types.ts +12 -0
  315. package/src/meetings/request.ts +2 -0
  316. package/src/meetings/util.ts +103 -4
  317. package/src/member/index.ts +49 -0
  318. package/src/member/types.ts +38 -0
  319. package/src/member/util.ts +127 -25
  320. package/src/members/collection.ts +8 -0
  321. package/src/members/index.ts +107 -6
  322. package/src/members/request.ts +97 -17
  323. package/src/members/types.ts +28 -0
  324. package/src/members/util.ts +319 -240
  325. package/src/metrics/constants.ts +2 -4
  326. package/src/metrics/index.ts +1 -490
  327. package/src/multistream/mediaRequestManager.ts +289 -79
  328. package/src/multistream/receiveSlot.ts +55 -18
  329. package/src/multistream/receiveSlotManager.ts +46 -24
  330. package/src/multistream/remoteMedia.ts +27 -2
  331. package/src/multistream/remoteMediaGroup.ts +59 -0
  332. package/src/multistream/remoteMediaManager.ts +113 -32
  333. package/src/networkQualityMonitor/index.ts +6 -6
  334. package/src/reachability/index.ts +76 -18
  335. package/src/reachability/request.ts +16 -7
  336. package/src/reconnection-manager/index.ts +68 -43
  337. package/src/recording-controller/index.ts +20 -3
  338. package/src/recording-controller/util.ts +26 -9
  339. package/src/roap/index.ts +25 -30
  340. package/src/roap/request.ts +103 -95
  341. package/src/roap/turnDiscovery.ts +51 -25
  342. package/src/rtcMetrics/constants.ts +3 -0
  343. package/src/rtcMetrics/index.ts +100 -0
  344. package/src/statsAnalyzer/global.ts +1 -94
  345. package/src/statsAnalyzer/index.ts +376 -386
  346. package/src/statsAnalyzer/mqaUtil.ts +100 -99
  347. package/test/integration/spec/converged-space-meetings.js +233 -0
  348. package/test/integration/spec/journey.js +336 -259
  349. package/test/integration/spec/space-meeting.js +77 -4
  350. package/test/unit/spec/annotation/index.ts +418 -0
  351. package/test/unit/spec/breakouts/breakout.ts +142 -24
  352. package/test/unit/spec/breakouts/edit-lock-error.ts +30 -0
  353. package/test/unit/spec/breakouts/events.ts +89 -0
  354. package/test/unit/spec/breakouts/index.ts +1545 -48
  355. package/test/unit/spec/breakouts/request.ts +104 -0
  356. package/test/unit/spec/breakouts/utils.js +72 -0
  357. package/test/unit/spec/common/queue.js +31 -2
  358. package/test/unit/spec/controls-options-manager/index.js +287 -0
  359. package/test/unit/spec/controls-options-manager/util.js +582 -0
  360. package/test/unit/spec/fixture/locus.js +1 -0
  361. package/test/unit/spec/interpretation/collection.ts +15 -0
  362. package/test/unit/spec/interpretation/index.ts +589 -0
  363. package/test/unit/spec/interpretation/siLanguage.ts +28 -0
  364. package/test/unit/spec/locus-info/controlsUtils.js +316 -43
  365. package/test/unit/spec/locus-info/index.js +1169 -36
  366. package/test/unit/spec/locus-info/infoUtils.js +37 -15
  367. package/test/unit/spec/locus-info/mediaSharesUtils.ts +22 -0
  368. package/test/unit/spec/locus-info/parser.js +62 -22
  369. package/test/unit/spec/locus-info/selfConstant.js +27 -4
  370. package/test/unit/spec/locus-info/selfUtils.js +208 -17
  371. package/test/unit/spec/media/index.ts +138 -28
  372. package/test/unit/spec/meeting/in-meeting-actions.ts +89 -3
  373. package/test/unit/spec/meeting/index.js +3510 -1747
  374. package/test/unit/spec/meeting/locusMediaRequest.ts +443 -0
  375. package/test/unit/spec/meeting/muteState.js +370 -208
  376. package/test/unit/spec/meeting/request.js +417 -45
  377. package/test/unit/spec/meeting/utils.js +601 -53
  378. package/test/unit/spec/meeting-info/index.js +181 -0
  379. package/test/unit/spec/meeting-info/meetinginfov2.js +383 -5
  380. package/test/unit/spec/meeting-info/utilv2.js +21 -0
  381. package/test/unit/spec/meetings/collection.js +14 -0
  382. package/test/unit/spec/meetings/index.js +874 -150
  383. package/test/unit/spec/meetings/utils.js +206 -2
  384. package/test/unit/spec/member/index.js +58 -4
  385. package/test/unit/spec/member/util.js +479 -35
  386. package/test/unit/spec/members/index.js +319 -1
  387. package/test/unit/spec/members/request.js +206 -27
  388. package/test/unit/spec/members/utils.js +184 -0
  389. package/test/unit/spec/metrics/index.js +1 -50
  390. package/test/unit/spec/multistream/mediaRequestManager.ts +803 -162
  391. package/test/unit/spec/multistream/receiveSlot.ts +72 -13
  392. package/test/unit/spec/multistream/receiveSlotManager.ts +58 -28
  393. package/test/unit/spec/multistream/remoteMedia.ts +30 -0
  394. package/test/unit/spec/multistream/remoteMediaGroup.ts +266 -0
  395. package/test/unit/spec/multistream/remoteMediaManager.ts +318 -0
  396. package/test/unit/spec/networkQualityMonitor/index.js +4 -4
  397. package/test/unit/spec/reachability/index.ts +185 -7
  398. package/test/unit/spec/reachability/request.js +68 -0
  399. package/test/unit/spec/reconnection-manager/index.js +59 -6
  400. package/test/unit/spec/recording-controller/index.js +294 -218
  401. package/test/unit/spec/recording-controller/util.js +223 -96
  402. package/test/unit/spec/roap/index.ts +27 -51
  403. package/test/unit/spec/roap/request.ts +202 -85
  404. package/test/unit/spec/roap/turnDiscovery.ts +36 -8
  405. package/test/unit/spec/rtcMetrics/index.ts +68 -0
  406. package/test/unit/spec/stats-analyzer/index.js +92 -41
  407. package/test/utils/constants.js +9 -0
  408. package/test/utils/integrationTestUtils.js +46 -0
  409. package/test/utils/testUtils.js +0 -45
  410. package/test/utils/webex-config.js +4 -0
  411. package/test/utils/webex-test-users.js +6 -3
  412. package/dist/meeting/effectsState.js +0 -262
  413. package/dist/meeting/effectsState.js.map +0 -1
  414. package/dist/metrics/config.js +0 -299
  415. package/dist/metrics/config.js.map +0 -1
  416. package/src/index.js +0 -16
  417. package/src/meeting/effectsState.ts +0 -211
  418. package/src/metrics/config.ts +0 -495
  419. package/test/unit/spec/meeting/effectsState.js +0 -285
@@ -0,0 +1,1512 @@
1
+ /// <reference types="node" />
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';
5
+ import { StatsAnalyzer } from '../statsAnalyzer';
6
+ import NetworkQualityMonitor from '../networkQualityMonitor';
7
+ import Roap from '../roap/index';
8
+ import { type BundlePolicy } from '../media';
9
+ import MediaProperties from '../media/properties';
10
+ import ReconnectionManager from '../reconnection-manager';
11
+ import MeetingRequest from './request';
12
+ import Members from '../members/index';
13
+ import Transcription from '../transcription';
14
+ import { ReceiveSlotManager } from '../multistream/receiveSlotManager';
15
+ import { MediaRequestManager } from '../multistream/mediaRequestManager';
16
+ import { Configuration as RemoteMediaManagerConfiguration, RemoteMediaManager } from '../multistream/remoteMediaManager';
17
+ import { ReactionServerType, SkinToneType } from '../reactions/reactions.type';
18
+ import InMeetingActions from './in-meeting-actions';
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
+ };
39
+ export declare const MEDIA_UPDATE_TYPE: {
40
+ TRANSCODED_MEDIA_CONNECTION: string;
41
+ SHARE_FLOOR_REQUEST: string;
42
+ UPDATE_MEDIA: string;
43
+ };
44
+ export declare enum ScreenShareFloorStatus {
45
+ PENDING = "floor_request_pending",
46
+ GRANTED = "floor_request_granted",
47
+ RELEASED = "floor_released"
48
+ }
49
+ /**
50
+ * MediaDirection
51
+ * @typedef {Object} MediaDirection
52
+ * @property {boolean} sendAudio
53
+ * @property {boolean} receiveAudio
54
+ * @property {boolean} sendVideo
55
+ * @property {boolean} receiveVideo
56
+ * @property {boolean} sendShare
57
+ * @property {boolean} receiveShare
58
+ * @property {boolean} isSharing
59
+ */
60
+ /**
61
+ * SharePreferences
62
+ * @typedef {Object} SharePreferences
63
+ * @property {Object} [shareConstraints]
64
+ * @property {Boolean} [highFrameRate]
65
+ */
66
+ /**
67
+ * JoinOptions
68
+ * @typedef {Object} JoinOptions
69
+ * @property {String} [resourceId]
70
+ * @property {String} [pin]
71
+ * @property {Boolean} [moderator]
72
+ * @property {String|Object} [meetingQuality]
73
+ * @property {String} [meetingQuality.remote]
74
+ * @property {Boolean} [rejoin]
75
+ * @property {Boolean} [enableMultistream]
76
+ */
77
+ /**
78
+ * Recording
79
+ * @typedef {Object} Recording
80
+ * @property {Object} state
81
+ * @property {String} modifiedBy
82
+ */
83
+ /**
84
+ * Meeting State Change Event
85
+ * Emitted when ever there is a meeting state change
86
+ * @event meeting:stateChange
87
+ * @instance
88
+ * @type {Object}
89
+ * @property {String} currentState current state of the meeting
90
+ * @property {String} previousState previous state of the meeting
91
+ * @memberof Meeting
92
+ */
93
+ /**
94
+ * Media Ready Event
95
+ * Emitted when a stream is ready to be rendered
96
+ * @event media:ready
97
+ * @instance
98
+ * @type {Object}
99
+ * @property {MediaStream} stream the media stream
100
+ * @property {String} type what type of stream, remote, local
101
+ * @memberof Meeting
102
+ */
103
+ /**
104
+ * Media Stopped Event
105
+ * Emitted when a stream has stopped sending
106
+ * @event media:stopped
107
+ * @instance
108
+ * @type {Object}
109
+ * @property {String} type what type of stream, remote, local
110
+ * @memberof Meeting
111
+ */
112
+ /**
113
+ * Meeting Ringing Event
114
+ * Emitted when this client should play a ringing sound, because this member is getting an incoming meeting
115
+ * or sending out an incoming meeting
116
+ * @event meeting:ringing
117
+ * @instance
118
+ * @type {Object}
119
+ * @property {String} type // INCOMING or JOIN
120
+ * @property {String} id
121
+ * @memberof Meeting
122
+ */
123
+ /**
124
+ * Meeting Ringing Stop Event
125
+ * Emitted when this client should stop playing a ringing sound
126
+ * @event meeting:ringingStop
127
+ * @instance
128
+ * @type {Object}
129
+ * @property {Object} type
130
+ * @property {Boolean} type.remoteAnswered
131
+ * @property {Boolean} type.remoteDeclined
132
+ * @property {String} id
133
+ * @memberof Meeting
134
+ */
135
+ /**
136
+ * Meeting Started Sharing Local Event
137
+ * Emitted when this member starts sharing
138
+ * @event meeting:startedSharingLocal
139
+ * @instance
140
+ * @type {Object}
141
+ * @memberof Meeting
142
+ */
143
+ /**
144
+ * Meeting Stopped Sharing Local Event
145
+ * Emitted when this member stops sharing
146
+ * @event meeting:stoppedSharingLocal
147
+ * @instance
148
+ * @type {Object}
149
+ * @memberof Meeting
150
+ */
151
+ /**
152
+ * Meeting Started Sharing Remote Event
153
+ * Emitted when remote sharing starts
154
+ * @event meeting:startedSharingRemote
155
+ * @instance
156
+ * @type {Object}
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
161
+ * @memberof Meeting
162
+ *
163
+ */
164
+ /**
165
+ * Meeting Stopped Sharing Remote Event
166
+ * Emitted when remote screen sharing ends
167
+ * @event meeting:stoppedSharingRemote
168
+ * @instance
169
+ * @type {Object}
170
+ * @memberof Meeting
171
+ */
172
+ /**
173
+ * Meeting Locked Event
174
+ * Emitted when a meeting is locked
175
+ * @event meeting:locked
176
+ * @instance
177
+ * @type {Object}
178
+ * @property {Object} info
179
+ * @memberof Meeting
180
+ */
181
+ /**
182
+ * Meeting Unlocked Event
183
+ * Emitted when a meeting is unlocked
184
+ * @event meeting:unlocked
185
+ * @instance
186
+ * @type {Object}
187
+ * @property {Object} info
188
+ * @memberof Meeting
189
+ */
190
+ /**
191
+ * Meeting Actions Update Event
192
+ * Emitted when a user can take actions on a meeting such as lock, unlock, assign host
193
+ * @event meeting:actionsUpdate
194
+ * @instance
195
+ * @type {Object}
196
+ * @property {Boolean} canLock
197
+ * @property {Boolean} canUnlock
198
+ * @property {Boolean} canAssignHost
199
+ * @memberof Meeting
200
+ */
201
+ /**
202
+ * Meeting Unmuted By Others Event
203
+ * Emitted when a member is unmuted by another member
204
+ * @event meeting:self:unmutedByOthers
205
+ * @instance
206
+ * @type {Object}
207
+ * @property {Object} payload
208
+ * @memberof Meeting
209
+ */
210
+ /**
211
+ * Meeting Muted By Others Event
212
+ * Emitted when a member is muted by another member
213
+ * @event meeting:self:mutedByOthers
214
+ * @instance
215
+ * @type {Object}
216
+ * @property {Object} payload
217
+ * @property {Boolean} payload.unmuteAllowed - whether the user is allowed to unmute self
218
+ * @memberof Meeting
219
+ */
220
+ /**
221
+ * Meeting Muted By Others Event
222
+ * Emitted when the host(moderator)/co-host requests a user to unmute
223
+ * @event meeting:self:requestedToUnmute
224
+ * @instance
225
+ * @type {Object}
226
+ * @property {Object} payload
227
+ * @memberof Meeting
228
+ */
229
+ /**
230
+ * Meeting Self Guest Admitted Event
231
+ * Emitted when a joined user get admitted to the meeting by another member or host
232
+ * @event meeting:self:guestAdmitted
233
+ * @instance
234
+ * @type {Object}
235
+ * @property {Object} payload
236
+ * @memberof Meeting
237
+ */
238
+ /**
239
+ * Meeting Self Lobby Waiting Event
240
+ * Emitted when joined user enters the lobby and is waiting for the webex meeting to begin
241
+ * @event meeting:self:lobbyWaiting
242
+ * @instance
243
+ * @type {Object}
244
+ * @property {Object} reason Reason why user left the meeting
245
+ * @memberof Meeting
246
+ */
247
+ /**
248
+ * Meeting Self Left State
249
+ * Emitted when user is inactive for more then 40 seconds, User can rejoin the meeting again
250
+ * @event meeting:self:left
251
+ * @instance
252
+ * @type {Object}
253
+ * @property {Object} payload
254
+ * @memberof Meeting
255
+ */
256
+ /**
257
+ * Reconnection Starting Event
258
+ * Emitted when reconnection of media to the active meeting was successful
259
+ * @event meeting:reconnectionStarting
260
+ * @instance
261
+ * @memberof Meeting
262
+ */
263
+ /**
264
+ * Reconnection Success Event
265
+ * Emitted when reconnection of media to the active meeting was successful
266
+ * @event meeting:reconnectionSuccess
267
+ * @instance
268
+ * @type {Object}
269
+ * @property {Object} reconnect
270
+ * @memberof Meeting
271
+ */
272
+ /**
273
+ * Reconnection Failure Event
274
+ * Emitted when reconnection of media to the active meeting was successful
275
+ * @event meeting:reconnectionFailure
276
+ * @instance
277
+ * @type {Object}
278
+ * @property {Error} error
279
+ * @memberof Meeting
280
+ */
281
+ /**
282
+ * Meeting network quality event
283
+ * Emitted on each interval of retrieving stats Analyzer data
284
+ * @event network:quality
285
+ * @type {Object}
286
+ * @property {string} mediaType {video|audio}
287
+ * @property {number} networkQualityScore - {1|0} 1 indicates acceptable uplink 0 indicates unacceptable uplink based on threshold
288
+ * @memberof Meeting
289
+ */
290
+ /**
291
+ * @description Meeting is the crux of the plugin
292
+ * @export
293
+ * @class Meeting
294
+ */
295
+ export default class Meeting extends StatelessWebexPlugin {
296
+ attrs: any;
297
+ audio: any;
298
+ breakouts: any;
299
+ simultaneousInterpretation: any;
300
+ annotation: any;
301
+ conversationUrl: string;
302
+ correlationId: string;
303
+ destination: string;
304
+ destinationType: string;
305
+ deviceUrl: string;
306
+ hostId: string;
307
+ id: string;
308
+ isMultistream: boolean;
309
+ locusUrl: string;
310
+ mediaConnections: any[];
311
+ mediaId?: string;
312
+ meetingFiniteStateMachine: any;
313
+ meetingInfo: any;
314
+ meetingRequest: MeetingRequest;
315
+ members: Members;
316
+ options: object;
317
+ orgId: string;
318
+ owner: string;
319
+ partner: any;
320
+ policy: string;
321
+ reconnectionManager: ReconnectionManager;
322
+ resource: string;
323
+ roap: Roap;
324
+ roapSeq: number;
325
+ selfUrl?: string;
326
+ sipUri: string;
327
+ type: string;
328
+ userId: string;
329
+ video: any;
330
+ callEvents: any[];
331
+ datachannelUrl: string;
332
+ deferJoin: Promise<any>;
333
+ dialInDeviceStatus: string;
334
+ dialInUrl: string;
335
+ dialOutDeviceStatus: string;
336
+ dialOutUrl: string;
337
+ fetchMeetingInfoTimeoutId: NodeJS.Timeout;
338
+ floorGrantPending: boolean;
339
+ hasJoinedOnce: boolean;
340
+ hasWebsocketConnected: boolean;
341
+ inMeetingActions: InMeetingActions;
342
+ isLocalShareLive: boolean;
343
+ isRoapInProgress: boolean;
344
+ keepAliveTimerId: NodeJS.Timeout;
345
+ lastVideoLayoutInfo: any;
346
+ locusInfo: any;
347
+ locusMediaRequest?: LocusMediaRequest;
348
+ mediaProperties: MediaProperties;
349
+ mediaRequestManagers: {
350
+ audio: MediaRequestManager;
351
+ video: MediaRequestManager;
352
+ screenShareAudio: MediaRequestManager;
353
+ screenShareVideo: MediaRequestManager;
354
+ };
355
+ meetingInfoFailureReason: string;
356
+ meetingInfoFailureCode?: number;
357
+ networkQualityMonitor: NetworkQualityMonitor;
358
+ networkStatus: string;
359
+ passwordStatus: string;
360
+ queuedMediaUpdates: any[];
361
+ recording: any;
362
+ remoteMediaManager: RemoteMediaManager | null;
363
+ recordingController: RecordingController;
364
+ controlsOptionsManager: ControlsOptionsManager;
365
+ requiredCaptcha: any;
366
+ receiveSlotManager: ReceiveSlotManager;
367
+ selfUserPolicies: any;
368
+ shareStatus: string;
369
+ screenShareFloorState: ScreenShareFloorStatus;
370
+ statsAnalyzer: StatsAnalyzer;
371
+ transcription: Transcription;
372
+ updateMediaConnections: (mediaConnections: any[]) => void;
373
+ userDisplayHints: any;
374
+ endCallInitJoinReq: any;
375
+ endJoinReqResp: any;
376
+ endLocalSDPGenRemoteSDPRecvDelay: any;
377
+ joinedWith: any;
378
+ locusId: any;
379
+ startCallInitJoinReq: any;
380
+ startJoinReqResp: any;
381
+ startLocalSDPGenRemoteSDPRecvDelay: any;
382
+ wirelessShare: any;
383
+ guest: any;
384
+ meetingJoinUrl: any;
385
+ meetingNumber: any;
386
+ meetingState: any;
387
+ permissionToken: any;
388
+ resourceId: any;
389
+ resourceUrl: string;
390
+ selfId: string;
391
+ state: any;
392
+ localAudioTrackMuteStateHandler: (event: TrackMuteEvent) => void;
393
+ localVideoTrackMuteStateHandler: (event: TrackMuteEvent) => void;
394
+ underlyingLocalTrackChangeHandler: () => void;
395
+ roles: any[];
396
+ environment: string;
397
+ namespace: string;
398
+ allowMediaInLobby: boolean;
399
+ /**
400
+ * @param {Object} attrs
401
+ * @param {Object} options
402
+ * @constructor
403
+ * @memberof Meeting
404
+ */
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;
418
+ /**
419
+ * Fetches meeting information.
420
+ * @param {Object} options
421
+ * @param {String} [options.password] optional
422
+ * @param {String} [options.captchaCode] optional
423
+ * @public
424
+ * @memberof Meeting
425
+ * @returns {Promise}
426
+ */
427
+ fetchMeetingInfo({ password, captchaCode, extraParams, }: {
428
+ password?: string;
429
+ captchaCode?: string;
430
+ extraParams?: Record<string, any>;
431
+ }): Promise<void>;
432
+ /**
433
+ * Checks if the supplied password/host key is correct. It returns a promise with information whether the
434
+ * password and captcha code were correct or not.
435
+ * @param {String} password - this can be either a password or a host key, can be undefined if only captcha was required
436
+ * @param {String} captchaCode - can be undefined if captcha was not required by the server
437
+ * @public
438
+ * @memberof Meeting
439
+ * @returns {Promise<{isPasswordValid: boolean, requiredCaptcha: boolean, failureReason: MEETING_INFO_FAILURE_REASON}>}
440
+ */
441
+ verifyPassword(password: string, captchaCode: string): Promise<{
442
+ isPasswordValid: boolean;
443
+ requiredCaptcha: any;
444
+ failureReason: string;
445
+ } | {
446
+ isPasswordValid: boolean;
447
+ requiredCaptcha: any;
448
+ failureReason: string;
449
+ }>;
450
+ /**
451
+ * Refreshes the captcha. As a result the meeting will have new captcha id, image and audio.
452
+ * If the refresh operation fails, meeting remains with the old captcha properties.
453
+ * @public
454
+ * @memberof Meeting
455
+ * @returns {Promise}
456
+ */
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;
466
+ /**
467
+ * Proxy function for all the listener set ups
468
+ * @returns {undefined}
469
+ * @private
470
+ * @memberof Meeting
471
+ */
472
+ private setUpLocusInfoListeners;
473
+ /**
474
+ * Set up the listeners for breakouts
475
+ * @returns {undefined}
476
+ * @private
477
+ * @memberof Meeting
478
+ */
479
+ setUpBreakoutsListener(): void;
480
+ /**
481
+ * Set up the listeners for interpretation
482
+ * @returns {undefined}
483
+ * @private
484
+ * @memberof Meeting
485
+ */
486
+ private setUpInterpretationListener;
487
+ /**
488
+ * Set up the locus info listener for meetings disconnected due to inactivity
489
+ * @returns {undefined}
490
+ * @private
491
+ * @memberof Meeting
492
+ */
493
+ private setUpLocusInfoMediaInactiveListener;
494
+ /**
495
+ * Set up the locus info listener for assign host permissions on a meeting
496
+ * @returns {undefined}
497
+ * @private
498
+ * @memberof Meeting
499
+ */
500
+ private setUpLocusInfoAssignHostListener;
501
+ /**
502
+ * Set up the internal locus info full state object listener
503
+ * @returns {undefined}
504
+ * @private
505
+ * @memberof Meeting
506
+ */
507
+ private setUpLocusFullStateListener;
508
+ /**
509
+ * sets the network status on meeting object
510
+ * @param {String} networkStatus
511
+ * @private
512
+ * @returns {undefined}
513
+ * @memberof Meeting
514
+ */
515
+ private setNetworkStatus;
516
+ /**
517
+ * Set up the locus info self listener
518
+ * update self value for members and updates the member
519
+ * notifies consumer with members:self:update {activeSelfId endedSelfId}
520
+ * @returns {undefined}
521
+ * @private
522
+ * @memberof Meeting
523
+ */
524
+ private setUpLocusSelfListener;
525
+ /**
526
+ * Notify any changes on the pstn devices
527
+ * @param {Object} payload
528
+ * @returns {undefined}
529
+ * @private
530
+ * @memberof Meeting
531
+ */
532
+ private pstnUpdate;
533
+ /**
534
+ * Set up the locus info host listener
535
+ * update host value for members and updates the member
536
+ * notifies consumer with members:host:update: {activeHostId, endedHostId}
537
+ * @returns {undefined}
538
+ * @private
539
+ * @memberof Meeting
540
+ */
541
+ private setUpLocusHostListener;
542
+ /**
543
+ * Set up the locus info participants update listener
544
+ * update members collection value for members
545
+ * notifies consumer with members:update
546
+ * @returns {undefined}
547
+ * @private
548
+ * @memberof Meeting
549
+ */
550
+ private setUpLocusParticipantsListener;
551
+ /**
552
+ * Set up the locus info recording update listener
553
+ * update recording value for the meeting
554
+ * notifies consumer with:
555
+ * meeting:recording:started
556
+ * meeting:recording:stopped
557
+ * meeting:recording:paused
558
+ * meeting:recording:resumed
559
+ *
560
+ * Set up the locus info meeeting container listener
561
+ * update meetingContainerUrl value for the meeting
562
+ * notifies consumer with:
563
+ * meeting:meetingContainer:update
564
+ *
565
+ * @returns {undefined}
566
+ * @private
567
+ * @memberof Meeting
568
+ */
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;
577
+ /**
578
+ * Set up the locus info media shares listener
579
+ * update content and whiteboard sharing id value for members, and updates the member
580
+ * notifies consumer with members:content:update {activeContentSharingId, endedContentSharingId}
581
+ * @returns {undefined}
582
+ * @private
583
+ * @memberof Meeting
584
+ */
585
+ private setUpLocusMediaSharesListener;
586
+ /**
587
+ * Set up the locus info url listener
588
+ * update locus_url value for members
589
+ * @returns {undefined}
590
+ * @private
591
+ * @memberof Meeting
592
+ */
593
+ private setUpLocusUrlListener;
594
+ /**
595
+ * Set up the locus info service link listener
596
+ * update the locusInfo for recording controller
597
+ * does not currently re-emit the event as it's internal only
598
+ * payload is unused
599
+ * @returns {undefined}
600
+ * @private
601
+ * @memberof Meeting
602
+ */
603
+ private setUpLocusServicesListener;
604
+ /**
605
+ * Set up the locus info meeting info listener
606
+ * @returns {undefined}
607
+ * @private
608
+ * @memberof meeting
609
+ */
610
+ private setUpLocusInfoMeetingInfoListener;
611
+ /**
612
+ * Handles a data channel URL change
613
+ * @param {String} datachannelUrl
614
+ * @returns {void}
615
+ */
616
+ handleDataChannelUrlChange(datachannelUrl: any): void;
617
+ /**
618
+ * Set up the locus info embedded apps listener
619
+ * @returns {undefined}
620
+ * @private
621
+ * @memberof meeting
622
+ */
623
+ private setUpLocusEmbeddedAppsListener;
624
+ /**
625
+ * Internal function to listen to the self object changes
626
+ * @returns {undefined}
627
+ * @private
628
+ * @memberof Meeting
629
+ */
630
+ private setUpLocusInfoSelfListener;
631
+ /**
632
+ * Add LocusInfo nested object listeners (from child to parent)
633
+ * @returns {undefined}
634
+ * @private
635
+ * @memberof Meeting
636
+ */
637
+ private setUpLocusInfoMeetingListener;
638
+ /**
639
+ * Set meeting values rather than events
640
+ * @param {Object} object
641
+ * @returns {undefined}
642
+ * @private
643
+ * @memberof Meeting
644
+ * // TODO: is this function necessary?
645
+ */
646
+ private updateMeetingObject;
647
+ /**
648
+ * Invite a guest to the call that isn't normally part of this call
649
+ * @param {Object} invitee
650
+ * @param {String} invitee.emailAddress
651
+ * @param {String} invitee.email
652
+ * @param {String} invitee.phoneNumber
653
+ * @param {Boolean} [alertIfActive]
654
+ * @returns {Promise} see #members.addMember
655
+ * @public
656
+ * @memberof Meeting
657
+ */
658
+ invite(invitee: {
659
+ emailAddress: string;
660
+ email: string;
661
+ phoneNumber: string;
662
+ }, alertIfActive?: boolean): any;
663
+ /**
664
+ * Cancel an outgoing phone call invitation made during a meeting
665
+ * @param {Object} invitee
666
+ * @param {String} invitee.phoneNumber
667
+ * @returns {Promise} see #members.cancelPhoneInvite
668
+ * @public
669
+ * @memberof Meeting
670
+ */
671
+ cancelPhoneInvite(invitee: {
672
+ phoneNumber: string;
673
+ }): any;
674
+ /**
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.
682
+ * @param {Array} memberIds
683
+ * @param {Object} sessionLocusUrls: {authorizingLocusUrl, mainLocusUrl}
684
+ * @returns {Promise} see #members.admitMembers
685
+ * @public
686
+ * @memberof Meeting
687
+ */
688
+ admit(memberIds: Array<any>, sessionLocusUrls?: {
689
+ authorizingLocusUrl: string;
690
+ mainLocusUrl: string;
691
+ }): any;
692
+ /**
693
+ * Remove the member from the meeting, boot them
694
+ * @param {String} memberId
695
+ * @returns {Promise} see #members.removeMember
696
+ * @public
697
+ * @memberof Meeting
698
+ */
699
+ remove(memberId: string): any;
700
+ /**
701
+ * Mute another member from the meeting
702
+ * @param {String} memberId
703
+ * @param {Boolean} mute
704
+ * @returns {Promise} see #members.muteMember
705
+ * @public
706
+ * @memberof Meeting
707
+ */
708
+ mute(memberId: string, mute?: boolean): any;
709
+ /**
710
+ * Transfer the moderator role to another eligible member
711
+ * @param {String} memberId
712
+ * @param {Boolean} moderator
713
+ * @returns {Promise} see #members.transferHostToMember
714
+ * @public
715
+ * @memberof Meeting
716
+ */
717
+ transfer(memberId: string, moderator?: boolean): any;
718
+ /**
719
+ * Reference to the Members object
720
+ * @returns {Members}
721
+ * @public
722
+ * @memberof Meeting
723
+ */
724
+ getMembers(): Members;
725
+ /**
726
+ * Sets the meeting info on the class instance
727
+ * @param {Object} meetingInfo
728
+ * @param {Object} meetingInfo.body
729
+ * @param {String} meetingInfo.body.conversationUrl
730
+ * @param {String} meetingInfo.body.locusUrl
731
+ * @param {String} meetingInfo.body.sipUri
732
+ * @param {Object} meetingInfo.body.owner
733
+ * @param {Object | String} destination locus object with meeting data or destination string (sip url, meeting link, etc)
734
+ * @returns {undefined}
735
+ * @private
736
+ * @memberof Meeting
737
+ */
738
+ parseMeetingInfo(meetingInfo: {
739
+ body: {
740
+ conversationUrl: string;
741
+ locusUrl: string;
742
+ sipUri: string;
743
+ owner: object;
744
+ };
745
+ } | any, destination?: object | string | null): void;
746
+ /**
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
753
+ * @returns {undefined}
754
+ * @private
755
+ * @memberof Meeting
756
+ */
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;
764
+ /**
765
+ * Sets the sip uri on the class instance
766
+ * uses meeting info as precedence
767
+ * @param {String} sipUri
768
+ * @returns {undefined}
769
+ * @private
770
+ * @memberof Meeting
771
+ */
772
+ setSipUri(sipUri: string): void;
773
+ /**
774
+ * Set the locus info the class instance
775
+ * @param {Object} locus
776
+ * @param {Array} locus.mediaConnections
777
+ * @param {String} locus.locusUrl
778
+ * @param {String} locus.locusId
779
+ * @param {String} locus.mediaId
780
+ * @param {Object} locus.host
781
+ * @todo change name to genertic parser
782
+ * @returns {undefined}
783
+ * @private
784
+ * @memberof Meeting
785
+ */
786
+ setLocus(locus: {
787
+ mediaConnections: Array<any>;
788
+ locusUrl: string;
789
+ locusId: string;
790
+ mediaId: string;
791
+ host: object;
792
+ } | any): void;
793
+ /**
794
+ * Upload logs for the current meeting
795
+ * @param {object} options file name and function name
796
+ * @returns {undefined}
797
+ * @public
798
+ * @memberof Meeting
799
+ */
800
+ uploadLogs(options?: object): void;
801
+ /**
802
+ * Removes remote audio, video and share tracks from class instance's mediaProperties
803
+ * @returns {undefined}
804
+ */
805
+ unsetRemoteTracks(): void;
806
+ /**
807
+ * Removes the remote stream on the class instance and triggers an event
808
+ * to developers
809
+ * @returns {undefined}
810
+ * @public
811
+ * @memberof Meeting
812
+ * @deprecated after v1.89.3
813
+ */
814
+ closeRemoteStream(): void;
815
+ /**
816
+ * Removes the remote tracks on the class instance and triggers an event
817
+ * to developers
818
+ * @returns {undefined}
819
+ * @memberof Meeting
820
+ */
821
+ closeRemoteTracks(): Promise<[any, any, any]>;
822
+ /**
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>}
828
+ */
829
+ private setLocalAudioTrack;
830
+ /**
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>}
836
+ */
837
+ private setLocalVideoTrack;
838
+ /**
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>}
844
+ */
845
+ private setLocalShareVideoTrack;
846
+ /**
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>}
852
+ */
853
+ private setLocalShareAudioTrack;
854
+ /**
855
+ * sets up listner for mercury event
856
+ * @returns {undefined}
857
+ * @public
858
+ * @memberof Meeting
859
+ */
860
+ setMercuryListener(): void;
861
+ /**
862
+ * Close the peer connections and remove them from the class.
863
+ * Cleanup any media connection related things.
864
+ *
865
+ * @returns {Promise}
866
+ * @public
867
+ * @memberof Meeting
868
+ */
869
+ closePeerConnections(): Promise<void>;
870
+ /**
871
+ * Unsets the peer connections on the class
872
+ * warning DO NOT CALL WITHOUT CLOSING PEER CONNECTIONS FIRST
873
+ * @returns {undefined}
874
+ * @public
875
+ * @memberof Meeting
876
+ */
877
+ unsetPeerConnections(): void;
878
+ /**
879
+ * Convenience method to set the correlation id for the Meeting
880
+ * @param {String} id correlation id to set on the class
881
+ * @returns {undefined}
882
+ * @private
883
+ * @memberof Meeting
884
+ */
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;
893
+ /**
894
+ * Mute the audio for a meeting
895
+ * @returns {Promise} resolves the data from muting audio {mute, self} or rejects if there is no audio set
896
+ * @public
897
+ * @memberof Meeting
898
+ */
899
+ muteAudio(): any;
900
+ /**
901
+ * Unmute meeting audio
902
+ * @returns {Promise} resolves data from muting audio {mute, self} or rejects if there is no audio set
903
+ * @public
904
+ * @memberof Meeting
905
+ */
906
+ unmuteAudio(): any;
907
+ /**
908
+ * Mute the video for a meeting
909
+ * @returns {Promise} resolves data from muting video {mute, self} or rejects if there is no video set
910
+ * @public
911
+ * @memberof Meeting
912
+ */
913
+ muteVideo(): any;
914
+ /**
915
+ * Unmute meeting video
916
+ * @returns {Promise} resolves data from muting video {mute, self} or rejects if there is no video set
917
+ * @public
918
+ * @memberof Meeting
919
+ */
920
+ unmuteVideo(): any;
921
+ /**
922
+ * Shorthand function to join AND set up media
923
+ * @param {Object} options - options to join with media
924
+ * @param {JoinOptions} [options.joinOptions] - see #join()
925
+ * @param {AddMediaOptions} [options.mediaOptions] - see #addMedia()
926
+ * @returns {Promise} -- {join: see join(), media: see addMedia()}
927
+ * @public
928
+ * @memberof Meeting
929
+ * @example
930
+ * joinWithMedia({
931
+ * joinOptions: {resourceId: 'resourceId' },
932
+ * mediaOptions: {
933
+ * localTracks: { microphone: microphoneTrack, camera: cameraTrack }
934
+ * }
935
+ * })
936
+ */
937
+ joinWithMedia(options?: {
938
+ joinOptions?: any;
939
+ mediaOptions?: AddMediaOptions;
940
+ }): any;
941
+ /**
942
+ * Initiates the reconnection of the media in the meeting
943
+ *
944
+ * @param {object} options
945
+ * @returns {Promise} resolves with {reconnect} or errors with {error}
946
+ * @public
947
+ * @memberof Meeting
948
+ */
949
+ reconnect(options?: object): any;
950
+ /**
951
+ * Check if the meeting supports the Webex Assistant feature
952
+ * @returns {boolean}
953
+ * @throws TranscriptionNotSupportedError
954
+ */
955
+ isTranscriptionSupported(): boolean;
956
+ /**
957
+ * Check if the meeting supports the Reactions
958
+ * @returns {boolean}
959
+ */
960
+ isReactionsSupported(): boolean;
961
+ /**
962
+ * Monitor the Low-Latency Mercury (LLM) web socket connection on `onError` and `onClose` states
963
+ * @private
964
+ * @returns {void}
965
+ */
966
+ private monitorTranscriptionSocketConnection;
967
+ /**
968
+ * Request for a WebSocket Url, open and monitor the WebSocket connection
969
+ * @private
970
+ * @returns {Promise<void>} a promise to open the WebSocket connection
971
+ */
972
+ private receiveTranscription;
973
+ /**
974
+ * Callback called when a relay event is received from meeting LLM Connection
975
+ * @param {RelayEvent} e Event object coming from LLM Connection
976
+ * @private
977
+ * @returns {void}
978
+ */
979
+ private processRelayEvent;
980
+ /**
981
+ * stop recieving Transcription by closing
982
+ * the web socket connection properly
983
+ * @returns {void}
984
+ */
985
+ stopReceivingTranscription(): void;
986
+ /**
987
+ * triggers an event to notify that the user
988
+ * will not receive any more transcription
989
+ * @private
990
+ * @returns{void}
991
+ */
992
+ private triggerStopReceivingTranscriptionEvent;
993
+ /**
994
+ * Specify joining via audio (option: pstn), video, screenshare
995
+ * @param {JoinOptions} options A configurable options object for joining a meeting
996
+ * @returns {Promise} the join response
997
+ * @public
998
+ * @memberof Meeting
999
+ * Scenario A: Joining own claimed personal meeting room
1000
+ * Scenario B: Joining other's claimed personal meeting room, do pass pin (if desired to join as host, or nullify), do pass moderator
1001
+ * Scenario C: Joining an unclaimed personal meeting room, -do not- pass pin or moderator on first try, -do- pass pin and moderator
1002
+ * if joining as host on second loop, pass pin and pass moderator if joining as guest on second loop
1003
+ * Scenario D: Joining any other way (sip, pstn, conversationUrl, link just need to specify resourceId)
1004
+ */
1005
+ join(options?: any): any;
1006
+ /**
1007
+ * Connects to low latency mercury and reconnects if the address has changed
1008
+ * It will also disconnect if called when the meeting has ended
1009
+ * @param {String} datachannelUrl
1010
+ * @returns {Promise}
1011
+ */
1012
+ updateLLMConnection(): Promise<any>;
1013
+ /**
1014
+ * Use phone for meeting audio
1015
+ * @param {String} phoneNumber If provided, it will dial-out using this number. If not provided, dial-in will be used
1016
+ * @returns {Promise} Resolves once the dial-in or dial-out request has completed, or rejects if it failed
1017
+ * @public
1018
+ * @memberof Meeting
1019
+ */
1020
+ usePhoneAudio(phoneNumber: string): Promise<any>;
1021
+ /**
1022
+ * Determines if the given pstnStatus is in a state which implies the phone is provisioned
1023
+ * @param {String} pstnStatus
1024
+ * @returns {Boolean}
1025
+ * @private
1026
+ * @memberof Meeting
1027
+ */
1028
+ private isPhoneProvisioned;
1029
+ /**
1030
+ * Enable dial-in for audio
1031
+ * @returns {Promise} Resolves once the dial-in request has completed, or rejects if it failed
1032
+ * @private
1033
+ * @memberof Meeting
1034
+ */
1035
+ private dialInPstn;
1036
+ /**
1037
+ * Enable dial-out for audio
1038
+ * @param {String} phoneNumber Phone number to dial out to
1039
+ * @returns {Promise} Resolves once the dial-out request has completed (it doesn't wait for the user to answer the phone), or rejects if it failed
1040
+ * @private
1041
+ * @memberof Meeting
1042
+ */
1043
+ private dialOutPstn;
1044
+ /**
1045
+ * Disconnect meeting audio via phone.
1046
+ * @returns {Promise} Resolves once the phone audio disconnection has completed
1047
+ * @public
1048
+ * @memberof Meeting
1049
+ * @returns {Promise}
1050
+ */
1051
+ disconnectPhoneAudio(): Promise<[any, any]>;
1052
+ /**
1053
+ * Moves the call to the specified resourceId
1054
+ * @param {String} resourceId
1055
+ * @returns {Promise} once the move has been completed
1056
+ * @public
1057
+ * @memberof Meeting
1058
+ */
1059
+ moveTo(resourceId: string): any;
1060
+ /**
1061
+ * Moves the call from the specified resourceId, back to computer
1062
+ * @param {String} resourceId
1063
+ * @returns {Promise} once the move has been completed
1064
+ * @public
1065
+ * @memberof Meeting
1066
+ */
1067
+ moveFrom(resourceId: string): any;
1068
+ /**
1069
+ * Handles ROAP_FAILURE event from the webrtc media connection
1070
+ *
1071
+ * @param {Error} error
1072
+ * @returns {void}
1073
+ */
1074
+ handleRoapFailure: (error: any) => void;
1075
+ setupMediaConnectionListeners: () => void;
1076
+ /**
1077
+ * Registers for all required StatsAnalyzer events
1078
+ * @private
1079
+ * @returns {void}
1080
+ * @memberof Meetings
1081
+ */
1082
+ setupStatsAnalyzerEventHandlers: () => void;
1083
+ getMediaConnectionDebugId(): string;
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;
1092
+ /**
1093
+ * Listens for an event emitted by eventEmitter and emits it from the meeting object
1094
+ *
1095
+ * @private
1096
+ * @param {*} eventEmitter object from which to forward the event
1097
+ * @param {*} eventTypeToForward which event type to listen on and to forward
1098
+ * @param {string} meetingEventType event type to be used in the event emitted from the meeting object
1099
+ * @returns {void}
1100
+ */
1101
+ forwardEvent(eventEmitter: any, eventTypeToForward: any, meetingEventType: any): void;
1102
+ /**
1103
+ * Creates a media connection to the server. Media connection is required for sending or receiving any audio/video.
1104
+ *
1105
+ * @param {AddMediaOptions} options
1106
+ * @returns {Promise}
1107
+ * @public
1108
+ * @memberof Meeting
1109
+ */
1110
+ addMedia(options?: AddMediaOptions): Promise<any>;
1111
+ /**
1112
+ * Informs if the peer connection is in a state that can be updated with updateMedia (audio/video/share)
1113
+ * @returns {Boolean}
1114
+ */
1115
+ canUpdateMedia(): boolean;
1116
+ /**
1117
+ * Enqueues a media update operation.
1118
+ * @param {String} mediaUpdateType one of MEDIA_UPDATE_TYPE values
1119
+ * @param {Object} options
1120
+ * @returns {Promise}
1121
+ * @private
1122
+ * @memberof Meeting
1123
+ */
1124
+ private enqueueMediaUpdate;
1125
+ /**
1126
+ * emits event when the negotation is completed
1127
+ * @returns {void}
1128
+ * @private
1129
+ * @memberof Meeting
1130
+ */
1131
+ mediaNegotiatedEvent: () => void;
1132
+ /**
1133
+ * Checks if there are any queued media updates and runs the first one from
1134
+ * the queue if we are in a state that allows doing that.
1135
+ * @returns {undefined}
1136
+ * @public
1137
+ * @memberof Meeting
1138
+ */
1139
+ processNextQueuedMediaUpdate: () => void;
1140
+ /**
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.
1146
+ *
1147
+ * @param {Object} options
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
1151
+ * @returns {Promise}
1152
+ * @public
1153
+ * @memberof Meeting
1154
+ */
1155
+ updateMedia(options: {
1156
+ audioEnabled?: boolean;
1157
+ videoEnabled?: boolean;
1158
+ receiveShare?: boolean;
1159
+ }): Promise<void>;
1160
+ /**
1161
+ * Acknowledge the meeting, outgoing or incoming
1162
+ * @param {String} type
1163
+ * @returns {Promise} resolve {message, ringing, response}
1164
+ * @public
1165
+ * @memberof Meeting
1166
+ */
1167
+ acknowledge(type: string): Promise<{
1168
+ response: any;
1169
+ }> | Promise<{
1170
+ message: string;
1171
+ }>;
1172
+ /**
1173
+ * Decline this meeting
1174
+ * @param {String} reason
1175
+ * @returns {undefined}
1176
+ * @public
1177
+ * @memberof Meeting
1178
+ */
1179
+ decline(reason: string): any;
1180
+ /**
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
1196
+ * @param {Object} options leave options
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
1213
+ * @returns {Promise}
1214
+ * @public
1215
+ * @memberof Meeting
1216
+ */
1217
+ leave(options?: {
1218
+ resourceId?: string;
1219
+ clientEventLeaveReason?: ClientEventLeaveReason;
1220
+ reason?: any;
1221
+ }): any;
1222
+ /**
1223
+ * Start sharing whiteboard given channelUrl
1224
+ * @param {string} channelUrl whiteboard url
1225
+ * @param {String} resourceToken token created by authorize media injector
1226
+ * @returns {Promise}
1227
+ * @public
1228
+ * @memberof Meeting
1229
+ */
1230
+ startWhiteboardShare(channelUrl: string, resourceToken: string): any;
1231
+ /**
1232
+ * Stop sharing whiteboard given channelUrl
1233
+ * @param {string} channelUrl whiteboard url
1234
+ * @returns {Promise}
1235
+ * @public
1236
+ * @memberof Meeting
1237
+ */
1238
+ stopWhiteboardShare(channelUrl: string): any;
1239
+ /**
1240
+ * Sends a request to Locus to obtain the screen share floor
1241
+ * @returns {Promise} see #meetingRequest.changeMeetingFloor
1242
+ * @private
1243
+ * @memberof Meeting
1244
+ */
1245
+ private requestScreenShareFloor;
1246
+ /**
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}
1251
+ */
1252
+ private requestScreenShareFloorIfPending;
1253
+ /**
1254
+ * Sends a request to Locus to release the screen share floor.
1255
+ * @returns {Promise} see #meetingRequest.changeMeetingFloor
1256
+ * @private
1257
+ * @memberof Meeting
1258
+ */
1259
+ private releaseScreenShareFloor;
1260
+ /**
1261
+ * Intiate a recording of this meeting
1262
+ * @returns {Promise}
1263
+ * @public
1264
+ * @memberof Meeting
1265
+ */
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>;
1293
+ /**
1294
+ * End the recording of this meeting
1295
+ * @returns {Promise}
1296
+ * @public
1297
+ * @memberof Meeting
1298
+ */
1299
+ stopRecording(): Promise<any>;
1300
+ /**
1301
+ * Pauses the recording of this meeting
1302
+ * @returns {Promise}
1303
+ * @public
1304
+ * @memberof Meeting
1305
+ */
1306
+ pauseRecording(): Promise<any>;
1307
+ /**
1308
+ * Resumes the recording of this meeting
1309
+ * @returns {Promise}
1310
+ * @public
1311
+ * @memberof Meeting
1312
+ */
1313
+ resumeRecording(): Promise<any>;
1314
+ /**
1315
+ * Locks the current meeting if possible
1316
+ * @returns {Promise}
1317
+ * @public
1318
+ * @memberof Meeting
1319
+ */
1320
+ lockMeeting(): any;
1321
+ /**
1322
+ * Unlocks the current meeting if possible
1323
+ * @returns {Promise}
1324
+ * @public
1325
+ * @memberof Meeting
1326
+ */
1327
+ unlockMeeting(): any;
1328
+ /**
1329
+ * Logs an error message and returns a rejected promise with same message
1330
+ * @param {String} message
1331
+ * @returns {Promise}
1332
+ * @private
1333
+ * @memberof Meeting
1334
+ */
1335
+ private rejectWithErrorLog;
1336
+ /**
1337
+ * Sends DTMF tones to the current meeting
1338
+ * @param {String} tones a string of one or more DTMF tones to send
1339
+ * @returns {Promise}
1340
+ * @public
1341
+ * @memberof Meeting
1342
+ */
1343
+ sendDTMF(tones: string): Promise<any>;
1344
+ /**
1345
+ * Sends request to change layout type for the current meeting for the specific participant/device only
1346
+ * @param {String} [layoutType] a layout type that should be available in meeting constants {@link #layout_types}
1347
+ * @param {Object} renderInfo preferred dimensions for the remote main and content streams (server can ignore it)
1348
+ * @param {Object} renderInfo.main preferred dimensions for the remote main video stream
1349
+ * @param {Number} renderInfo.main.width preferred width of main video stream
1350
+ * @param {Number} renderInfo.main.height preferred height of main video stream
1351
+ * @param {Object} renderInfo.content preferred dimensions for the remote content share stream
1352
+ * @param {Number} renderInfo.content.width preferred width of content share stream
1353
+ * @param {Number} renderInfo.content.height preferred height of content share stream
1354
+ * @returns {Promise}
1355
+ * @public
1356
+ * @memberof Meeting
1357
+ */
1358
+ changeVideoLayout(layoutType?: string, renderInfo?: {
1359
+ main: {
1360
+ width: number;
1361
+ height: number;
1362
+ };
1363
+ content: {
1364
+ width: number;
1365
+ height: number;
1366
+ };
1367
+ }): any;
1368
+ /**
1369
+ * Sets the quality level of the remote incoming media
1370
+ * @param {String} level {LOW|MEDIUM|HIGH}
1371
+ * @returns {Promise}
1372
+ */
1373
+ setRemoteQualityLevel(level: string): Promise<void>;
1374
+ /**
1375
+ * Functionality for when a share audio is ended.
1376
+ * @private
1377
+ * @memberof Meeting
1378
+ * @returns {undefined}
1379
+ */
1380
+ private handleShareAudioTrackEnded;
1381
+ /**
1382
+ * Functionality for when a share video is ended.
1383
+ * @private
1384
+ * @memberof Meeting
1385
+ * @returns {undefined}
1386
+ */
1387
+ private handleShareVideoTrackEnded;
1388
+ /**
1389
+ * Emits meeting:stoppedSharingLocal
1390
+ * @private
1391
+ * @returns {undefined}
1392
+ * @memberof Meeting
1393
+ */
1394
+ private triggerStoppedSharing;
1395
+ /**
1396
+ * Emits the 'network:quality' event
1397
+ * 1 indicates an acceptable uplink network.
1398
+ * 0 indicates an unacceptable uplink network based on a predefined threshold
1399
+ * @returns {undefined}
1400
+ * @param {Object} res - payload of emitNetworkQuality
1401
+ * @property {string} mediaType {video|audio}
1402
+ * @property {number} networkQualityScore - {1|0}
1403
+ * @private
1404
+ * @memberof Meeting
1405
+ */
1406
+ private sendNetworkQualityEvent;
1407
+ /**
1408
+ * Handle logging the media
1409
+ * @param {Object} mediaProperties
1410
+ * @private
1411
+ * @returns {undefined}
1412
+ */
1413
+ private handleMediaLogging;
1414
+ /**
1415
+ *
1416
+ * @returns {string} one of 'attendee','host','cohost', returns the user type of the current user
1417
+ */
1418
+ getCurUserType(): "host" | "cohost" | "attendee";
1419
+ /**
1420
+ * End the current meeting for all
1421
+ * @returns {Promise}
1422
+ * @public
1423
+ * @memberof Meeting
1424
+ */
1425
+ endMeetingForAll(): any;
1426
+ /**
1427
+ * clear the meeting data
1428
+ * @returns {undefined}
1429
+ * @public
1430
+ * @memberof Meeting
1431
+ */
1432
+ clearMeetingData: () => void;
1433
+ /**
1434
+ * starts keepAlives being sent
1435
+ * @returns {void}
1436
+ * @private
1437
+ * @memberof Meeting
1438
+ */
1439
+ startKeepAlive: () => void;
1440
+ /**
1441
+ * stops keepAlives being sent
1442
+ * @returns {void}
1443
+ * @private
1444
+ * @memberof Meeting
1445
+ */
1446
+ stopKeepAlive: () => void;
1447
+ /**
1448
+ * Send a reaction inside the meeting.
1449
+ *
1450
+ * @param {ReactionServerType} reactionType - type of reaction to be sent. Example: "thumbs_up"
1451
+ * @param {SkinToneType} skinToneType - skin tone for the reaction. Example: "medium_dark"
1452
+ * @returns {Promise}
1453
+ * @public
1454
+ * @memberof Meeting
1455
+ */
1456
+ sendReaction(reactionType: ReactionServerType, skinToneType?: SkinToneType): any;
1457
+ /**
1458
+ * Method to enable or disable reactions inside the meeting.
1459
+ *
1460
+ * @param {boolean} enable - enable or disable reactions
1461
+ * @returns {Promise}
1462
+ * @public
1463
+ * @memberof Meeting
1464
+ */
1465
+ toggleReactions(enable: boolean): Promise<any>;
1466
+ /**
1467
+ * Throws if we don't have a media connection created
1468
+ *
1469
+ * @returns {void}
1470
+ */
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;
1498
+ /**
1499
+ * Publishes specified local tracks in the meeting
1500
+ *
1501
+ * @param {Object} tracks
1502
+ * @returns {Promise}
1503
+ */
1504
+ publishTracks(tracks: LocalTracks): Promise<void>;
1505
+ /**
1506
+ * Un-publishes specified local tracks in the meeting
1507
+ *
1508
+ * @param {Array<MediaStreamTrack>} tracks
1509
+ * @returns {Promise}
1510
+ */
1511
+ unpublishTracks(tracks: LocalTrack[]): Promise<void>;
1512
+ }