@webex/plugin-meetings 2.59.8 → 2.60.0-next.2

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 (528) hide show
  1. package/README.md +46 -8
  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 +41 -0
  5. package/dist/annotation/constants.js.map +1 -0
  6. package/dist/annotation/index.js +357 -0
  7. package/dist/annotation/index.js.map +1 -0
  8. package/dist/breakouts/breakout.js +215 -0
  9. package/dist/breakouts/breakout.js.map +1 -0
  10. package/dist/breakouts/collection.js +22 -0
  11. package/dist/breakouts/collection.js.map +1 -0
  12. package/dist/breakouts/edit-lock-error.js +51 -0
  13. package/dist/breakouts/edit-lock-error.js.map +1 -0
  14. package/dist/breakouts/events.js +44 -0
  15. package/dist/breakouts/events.js.map +1 -0
  16. package/dist/breakouts/index.js +1047 -0
  17. package/dist/breakouts/index.js.map +1 -0
  18. package/dist/breakouts/request.js +77 -0
  19. package/dist/breakouts/request.js.map +1 -0
  20. package/dist/breakouts/utils.js +64 -0
  21. package/dist/breakouts/utils.js.map +1 -0
  22. package/dist/common/browser-detection.js +2 -3
  23. package/dist/common/browser-detection.js.map +1 -1
  24. package/dist/common/collection.js +3 -4
  25. package/dist/common/collection.js.map +1 -1
  26. package/dist/common/config.js +1 -2
  27. package/dist/common/config.js.map +1 -1
  28. package/dist/common/errors/captcha-error.js +1 -2
  29. package/dist/common/errors/captcha-error.js.map +1 -1
  30. package/dist/common/errors/intent-to-join.js +1 -2
  31. package/dist/common/errors/intent-to-join.js.map +1 -1
  32. package/dist/common/errors/join-meeting.js +1 -2
  33. package/dist/common/errors/join-meeting.js.map +1 -1
  34. package/dist/common/errors/media.js +1 -2
  35. package/dist/common/errors/media.js.map +1 -1
  36. package/dist/common/errors/no-meeting-info.js +50 -0
  37. package/dist/common/errors/no-meeting-info.js.map +1 -0
  38. package/dist/common/errors/parameter.js +3 -4
  39. package/dist/common/errors/parameter.js.map +1 -1
  40. package/dist/common/errors/password-error.js +1 -2
  41. package/dist/common/errors/password-error.js.map +1 -1
  42. package/dist/common/errors/permission.js +1 -2
  43. package/dist/common/errors/permission.js.map +1 -1
  44. package/dist/common/errors/reclaim-host-role-errors.js +154 -0
  45. package/dist/common/errors/reclaim-host-role-errors.js.map +1 -0
  46. package/dist/common/errors/reconnection-in-progress.js +1 -2
  47. package/dist/common/errors/reconnection-in-progress.js.map +1 -1
  48. package/dist/common/errors/reconnection.js +1 -2
  49. package/dist/common/errors/reconnection.js.map +1 -1
  50. package/dist/common/errors/stats.js +1 -2
  51. package/dist/common/errors/stats.js.map +1 -1
  52. package/dist/common/errors/webex-errors.js +48 -28
  53. package/dist/common/errors/webex-errors.js.map +1 -1
  54. package/dist/common/errors/webex-meetings-error.js +1 -2
  55. package/dist/common/errors/webex-meetings-error.js.map +1 -1
  56. package/dist/common/events/events-scope.js +1 -2
  57. package/dist/common/events/events-scope.js.map +1 -1
  58. package/dist/common/events/events.js +1 -2
  59. package/dist/common/events/events.js.map +1 -1
  60. package/dist/common/events/trigger-proxy.js +1 -2
  61. package/dist/common/events/trigger-proxy.js.map +1 -1
  62. package/dist/common/events/util.js +1 -2
  63. package/dist/common/events/util.js.map +1 -1
  64. package/dist/common/logs/logger-config.js +1 -2
  65. package/dist/common/logs/logger-config.js.map +1 -1
  66. package/dist/common/logs/logger-proxy.js +2 -3
  67. package/dist/common/logs/logger-proxy.js.map +1 -1
  68. package/dist/common/logs/request.js +8 -5
  69. package/dist/common/logs/request.js.map +1 -1
  70. package/dist/common/queue.js +22 -9
  71. package/dist/common/queue.js.map +1 -1
  72. package/dist/config.js +8 -11
  73. package/dist/config.js.map +1 -1
  74. package/dist/constants.js +437 -435
  75. package/dist/constants.js.map +1 -1
  76. package/dist/controls-options-manager/constants.js +3 -6
  77. package/dist/controls-options-manager/constants.js.map +1 -1
  78. package/dist/controls-options-manager/enums.js +15 -6
  79. package/dist/controls-options-manager/enums.js.map +1 -1
  80. package/dist/controls-options-manager/index.js +127 -38
  81. package/dist/controls-options-manager/index.js.map +1 -1
  82. package/dist/controls-options-manager/types.js +7 -0
  83. package/dist/controls-options-manager/types.js.map +1 -0
  84. package/dist/controls-options-manager/util.js +309 -19
  85. package/dist/controls-options-manager/util.js.map +1 -1
  86. package/dist/index.js +116 -4
  87. package/dist/index.js.map +1 -1
  88. package/dist/interpretation/collection.js +22 -0
  89. package/dist/interpretation/collection.js.map +1 -0
  90. package/dist/interpretation/index.js +365 -0
  91. package/dist/interpretation/index.js.map +1 -0
  92. package/dist/interpretation/siLanguage.js +24 -0
  93. package/dist/interpretation/siLanguage.js.map +1 -0
  94. package/dist/locus-info/controlsUtils.js +100 -11
  95. package/dist/locus-info/controlsUtils.js.map +1 -1
  96. package/dist/locus-info/embeddedAppsUtils.js +3 -4
  97. package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
  98. package/dist/locus-info/fullState.js +1 -2
  99. package/dist/locus-info/fullState.js.map +1 -1
  100. package/dist/locus-info/hostUtils.js +1 -2
  101. package/dist/locus-info/hostUtils.js.map +1 -1
  102. package/dist/locus-info/index.js +425 -84
  103. package/dist/locus-info/index.js.map +1 -1
  104. package/dist/locus-info/infoUtils.js +13 -5
  105. package/dist/locus-info/infoUtils.js.map +1 -1
  106. package/dist/locus-info/mediaSharesUtils.js +58 -3
  107. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  108. package/dist/locus-info/parser.js +253 -80
  109. package/dist/locus-info/parser.js.map +1 -1
  110. package/dist/locus-info/selfUtils.js +97 -13
  111. package/dist/locus-info/selfUtils.js.map +1 -1
  112. package/dist/media/index.js +106 -319
  113. package/dist/media/index.js.map +1 -1
  114. package/dist/media/properties.js +96 -153
  115. package/dist/media/properties.js.map +1 -1
  116. package/dist/media/util.js +1 -22
  117. package/dist/media/util.js.map +1 -1
  118. package/dist/mediaQualityMetrics/config.js +498 -493
  119. package/dist/mediaQualityMetrics/config.js.map +1 -1
  120. package/dist/meeting/in-meeting-actions.js +92 -3
  121. package/dist/meeting/in-meeting-actions.js.map +1 -1
  122. package/dist/meeting/index.js +4628 -2971
  123. package/dist/meeting/index.js.map +1 -1
  124. package/dist/meeting/locusMediaRequest.js +291 -0
  125. package/dist/meeting/locusMediaRequest.js.map +1 -0
  126. package/dist/meeting/muteState.js +224 -133
  127. package/dist/meeting/muteState.js.map +1 -1
  128. package/dist/meeting/request.js +297 -199
  129. package/dist/meeting/request.js.map +1 -1
  130. package/dist/meeting/request.type.js +7 -0
  131. package/dist/meeting/request.type.js.map +1 -0
  132. package/dist/meeting/state.js +1 -2
  133. package/dist/meeting/state.js.map +1 -1
  134. package/dist/meeting/util.js +605 -435
  135. package/dist/meeting/util.js.map +1 -1
  136. package/dist/meeting-info/collection.js +3 -4
  137. package/dist/meeting-info/collection.js.map +1 -1
  138. package/dist/meeting-info/index.js +74 -7
  139. package/dist/meeting-info/index.js.map +1 -1
  140. package/dist/meeting-info/meeting-info-v2.js +200 -63
  141. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  142. package/dist/meeting-info/request.js +1 -2
  143. package/dist/meeting-info/request.js.map +1 -1
  144. package/dist/meeting-info/util.js +2 -3
  145. package/dist/meeting-info/util.js.map +1 -1
  146. package/dist/meeting-info/utilv2.js +39 -41
  147. package/dist/meeting-info/utilv2.js.map +1 -1
  148. package/dist/meetings/collection.js +42 -4
  149. package/dist/meetings/collection.js.map +1 -1
  150. package/dist/meetings/index.js +477 -123
  151. package/dist/meetings/index.js.map +1 -1
  152. package/dist/meetings/meetings.types.js +7 -0
  153. package/dist/meetings/meetings.types.js.map +1 -0
  154. package/dist/meetings/request.js +4 -3
  155. package/dist/meetings/request.js.map +1 -1
  156. package/dist/meetings/util.js +107 -6
  157. package/dist/meetings/util.js.map +1 -1
  158. package/dist/member/index.js +54 -2
  159. package/dist/member/index.js.map +1 -1
  160. package/dist/member/member.types.js +3 -4
  161. package/dist/member/member.types.js.map +1 -1
  162. package/dist/member/types.js +23 -0
  163. package/dist/member/types.js.map +1 -0
  164. package/dist/member/util.js +131 -29
  165. package/dist/member/util.js.map +1 -1
  166. package/dist/members/collection.js +11 -2
  167. package/dist/members/collection.js.map +1 -1
  168. package/dist/members/index.js +174 -10
  169. package/dist/members/index.js.map +1 -1
  170. package/dist/members/request.js +108 -41
  171. package/dist/members/request.js.map +1 -1
  172. package/dist/members/types.js +14 -0
  173. package/dist/members/types.js.map +1 -0
  174. package/dist/members/util.js +327 -234
  175. package/dist/members/util.js.map +1 -1
  176. package/dist/metrics/constants.js +15 -9
  177. package/dist/metrics/constants.js.map +1 -1
  178. package/dist/metrics/index.js +4 -452
  179. package/dist/metrics/index.js.map +1 -1
  180. package/dist/multistream/mediaRequestManager.js +344 -0
  181. package/dist/multistream/mediaRequestManager.js.map +1 -0
  182. package/dist/multistream/receiveSlot.js +200 -0
  183. package/dist/multistream/receiveSlot.js.map +1 -0
  184. package/dist/multistream/receiveSlotManager.js +174 -0
  185. package/dist/multistream/receiveSlotManager.js.map +1 -0
  186. package/dist/multistream/remoteMedia.js +268 -0
  187. package/dist/multistream/remoteMedia.js.map +1 -0
  188. package/dist/multistream/remoteMediaGroup.js +267 -0
  189. package/dist/multistream/remoteMediaGroup.js.map +1 -0
  190. package/dist/multistream/remoteMediaManager.js +1211 -0
  191. package/dist/multistream/remoteMediaManager.js.map +1 -0
  192. package/dist/multistream/sendSlotManager.js +236 -0
  193. package/dist/multistream/sendSlotManager.js.map +1 -0
  194. package/dist/networkQualityMonitor/index.js +5 -4
  195. package/dist/networkQualityMonitor/index.js.map +1 -1
  196. package/dist/personal-meeting-room/index.js +2 -3
  197. package/dist/personal-meeting-room/index.js.map +1 -1
  198. package/dist/personal-meeting-room/request.js +2 -3
  199. package/dist/personal-meeting-room/request.js.map +1 -1
  200. package/dist/personal-meeting-room/util.js +1 -2
  201. package/dist/personal-meeting-room/util.js.map +1 -1
  202. package/dist/reachability/index.js +265 -72
  203. package/dist/reachability/index.js.map +1 -1
  204. package/dist/reachability/request.js +18 -10
  205. package/dist/reachability/request.js.map +1 -1
  206. package/dist/reactions/constants.js +12 -0
  207. package/dist/reactions/constants.js.map +1 -0
  208. package/dist/reactions/reactions.js +4 -6
  209. package/dist/reactions/reactions.js.map +1 -1
  210. package/dist/reactions/reactions.type.js +21 -23
  211. package/dist/reactions/reactions.type.js.map +1 -1
  212. package/dist/reconnection-manager/index.js +281 -229
  213. package/dist/reconnection-manager/index.js.map +1 -1
  214. package/dist/recording-controller/enums.js +4 -5
  215. package/dist/recording-controller/enums.js.map +1 -1
  216. package/dist/recording-controller/index.js +57 -46
  217. package/dist/recording-controller/index.js.map +1 -1
  218. package/dist/recording-controller/util.js +10 -10
  219. package/dist/recording-controller/util.js.map +1 -1
  220. package/dist/roap/index.js +101 -235
  221. package/dist/roap/index.js.map +1 -1
  222. package/dist/roap/request.js +126 -180
  223. package/dist/roap/request.js.map +1 -1
  224. package/dist/roap/turnDiscovery.js +115 -105
  225. package/dist/roap/turnDiscovery.js.map +1 -1
  226. package/dist/rtcMetrics/constants.js +11 -0
  227. package/dist/rtcMetrics/constants.js.map +1 -0
  228. package/dist/rtcMetrics/index.js +140 -0
  229. package/dist/rtcMetrics/index.js.map +1 -0
  230. package/dist/statsAnalyzer/global.js +2 -85
  231. package/dist/statsAnalyzer/global.js.map +1 -1
  232. package/dist/statsAnalyzer/index.js +402 -424
  233. package/dist/statsAnalyzer/index.js.map +1 -1
  234. package/dist/statsAnalyzer/mqaUtil.js +117 -83
  235. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  236. package/dist/transcription/index.js +1 -2
  237. package/dist/transcription/index.js.map +1 -1
  238. package/dist/webinar/collection.js +43 -0
  239. package/dist/webinar/collection.js.map +1 -0
  240. package/dist/webinar/index.js +68 -0
  241. package/dist/webinar/index.js.map +1 -0
  242. package/package.json +34 -25
  243. package/src/annotation/annotation.types.ts +50 -0
  244. package/src/annotation/constants.ts +36 -0
  245. package/src/annotation/index.ts +328 -0
  246. package/src/breakouts/README.md +220 -0
  247. package/src/breakouts/breakout.ts +188 -0
  248. package/src/breakouts/collection.ts +19 -0
  249. package/src/breakouts/edit-lock-error.ts +25 -0
  250. package/src/breakouts/events.ts +56 -0
  251. package/src/breakouts/index.ts +925 -0
  252. package/src/breakouts/request.ts +55 -0
  253. package/src/breakouts/utils.ts +57 -0
  254. package/src/common/errors/no-meeting-info.ts +24 -0
  255. package/src/common/errors/reclaim-host-role-errors.ts +134 -0
  256. package/src/common/errors/webex-errors.ts +36 -12
  257. package/src/common/logs/logger-proxy.ts +1 -1
  258. package/src/common/logs/request.ts +5 -1
  259. package/src/common/queue.ts +22 -8
  260. package/src/config.ts +5 -7
  261. package/src/constants.ts +271 -93
  262. package/src/controls-options-manager/enums.ts +12 -0
  263. package/src/controls-options-manager/index.ts +116 -21
  264. package/src/controls-options-manager/types.ts +59 -0
  265. package/src/controls-options-manager/util.ts +294 -14
  266. package/src/index.ts +40 -0
  267. package/src/interpretation/README.md +60 -0
  268. package/src/interpretation/collection.ts +19 -0
  269. package/src/interpretation/index.ts +332 -0
  270. package/src/interpretation/siLanguage.ts +18 -0
  271. package/src/locus-info/controlsUtils.ts +110 -0
  272. package/src/locus-info/index.ts +449 -61
  273. package/src/locus-info/infoUtils.ts +14 -2
  274. package/src/locus-info/mediaSharesUtils.ts +64 -0
  275. package/src/locus-info/parser.ts +258 -47
  276. package/src/locus-info/selfUtils.ts +85 -2
  277. package/src/media/index.ts +153 -370
  278. package/src/media/properties.ts +106 -136
  279. package/src/media/util.ts +0 -21
  280. package/src/mediaQualityMetrics/config.ts +379 -377
  281. package/src/meeting/in-meeting-actions.ts +172 -0
  282. package/src/meeting/index.ts +3861 -2504
  283. package/src/meeting/locusMediaRequest.ts +313 -0
  284. package/src/meeting/muteState.ts +224 -138
  285. package/src/meeting/request.ts +207 -127
  286. package/src/meeting/request.type.ts +13 -0
  287. package/src/meeting/util.ts +590 -423
  288. package/src/meeting-info/index.ts +81 -8
  289. package/src/meeting-info/meeting-info-v2.ts +163 -13
  290. package/src/meeting-info/util.ts +1 -1
  291. package/src/meeting-info/utilv2.ts +28 -28
  292. package/src/meetings/collection.ts +33 -0
  293. package/src/meetings/index.ts +477 -124
  294. package/src/meetings/meetings.types.ts +12 -0
  295. package/src/meetings/request.ts +2 -0
  296. package/src/meetings/util.ts +116 -5
  297. package/src/member/index.ts +52 -1
  298. package/src/member/types.ts +38 -0
  299. package/src/member/util.ts +139 -28
  300. package/src/members/collection.ts +8 -0
  301. package/src/members/index.ts +196 -7
  302. package/src/members/request.ts +97 -17
  303. package/src/members/types.ts +29 -0
  304. package/src/members/util.ts +333 -240
  305. package/src/metrics/constants.ts +13 -6
  306. package/src/metrics/index.ts +1 -471
  307. package/src/multistream/mediaRequestManager.ts +440 -0
  308. package/src/multistream/receiveSlot.ts +184 -0
  309. package/src/multistream/receiveSlotManager.ts +166 -0
  310. package/src/multistream/remoteMedia.ts +254 -0
  311. package/src/multistream/remoteMediaGroup.ts +284 -0
  312. package/src/multistream/remoteMediaManager.ts +1145 -0
  313. package/src/multistream/sendSlotManager.ts +170 -0
  314. package/src/networkQualityMonitor/index.ts +6 -6
  315. package/src/reachability/index.ts +238 -45
  316. package/src/reachability/request.ts +17 -8
  317. package/src/reactions/constants.ts +4 -0
  318. package/src/reactions/reactions.ts +4 -4
  319. package/src/reactions/reactions.type.ts +30 -4
  320. package/src/reconnection-manager/index.ts +167 -154
  321. package/src/recording-controller/index.ts +20 -3
  322. package/src/recording-controller/util.ts +26 -9
  323. package/src/roap/index.ts +98 -241
  324. package/src/roap/request.ts +74 -148
  325. package/src/roap/turnDiscovery.ts +62 -56
  326. package/src/rtcMetrics/constants.ts +3 -0
  327. package/src/rtcMetrics/index.ts +124 -0
  328. package/src/statsAnalyzer/global.ts +1 -84
  329. package/src/statsAnalyzer/index.ts +470 -522
  330. package/src/statsAnalyzer/mqaUtil.ts +117 -112
  331. package/src/webinar/collection.ts +31 -0
  332. package/src/webinar/index.ts +62 -0
  333. package/test/integration/spec/converged-space-meetings.js +233 -0
  334. package/test/integration/spec/journey.js +320 -264
  335. package/test/integration/spec/space-meeting.js +77 -4
  336. package/test/unit/spec/annotation/index.ts +418 -0
  337. package/test/unit/spec/breakouts/breakout.ts +237 -0
  338. package/test/unit/spec/breakouts/collection.ts +15 -0
  339. package/test/unit/spec/breakouts/edit-lock-error.ts +30 -0
  340. package/test/unit/spec/breakouts/events.ts +89 -0
  341. package/test/unit/spec/breakouts/index.ts +1790 -0
  342. package/test/unit/spec/breakouts/request.ts +104 -0
  343. package/test/unit/spec/breakouts/utils.js +72 -0
  344. package/test/unit/spec/common/queue.js +31 -2
  345. package/test/unit/spec/controls-options-manager/index.js +163 -0
  346. package/test/unit/spec/controls-options-manager/util.js +576 -60
  347. package/test/unit/spec/fixture/locus.js +1 -0
  348. package/test/unit/spec/interpretation/collection.ts +15 -0
  349. package/test/unit/spec/interpretation/index.ts +589 -0
  350. package/test/unit/spec/interpretation/siLanguage.ts +28 -0
  351. package/test/unit/spec/locus-info/controlsUtils.js +323 -30
  352. package/test/unit/spec/locus-info/index.js +1390 -16
  353. package/test/unit/spec/locus-info/infoUtils.js +54 -16
  354. package/test/unit/spec/locus-info/lib/SeqCmp.json +16 -0
  355. package/test/unit/spec/locus-info/lib/selfConstant.js +48 -0
  356. package/test/unit/spec/locus-info/mediaSharesUtils.ts +32 -0
  357. package/test/unit/spec/locus-info/parser.js +116 -35
  358. package/test/unit/spec/locus-info/selfUtils.js +275 -0
  359. package/test/unit/spec/media/index.ts +274 -0
  360. package/test/unit/spec/media/properties.ts +75 -84
  361. package/test/unit/spec/meeting/in-meeting-actions.ts +84 -0
  362. package/test/unit/spec/meeting/index.js +8269 -3145
  363. package/test/unit/spec/meeting/locusMediaRequest.ts +442 -0
  364. package/test/unit/spec/meeting/muteState.js +409 -213
  365. package/test/unit/spec/meeting/request.js +512 -42
  366. package/test/unit/spec/meeting/utils.js +741 -24
  367. package/test/unit/spec/meeting-info/index.js +300 -0
  368. package/test/unit/spec/meeting-info/meetinginfov2.js +527 -5
  369. package/test/unit/spec/meeting-info/utilv2.js +21 -0
  370. package/test/unit/spec/meetings/collection.js +26 -0
  371. package/test/unit/spec/meetings/index.js +1201 -210
  372. package/test/unit/spec/meetings/utils.js +202 -2
  373. package/test/unit/spec/member/index.js +38 -8
  374. package/test/unit/spec/member/util.js +499 -29
  375. package/test/unit/spec/members/index.js +597 -3
  376. package/test/unit/spec/members/request.js +206 -27
  377. package/test/unit/spec/members/utils.js +210 -0
  378. package/test/unit/spec/metrics/index.js +1 -50
  379. package/test/unit/spec/multistream/mediaRequestManager.ts +1418 -0
  380. package/test/unit/spec/multistream/receiveSlot.ts +163 -0
  381. package/test/unit/spec/multistream/receiveSlotManager.ts +203 -0
  382. package/test/unit/spec/multistream/remoteMedia.ts +255 -0
  383. package/test/unit/spec/multistream/remoteMediaGroup.ts +662 -0
  384. package/test/unit/spec/multistream/remoteMediaManager.ts +1924 -0
  385. package/test/unit/spec/multistream/sendSlotManager.ts +242 -0
  386. package/test/unit/spec/networkQualityMonitor/index.js +4 -4
  387. package/test/unit/spec/reachability/index.ts +598 -24
  388. package/test/unit/spec/reachability/request.js +68 -0
  389. package/test/unit/spec/reconnection-manager/index.js +145 -22
  390. package/test/unit/spec/recording-controller/index.js +293 -218
  391. package/test/unit/spec/recording-controller/util.js +223 -96
  392. package/test/unit/spec/roap/index.ts +200 -76
  393. package/test/unit/spec/roap/request.ts +232 -0
  394. package/test/unit/spec/roap/turnDiscovery.ts +86 -48
  395. package/test/unit/spec/rtcMetrics/index.ts +93 -0
  396. package/test/unit/spec/stats-analyzer/index.js +188 -174
  397. package/test/unit/spec/webinar/collection.ts +13 -0
  398. package/test/unit/spec/webinar/index.ts +60 -0
  399. package/test/utils/constants.js +9 -0
  400. package/test/utils/integrationTestUtils.js +46 -0
  401. package/test/utils/testUtils.js +0 -45
  402. package/test/utils/webex-config.js +4 -0
  403. package/test/utils/webex-test-users.js +7 -3
  404. package/dist/common/browser-detection.d.ts +0 -9
  405. package/dist/common/collection.d.ts +0 -48
  406. package/dist/common/config.d.ts +0 -2
  407. package/dist/common/errors/captcha-error.d.ts +0 -15
  408. package/dist/common/errors/intent-to-join.d.ts +0 -16
  409. package/dist/common/errors/join-meeting.d.ts +0 -17
  410. package/dist/common/errors/media.d.ts +0 -15
  411. package/dist/common/errors/parameter.d.ts +0 -15
  412. package/dist/common/errors/password-error.d.ts +0 -15
  413. package/dist/common/errors/permission.d.ts +0 -14
  414. package/dist/common/errors/reconnection-in-progress.d.ts +0 -9
  415. package/dist/common/errors/reconnection.d.ts +0 -15
  416. package/dist/common/errors/stats.d.ts +0 -15
  417. package/dist/common/errors/webex-errors.d.ts +0 -81
  418. package/dist/common/errors/webex-meetings-error.d.ts +0 -20
  419. package/dist/common/events/events-scope.d.ts +0 -17
  420. package/dist/common/events/events.d.ts +0 -12
  421. package/dist/common/events/trigger-proxy.d.ts +0 -2
  422. package/dist/common/events/util.d.ts +0 -2
  423. package/dist/common/logs/logger-config.d.ts +0 -2
  424. package/dist/common/logs/logger-proxy.d.ts +0 -2
  425. package/dist/common/logs/request.d.ts +0 -34
  426. package/dist/common/queue.d.ts +0 -32
  427. package/dist/config.d.ts +0 -73
  428. package/dist/constants.d.ts +0 -926
  429. package/dist/controls-options-manager/constants.d.ts +0 -4
  430. package/dist/controls-options-manager/enums.d.ts +0 -5
  431. package/dist/controls-options-manager/index.d.ts +0 -120
  432. package/dist/controls-options-manager/util.d.ts +0 -7
  433. package/dist/index.d.ts +0 -4
  434. package/dist/locus-info/controlsUtils.d.ts +0 -2
  435. package/dist/locus-info/embeddedAppsUtils.d.ts +0 -2
  436. package/dist/locus-info/fullState.d.ts +0 -2
  437. package/dist/locus-info/hostUtils.d.ts +0 -2
  438. package/dist/locus-info/index.d.ts +0 -269
  439. package/dist/locus-info/infoUtils.d.ts +0 -2
  440. package/dist/locus-info/mediaSharesUtils.d.ts +0 -2
  441. package/dist/locus-info/parser.d.ts +0 -212
  442. package/dist/locus-info/selfUtils.d.ts +0 -2
  443. package/dist/media/index.d.ts +0 -32
  444. package/dist/media/properties.d.ts +0 -108
  445. package/dist/media/util.d.ts +0 -2
  446. package/dist/mediaQualityMetrics/config.d.ts +0 -233
  447. package/dist/meeting/effectsState.d.ts +0 -42
  448. package/dist/meeting/effectsState.js +0 -260
  449. package/dist/meeting/effectsState.js.map +0 -1
  450. package/dist/meeting/in-meeting-actions.d.ts +0 -79
  451. package/dist/meeting/index.d.ts +0 -1622
  452. package/dist/meeting/muteState.d.ts +0 -116
  453. package/dist/meeting/request.d.ts +0 -255
  454. package/dist/meeting/state.d.ts +0 -9
  455. package/dist/meeting/util.d.ts +0 -2
  456. package/dist/meeting-info/collection.d.ts +0 -20
  457. package/dist/meeting-info/index.d.ts +0 -57
  458. package/dist/meeting-info/meeting-info-v2.d.ts +0 -93
  459. package/dist/meeting-info/request.d.ts +0 -22
  460. package/dist/meeting-info/util.d.ts +0 -2
  461. package/dist/meeting-info/utilv2.d.ts +0 -2
  462. package/dist/meetings/collection.d.ts +0 -23
  463. package/dist/meetings/index.d.ts +0 -296
  464. package/dist/meetings/request.d.ts +0 -27
  465. package/dist/meetings/util.d.ts +0 -18
  466. package/dist/member/index.d.ts +0 -147
  467. package/dist/member/member.types.d.ts +0 -11
  468. package/dist/member/util.d.ts +0 -2
  469. package/dist/members/collection.d.ts +0 -24
  470. package/dist/members/index.d.ts +0 -298
  471. package/dist/members/request.d.ts +0 -50
  472. package/dist/members/util.d.ts +0 -2
  473. package/dist/metrics/config.d.ts +0 -169
  474. package/dist/metrics/config.js +0 -289
  475. package/dist/metrics/config.js.map +0 -1
  476. package/dist/metrics/constants.d.ts +0 -59
  477. package/dist/metrics/index.d.ts +0 -152
  478. package/dist/networkQualityMonitor/index.d.ts +0 -70
  479. package/dist/peer-connection-manager/index.d.ts +0 -6
  480. package/dist/peer-connection-manager/index.js +0 -671
  481. package/dist/peer-connection-manager/index.js.map +0 -1
  482. package/dist/peer-connection-manager/util.d.ts +0 -6
  483. package/dist/peer-connection-manager/util.js +0 -110
  484. package/dist/peer-connection-manager/util.js.map +0 -1
  485. package/dist/personal-meeting-room/index.d.ts +0 -47
  486. package/dist/personal-meeting-room/request.d.ts +0 -14
  487. package/dist/personal-meeting-room/util.d.ts +0 -2
  488. package/dist/reachability/index.d.ts +0 -139
  489. package/dist/reachability/request.d.ts +0 -35
  490. package/dist/reactions/reactions.d.ts +0 -4
  491. package/dist/reactions/reactions.type.d.ts +0 -32
  492. package/dist/reconnection-manager/index.d.ts +0 -112
  493. package/dist/recording-controller/enums.d.ts +0 -7
  494. package/dist/recording-controller/index.d.ts +0 -193
  495. package/dist/recording-controller/util.d.ts +0 -13
  496. package/dist/roap/collection.d.ts +0 -10
  497. package/dist/roap/collection.js +0 -63
  498. package/dist/roap/collection.js.map +0 -1
  499. package/dist/roap/handler.d.ts +0 -47
  500. package/dist/roap/handler.js +0 -279
  501. package/dist/roap/handler.js.map +0 -1
  502. package/dist/roap/index.d.ts +0 -116
  503. package/dist/roap/request.d.ts +0 -35
  504. package/dist/roap/state.d.ts +0 -9
  505. package/dist/roap/state.js +0 -127
  506. package/dist/roap/state.js.map +0 -1
  507. package/dist/roap/turnDiscovery.d.ts +0 -81
  508. package/dist/roap/util.d.ts +0 -2
  509. package/dist/roap/util.js +0 -76
  510. package/dist/roap/util.js.map +0 -1
  511. package/dist/statsAnalyzer/global.d.ts +0 -118
  512. package/dist/statsAnalyzer/index.d.ts +0 -193
  513. package/dist/statsAnalyzer/mqaUtil.d.ts +0 -22
  514. package/dist/transcription/index.d.ts +0 -64
  515. package/src/index.js +0 -15
  516. package/src/meeting/effectsState.ts +0 -209
  517. package/src/metrics/config.ts +0 -485
  518. package/src/peer-connection-manager/index.ts +0 -847
  519. package/src/peer-connection-manager/util.ts +0 -119
  520. package/src/roap/collection.ts +0 -62
  521. package/src/roap/handler.ts +0 -294
  522. package/src/roap/state.ts +0 -156
  523. package/src/roap/util.ts +0 -100
  524. package/test/unit/spec/meeting/effectsState.js +0 -281
  525. package/test/unit/spec/peerconnection-manager/index.js +0 -218
  526. package/test/unit/spec/peerconnection-manager/utils.js +0 -49
  527. package/test/unit/spec/peerconnection-manager/utils.test-fixtures.ts +0 -388
  528. package/test/unit/spec/roap/util.js +0 -30
