@webex/plugin-meetings 3.0.0-beta.5 → 3.0.0-beta.50

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 +555 -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 +122 -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 +16 -0
  68. package/dist/controls-options-manager/enums.js.map +1 -0
  69. package/dist/controls-options-manager/index.js +240 -0
  70. package/dist/controls-options-manager/index.js.map +1 -0
  71. package/dist/controls-options-manager/util.js +39 -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 +17 -30
  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 +220 -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 +61 -90
  92. package/dist/locus-info/selfUtils.js.map +1 -1
  93. package/dist/media/index.js +56 -146
  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 +25 -14
  102. package/dist/meeting/in-meeting-actions.js.map +1 -1
  103. package/dist/meeting/index.js +2205 -2211
  104. package/dist/meeting/index.js.map +1 -1
  105. package/dist/meeting/muteState.js +102 -100
  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 +60 -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 +110 -203
  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 +42 -50
  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 +58 -93
  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 +446 -442
  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 +192 -191
  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 +372 -455
  200. package/dist/statsAnalyzer/index.js.map +1 -1
  201. package/dist/statsAnalyzer/mqaUtil.js +143 -87
  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 +928 -0
  236. package/dist/types/controls-options-manager/constants.d.ts +4 -0
  237. package/dist/types/controls-options-manager/enums.d.ts +6 -0
  238. package/dist/types/controls-options-manager/index.d.ts +128 -0
  239. package/dist/types/controls-options-manager/util.d.ts +9 -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 +276 -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 +95 -0
  255. package/dist/types/meeting/index.d.ts +1719 -0
  256. package/dist/types/meeting/muteState.d.ts +132 -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 +325 -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 +49 -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 +259 -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 +152 -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 +511 -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 +76 -5
  339. package/src/controls-options-manager/constants.ts +5 -0
  340. package/src/controls-options-manager/enums.ts +7 -0
  341. package/src/controls-options-manager/index.ts +218 -0
  342. package/src/controls-options-manager/util.ts +30 -0
  343. package/src/index.js +4 -1
  344. package/src/locus-info/controlsUtils.ts +122 -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} +192 -67
  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} +157 -68
  353. package/src/media/{index.js → index.ts} +179 -176
  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 +55 -3
  358. package/src/meeting/{index.js → index.ts} +2590 -1576
  359. package/src/meeting/{muteState.js → muteState.ts} +138 -73
  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} +128 -115
  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} +231 -144
  378. package/src/members/{request.js → request.ts} +60 -16
  379. package/src/members/{util.js → util.ts} +69 -54
  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 +50 -38
  386. package/src/multistream/remoteMedia.ts +38 -5
  387. package/src/multistream/remoteMediaGroup.ts +4 -3
  388. package/src/multistream/remoteMediaManager.ts +209 -62
  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} +157 -94
  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 +1242 -0
  407. package/src/statsAnalyzer/mqaUtil.ts +291 -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 +180 -0
  421. package/test/unit/spec/controls-options-manager/util.js +86 -0
  422. package/test/unit/spec/fixture/locus.js +92 -90
  423. package/test/unit/spec/locus-info/controlsUtils.js +112 -34
  424. package/test/unit/spec/locus-info/embeddedAppsUtils.js +8 -6
  425. package/test/unit/spec/locus-info/index.js +219 -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 +101 -103
  431. package/test/unit/spec/locus-info/selfUtils.js +128 -12
  432. package/test/unit/spec/media/index.ts +72 -8
  433. package/test/unit/spec/media/properties.ts +9 -9
  434. package/test/unit/spec/meeting/in-meeting-actions.ts +23 -2
  435. package/test/unit/spec/meeting/index.js +2490 -802
  436. package/test/unit/spec/meeting/muteState.js +146 -61
  437. package/test/unit/spec/meeting/request.js +141 -43
  438. package/test/unit/spec/meeting/utils.js +134 -164
  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 +179 -54
  449. package/test/unit/spec/members/request.js +29 -20
  450. package/test/unit/spec/members/utils.js +119 -4
  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 +60 -38
  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 +539 -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 +176 -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 +108 -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,1719 @@
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
+ * If the host/cohost is in a breakout session, the locus url
658
+ * of the session must be provided as the authorizingLocusUrl.
659
+ * Regardless of host/cohost location, the locus Id (lid) in
660
+ * the path should be the locus Id of the main, which means the
661
+ * locus url of the api call must be from the main session.
662
+ * If these loucs urls are not provided, the function will do the check.
663
+ * @param {Array} memberIds
664
+ * @param {Object} sessionLocusUrls: {authorizingLocusUrl, mainLocusUrl}
665
+ * @returns {Promise} see #members.admitMembers
666
+ * @public
667
+ * @memberof Meeting
668
+ */
669
+ admit(memberIds: Array<any>, sessionLocusUrls?: {
670
+ authorizingLocusUrl: string;
671
+ mainLocusUrl: string;
672
+ }): any;
673
+ /**
674
+ * Remove the member from the meeting, boot them
675
+ * @param {String} memberId
676
+ * @returns {Promise} see #members.removeMember
677
+ * @public
678
+ * @memberof Meeting
679
+ */
680
+ remove(memberId: string): any;
681
+ /**
682
+ * Mute another member from the meeting
683
+ * @param {String} memberId
684
+ * @param {Boolean} mute
685
+ * @returns {Promise} see #members.muteMember
686
+ * @public
687
+ * @memberof Meeting
688
+ */
689
+ mute(memberId: string, mute?: boolean): any;
690
+ /**
691
+ * Transfer the moderator role to another eligible member
692
+ * @param {String} memberId
693
+ * @param {Boolean} moderator
694
+ * @returns {Promise} see #members.transferHostToMember
695
+ * @public
696
+ * @memberof Meeting
697
+ */
698
+ transfer(memberId: string, moderator?: boolean): any;
699
+ /**
700
+ * Reference to the Members object
701
+ * @returns {Members}
702
+ * @public
703
+ * @memberof Meeting
704
+ */
705
+ getMembers(): Members;
706
+ /**
707
+ * Truthy when a meeting has an audio connection established
708
+ * @returns {Boolean} true if meeting audio is connected otherwise false
709
+ * @public
710
+ * @memberof Meeting
711
+ */
712
+ isAudioConnected(): boolean;
713
+ /**
714
+ * Convenience function to tell whether a meeting is muted
715
+ * @returns {Boolean} if meeting audio muted or not
716
+ * @public
717
+ * @memberof Meeting
718
+ */
719
+ isAudioMuted(): any;
720
+ /**
721
+ * Convenience function to tell if the end user last changed the audio state
722
+ * @returns {Boolean} if audio was manipulated by the end user
723
+ * @public
724
+ * @memberof Meeting
725
+ */
726
+ isAudioSelf(): any;
727
+ /**
728
+ * Truthy when a meeting has a video connection established
729
+ * @returns {Boolean} true if meeting video connected otherwise false
730
+ * @public
731
+ * @memberof Meeting
732
+ */
733
+ isVideoConnected(): boolean;
734
+ /**
735
+ * Convenience function to tell whether video is muted
736
+ * @returns {Boolean} if meeting video is muted or not
737
+ * @public
738
+ * @memberof Meeting
739
+ */
740
+ isVideoMuted(): any;
741
+ /**
742
+ * Convenience function to tell whether the end user changed the video state
743
+ * @returns {Boolean} if meeting video is muted or not
744
+ * @public
745
+ * @memberof Meeting
746
+ */
747
+ isVideoSelf(): any;
748
+ /**
749
+ * Sets the meeting info on the class instance
750
+ * @param {Object} meetingInfo
751
+ * @param {Object} meetingInfo.body
752
+ * @param {String} meetingInfo.body.conversationUrl
753
+ * @param {String} meetingInfo.body.locusUrl
754
+ * @param {String} meetingInfo.body.sipUri
755
+ * @param {Object} meetingInfo.body.owner
756
+ * @param {Object | String} destination locus object with meeting data or destination string (sip url, meeting link, etc)
757
+ * @returns {undefined}
758
+ * @private
759
+ * @memberof Meeting
760
+ */
761
+ parseMeetingInfo(meetingInfo: {
762
+ body: {
763
+ conversationUrl: string;
764
+ locusUrl: string;
765
+ sipUri: string;
766
+ owner: object;
767
+ };
768
+ } | any, destination?: object | string | null): void;
769
+ /**
770
+ * Sets the first locus info on the class instance
771
+ * @param {Object} locus
772
+ * @param {String} locus.url
773
+ * @param {Array} locus.participants
774
+ * @param {Object} locus.self
775
+ * @returns {undefined}
776
+ * @private
777
+ * @memberof Meeting
778
+ */
779
+ private parseLocus;
780
+ /**
781
+ * Sets the sip uri on the class instance
782
+ * uses meeting info as precedence
783
+ * @param {String} sipUri
784
+ * @returns {undefined}
785
+ * @private
786
+ * @memberof Meeting
787
+ */
788
+ setSipUri(sipUri: string): void;
789
+ /**
790
+ * Set the locus info the class instance
791
+ * @param {Object} locus
792
+ * @param {Array} locus.mediaConnections
793
+ * @param {String} locus.locusUrl
794
+ * @param {String} locus.locusId
795
+ * @param {String} locus.mediaId
796
+ * @param {Object} locus.host
797
+ * @todo change name to genertic parser
798
+ * @returns {undefined}
799
+ * @private
800
+ * @memberof Meeting
801
+ */
802
+ private setLocus;
803
+ /**
804
+ * Upload logs for the current meeting
805
+ * @param {object} options file name and function name
806
+ * @returns {undefined}
807
+ * @public
808
+ * @memberof Meeting
809
+ */
810
+ uploadLogs(options?: object): void;
811
+ /**
812
+ * Removes remote audio and video stream on the class instance and triggers an event
813
+ * to developers
814
+ * @returns {undefined}
815
+ * @public
816
+ * @memberof Meeting
817
+ * @deprecated after v1.89.3
818
+ */
819
+ unsetRemoteStream(): void;
820
+ /**
821
+ * Removes remote audio, video and share tracks from class instance's mediaProperties
822
+ * @returns {undefined}
823
+ */
824
+ unsetRemoteTracks(): void;
825
+ /**
826
+ * Removes the remote stream on the class instance and triggers an event
827
+ * to developers
828
+ * @returns {undefined}
829
+ * @public
830
+ * @memberof Meeting
831
+ * @deprecated after v1.89.3
832
+ */
833
+ closeRemoteStream(): void;
834
+ /**
835
+ * Removes the remote tracks on the class instance and triggers an event
836
+ * to developers
837
+ * @returns {undefined}
838
+ * @memberof Meeting
839
+ */
840
+ closeRemoteTracks(): Promise<[any, any, any]>;
841
+ /**
842
+ * Emits the 'media:ready' event with a local stream that consists of 1 local audio and 1 local video track
843
+ * @returns {undefined}
844
+ * @private
845
+ * @memberof Meeting
846
+ */
847
+ private sendLocalMediaReadyEvent;
848
+ /**
849
+ * Sets the local audio track on the class and emits an event to the developer
850
+ * @param {MediaStreamTrack} rawAudioTrack
851
+ * @param {Boolean} emitEvent if true, a media ready event is emitted to the developer
852
+ * @returns {undefined}
853
+ * @private
854
+ * @memberof Meeting
855
+ */
856
+ private setLocalAudioTrack;
857
+ /**
858
+ * Sets the local video track on the class and emits an event to the developer
859
+ * @param {MediaStreamTrack} rawVideoTrack
860
+ * @param {Boolean} emitEvent if true, a media ready event is emitted to the developer
861
+ * @returns {undefined}
862
+ * @private
863
+ * @memberof Meeting
864
+ */
865
+ private setLocalVideoTrack;
866
+ /**
867
+ * Sets the local media stream on the class and emits an event to the developer
868
+ * @param {Stream} localStream the local media stream
869
+ * @returns {undefined}
870
+ * @public
871
+ * @memberof Meeting
872
+ */
873
+ setLocalTracks(localStream: any): void;
874
+ /**
875
+ * Sets the local media stream on the class and emits an event to the developer
876
+ * @param {MediaStreamTrack} rawLocalShareTrack the local share media track
877
+ * @returns {undefined}
878
+ * @public
879
+ * @memberof Meeting
880
+ */
881
+ setLocalShareTrack(rawLocalShareTrack: MediaStreamTrack | null): void;
882
+ /**
883
+ * Closes the local stream from the class and emits an event to the developer
884
+ * @returns {undefined}
885
+ * @event media:stopped
886
+ * @public
887
+ * @memberof Meeting
888
+ */
889
+ closeLocalStream(): any;
890
+ /**
891
+ * Closes the local stream from the class and emits an event to the developer
892
+ * @returns {undefined}
893
+ * @event media:stopped
894
+ * @public
895
+ * @memberof Meeting
896
+ */
897
+ closeLocalShare(): any;
898
+ /**
899
+ * Removes the local stream from the class and emits an event to the developer
900
+ * @returns {undefined}
901
+ * @public
902
+ * @memberof Meeting
903
+ */
904
+ unsetLocalVideoTrack(): void;
905
+ /**
906
+ * Removes the local share from the class and emits an event to the developer
907
+ * @returns {undefined}
908
+ * @public
909
+ * @memberof Meeting
910
+ */
911
+ unsetLocalShareTrack(): void;
912
+ /**
913
+ * sets up listner for mercury event
914
+ * @returns {undefined}
915
+ * @public
916
+ * @memberof Meeting
917
+ */
918
+ setMercuryListener(): void;
919
+ /**
920
+ * Close the peer connections and remove them from the class.
921
+ * Cleanup any media connection related things.
922
+ *
923
+ * @returns {Promise}
924
+ * @public
925
+ * @memberof Meeting
926
+ */
927
+ closePeerConnections(): Promise<void>;
928
+ /**
929
+ * Unsets the peer connections on the class
930
+ * warning DO NOT CALL WITHOUT CLOSING PEER CONNECTIONS FIRST
931
+ * @returns {undefined}
932
+ * @public
933
+ * @memberof Meeting
934
+ */
935
+ unsetPeerConnections(): void;
936
+ /**
937
+ * Convenience method to set the correlation id for the Meeting
938
+ * @param {String} id correlation id to set on the class
939
+ * @returns {undefined}
940
+ * @private
941
+ * @memberof Meeting
942
+ */
943
+ private setCorrelationId;
944
+ /**
945
+ * Mute the audio for a meeting
946
+ * @returns {Promise} resolves the data from muting audio {mute, self} or rejects if there is no audio set
947
+ * @public
948
+ * @memberof Meeting
949
+ */
950
+ muteAudio(): any;
951
+ /**
952
+ * Unmute meeting audio
953
+ * @returns {Promise} resolves data from muting audio {mute, self} or rejects if there is no audio set
954
+ * @public
955
+ * @memberof Meeting
956
+ */
957
+ unmuteAudio(): any;
958
+ /**
959
+ * Mute the video for a meeting
960
+ * @returns {Promise} resolves data from muting video {mute, self} or rejects if there is no video set
961
+ * @public
962
+ * @memberof Meeting
963
+ */
964
+ muteVideo(): any;
965
+ /**
966
+ * Unmute meeting video
967
+ * @returns {Promise} resolves data from muting video {mute, self} or rejects if there is no video set
968
+ * @public
969
+ * @memberof Meeting
970
+ */
971
+ unmuteVideo(): any;
972
+ /**
973
+ * Shorthand function to join AND set up media
974
+ * @param {Object} options - options to join with media
975
+ * @param {JoinOptions} [options.joinOptions] - see #join()
976
+ * @param {MediaDirection} options.mediaSettings - see #addMedia()
977
+ * @param {AudioVideo} [options.audioVideoOptions] - see #getMediaStreams()
978
+ * @returns {Promise} -- {join: see join(), media: see addMedia(), local: see getMediaStreams()}
979
+ * @public
980
+ * @memberof Meeting
981
+ * @example
982
+ * joinWithMedia({
983
+ * joinOptions: {resourceId: 'resourceId' },
984
+ * mediaSettings: {
985
+ * sendAudio: true,
986
+ * sendVideo: true,
987
+ * sendShare: false,
988
+ * receiveVideo:true,
989
+ * receiveAudio: true,
990
+ * receiveShare: true
991
+ * }
992
+ * audioVideoOptions: {
993
+ * audio: 'audioDeviceId',
994
+ * video: 'videoDeviceId'
995
+ * }})
996
+ */
997
+ joinWithMedia(options?: {
998
+ joinOptions?: any;
999
+ mediaSettings: any;
1000
+ audioVideoOptions?: any;
1001
+ }): any;
1002
+ /**
1003
+ * Initiates the reconnection of the media in the meeting
1004
+ *
1005
+ * @param {object} options
1006
+ * @returns {Promise} resolves with {reconnect} or errors with {error}
1007
+ * @public
1008
+ * @memberof Meeting
1009
+ */
1010
+ reconnect(options?: object): any;
1011
+ /**
1012
+ * Check if the meeting supports the Webex Assistant feature
1013
+ * @returns {boolean}
1014
+ * @throws TranscriptionNotSupportedError
1015
+ */
1016
+ isTranscriptionSupported(): boolean;
1017
+ /**
1018
+ * Check if the meeting supports the Reactions
1019
+ * @returns {boolean}
1020
+ */
1021
+ isReactionsSupported(): boolean;
1022
+ /**
1023
+ * Monitor the Low-Latency Mercury (LLM) web socket connection on `onError` and `onClose` states
1024
+ * @private
1025
+ * @returns {void}
1026
+ */
1027
+ private monitorTranscriptionSocketConnection;
1028
+ /**
1029
+ * Request for a WebSocket Url, open and monitor the WebSocket connection
1030
+ * @private
1031
+ * @returns {Promise<void>} a promise to open the WebSocket connection
1032
+ */
1033
+ private receiveTranscription;
1034
+ /**
1035
+ * Callback called when a relay event is received from meeting LLM Connection
1036
+ * @param {RelayEvent} e Event object coming from LLM Connection
1037
+ * @private
1038
+ * @returns {void}
1039
+ */
1040
+ private processRelayEvent;
1041
+ /**
1042
+ * stop recieving Transcription by closing
1043
+ * the web socket connection properly
1044
+ * @returns {void}
1045
+ */
1046
+ stopReceivingTranscription(): void;
1047
+ /**
1048
+ * triggers an event to notify that the user
1049
+ * will not receive any more transcription
1050
+ * @private
1051
+ * @returns{void}
1052
+ */
1053
+ private triggerStopReceivingTranscriptionEvent;
1054
+ /**
1055
+ * Specify joining via audio (option: pstn), video, screenshare
1056
+ * @param {JoinOptions} options A configurable options object for joining a meeting
1057
+ * @returns {Promise} the join response
1058
+ * @public
1059
+ * @memberof Meeting
1060
+ * Scenario A: Joining own claimed personal meeting room
1061
+ * Scenario B: Joining other's claimed personal meeting room, do pass pin (if desired to join as host, or nullify), do pass moderator
1062
+ * Scenario C: Joining an unclaimed personal meeting room, -do not- pass pin or moderator on first try, -do- pass pin and moderator
1063
+ * if joining as host on second loop, pass pin and pass moderator if joining as guest on second loop
1064
+ * Scenario D: Joining any other way (sip, pstn, conversationUrl, link just need to specify resourceId)
1065
+ */
1066
+ join(options?: any): any;
1067
+ /**
1068
+ * Connects to low latency mercury and reconnects if the address has changed
1069
+ * It will also disconnect if called when the meeting has ended
1070
+ * @param {String} datachannelUrl
1071
+ * @returns {Promise}
1072
+ */
1073
+ updateLLMConnection(): Promise<any>;
1074
+ /**
1075
+ * Use phone for meeting audio
1076
+ * @param {String} phoneNumber If provided, it will dial-out using this number. If not provided, dial-in will be used
1077
+ * @returns {Promise} Resolves once the dial-in or dial-out request has completed, or rejects if it failed
1078
+ * @public
1079
+ * @memberof Meeting
1080
+ */
1081
+ usePhoneAudio(phoneNumber: string): any;
1082
+ /**
1083
+ * Determines if the given pstnStatus is in a state which implies the phone is provisioned
1084
+ * @param {String} pstnStatus
1085
+ * @returns {Boolean}
1086
+ * @private
1087
+ * @memberof Meeting
1088
+ */
1089
+ private isPhoneProvisioned;
1090
+ /**
1091
+ * Enable dial-in for audio
1092
+ * @returns {Promise} Resolves once the dial-in request has completed, or rejects if it failed
1093
+ * @private
1094
+ * @memberof Meeting
1095
+ */
1096
+ private dialInPstn;
1097
+ /**
1098
+ * Enable dial-out for audio
1099
+ * @param {String} phoneNumber Phone number to dial out to
1100
+ * @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
1101
+ * @private
1102
+ * @memberof Meeting
1103
+ */
1104
+ private dialOutPstn;
1105
+ /**
1106
+ * Disconnect meeting audio via phone.
1107
+ * @returns {Promise} Resolves once the phone audio disconnection has completed
1108
+ * @public
1109
+ * @memberof Meeting
1110
+ * @returns {Promise}
1111
+ */
1112
+ disconnectPhoneAudio(): Promise<[any, any]>;
1113
+ /**
1114
+ * Moves the call to the specified resourceId
1115
+ * @param {String} resourceId
1116
+ * @returns {Promise} once the move has been completed
1117
+ * @public
1118
+ * @memberof Meeting
1119
+ */
1120
+ moveTo(resourceId: string): any;
1121
+ /**
1122
+ * Moves the call from the specified resourceId, back to computer
1123
+ * @param {String} resourceId
1124
+ * @returns {Promise} once the move has been completed
1125
+ * @public
1126
+ * @memberof Meeting
1127
+ */
1128
+ moveFrom(resourceId: string): any;
1129
+ /**
1130
+ * Get local media streams based on options passed
1131
+ *
1132
+ * NOTE: this method can only be used with transcoded meetings, not with multistream meetings
1133
+ *
1134
+ * @param {MediaDirection} mediaDirection A configurable options object for joining a meeting
1135
+ * @param {AudioVideo} [audioVideo] audio/video object to set audioinput and videoinput devices, see #Media.getUserMedia
1136
+ * @param {SharePreferences} [sharePreferences] audio/video object to set audioinput and videoinput devices, see #Media.getUserMedia
1137
+ * @returns {Promise} see #Media.getUserMedia
1138
+ * @public
1139
+ * @todo should be static, or moved so can be called outside of a meeting
1140
+ * @memberof Meeting
1141
+ */
1142
+ getMediaStreams: (mediaDirection: any, audioVideo?: any, sharePreferences?: any) => any;
1143
+ /**
1144
+ * Checks if the machine has at least one audio or video device
1145
+ * @param {Object} options
1146
+ * @param {Boolean} options.sendAudio
1147
+ * @param {Boolean} options.sendVideo
1148
+ * @returns {Object}
1149
+ * @memberof Meetings
1150
+ */
1151
+ getSupportedDevices: ({ sendAudio, sendVideo, }: {
1152
+ sendAudio: boolean;
1153
+ sendVideo: boolean;
1154
+ }) => any;
1155
+ /**
1156
+ * Get the devices from the Media module
1157
+ * @returns {Promise} resolves to an array of DeviceInfo
1158
+ * @memberof Meetings
1159
+ */
1160
+ getDevices: () => any;
1161
+ /**
1162
+ * Handles ROAP_FAILURE event from the webrtc media connection
1163
+ *
1164
+ * @param {Error} error
1165
+ * @returns {void}
1166
+ */
1167
+ handleRoapFailure: (error: any) => void;
1168
+ setupMediaConnectionListeners: () => void;
1169
+ /**
1170
+ * Registers for all required StatsAnalyzer events
1171
+ * @private
1172
+ * @returns {void}
1173
+ * @memberof Meetings
1174
+ */
1175
+ setupStatsAnalyzerEventHandlers: () => void;
1176
+ getMediaConnectionDebugId(): string;
1177
+ /**
1178
+ * Creates a webrtc media connection
1179
+ *
1180
+ * @param {Object} turnServerInfo TURN server information
1181
+ * @returns {RoapMediaConnection | MultistreamRoapMediaConnection}
1182
+ */
1183
+ createMediaConnection(turnServerInfo: any): any;
1184
+ /**
1185
+ * Listens for an event emitted by eventEmitter and emits it from the meeting object
1186
+ *
1187
+ * @private
1188
+ * @param {*} eventEmitter object from which to forward the event
1189
+ * @param {*} eventTypeToForward which event type to listen on and to forward
1190
+ * @param {string} meetingEventType event type to be used in the event emitted from the meeting object
1191
+ * @returns {void}
1192
+ */
1193
+ forwardEvent(eventEmitter: any, eventTypeToForward: any, meetingEventType: any): void;
1194
+ /**
1195
+ * Specify joining via audio (option: pstn), video, screenshare
1196
+ * @param {Object} options A configurable options object for joining a meeting
1197
+ * @param {Object} options.resourceId pass the deviceId
1198
+ * @param {MediaDirection} options.mediaSettings pass media options
1199
+ * @param {MediaStream} options.localStream
1200
+ * @param {MediaStream} options.localShare
1201
+ * @param {RemoteMediaManagerConfig} options.remoteMediaManagerConfig only applies if multistream is enabled
1202
+ * @returns {Promise}
1203
+ * @public
1204
+ * @memberof Meeting
1205
+ */
1206
+ addMedia(options?: any): any;
1207
+ /**
1208
+ * Informs if the peer connection is in a state that can be updated with updateMedia (audio/video/share)
1209
+ * @returns {Boolean}
1210
+ */
1211
+ canUpdateMedia(): boolean;
1212
+ /**
1213
+ * Enqueues a media update operation.
1214
+ * @param {String} mediaUpdateType one of MEDIA_UPDATE_TYPE values
1215
+ * @param {Object} options
1216
+ * @returns {Promise}
1217
+ * @private
1218
+ * @memberof Meeting
1219
+ */
1220
+ private enqueueMediaUpdate;
1221
+ /**
1222
+ * emits event when the negotation is completed
1223
+ * @returns {void}
1224
+ * @private
1225
+ * @memberof Meeting
1226
+ */
1227
+ mediaNegotiatedEvent: () => void;
1228
+ /**
1229
+ * Checks if there are any queued media updates and runs the first one from
1230
+ * the queue if we are in a state that allows doing that.
1231
+ * @returns {undefined}
1232
+ * @public
1233
+ * @memberof Meeting
1234
+ */
1235
+ processNextQueuedMediaUpdate: () => void;
1236
+ /**
1237
+ * A confluence of updateAudio, updateVideo, and updateShare
1238
+ * this function re-establishes all of the media streams with new options
1239
+ * @param {Object} options
1240
+ * @param {MediaStream} options.localStream
1241
+ * @param {MediaStream} options.localShare
1242
+ * @param {MediaDirection} options.mediaSettings
1243
+ * @returns {Promise}
1244
+ * @public
1245
+ * @memberof Meeting
1246
+ */
1247
+ updateMedia(options?: {
1248
+ localStream?: MediaStream;
1249
+ localShare?: MediaStream;
1250
+ mediaSettings?: any;
1251
+ }): any;
1252
+ /**
1253
+ * Update the main audio track with new parameters
1254
+ *
1255
+ * NOTE: this method can only be used with transcoded meetings, for multistream meetings use publishTrack()
1256
+ *
1257
+ * @param {Object} options
1258
+ * @param {boolean} options.sendAudio
1259
+ * @param {boolean} options.receiveAudio
1260
+ * @param {MediaStream} options.stream Stream that contains the audio track to update
1261
+ * @returns {Promise}
1262
+ * @public
1263
+ * @memberof Meeting
1264
+ */
1265
+ updateAudio(options: {
1266
+ sendAudio: boolean;
1267
+ receiveAudio: boolean;
1268
+ stream: MediaStream;
1269
+ }): Promise<any>;
1270
+ /**
1271
+ * Update the main video track with new parameters
1272
+ *
1273
+ * NOTE: this method can only be used with transcoded meetings, for multistream meetings use publishTrack()
1274
+ *
1275
+ * @param {Object} options
1276
+ * @param {boolean} options.sendVideo
1277
+ * @param {boolean} options.receiveVideo
1278
+ * @param {MediaStream} options.stream Stream that contains the video track to update
1279
+ * @returns {Promise}
1280
+ * @public
1281
+ * @memberof Meeting
1282
+ */
1283
+ updateVideo(options: {
1284
+ sendVideo: boolean;
1285
+ receiveVideo: boolean;
1286
+ stream: MediaStream;
1287
+ }): any;
1288
+ /**
1289
+ * Internal function when stopping a share stream, cleanup
1290
+ * @param {boolean} sendShare
1291
+ * @param {boolean} previousShareStatus
1292
+ * @returns {Promise}
1293
+ * @private
1294
+ * @memberof Meeting
1295
+ */
1296
+ private checkForStopShare;
1297
+ /**
1298
+ * Update the share streams, can be used to start sharing
1299
+ *
1300
+ * NOTE: this method can only be used with transcoded meetings, for multistream meetings use publishTrack()
1301
+ *
1302
+ * @param {Object} options
1303
+ * @param {boolean} options.sendShare
1304
+ * @param {boolean} options.receiveShare
1305
+ * @returns {Promise}
1306
+ * @public
1307
+ * @memberof Meeting
1308
+ */
1309
+ updateShare(options: {
1310
+ sendShare?: boolean;
1311
+ receiveShare?: boolean;
1312
+ stream?: any;
1313
+ skipSignalingCheck?: boolean;
1314
+ }): any;
1315
+ /**
1316
+ * Do all the attach media pre set up before executing the actual attach
1317
+ * @param {MediaStream} localStream
1318
+ * @param {MediaStream} localShare
1319
+ * @param {MediaDirection} mediaSettings
1320
+ * @returns {undefined}
1321
+ * @private
1322
+ * @memberof Meeting
1323
+ */
1324
+ private preMedia;
1325
+ /**
1326
+ * Acknowledge the meeting, outgoing or incoming
1327
+ * @param {String} type
1328
+ * @returns {Promise} resolve {message, ringing, response}
1329
+ * @public
1330
+ * @memberof Meeting
1331
+ */
1332
+ acknowledge(type: string): any;
1333
+ /**
1334
+ * Decline this meeting
1335
+ * @param {String} reason
1336
+ * @returns {undefined}
1337
+ * @public
1338
+ * @memberof Meeting
1339
+ */
1340
+ decline(reason: string): any;
1341
+ /**
1342
+ * Leave the current meeting
1343
+ * @param {Object} options leave options
1344
+ * @param {String} options.resourceId the device with which to leave from, empty if just the computer
1345
+ * @returns {Promise}
1346
+ * @public
1347
+ * @memberof Meeting
1348
+ */
1349
+ leave(options?: {
1350
+ resourceId?: string;
1351
+ reason?: any;
1352
+ }): any;
1353
+ /**
1354
+ * Start sharing whiteboard given channelUrl
1355
+ * @param {string} channelUrl whiteboard url
1356
+ * @param {String} resourceToken token created by authorize media injector
1357
+ * @returns {Promise}
1358
+ * @public
1359
+ * @memberof Meeting
1360
+ */
1361
+ startWhiteboardShare(channelUrl: string, resourceToken: string): any;
1362
+ /**
1363
+ * Stop sharing whiteboard given channelUrl
1364
+ * @param {string} channelUrl whiteboard url
1365
+ * @returns {Promise}
1366
+ * @public
1367
+ * @memberof Meeting
1368
+ */
1369
+ stopWhiteboardShare(channelUrl: string): any;
1370
+ /**
1371
+ * Sends a request to Locus to obtain the screen share floor
1372
+ * @returns {Promise} see #meetingRequest.changeMeetingFloor
1373
+ * @private
1374
+ * @memberof Meeting
1375
+ */
1376
+ private requestScreenShareFloor;
1377
+ /**
1378
+ * Stops the screen share
1379
+ * @returns {Promise} see #updateShare
1380
+ * @public
1381
+ * @memberof Meeting
1382
+ */
1383
+ stopShare(options?: {}): any;
1384
+ /**
1385
+ * Sends a request to Locus to release the screen share floor.
1386
+ * @returns {Promise} see #meetingRequest.changeMeetingFloor
1387
+ * @private
1388
+ * @memberof Meeting
1389
+ */
1390
+ private releaseScreenShareFloor;
1391
+ /**
1392
+ * Intiate a recording of this meeting
1393
+ * @returns {Promise}
1394
+ * @public
1395
+ * @memberof Meeting
1396
+ */
1397
+ startRecording(): Promise<any>;
1398
+ /**
1399
+ * set the mute on entry flag for participants if you're the host
1400
+ * @returns {Promise}
1401
+ * @param {boolean} enabled
1402
+ * @public
1403
+ * @memberof Meeting
1404
+ */
1405
+ setMuteOnEntry(enabled: boolean): Promise<any>;
1406
+ /**
1407
+ * set the disallow unmute flag for participants if you're the host
1408
+ * @returns {Promise}
1409
+ * @param {boolean} enabled
1410
+ * @public
1411
+ * @memberof Meeting
1412
+ */
1413
+ setDisallowUnmute(enabled: boolean): Promise<any>;
1414
+ /**
1415
+ * set the mute all flag for participants if you're the host
1416
+ * @returns {Promise}
1417
+ * @param {boolean} mutedEnabled
1418
+ * @param {boolean} disallowUnmuteEnabled
1419
+ * @param {boolean} muteOnEntryEnabled
1420
+ * @public
1421
+ * @memberof Meeting
1422
+ */
1423
+ setMuteAll(mutedEnabled: boolean, disallowUnmuteEnabled: boolean, muteOnEntryEnabled: boolean): Promise<any>;
1424
+ /**
1425
+ * End the recording of this meeting
1426
+ * @returns {Promise}
1427
+ * @public
1428
+ * @memberof Meeting
1429
+ */
1430
+ stopRecording(): Promise<any>;
1431
+ /**
1432
+ * Pauses the recording of this meeting
1433
+ * @returns {Promise}
1434
+ * @public
1435
+ * @memberof Meeting
1436
+ */
1437
+ pauseRecording(): Promise<any>;
1438
+ /**
1439
+ * Resumes the recording of this meeting
1440
+ * @returns {Promise}
1441
+ * @public
1442
+ * @memberof Meeting
1443
+ */
1444
+ resumeRecording(): Promise<any>;
1445
+ /**
1446
+ * Locks the current meeting if possible
1447
+ * @returns {Promise}
1448
+ * @public
1449
+ * @memberof Meeting
1450
+ */
1451
+ lockMeeting(): any;
1452
+ /**
1453
+ * Unlocks the current meeting if possible
1454
+ * @returns {Promise}
1455
+ * @public
1456
+ * @memberof Meeting
1457
+ */
1458
+ unlockMeeting(): any;
1459
+ /**
1460
+ * Logs an error message and returns a rejected promise with same message
1461
+ * @param {String} message
1462
+ * @returns {Promise}
1463
+ * @private
1464
+ * @memberof Meeting
1465
+ */
1466
+ private rejectWithErrorLog;
1467
+ /**
1468
+ * Sends DTMF tones to the current meeting
1469
+ * @param {String} tones a string of one or more DTMF tones to send
1470
+ * @returns {Promise}
1471
+ * @public
1472
+ * @memberof Meeting
1473
+ */
1474
+ sendDTMF(tones: string): any;
1475
+ /**
1476
+ * Sends request to change layout type for the current meeting for the specific participant/device only
1477
+ * @param {String} [layoutType] a layout type that should be available in meeting constants {@link #layout_types}
1478
+ * @param {Object} renderInfo preferred dimensions for the remote main and content streams (server can ignore it)
1479
+ * @param {Object} renderInfo.main preferred dimensions for the remote main video stream
1480
+ * @param {Number} renderInfo.main.width preferred width of main video stream
1481
+ * @param {Number} renderInfo.main.height preferred height of main video stream
1482
+ * @param {Object} renderInfo.content preferred dimensions for the remote content share stream
1483
+ * @param {Number} renderInfo.content.width preferred width of content share stream
1484
+ * @param {Number} renderInfo.content.height preferred height of content share stream
1485
+ * @returns {Promise}
1486
+ * @public
1487
+ * @memberof Meeting
1488
+ */
1489
+ changeVideoLayout(layoutType?: string, renderInfo?: {
1490
+ main: {
1491
+ width: number;
1492
+ height: number;
1493
+ };
1494
+ content: {
1495
+ width: number;
1496
+ height: number;
1497
+ };
1498
+ }): any;
1499
+ /**
1500
+ * Sets the quality of the local video stream
1501
+ * @param {String} level {LOW|MEDIUM|HIGH}
1502
+ * @returns {Promise<MediaStream>} localStream
1503
+ */
1504
+ setLocalVideoQuality(level: string): any;
1505
+ /**
1506
+ * Sets the quality level of the remote incoming media
1507
+ * @param {String} level {LOW|MEDIUM|HIGH}
1508
+ * @returns {Promise}
1509
+ */
1510
+ setRemoteQualityLevel(level: string): any;
1511
+ /**
1512
+ * This is deprecated, please use setLocalVideoQuality for setting local and setRemoteQualityLevel for remote
1513
+ * @param {String} level {LOW|MEDIUM|HIGH}
1514
+ * @returns {Promise}
1515
+ * @deprecated After FHD support
1516
+ */
1517
+ setMeetingQuality(level: string): any;
1518
+ /**
1519
+ *
1520
+ * NOTE: this method can only be used with transcoded meetings, for multistream use publishTrack()
1521
+ *
1522
+ * @param {Object} options parameter
1523
+ * @param {Boolean} options.sendAudio send audio from the display share
1524
+ * @param {Boolean} options.sendShare send video from the display share
1525
+ * @param {Object} options.sharePreferences
1526
+ * @param {MediaTrackConstraints} options.sharePreferences.shareConstraints constraints to apply to video
1527
+ * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/MediaTrackConstraints}
1528
+ * @param {Boolean} options.sharePreferences.highFrameRate if shareConstraints isn't provided, set default values based off of this boolean
1529
+ * @returns {Promise}
1530
+ */
1531
+ shareScreen(options?: {
1532
+ sendAudio: boolean;
1533
+ sendShare: boolean;
1534
+ sharePreferences: {
1535
+ shareConstraints: MediaTrackConstraints;
1536
+ };
1537
+ }): any;
1538
+ /**
1539
+ * Functionality for when a share is ended.
1540
+ * @private
1541
+ * @memberof Meeting
1542
+ * @param {MediaStream} localShare
1543
+ * @returns {undefined}
1544
+ */
1545
+ private handleShareTrackEnded;
1546
+ /**
1547
+ * Emits the 'network:quality' event
1548
+ * 1 indicates an acceptable uplink network.
1549
+ * 0 indicates an unacceptable uplink network based on a predefined threshold
1550
+ * @returns {undefined}
1551
+ * @param {Object} res - payload of emitNetworkQuality
1552
+ * @property {string} mediaType {video|audio}
1553
+ * @property {number} networkQualityScore - {1|0}
1554
+ * @private
1555
+ * @memberof Meeting
1556
+ */
1557
+ private sendNetworkQualityEvent;
1558
+ /**
1559
+ * Handle logging the media
1560
+ * @param {Object} mediaProperties
1561
+ * @private
1562
+ * @returns {undefined}
1563
+ */
1564
+ private handleMediaLogging;
1565
+ /**
1566
+ * @param {string} typeMedia 'audio' or 'video'
1567
+ * @returns {undefined}
1568
+ */
1569
+ setStartSetupDelay(typeMedia: string): void;
1570
+ /**
1571
+ * @param {string} typeMedia 'audio' or 'video'
1572
+ * @returns {undefined}
1573
+ */
1574
+ setEndSetupDelay(typeMedia: string): void;
1575
+ /**
1576
+ * @param {string} typeMedia 'audio' or 'video'
1577
+ * @returns {string} duration between start and end of setup
1578
+ */
1579
+ getSetupDelayDuration(typeMedia: string): number;
1580
+ /**
1581
+ * @param {string} typeMedia 'audio' or 'video'
1582
+ * @returns {undefined}
1583
+ */
1584
+ setStartSendingMediaDelay(typeMedia: string): void;
1585
+ /**
1586
+ * @param {string} typeMedia 'audio' or 'video'
1587
+ * @returns {undefined}
1588
+ */
1589
+ setEndSendingMediaDelay(typeMedia: string): void;
1590
+ /**
1591
+ * @param {string} typeMedia 'audio' or 'video'
1592
+ * @returns {string} duration between join response and first media tx
1593
+ */
1594
+ getSendingMediaDelayDuration(typeMedia: string): number;
1595
+ /**
1596
+ *
1597
+ * @returns {undefined}
1598
+ */
1599
+ setStartLocalSDPGenRemoteSDPRecvDelay(): void;
1600
+ /**
1601
+ *
1602
+ * @returns {undefined}
1603
+ */
1604
+ setEndLocalSDPGenRemoteSDPRecvDelay(): void;
1605
+ /**
1606
+ *
1607
+ * @returns {string} duration between local SDP generation and remote SDP reception
1608
+ */
1609
+ getLocalSDPGenRemoteSDPRecvDelay(): number;
1610
+ /**
1611
+ *
1612
+ * @returns {undefined}
1613
+ */
1614
+ setStartCallInitiateJoinReq(): void;
1615
+ /**
1616
+ *
1617
+ * @returns {undefined}
1618
+ */
1619
+ setEndCallInitiateJoinReq(): void;
1620
+ /**
1621
+ *
1622
+ * @returns {string} duration between call initiate and sending join request to locus
1623
+ */
1624
+ getCallInitiateJoinReq(): number;
1625
+ /**
1626
+ *
1627
+ * @returns {undefined}
1628
+ */
1629
+ setStartJoinReqResp(): void;
1630
+ /**
1631
+ *
1632
+ * @returns {undefined}
1633
+ */
1634
+ setEndJoinReqResp(): void;
1635
+ /**
1636
+ *
1637
+ * @returns {string} duration between sending locus join request and receiving join response
1638
+ */
1639
+ getJoinReqResp(): number;
1640
+ /**
1641
+ *
1642
+ * @returns {string} duration between call initiate and successful locus join (even if it is in lobby)
1643
+ */
1644
+ getTotalJmt(): number;
1645
+ /**
1646
+ * End the current meeting for all
1647
+ * @returns {Promise}
1648
+ * @public
1649
+ * @memberof Meeting
1650
+ */
1651
+ endMeetingForAll(): any;
1652
+ /**
1653
+ * clear the meeting data
1654
+ * @returns {undefined}
1655
+ * @public
1656
+ * @memberof Meeting
1657
+ */
1658
+ clearMeetingData: () => void;
1659
+ /**
1660
+ * starts keepAlives being sent
1661
+ * @returns {void}
1662
+ * @private
1663
+ * @memberof Meeting
1664
+ */
1665
+ startKeepAlive: () => void;
1666
+ /**
1667
+ * stops keepAlives being sent
1668
+ * @returns {void}
1669
+ * @private
1670
+ * @memberof Meeting
1671
+ */
1672
+ stopKeepAlive: () => void;
1673
+ /**
1674
+ * Send a reaction inside the meeting.
1675
+ *
1676
+ * @param {ReactionServerType} reactionType - type of reaction to be sent. Example: "thumbs_up"
1677
+ * @param {SkinToneType} skinToneType - skin tone for the reaction. Example: "medium_dark"
1678
+ * @returns {Promise}
1679
+ * @public
1680
+ * @memberof Meeting
1681
+ */
1682
+ sendReaction(reactionType: ReactionServerType, skinToneType?: SkinToneType): any;
1683
+ /**
1684
+ * Method to enable or disable reactions inside the meeting.
1685
+ *
1686
+ * @param {boolean} enable - enable or disable reactions
1687
+ * @returns {Promise}
1688
+ * @public
1689
+ * @memberof Meeting
1690
+ */
1691
+ toggleReactions(enable: boolean): any;
1692
+ /**
1693
+ * Throws if we don't have a media connection created
1694
+ *
1695
+ * @returns {void}
1696
+ */
1697
+ private checkMediaConnection;
1698
+ /**
1699
+ * Publishes specified local tracks in the meeting
1700
+ *
1701
+ * @param {Object} tracks
1702
+ * @returns {Promise}
1703
+ */
1704
+ publishTracks(tracks: {
1705
+ microphone?: MediaStreamTrack;
1706
+ camera?: MediaStreamTrack;
1707
+ screenShare: {
1708
+ audio?: MediaStreamTrack;
1709
+ video?: MediaStreamTrack;
1710
+ };
1711
+ }): Promise<void>;
1712
+ /**
1713
+ * Un-publishes specified local tracks in the meeting
1714
+ *
1715
+ * @param {Array<MediaStreamTrack>} tracks
1716
+ * @returns {Promise}
1717
+ */
1718
+ unpublishTracks(tracks: MediaStreamTrack[]): Promise<void>;
1719
+ }