@webex/plugin-meetings 3.0.0-beta.4 → 3.0.0-beta.40

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