@webex/plugin-meetings 3.0.0-beta.8 → 3.0.0-beta.80

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