@webex/plugin-meetings 3.0.0-beta.15 → 3.0.0-beta.151

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