@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
@@ -13,6 +13,9 @@ MediaSharesUtils.parse = (mediaShares: object) => {
13
13
  content: {
14
14
  beneficiaryId: MediaSharesUtils.getContentBeneficiaryId(mediaShares),
15
15
  disposition: MediaSharesUtils.getContentDisposition(mediaShares),
16
+ annotation: MediaSharesUtils.getContentAnnotation(mediaShares),
17
+ url: MediaSharesUtils.getContentUrl(mediaShares),
18
+ shareInstanceId: MediaSharesUtils.getShareInstanceId(mediaShares),
16
19
  },
17
20
  whiteboard: {
18
21
  beneficiaryId: MediaSharesUtils.getWhiteboardBeneficiaryId(mediaShares),
@@ -140,6 +143,51 @@ MediaSharesUtils.getContentBeneficiaryId = (mediaShares: object) => {
140
143
  return contentFloor.beneficiary.id;
141
144
  };
142
145
 
146
+ /**
147
+ * get live annotation is sharing from media shares (content)
148
+ * @param {Object} mediaShares
149
+ * @returns {Object}
150
+ */
151
+ MediaSharesUtils.getContentAnnotation = (mediaShares: object) => {
152
+ const extractContent = MediaSharesUtils.extractContent(mediaShares);
153
+
154
+ if (!extractContent || !extractContent.annotation) {
155
+ return undefined;
156
+ }
157
+
158
+ return extractContent.annotation;
159
+ };
160
+
161
+ /**
162
+ * get url is sharing from media shares (content)
163
+ * @param {Object} mediaShares
164
+ * @returns {Object}
165
+ */
166
+ MediaSharesUtils.getContentUrl = (mediaShares: object) => {
167
+ const extractContent = MediaSharesUtils.extractContent(mediaShares);
168
+
169
+ if (!extractContent || !extractContent.url) {
170
+ return undefined;
171
+ }
172
+
173
+ return extractContent.url;
174
+ };
175
+
176
+ /**
177
+ * get shareInstanceId is sharing from media shares (content)
178
+ * @param {Object} mediaShares
179
+ * @returns {Object}
180
+ */
181
+ MediaSharesUtils.getShareInstanceId = (mediaShares: object) => {
182
+ const extractContent = MediaSharesUtils.extractContent(mediaShares);
183
+
184
+ if (!extractContent || !extractContent.floor || !extractContent.floor.shareInstanceId) {
185
+ return undefined;
186
+ }
187
+
188
+ return extractContent.floor.shareInstanceId;
189
+ };
190
+
143
191
  /**
144
192
  * get who is sharing from media shares (whiteboard)
145
193
  * @param {Object} mediaShares
@@ -397,6 +397,7 @@ export default class Parser {
397
397
  const {isLoci} = Parser;
398
398
  // @ts-ignore
399
399
  const setStatus = (status) => {
400
+ // @ts-ignore
400
401
  this.status = status;
401
402
  };
402
403
 
@@ -477,7 +478,7 @@ export default class Parser {
477
478
  * @param {Types~Locus} locus Locus delta
478
479
  * @returns {undefined}
479
480
  */
480
- // eslint-disable-next-line no-unused-vars
481
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
481
482
  onDeltaAction(action: string, locus) {}
482
483
 
483
484
  /**
@@ -1,5 +1,6 @@
1
1
  /* eslint-disable default-param-last */
2
2
 
3
+ import {isEqual} from 'lodash';
3
4
  import {
4
5
  _IDLE_,
5
6
  _JOINED_,
@@ -31,6 +32,7 @@ SelfUtils.parse = (self: any, deviceId: string) => {
31
32
  const pstnDevices = self.devices.filter((device) => PSTN_DEVICE_TYPE === device.deviceType);
32
33
 
33
34
  return {
35
+ remoteVideoMuted: SelfUtils.getRemoteVideoMuted(self),
34
36
  remoteMuted: SelfUtils.getRemoteMuted(self),
35
37
  unmuteAllowed: SelfUtils.getUnmuteAllowed(self),
36
38
  localAudioUnmuteRequested: SelfUtils.getLocalAudioUnmuteRequested(self),
@@ -60,12 +62,17 @@ SelfUtils.parse = (self: any, deviceId: string) => {
60
62
  layout: SelfUtils.getLayout(self),
61
63
  canNotViewTheParticipantList: SelfUtils.canNotViewTheParticipantList(self),
62
64
  isSharingBlocked: SelfUtils.isSharingBlocked(self),
65
+ breakoutSessions: SelfUtils.getBreakoutSessions(self),
66
+ breakout: SelfUtils.getBreakout(self),
63
67
  };
64
68
  }
65
69
 
66
70
  return null;
67
71
  };
68
72
 
73
+ SelfUtils.getBreakoutSessions = (self) => self?.controls?.breakout?.sessions;
74
+ SelfUtils.getBreakout = (self) => self?.controls?.breakout;
75
+
69
76
  SelfUtils.getLayout = (self) =>
70
77
  Array.isArray(self?.controls?.layouts) ? self.controls.layouts[0].type : undefined;
71
78
 
@@ -89,6 +96,7 @@ SelfUtils.getSelves = (oldSelf, newSelf, deviceId) => {
89
96
 
90
97
  updates.isUserUnadmitted = SelfUtils.isUserUnadmitted(current);
91
98
  updates.isUserAdmitted = SelfUtils.isUserAdmitted(previous, current);
99
+ updates.isVideoMutedByOthersChanged = SelfUtils.videoMutedByOthersChanged(previous, current);
92
100
  updates.isMutedByOthersChanged = SelfUtils.mutedByOthersChanged(previous, current);
93
101
  updates.localAudioUnmuteRequestedByServer = SelfUtils.localAudioUnmuteRequestedByServer(
94
102
  previous,
@@ -99,6 +107,7 @@ SelfUtils.getSelves = (oldSelf, newSelf, deviceId) => {
99
107
  current
100
108
  );
101
109
  updates.moderatorChanged = SelfUtils.moderatorChanged(previous, current);
110
+ updates.isRolesChanged = SelfUtils.isRolesChanged(previous, current);
102
111
  updates.isMediaInactiveOrReleased = SelfUtils.wasMediaInactiveOrReleased(previous, current);
103
112
  updates.isUserObserving = SelfUtils.isDeviceObserving(previous, current);
104
113
  updates.layoutChanged = SelfUtils.layoutChanged(previous, current);
@@ -114,6 +123,7 @@ SelfUtils.getSelves = (oldSelf, newSelf, deviceId) => {
114
123
  updates.canNotViewTheParticipantListChanged =
115
124
  previous?.canNotViewTheParticipantList !== current.canNotViewTheParticipantList;
116
125
  updates.isSharingBlockedChanged = previous?.isSharingBlocked !== current.isSharingBlocked;
126
+ updates.breakoutsChanged = SelfUtils.breakoutsChanged(previous, current);
117
127
 
118
128
  return {
119
129
  previous,
@@ -134,11 +144,14 @@ SelfUtils.isJoined = (self: any) => self?.state === _JOINED_;
134
144
  *
135
145
  * @param {Self} previous - Previous self state
136
146
  * @param {Self} current - Current self state [per event]
137
- * @returns {boolean} - If the MEeting Layout Controls Layout has changed.
147
+ * @returns {boolean} - If the Meeting Layout Controls Layout has changed.
138
148
  */
139
149
  SelfUtils.layoutChanged = (previous: any, current: any) =>
140
150
  current?.layout && previous?.layout !== current?.layout;
141
151
 
152
+ SelfUtils.breakoutsChanged = (previous, current) =>
153
+ !isEqual(previous?.breakoutSessions, current?.breakoutSessions) && !!current?.breakout;
154
+
142
155
  SelfUtils.isMediaInactive = (previous, current) => {
143
156
  if (
144
157
  previous &&
@@ -228,6 +241,19 @@ SelfUtils.getSelfIdentity = (self: any) => {
228
241
  return self.person.id;
229
242
  };
230
243
 
244
+ /**
245
+ * get the "remote video mute" property from the self object
246
+ * @param {Object} self
247
+ * @returns {Boolean}
248
+ */
249
+ SelfUtils.getRemoteVideoMuted = (self: any) => {
250
+ if (!self || !self.controls || !self.controls.video) {
251
+ return null;
252
+ }
253
+
254
+ return self.controls.video.muted;
255
+ };
256
+
231
257
  /**
232
258
  * get the "remote mute" property from the self object
233
259
  * @param {Object} self
@@ -267,6 +293,7 @@ SelfUtils.getStatus = (status) => ({
267
293
  SelfUtils.wasMediaInactiveOrReleased = (oldSelf: any = {}, changedSelf: any) =>
268
294
  oldSelf.joinedWith &&
269
295
  oldSelf.joinedWith.state === _JOINED_ &&
296
+ changedSelf.joinedWith &&
270
297
  changedSelf.joinedWith.state === _LEFT_ &&
271
298
  (changedSelf.joinedWith.reason === MEETING_END_REASON.INACTIVE ||
272
299
  changedSelf.joinedWith.reason === MEETING_END_REASON.MEDIA_RELEASED);
@@ -311,6 +338,20 @@ SelfUtils.moderatorChanged = (oldSelf, changedSelf) => {
311
338
  return oldSelf.moderator !== changedSelf.moderator;
312
339
  };
313
340
 
341
+ /**
342
+ * determine whether the roles of self is changed or not
343
+ * @param {Object} oldSelf
344
+ * @param {Object} changedSelf
345
+ * @returns {Boolean}
346
+ */
347
+ SelfUtils.isRolesChanged = (oldSelf, changedSelf) => {
348
+ if (!changedSelf) {
349
+ // no new self means no change
350
+ return false;
351
+ }
352
+
353
+ return !isEqual(oldSelf?.roles, changedSelf?.roles);
354
+ };
314
355
  /**
315
356
  * @param {Object} oldSelf
316
357
  * @param {Object} changedSelf
@@ -343,6 +384,25 @@ SelfUtils.isUserAdmitted = (oldSelf: object, changedSelf: object) => {
343
384
  return SelfUtils.isLocusUserUnadmitted(oldSelf) && SelfUtils.isLocusUserAdmitted(changedSelf);
344
385
  };
345
386
 
387
+ SelfUtils.videoMutedByOthersChanged = (oldSelf, changedSelf) => {
388
+ if (!changedSelf) {
389
+ throw new ParameterError(
390
+ 'New self must be defined to determine if self was video muted by others.'
391
+ );
392
+ }
393
+
394
+ if (!oldSelf || oldSelf.remoteVideoMuted === null) {
395
+ if (changedSelf.remoteVideoMuted) {
396
+ return true; // this happens when host disables "Allow start video"
397
+ }
398
+
399
+ // we don't want to be sending the 'meeting:self:videoUnmutedByOthers' notification on meeting join
400
+ return false;
401
+ }
402
+
403
+ return oldSelf.remoteVideoMuted !== changedSelf.remoteVideoMuted;
404
+ };
405
+
346
406
  SelfUtils.mutedByOthersChanged = (oldSelf, changedSelf) => {
347
407
  if (!changedSelf) {
348
408
  throw new ParameterError('New self must be defined to determine if self was muted by others.');
@@ -424,4 +484,14 @@ SelfUtils.getMediaStatus = (mediaSessions = []) => {
424
484
  return mediaStatus;
425
485
  };
426
486
 
487
+ SelfUtils.getReplacedBreakoutMoveId = (self: any, deviceId: string) => {
488
+ if (self && Array.isArray(self.devices)) {
489
+ const joinedDevice = self.devices.find((device) => deviceId === device.url);
490
+ if (Array.isArray(joinedDevice?.replaces)) {
491
+ return joinedDevice.replaces[0]?.breakoutMoveId;
492
+ }
493
+ }
494
+
495
+ return null;
496
+ };
427
497
  export default SelfUtils;
@@ -3,17 +3,22 @@
3
3
  */
4
4
  /* globals navigator */
5
5
 
6
+ import {RoapMediaConnection, MultistreamRoapMediaConnection} from '@webex/internal-media-core';
7
+ import {LocalCameraTrack, LocalDisplayTrack, LocalMicrophoneTrack} from '@webex/media-helpers';
6
8
  import LoggerProxy from '../common/logs/logger-proxy';
7
- import {AUDIO_INPUT, VIDEO_INPUT, MEDIA_TRACK_CONSTRAINT} from '../constants';
9
+ import {MEDIA_TRACK_CONSTRAINT} from '../constants';
8
10
  import Config from '../config';
9
11
  import StaticConfig from '../common/config';
10
- import MediaError from '../common/errors/media';
11
12
  import BrowserDetection from '../common/browser-detection';
12
13
 
13
- import {RoapMediaConnection, MultistreamRoapMediaConnection} from './internal-media-core-wrapper';
14
-
15
14
  const {isBrowser} = BrowserDetection();
16
15
 
16
+ type MultistreamConnectionConfig = ConstructorParameters<typeof MultistreamRoapMediaConnection>[0];
17
+
18
+ export type BundlePolicy = ConstructorParameters<
19
+ typeof MultistreamRoapMediaConnection
20
+ >[0]['bundlePolicy'];
21
+
17
22
  /**
18
23
  * MediaDirection
19
24
  * @typedef {Object} MediaDirection
@@ -44,45 +49,6 @@ const {isBrowser} = BrowserDetection();
44
49
  */
45
50
  const Media: any = {};
46
51
 
47
- /**
48
- * @param {boolean} enabled
49
- * @param {MediaStreamTrack} track
50
- * @returns {Boolean}
51
- * @public
52
- */
53
- Media.setLocalTrack = (enabled: boolean, track: MediaStreamTrack) => {
54
- if (track) {
55
- track.enabled = enabled;
56
-
57
- return true;
58
- }
59
-
60
- return false;
61
- };
62
-
63
- /**
64
- * format the media array for send
65
- * @param {String} mediaId
66
- * @param {Boolean} audioMuted
67
- * @param {Boolean} videoMuted
68
- * @returns {Array} medias
69
- */
70
- Media.generateLocalMedias = (mediaId: string, audioMuted: boolean, videoMuted: boolean) => {
71
- if (mediaId) {
72
- return [
73
- {
74
- localSdp: JSON.stringify({
75
- audioMuted,
76
- videoMuted,
77
- }),
78
- mediaId,
79
- },
80
- ];
81
- }
82
-
83
- return [];
84
- };
85
-
86
52
  /**
87
53
  * make a browser call to get the media
88
54
  * @param {SendOptions} options
@@ -110,33 +76,53 @@ Media.getLocalMedia = (options: any, config: object) => {
110
76
  return Promise.resolve(undefined);
111
77
  };
112
78
 
79
+ Media.getDirection = (forceSendRecv: boolean, receive: boolean, send: boolean) => {
80
+ if (!receive && !send) {
81
+ return 'inactive';
82
+ }
83
+
84
+ if (forceSendRecv || (receive && send)) {
85
+ return 'sendrecv';
86
+ }
87
+
88
+ if (receive) {
89
+ return 'recvonly';
90
+ }
91
+
92
+ return 'sendonly';
93
+ };
94
+
113
95
  /**
114
96
  * creates a webrtc media connection with provided tracks and mediaDirection configuration
115
97
  *
116
98
  * @param {boolean} isMultistream
117
99
  * @param {string} debugId string useful for debugging (will appear in media connection logs)
118
100
  * @param {Object} options
119
- * @param {Object} [options.mediaProperties] only applicable to non-multistream connections, contains mediaDirection and local tracks:
101
+ * @param {Object} [options.mediaProperties] contains mediaDirection and local tracks:
120
102
  * audioTrack, videoTrack and shareTrack
121
103
  * @param {string} [options.remoteQualityLevel] LOW|MEDIUM|HIGH applicable only to non-multistream connections
122
104
  * @param {boolean} [options.enableRtx] applicable only to non-multistream connections
123
105
  * @param {boolean} [options.enableExtmap] applicable only to non-multistream connections
124
106
  * @param {Object} [options.turnServerInfo]
125
- * @returns {RoapMediaConnection}
107
+ * @param {BundlePolicy} [options.bundlePolicy]
108
+ * @returns {RoapMediaConnection | MultistreamRoapMediaConnection}
126
109
  */
127
110
  Media.createMediaConnection = (
128
111
  isMultistream: boolean,
129
112
  debugId: string,
130
113
  options: {
131
- mediaProperties?: {
114
+ mediaProperties: {
132
115
  mediaDirection?: {
133
116
  receiveAudio: boolean;
134
117
  receiveVideo: boolean;
135
118
  receiveShare: boolean;
119
+ sendAudio: boolean;
120
+ sendVideo: boolean;
121
+ sendShare: boolean;
136
122
  };
137
- audioTrack?: MediaStreamTrack;
138
- videoTrack?: MediaStreamTrack;
139
- shareTrack?: MediaStreamTrack;
123
+ audioTrack?: LocalMicrophoneTrack;
124
+ videoTrack?: LocalCameraTrack;
125
+ shareTrack?: LocalDisplayTrack;
140
126
  };
141
127
  remoteQualityLevel?: 'LOW' | 'MEDIUM' | 'HIGH';
142
128
  enableRtx?: boolean;
@@ -146,9 +132,17 @@ Media.createMediaConnection = (
146
132
  username: string;
147
133
  password: string;
148
134
  };
135
+ bundlePolicy?: BundlePolicy;
149
136
  }
150
137
  ) => {
151
- const {mediaProperties, remoteQualityLevel, enableRtx, enableExtmap, turnServerInfo} = options;
138
+ const {
139
+ mediaProperties,
140
+ remoteQualityLevel,
141
+ enableRtx,
142
+ enableExtmap,
143
+ turnServerInfo,
144
+ bundlePolicy,
145
+ } = options;
152
146
 
153
147
  const iceServers = [];
154
148
 
@@ -161,12 +155,19 @@ Media.createMediaConnection = (
161
155
  }
162
156
 
163
157
  if (isMultistream) {
164
- return new MultistreamRoapMediaConnection(
165
- {
166
- iceServers,
167
- },
168
- debugId
169
- );
158
+ const config: MultistreamConnectionConfig = {
159
+ iceServers,
160
+ enableMainAudio:
161
+ mediaProperties.mediaDirection?.sendAudio || mediaProperties.mediaDirection?.receiveAudio,
162
+ enableMainVideo:
163
+ mediaProperties.mediaDirection?.sendVideo || mediaProperties.mediaDirection?.receiveVideo,
164
+ };
165
+
166
+ if (bundlePolicy) {
167
+ config.bundlePolicy = bundlePolicy;
168
+ }
169
+
170
+ return new MultistreamRoapMediaConnection(config, debugId);
170
171
  }
171
172
 
172
173
  if (!mediaProperties) {
@@ -194,17 +195,21 @@ Media.createMediaConnection = (
194
195
  },
195
196
  },
196
197
  {
197
- send: {
198
- audio: audioTrack,
199
- video: videoTrack,
200
- screenShareVideo: shareTrack,
198
+ localTracks: {
199
+ audio: audioTrack?.underlyingTrack,
200
+ video: videoTrack?.underlyingTrack,
201
+ screenShareVideo: shareTrack?.underlyingTrack,
201
202
  },
202
- receive: {
203
- audio: mediaDirection.receiveAudio,
204
- video: mediaDirection.receiveVideo,
205
- screenShareVideo: mediaDirection.receiveShare,
206
- remoteQualityLevel,
203
+ direction: {
204
+ audio: Media.getDirection(true, mediaDirection.receiveAudio, mediaDirection.sendAudio),
205
+ video: Media.getDirection(true, mediaDirection.receiveVideo, mediaDirection.sendVideo),
206
+ screenShareVideo: Media.getDirection(
207
+ false,
208
+ mediaDirection.receiveShare,
209
+ mediaDirection.sendShare
210
+ ),
207
211
  },
212
+ remoteQualityLevel,
208
213
  },
209
214
  debugId
210
215
  );
@@ -349,52 +354,6 @@ Media.getMedia = (audio: any | boolean, video: any | boolean, config: any) => {
349
354
  });
350
355
  };
351
356
 
352
- /**
353
- * Checks if the machine has at least one audio or video device (Dont use this for screen share)
354
- * @param {object} [options]
355
- * {
356
- * sendAudio: true/false,
357
- * sendVideo: true/false
358
- * }
359
- * @returns {Object} {
360
- * sendAudio: true/false,
361
- * sendVideo: true/false
362
- *}
363
- */
364
- Media.getSupportedDevice = ({sendAudio, sendVideo}: {sendAudio: boolean; sendVideo: boolean}) =>
365
- Promise.resolve().then(() => {
366
- if (!navigator.mediaDevices || navigator.mediaDevices.enumerateDevices === undefined) {
367
- return {
368
- sendAudio: false,
369
- sendVideo: false,
370
- };
371
- }
372
-
373
- return navigator.mediaDevices.enumerateDevices().then((devices) => {
374
- const supported = {
375
- audio: devices.filter((device) => device.kind === AUDIO_INPUT).length > 0,
376
- video: devices.filter((device) => device.kind === VIDEO_INPUT).length > 0,
377
- };
378
-
379
- return {
380
- sendAudio: supported.audio && sendAudio,
381
- sendVideo: supported.video && sendVideo,
382
- };
383
- });
384
- });
385
-
386
- /**
387
- * proxy to browser navigator.mediaDevices.enumerateDevices()
388
- * @returns {Promise}
389
- */
390
- Media.getDevices = () => {
391
- if (navigator && navigator.mediaDevices && navigator.mediaDevices.enumerateDevices) {
392
- return navigator.mediaDevices.enumerateDevices();
393
- }
394
-
395
- return Promise.reject(new MediaError('enumerateDevices not supported.'));
396
- };
397
-
398
357
  /**
399
358
  *
400
359
  * Toggle a specific stream
@@ -426,37 +385,6 @@ Media.stopTracks = (track: any) => {
426
385
  });
427
386
  };
428
387
 
429
- /**
430
- *
431
- * Stop input stream
432
- * @param {Stream} stream A media stream
433
- * @returns {null}
434
- * @deprecated after v1.89.3
435
- */
436
- Media.stopStream = (stream: any) => {
437
- LoggerProxy.logger.warn(
438
- 'Media:index#stopStream --> [DEPRECATION WARNING]: stopStream has been deprecated after v1.89.3'
439
- );
440
- if (!stream) {
441
- return Promise.resolve();
442
- }
443
-
444
- /*
445
- * To release local media
446
- * 1) Chrome requires all tracks to be stopped (stream.stop got deprecated)
447
- * 2) Firefox requires the stream to be stopped
448
- */
449
- return Promise.resolve().then(() => {
450
- if (stream.getTracks) {
451
- stream.getTracks().forEach((track) => {
452
- track.stop();
453
- });
454
- } else if (stream.stop) {
455
- stream.stop();
456
- }
457
- });
458
- };
459
-
460
388
  /**
461
389
  * generates streams for audio video and share
462
390
  * @param {object} mediaSetting parameter