@@ -3,21 +3,29 @@
3
3
  */
4
4
  /* globals navigator */
5
5
 
6
- import LoggerProxy from '../common/logs/logger-proxy';
7
6
  import {
8
- AUDIO_INPUT,
9
- VIDEO_INPUT,
10
- PEER_CONNECTION_STATE,
11
- MEDIA_TRACK_CONSTRAINT,
12
- } from '../constants';
7
+ RoapMediaConnection,
8
+ MultistreamRoapMediaConnection,
9
+ type MultistreamConnectionConfig,
10
+ } from '@webex/internal-media-core';
11
+ import {
12
+ LocalStream,
13
+ LocalCameraStream,
14
+ LocalDisplayStream,
15
+ LocalSystemAudioStream,
16
+ LocalMicrophoneStream,
17
+ } from '@webex/media-helpers';
18
+ import LoggerProxy from '../common/logs/logger-proxy';
19
+ import {MEDIA_TRACK_CONSTRAINT} from '../constants';
13
20
  import Config from '../config';
14
- import PeerConnectionManager from '../peer-connection-manager';
15
- import ReconnectionError from '../common/errors/reconnection';
16
- import MediaError from '../common/errors/media';
21
+ import StaticConfig from '../common/config';
17
22
  import BrowserDetection from '../common/browser-detection';
