@webex/plugin-meetings 3.0.0-beta.16 → 3.0.0-beta.160

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