@webex/plugin-meetings 3.0.0-beta.11 → 3.0.0-beta.111

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