23
+ import RtcMetrics from '../rtcMetrics';
18
24
 
19
25
  const {isBrowser} = BrowserDetection();
20
26
 
27
+ export type BundlePolicy = MultistreamConnectionConfig['bundlePolicy'];
28
+
21
29
  /**
22
30
  * MediaDirection
23
31
  * @typedef {Object} MediaDirection
@@ -48,81 +56,6 @@ const {isBrowser} = BrowserDetection();
48
56
  */
49
57
  const Media: any = {};
50
58
 
51
- /**
52
- * @param {boolean} enabled
53
- * @param {MediaStreamTrack} track
54
- * @returns {Boolean}
55
- * @public
56
- */
57
- Media.setLocalTrack = (enabled: boolean, track: MediaStreamTrack) => {
58
- if (track) {
59
- track.enabled = enabled;
60
-
61
- return true;
62
- }
63
-
64
- return false;
65
- };
66
-
67
- /**
68
- * @param {RTCPeerConnection} peerConnection
69
- * @param {Object} meetingProperties
70
- * @param {string} meetingProperties.meetingId
71
- * @param {string} meetingProperties.remoteQualityLevel LOW|MEDIUM|HIGH
72
- * @returns {Promise}
73
- */
74
- Media.reconnectMedia = (
75
- peerConnection: RTCPeerConnection,
76
- {
77
- meetingId,
78
- remoteQualityLevel,
79
- enableRtx,
80
- enableExtmap,
81
- }: {
82
- meetingId: string;
83
- remoteQualityLevel: string;
84
- enableRtx: any;
85
- enableExtmap: any;
86
- }
87
- ) => {
88
- if (
89
- peerConnection.connectionState === PEER_CONNECTION_STATE.CLOSED ||
90
- peerConnection.connectionState === PEER_CONNECTION_STATE.FAILED
91
- ) {
92
- return Promise.reject(new ReconnectionError('Reinitiate peerconnection'));
93
- }
94
-
95
- return PeerConnectionManager.createOffer(peerConnection, {
96
- meetingId,
97
- remoteQualityLevel,
98
- enableRtx,
99
- enableExtmap,
100
- });
101
- };
102
-
103
- /**
104
- * format the media array for send
105
- * @param {String} mediaId
106
- * @param {Boolean} audioMuted
107
- * @param {Boolean} videoMuted
108
- * @returns {Array} medias
109
- */
110
- Media.generateLocalMedias = (mediaId: string, audioMuted: boolean, videoMuted: boolean) => {
111
- if (mediaId) {
112
- return [
113
- {
114
- localSdp: JSON.stringify({
115
- audioMuted,
116
- videoMuted,
117
- }),
118
- mediaId,
119
- },
120
- ];
121
- }
122
-
123
- return [];
124
- };
125
-
126
59
  /**
127
60
  * make a browser call to get the media
128
61
  * @param {SendOptions} options
@@ -149,230 +82,159 @@ Media.getLocalMedia = (options: any, config: object) => {
149
82
 
150
83
  return Promise.resolve(undefined);
151
84
  };
152
- /**
153
- * Returns the direction and tracks
154
- * @param {string} trackType type of track (audio/video)
155
- * @param {object} track tracks passed
156
- * @param {boolean} receiveTracks do you want to receive tracks from the remote side
157
- * @returns {Object} returns direction tracks to be added in transceiver
158
- */
159
- Media.checkTracks = (trackType: string, track: object, receiveTracks: boolean) => {
160
- // eslint-disable-next-line @typescript-eslint/no-shadow
161
- const getDirection = (sendTracks, receiveTracks) => {
162
- if (sendTracks && receiveTracks) {
163
- return 'sendrecv';
164
- }
165
- if (sendTracks && !receiveTracks) {
166
- return 'sendonly';
167
- }
168
- if (!sendTracks && receiveTracks) {
169
- return 'recvonly';
170
- }
171
85
 
86
+ Media.getDirection = (forceSendRecv: boolean, receive: boolean, send: boolean) => {
87
+ if (!receive && !send) {
172
88
  return 'inactive';
173
- };
174
-
175
- if (track) {
176
- return {track, direction: getDirection(!!track, receiveTracks)};
177
89
  }
178
90
 
179
- return {track: trackType, direction: getDirection(!!track, receiveTracks)};
180
- };
181
- /**
182
- * creates peerconnection and attaches streams
183
- * @param {MediaDirection} mediaProperties
184
- * @param {Object} meetingProperties
185
- * @param {string} meetingProperties.meetingId
186
- * @param {string} meetingProperties.remoteQualityLevel LOW|MEDIUM|HIGH
187
- * @returns {Array} [peerConnection, ]
188
- */
189
- Media.attachMedia = (
190
- mediaProperties: any,
191
- {
192
- meetingId,
193
- remoteQualityLevel,
194
- enableRtx,
195
- enableExtmap,
196
- }: {
197
- meetingId: string;
198
- remoteQualityLevel: string;
199
- enableRtx: any;
200
- enableExtmap: any;
91
+ if (forceSendRecv || (receive && send)) {
92
+ return 'sendrecv';
201
93
  }
202
- ) => {
203
- const {mediaDirection, audioTrack, videoTrack, shareTrack, peerConnection} = mediaProperties;
204
-
205
- let result = null;
206
-
207
- // Add Transceiver for audio
208
- result = Media.checkTracks(
209
- 'audio',
210
- mediaDirection.sendAudio && audioTrack,
211
- mediaDirection.receiveAudio
212
- );
213
- peerConnection.audioTransceiver = peerConnection.addTransceiver(result.track, {
214
- direction: result.direction,
215
- });
216
-
217
- // Add Transceiver for video
218
- result = Media.checkTracks(
219
- 'video',
220
- mediaDirection.sendVideo && videoTrack,
221
- mediaDirection.receiveVideo
222
- );
223
- peerConnection.videoTransceiver = peerConnection.addTransceiver(result.track, {
224
- direction: result.direction,
225
- });
226
-
227
- // Add Transceiver for share
228
- result = Media.checkTracks(
229
- 'video',
230
- mediaDirection.sendShare && shareTrack,
231
- mediaDirection.receiveShare
232
- );
233
- peerConnection.shareTransceiver = peerConnection.addTransceiver(result.track, {
234
- direction: result.direction,
235
- });
236
94
 
237
- peerConnection.onnegotiationneeded = (event) => {
238
- LoggerProxy.logger.info(
239
- `Media:index#attachMedia --> onnegotiationneeded#PeerConnection: ${event}`
240
- );
241
- };
95
+ if (receive) {
96
+ return 'recvonly';
97
+ }
242
98
 
243
- return PeerConnectionManager.createOffer(peerConnection, {
244
- meetingId,
245
- remoteQualityLevel,
246
- enableRtx,
247
- enableExtmap,
248
- });
99
+ return 'sendonly';
249
100
  };
250
101
 
251
102
  /**
252
- * updates all the media streams and creates a new media offer
253
- * @param {MediaDirection} mediaProperties
254
- * @param {Object} meetingProperties
255
- * @param {string} meetingProperties.meetingId
256
- * @param {string} meetingProperties.remoteQualityLevel LOW|MEDIUM|HIGH
257
- * @returns {Promise}
103
+ * creates a webrtc media connection with provided tracks and mediaDirection configuration
104
+ *
105
+ * @param {boolean} isMultistream
106
+ * @param {string} debugId string useful for debugging (will appear in media connection logs)
107
+ * @param {object} webex main `webex` object.
108
+ * @param {string} meetingId id for the meeting using this connection
109
+ * @param {string} correlationId id used in requests to correlate to this session
110
+ * @param {Object} options
111
+ * @param {Object} [options.mediaProperties] contains mediaDirection and local tracks:
112
+ * audioTrack, videoTrack, shareVideoTrack, and shareAudioTrack
113
+ * @param {string} [options.remoteQualityLevel] LOW|MEDIUM|HIGH applicable only to non-multistream connections
114
+ * @param {boolean} [options.enableRtx] applicable only to non-multistream connections
115
+ * @param {boolean} [options.enableExtmap] applicable only to non-multistream connections
116
+ * @param {Object} [options.turnServerInfo]
117
+ * @param {BundlePolicy} [options.bundlePolicy]
118
+ * @returns {RoapMediaConnection | MultistreamRoapMediaConnection}
258
119
  */
259
- Media.updateMedia = (
260
- mediaProperties: any,
261
- {
262
- meetingId,
263
- remoteQualityLevel,
264
- enableRtx,
265
- enableExtmap,
266
- }: {
267
- meetingId: string;
268
- remoteQualityLevel: string;
269
- enableRtx: any;
270
- enableExtmap: any;
120
+ Media.createMediaConnection = (
121
+ isMultistream: boolean,
122
+ debugId: string,
123
+ webex: object,
124
+ meetingId: string,
125
+ correlationId: string,
126
+ options: {
127
+ mediaProperties: {
128
+ mediaDirection?: {
129
+ receiveAudio: boolean;
130
+ receiveVideo: boolean;
131
+ receiveShare: boolean;
132
+ sendAudio: boolean;
133
+ sendVideo: boolean;
134
+ sendShare: boolean;
135
+ };
136
+ audioStream?: LocalMicrophoneStream;
137
+ videoStream?: LocalCameraStream;
138
+ shareVideoStream?: LocalDisplayStream;
139
+ shareAudioStream?: LocalSystemAudioStream;
140
+ };
141
+ remoteQualityLevel?: 'LOW' | 'MEDIUM' | 'HIGH';
142
+ enableRtx?: boolean;
143
+ enableExtmap?: boolean;
144
+ turnServerInfo?: {
145
+ url: string;
146
+ username: string;
147
+ password: string;
148
+ };
149
+ bundlePolicy?: BundlePolicy;
271
150
  }
272
151
  ) => {
273
- const {mediaDirection, audioTrack, videoTrack, shareTrack, peerConnection} = mediaProperties;
274
-
275
- // update audio transceiver
276
- Media.setTrackOnTransceiver(peerConnection.audioTransceiver, {
277
- type: 'audio',
278
- track: audioTrack,
279
- sendTrack: mediaDirection.sendAudio && audioTrack,
280
- receiveTrack: mediaDirection.receiveAudio,
281
- });
282
-
283
- // update video transceiver
284
- Media.setTrackOnTransceiver(peerConnection.videoTransceiver, {
285
- type: 'video',
286
- track: videoTrack,
287
- sendTrack: mediaDirection.sendVideo && videoTrack,
288
- receiveTrack: mediaDirection.receiveVideo,
289
- });
290
-
291
- // update content transceiver
292
- Media.setTrackOnTransceiver(peerConnection.shareTransceiver, {
293
- type: 'video',
294
- track: shareTrack,
295
- sendTrack: mediaDirection.sendShare && shareTrack,
296
- receiveTrack: mediaDirection.receiveShare,
297
- });
298
- peerConnection.onnegotiationneeded = (event) => {
299
- LoggerProxy.logger.info(
300
- `Media:index#updateMedia --> onnegotiationneeded#PeerConnection: ${event}`
301
- );
302
- };
303
-
304
- return PeerConnectionManager.createOffer(peerConnection, {
305
- meetingId,
152
+ const {
153
+ mediaProperties,
306
154
  remoteQualityLevel,
307
155
  enableRtx,
308
156
  enableExtmap,
309
- });
310
- };
157
+ turnServerInfo,
158
+ bundlePolicy,
159
+ } = options;
311
160
 
312
- /**
313
- * @param {RTCRtpTransceiver} transceiver
314
- * @param {Object} options
315
- * @param {MediaStreamTrack} options.track
316
- * @returns {undefined}
317
- */
318
- Media.setTrackOnTransceiver = (
319
- transceiver: RTCRtpTransceiver,
320
- options: {
321
- track: MediaStreamTrack;
322
- type: any;
323
- sendTrack: any;
324
- receiveTrack: any;
161
+ const iceServers = [];
162
+
163
+ if (turnServerInfo) {
164
+ iceServers.push({
165
+ urls: turnServerInfo.url,
166
+ username: turnServerInfo.username || '',
167
+ credential: turnServerInfo.password || '',
168
+ });
325
169
  }
326
- ) => {
327
- const {type, track, sendTrack, receiveTrack} = options;
328
170
 
329
- try {
330
- const result = Media.checkTracks(type, sendTrack && track, receiveTrack);
171
+ if (isMultistream) {
172
+ const config: MultistreamConnectionConfig = {
173
+ iceServers,
174
+ };
331
175
 
332
- transceiver.direction = result.direction;
333
- if (options.track) {
334
- transceiver.sender.replaceTrack(track);
176
+ if (bundlePolicy) {
177
+ config.bundlePolicy = bundlePolicy;
335
178
  }
336
- } catch (e) {
337
- LoggerProxy.logger.error(`Media:index#setTrackOnTransceiver --> ${e}`);
338
- throw e;
179
+
180
+ const rtcMetrics = new RtcMetrics(webex, meetingId, correlationId);
181
+
182
+ return new MultistreamRoapMediaConnection(
183
+ config,
184
+ meetingId,
185
+ /* the rtc metrics objects callbacks */
186
+ (data) => rtcMetrics.addMetrics(data),
187
+ () => rtcMetrics.closeMetrics(),
188
+ () => rtcMetrics.sendMetricsInQueue()
189
+ );
339
190
  }
340
- };
341
191
 
342
- /**
343
- * creates a new offer
344
- * @param {Object} meetingProperties
345
- * @param {string} meetingProperties.meetingId
346
- * @param {string} meetingProperties.remoteQualityLevel LOW|MEDIUM|HIGH
347
- * @param {RTCPeerConnection} peerConnection
348
- * @param {RTCRtpTransceiver} transceiver
349
- * @param {Object} options see #Media.setTrackOnTransceiver
350
- * @returns {Promise}
351
- */
352
- Media.updateTransceiver = (
353
- {
354
- meetingId,
355
- remoteQualityLevel,
356
- enableRtx,
357
- enableExtmap,
358
- }: {
359
- meetingId: string;
360
- remoteQualityLevel: string;
361
- enableRtx: any;
362
- enableExtmap: any;
363
- },
364
- peerConnection: RTCPeerConnection,
365
- transceiver: RTCRtpTransceiver,
366
- options: object
367
- ) => {
368
- Media.setTrackOnTransceiver(transceiver, options);
192
+ if (!mediaProperties) {
193
+ throw new Error('mediaProperties have to be provided for non-multistream media connections');
194
+ }
369
195
 
370
- return PeerConnectionManager.createOffer(peerConnection, {
371
- meetingId,
372
- remoteQualityLevel,
373
- enableRtx,
374
- enableExtmap,
375
- });
196
+ const {mediaDirection, audioStream, videoStream, shareVideoStream, shareAudioStream} =
197
+ mediaProperties;
198
+
199
+ return new RoapMediaConnection(
200
+ {
201
+ iceServers,
202
+ skipInactiveTransceivers: false,
203
+ requireH264: true,
204
+ sdpMunging: {
205
+ convertPort9to0: false,
206
+ addContentSlides: true,
207
+ bandwidthLimits: {
208
+ audio: StaticConfig.meetings.bandwidth.audio,
209
+ video: StaticConfig.meetings.bandwidth.video,
210
+ },
211
+ startBitrate: StaticConfig.meetings.bandwidth.startBitrate,
212
+ periodicKeyframes: 20, // it's always been hardcoded in SDK so for now keeping it that way
213
+ disableExtmap: !enableExtmap,
214
+ disableRtx: !enableRtx, // see https://bugs.chromium.org/p/chromium/issues/detail?id=1020642 why we might want to remove RTX from SDP
215
+ },
216
+ },
217
+ {
218
+ // TODO: RoapMediaConnection is not ready to use stream classes yet, so we pass the raw MediaStreamTrack for now SPARK-460530
219
+ localTracks: {
220
+ audio: audioStream?.outputTrack,
221
+ video: videoStream?.outputTrack,
222
+ screenShareVideo: shareVideoStream?.outputTrack,
223
+ screenShareAudio: shareAudioStream?.outputTrack, // TODO: add type for screenShareAudio in internal-media-core SPARK-446923
224
+ } as unknown,
225
+ direction: {
226
+ audio: Media.getDirection(true, mediaDirection.receiveAudio, mediaDirection.sendAudio),
227
+ video: Media.getDirection(true, mediaDirection.receiveVideo, mediaDirection.sendVideo),
228
+ screenShareVideo: Media.getDirection(
229
+ false,
230
+ mediaDirection.receiveShare,
231
+ mediaDirection.sendShare
232
+ ),
233
+ },
234
+ remoteQualityLevel,
235
+ },
236
+ debugId
237
+ );
376
238
  };
377
239
 
378
240
  /**
@@ -514,52 +376,6 @@ Media.getMedia = (audio: any | boolean, video: any | boolean, config: any) => {
514
376
  });
515
377
  };
516
378
 
517
- /**
518
- * Checks if the machine has at least one audio or video device (Dont use this for screen share)
519
- * @param {object} [options]
520
- * {
521
- * sendAudio: true/false,
522
- * sendVideo: true/false
523
- * }
524
- * @returns {Object} {
525
- * sendAudio: true/false,
526
- * sendVideo: true/false
527
- *}
528
- */
529
- Media.getSupportedDevice = ({sendAudio, sendVideo}: {sendAudio: boolean; sendVideo: boolean}) =>
530
- Promise.resolve().then(() => {
531
- if (!navigator.mediaDevices || navigator.mediaDevices.enumerateDevices === undefined) {
532
- return {
533
- sendAudio: false,
534
- sendVideo: false,
535
- };
536
- }
537
-
538
- return navigator.mediaDevices.enumerateDevices().then((devices) => {
539
- const supported = {
540
- audio: devices.filter((device) => device.kind === AUDIO_INPUT).length > 0,
541
- video: devices.filter((device) => device.kind === VIDEO_INPUT).length > 0,
542
- };
543
-
544
- return {
545
- sendAudio: supported.audio && sendAudio,
546
- sendVideo: supported.video && sendVideo,
547
- };
548
- });
549
- });
550
-
551
- /**
552
- * proxy to browser navigator.mediaDevices.enumerateDevices()
553
- * @returns {Promise}
554
- */
555
- Media.getDevices = () => {
556
- if (navigator && navigator.mediaDevices && navigator.mediaDevices.enumerateDevices) {
557
- return navigator.mediaDevices.enumerateDevices();
558
- }
559
-
560
- return Promise.reject(new MediaError('enumerateDevices not supported.'));
561
- };
562
-
563
379
  /**
564
380
  *
565
381
  * Toggle a specific stream
@@ -570,54 +386,21 @@ Media.toggleStream = () => {};
570
386
 
571
387
  /**
572
388
  * Stop input stream
573
- * @param {MediaTrack} track A media stream
389
+ * @param {LocalStream} stream A local stream
574
390
  * @returns {null}
575
391
  */
576
- Media.stopTracks = (track: any) => {
577
- if (!track) {
578
- return Promise.resolve();
579
- }
580
-
581
- return Promise.resolve().then(() => {
582
- if (track && track.stop) {
583
- try {
584
- track.stop();
585
- } catch (e) {
586
- LoggerProxy.logger.error(
587
- `Media:index#stopTracks --> Unable to stop the track with state ${track.readyState}, error: ${e}`
588
- );
589
- }
590
- }
591
- });
592
- };
593
-
594
- /**
595
- *
596
- * Stop input stream
597
- * @param {Stream} stream A media stream
598
- * @returns {null}
599
- * @deprecated after v1.89.3
600
- */
601
- Media.stopStream = (stream: any) => {
602
- LoggerProxy.logger.warn(
603
- 'Media:index#stopStream --> [DEPRECATION WARNING]: stopStream has been deprecated after v1.89.3'
604
- );
392
+ Media.stopStream = (stream: LocalStream) => {
605
393
  if (!stream) {
606
394
  return Promise.resolve();
607
395
  }
608
396
 
609
- /*
610
- * To release local media
611
- * 1) Chrome requires all tracks to be stopped (stream.stop got deprecated)
612
- * 2) Firefox requires the stream to be stopped
613
- */
614
397
  return Promise.resolve().then(() => {
615
- if (stream.getTracks) {
616
- stream.getTracks().forEach((track) => {
617
- track.stop();
618
- });
619
- } else if (stream.stop) {
398
+ try {
620
399
  stream.stop();
400
+ } catch (e) {
401
+ LoggerProxy.logger.error(
402
+ `Media:index#stopStream --> Unable to stop the stream with ready state of the output track => ${stream.outputTrack.readyState} & input track => ${stream.inputTrack.readyState}, error: ${e}`
403
+ );
621
404
  }
622
405
  });
623
406
  };