@webex/plugin-meetings 3.0.0-beta.12 → 3.0.0-beta.121

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 (519) hide show
  1. package/README.md +45 -1
  2. package/UPGRADING.md +9 -9
  3. package/browsers.js +19 -24
  4. package/dist/annotation/annotation.types.js +7 -0
  5. package/dist/annotation/annotation.types.js.map +1 -0
  6. package/dist/annotation/constants.js +48 -0
  7. package/dist/annotation/constants.js.map +1 -0
  8. package/dist/annotation/index.js +357 -0
  9. package/dist/annotation/index.js.map +1 -0
  10. package/dist/breakouts/breakout.js +193 -0
  11. package/dist/breakouts/breakout.js.map +1 -0
  12. package/dist/breakouts/collection.js +23 -0
  13. package/dist/breakouts/collection.js.map +1 -0
  14. package/dist/breakouts/edit-lock-error.js +52 -0
  15. package/dist/breakouts/edit-lock-error.js.map +1 -0
  16. package/dist/breakouts/events.js +43 -0
  17. package/dist/breakouts/events.js.map +1 -0
  18. package/dist/breakouts/index.js +995 -0
  19. package/dist/breakouts/index.js.map +1 -0
  20. package/dist/breakouts/request.js +78 -0
  21. package/dist/breakouts/request.js.map +1 -0
  22. package/dist/breakouts/utils.js +67 -0
  23. package/dist/breakouts/utils.js.map +1 -0
  24. package/dist/common/browser-detection.js +1 -20
  25. package/dist/common/browser-detection.js.map +1 -1
  26. package/dist/common/collection.js +5 -20
  27. package/dist/common/collection.js.map +1 -1
  28. package/dist/common/config.js +0 -7
  29. package/dist/common/config.js.map +1 -1
  30. package/dist/common/errors/captcha-error.js +5 -26
  31. package/dist/common/errors/captcha-error.js.map +1 -1
  32. package/dist/common/errors/intent-to-join.js +5 -26
  33. package/dist/common/errors/intent-to-join.js.map +1 -1
  34. package/dist/common/errors/join-meeting.js +6 -27
  35. package/dist/common/errors/join-meeting.js.map +1 -1
  36. package/dist/common/errors/media.js +5 -26
  37. package/dist/common/errors/media.js.map +1 -1
  38. package/dist/common/errors/parameter.js +5 -33
  39. package/dist/common/errors/parameter.js.map +1 -1
  40. package/dist/common/errors/password-error.js +5 -26
  41. package/dist/common/errors/password-error.js.map +1 -1
  42. package/dist/common/errors/permission.js +4 -25
  43. package/dist/common/errors/permission.js.map +1 -1
  44. package/dist/common/errors/reconnection-in-progress.js +0 -17
  45. package/dist/common/errors/reconnection-in-progress.js.map +1 -1
  46. package/dist/common/errors/reconnection.js +5 -26
  47. package/dist/common/errors/reconnection.js.map +1 -1
  48. package/dist/common/errors/stats.js +5 -26
  49. package/dist/common/errors/stats.js.map +1 -1
  50. package/dist/common/errors/webex-errors.js +6 -41
  51. package/dist/common/errors/webex-errors.js.map +1 -1
  52. package/dist/common/errors/webex-meetings-error.js +1 -24
  53. package/dist/common/errors/webex-meetings-error.js.map +1 -1
  54. package/dist/common/events/events-scope.js +0 -22
  55. package/dist/common/events/events-scope.js.map +1 -1
  56. package/dist/common/events/events.js +0 -23
  57. package/dist/common/events/events.js.map +1 -1
  58. package/dist/common/events/trigger-proxy.js +0 -12
  59. package/dist/common/events/trigger-proxy.js.map +1 -1
  60. package/dist/common/events/util.js +0 -15
  61. package/dist/common/events/util.js.map +1 -1
  62. package/dist/common/logs/logger-config.js +0 -4
  63. package/dist/common/logs/logger-config.js.map +1 -1
  64. package/dist/common/logs/logger-proxy.js +1 -8
  65. package/dist/common/logs/logger-proxy.js.map +1 -1
  66. package/dist/common/logs/request.js +35 -61
  67. package/dist/common/logs/request.js.map +1 -1
  68. package/dist/common/queue.js +4 -14
  69. package/dist/common/queue.js.map +1 -1
  70. package/dist/config.js +6 -6
  71. package/dist/config.js.map +1 -1
  72. package/dist/constants.js +196 -53
  73. package/dist/constants.js.map +1 -1
  74. package/dist/controls-options-manager/constants.js +14 -0
  75. package/dist/controls-options-manager/constants.js.map +1 -0
  76. package/dist/controls-options-manager/enums.js +27 -0
  77. package/dist/controls-options-manager/enums.js.map +1 -0
  78. package/dist/controls-options-manager/index.js +297 -0
  79. package/dist/controls-options-manager/index.js.map +1 -0
  80. package/dist/controls-options-manager/types.js +7 -0
  81. package/dist/controls-options-manager/types.js.map +1 -0
  82. package/dist/controls-options-manager/util.js +294 -0
  83. package/dist/controls-options-manager/util.js.map +1 -0
  84. package/dist/index.js +72 -17
  85. package/dist/index.js.map +1 -1
  86. package/dist/locus-info/controlsUtils.js +95 -29
  87. package/dist/locus-info/controlsUtils.js.map +1 -1
  88. package/dist/locus-info/embeddedAppsUtils.js +3 -26
  89. package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
  90. package/dist/locus-info/fullState.js +0 -15
  91. package/dist/locus-info/fullState.js.map +1 -1
  92. package/dist/locus-info/hostUtils.js +4 -12
  93. package/dist/locus-info/hostUtils.js.map +1 -1
  94. package/dist/locus-info/index.js +392 -212
  95. package/dist/locus-info/index.js.map +1 -1
  96. package/dist/locus-info/infoUtils.js +0 -38
  97. package/dist/locus-info/infoUtils.js.map +1 -1
  98. package/dist/locus-info/mediaSharesUtils.js +54 -38
  99. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  100. package/dist/locus-info/parser.js +88 -123
  101. package/dist/locus-info/parser.js.map +1 -1
  102. package/dist/locus-info/selfUtils.js +99 -91
  103. package/dist/locus-info/selfUtils.js.map +1 -1
  104. package/dist/media/index.js +55 -165
  105. package/dist/media/index.js.map +1 -1
  106. package/dist/media/properties.js +71 -117
  107. package/dist/media/properties.js.map +1 -1
  108. package/dist/media/util.js +2 -9
  109. package/dist/media/util.js.map +1 -1
  110. package/dist/mediaQualityMetrics/config.js +505 -495
  111. package/dist/mediaQualityMetrics/config.js.map +1 -1
  112. package/dist/meeting/in-meeting-actions.js +67 -14
  113. package/dist/meeting/in-meeting-actions.js.map +1 -1
  114. package/dist/meeting/index.js +2506 -2444
  115. package/dist/meeting/index.js.map +1 -1
  116. package/dist/meeting/locusMediaRequest.js +291 -0
  117. package/dist/meeting/locusMediaRequest.js.map +1 -0
  118. package/dist/meeting/muteState.js +292 -138
  119. package/dist/meeting/muteState.js.map +1 -1
  120. package/dist/meeting/request.js +315 -336
  121. package/dist/meeting/request.js.map +1 -1
  122. package/dist/meeting/request.type.js +7 -0
  123. package/dist/meeting/request.type.js.map +1 -0
  124. package/dist/meeting/state.js +21 -31
  125. package/dist/meeting/state.js.map +1 -1
  126. package/dist/meeting/util.js +462 -583
  127. package/dist/meeting/util.js.map +1 -1
  128. package/dist/meeting-info/collection.js +3 -25
  129. package/dist/meeting-info/collection.js.map +1 -1
  130. package/dist/meeting-info/index.js +10 -33
  131. package/dist/meeting-info/index.js.map +1 -1
  132. package/dist/meeting-info/meeting-info-v2.js +305 -286
  133. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  134. package/dist/meeting-info/request.js +1 -16
  135. package/dist/meeting-info/request.js.map +1 -1
  136. package/dist/meeting-info/util.js +98 -183
  137. package/dist/meeting-info/util.js.map +1 -1
  138. package/dist/meeting-info/utilv2.js +156 -232
  139. package/dist/meeting-info/utilv2.js.map +1 -1
  140. package/dist/meetings/collection.js +24 -20
  141. package/dist/meetings/collection.js.map +1 -1
  142. package/dist/meetings/index.js +675 -593
  143. package/dist/meetings/index.js.map +1 -1
  144. package/dist/meetings/request.js +23 -42
  145. package/dist/meetings/request.js.map +1 -1
  146. package/dist/meetings/util.js +177 -155
  147. package/dist/meetings/util.js.map +1 -1
  148. package/dist/member/index.js +89 -88
  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 +166 -205
  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 +3 -7
  167. package/dist/metrics/constants.js.map +1 -1
  168. package/dist/metrics/index.js +93 -162
  169. package/dist/metrics/index.js.map +1 -1
  170. package/dist/multistream/mediaRequestManager.js +167 -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 +74 -93
  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 +6 -40
  179. package/dist/multistream/remoteMediaGroup.js.map +1 -1
  180. package/dist/multistream/remoteMediaManager.js +466 -442
  181. package/dist/multistream/remoteMediaManager.js.map +1 -1
  182. package/dist/networkQualityMonitor/index.js +32 -59
  183. package/dist/networkQualityMonitor/index.js.map +1 -1
  184. package/dist/personal-meeting-room/index.js +10 -45
  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 +19 -23
  199. package/dist/reactions/reactions.type.js.map +1 -1
  200. package/dist/reconnection-manager/index.js +326 -465
  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 +31 -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 -461
  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 +13 -45
  221. package/dist/transcription/index.js.map +1 -1
  222. package/dist/types/annotation/annotation.types.d.ts +35 -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 +78 -0
  256. package/dist/types/constants.d.ts +987 -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 +108 -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 +137 -0
  277. package/dist/types/meeting/index.d.ts +1755 -0
  278. package/dist/types/meeting/locusMediaRequest.d.ts +70 -0
  279. package/dist/types/meeting/muteState.d.ts +186 -0
  280. package/dist/types/meeting/request.d.ts +269 -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 +76 -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 +345 -0
  292. package/dist/types/meetings/request.d.ts +27 -0
  293. package/dist/types/meetings/util.d.ts +18 -0
  294. package/dist/types/member/index.d.ts +157 -0
  295. package/dist/types/member/types.d.ts +21 -0
  296. package/dist/types/member/util.d.ts +2 -0
  297. package/dist/types/members/collection.d.ts +29 -0
  298. package/dist/types/members/index.d.ts +353 -0
  299. package/dist/types/members/request.d.ts +114 -0
  300. package/dist/types/members/types.d.ts +24 -0
  301. package/dist/types/members/util.d.ts +210 -0
  302. package/dist/types/metrics/config.d.ts +195 -0
  303. package/dist/types/metrics/constants.d.ts +54 -0
  304. package/dist/types/metrics/index.d.ts +169 -0
  305. package/dist/types/multistream/mediaRequestManager.d.ts +101 -0
  306. package/dist/types/multistream/receiveSlot.d.ts +68 -0
  307. package/dist/types/multistream/receiveSlotManager.d.ts +56 -0
  308. package/dist/types/multistream/remoteMedia.d.ts +72 -0
  309. package/dist/types/multistream/remoteMediaGroup.d.ts +47 -0
  310. package/dist/types/multistream/remoteMediaManager.d.ts +263 -0
  311. package/dist/types/networkQualityMonitor/index.d.ts +70 -0
  312. package/dist/types/personal-meeting-room/index.d.ts +47 -0
  313. package/dist/types/personal-meeting-room/request.d.ts +14 -0
  314. package/dist/types/personal-meeting-room/util.d.ts +2 -0
  315. package/dist/types/reachability/index.d.ts +152 -0
  316. package/dist/types/reachability/request.d.ts +37 -0
  317. package/dist/types/reactions/constants.d.ts +3 -0
  318. package/dist/types/reactions/reactions.d.ts +4 -0
  319. package/dist/types/reactions/reactions.type.d.ts +52 -0
  320. package/dist/types/reconnection-manager/index.d.ts +126 -0
  321. package/dist/types/recording-controller/enums.d.ts +7 -0
  322. package/dist/types/recording-controller/index.d.ts +193 -0
  323. package/dist/types/recording-controller/util.d.ts +13 -0
  324. package/dist/types/roap/index.d.ts +77 -0
  325. package/dist/types/roap/request.d.ts +36 -0
  326. package/dist/types/roap/turnDiscovery.d.ts +91 -0
  327. package/dist/types/statsAnalyzer/global.d.ts +36 -0
  328. package/dist/types/statsAnalyzer/index.d.ts +200 -0
  329. package/dist/types/statsAnalyzer/mqaUtil.d.ts +24 -0
  330. package/dist/types/transcription/index.d.ts +64 -0
  331. package/internal-README.md +7 -6
  332. package/package.json +28 -21
  333. package/src/annotation/annotation.types.ts +42 -0
  334. package/src/annotation/constants.ts +36 -0
  335. package/src/annotation/index.ts +339 -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 +861 -0
  342. package/src/breakouts/request.ts +55 -0
  343. package/src/breakouts/utils.ts +57 -0
  344. package/src/common/browser-detection.ts +9 -6
  345. package/src/common/collection.ts +3 -1
  346. package/src/common/errors/captcha-error.ts +6 -6
  347. package/src/common/errors/intent-to-join.ts +6 -6
  348. package/src/common/errors/join-meeting.ts +12 -8
  349. package/src/common/errors/media.ts +6 -6
  350. package/src/common/errors/parameter.ts +9 -6
  351. package/src/common/errors/password-error.ts +6 -6
  352. package/src/common/errors/permission.ts +5 -5
  353. package/src/common/errors/reconnection.ts +6 -6
  354. package/src/common/errors/stats.ts +6 -6
  355. package/src/common/errors/webex-errors.ts +7 -5
  356. package/src/common/errors/webex-meetings-error.ts +1 -1
  357. package/src/common/events/events-scope.ts +5 -1
  358. package/src/common/events/events.ts +5 -1
  359. package/src/common/events/trigger-proxy.ts +8 -3
  360. package/src/common/events/util.ts +1 -2
  361. package/src/common/logs/logger-proxy.ts +21 -10
  362. package/src/common/logs/request.ts +11 -8
  363. package/src/config.ts +16 -12
  364. package/src/constants.ts +144 -6
  365. package/src/controls-options-manager/constants.ts +5 -0
  366. package/src/controls-options-manager/enums.ts +18 -0
  367. package/src/controls-options-manager/index.ts +278 -0
  368. package/src/controls-options-manager/types.ts +59 -0
  369. package/src/controls-options-manager/util.ts +281 -0
  370. package/src/index.ts +33 -0
  371. package/src/locus-info/controlsUtils.ts +148 -24
  372. package/src/locus-info/fullState.ts +15 -11
  373. package/src/locus-info/hostUtils.ts +4 -3
  374. package/src/locus-info/index.ts +335 -55
  375. package/src/locus-info/infoUtils.ts +12 -4
  376. package/src/locus-info/mediaSharesUtils.ts +52 -4
  377. package/src/locus-info/parser.ts +46 -68
  378. package/src/locus-info/selfUtils.ts +187 -56
  379. package/src/media/index.ts +139 -196
  380. package/src/media/properties.ts +43 -36
  381. package/src/media/util.ts +1 -1
  382. package/src/mediaQualityMetrics/config.ts +380 -378
  383. package/src/meeting/in-meeting-actions.ts +139 -3
  384. package/src/meeting/index.ts +2733 -1589
  385. package/src/meeting/locusMediaRequest.ts +309 -0
  386. package/src/meeting/muteState.ts +290 -72
  387. package/src/meeting/request.ts +247 -178
  388. package/src/meeting/request.type.ts +13 -0
  389. package/src/meeting/state.ts +45 -30
  390. package/src/meeting/util.ts +444 -395
  391. package/src/meeting-info/collection.ts +2 -1
  392. package/src/meeting-info/index.ts +32 -30
  393. package/src/meeting-info/meeting-info-v2.ts +235 -116
  394. package/src/meeting-info/request.ts +9 -3
  395. package/src/meeting-info/util.ts +54 -46
  396. package/src/meeting-info/utilv2.ts +71 -55
  397. package/src/meetings/collection.ts +21 -1
  398. package/src/meetings/index.ts +749 -437
  399. package/src/meetings/request.ts +29 -25
  400. package/src/meetings/util.ts +122 -33
  401. package/src/member/index.ts +95 -49
  402. package/src/member/types.ts +24 -0
  403. package/src/member/util.ts +106 -13
  404. package/src/members/collection.ts +8 -1
  405. package/src/members/index.ts +288 -130
  406. package/src/members/request.ts +144 -31
  407. package/src/members/types.ts +28 -0
  408. package/src/members/util.ts +316 -235
  409. package/src/metrics/config.ts +302 -90
  410. package/src/metrics/constants.ts +1 -6
  411. package/src/metrics/index.ts +124 -95
  412. package/src/multistream/mediaRequestManager.ts +203 -45
  413. package/src/multistream/receiveSlot.ts +69 -26
  414. package/src/multistream/receiveSlotManager.ts +62 -38
  415. package/src/multistream/remoteMedia.ts +30 -4
  416. package/src/multistream/remoteMediaGroup.ts +4 -3
  417. package/src/multistream/remoteMediaManager.ts +230 -66
  418. package/src/networkQualityMonitor/index.ts +24 -27
  419. package/src/personal-meeting-room/index.ts +12 -16
  420. package/src/personal-meeting-room/request.ts +10 -3
  421. package/src/personal-meeting-room/util.ts +3 -3
  422. package/src/reachability/index.ts +131 -79
  423. package/src/reachability/request.ts +43 -34
  424. package/src/reactions/constants.ts +4 -0
  425. package/src/reactions/reactions.ts +8 -8
  426. package/src/reactions/reactions.type.ts +31 -5
  427. package/src/reconnection-manager/index.ts +193 -111
  428. package/src/recording-controller/enums.ts +8 -0
  429. package/src/recording-controller/index.ts +315 -0
  430. package/src/recording-controller/util.ts +58 -0
  431. package/src/roap/index.ts +53 -53
  432. package/src/roap/request.ts +77 -64
  433. package/src/roap/turnDiscovery.ts +101 -48
  434. package/src/statsAnalyzer/global.ts +8 -104
  435. package/src/statsAnalyzer/index.ts +624 -376
  436. package/src/statsAnalyzer/mqaUtil.ts +203 -90
  437. package/src/transcription/index.ts +34 -32
  438. package/test/integration/spec/converged-space-meetings.js +177 -0
  439. package/test/integration/spec/journey.js +670 -466
  440. package/test/integration/spec/space-meeting.js +320 -204
  441. package/test/integration/spec/transcription.js +7 -8
  442. package/test/unit/spec/annotation/index.ts +436 -0
  443. package/test/unit/spec/breakouts/breakout.ts +203 -0
  444. package/test/unit/spec/breakouts/collection.ts +15 -0
  445. package/test/unit/spec/breakouts/edit-lock-error.ts +30 -0
  446. package/test/unit/spec/breakouts/events.ts +77 -0
  447. package/test/unit/spec/breakouts/index.ts +1611 -0
  448. package/test/unit/spec/breakouts/request.ts +104 -0
  449. package/test/unit/spec/breakouts/utils.js +72 -0
  450. package/test/unit/spec/common/browser-detection.js +9 -28
  451. package/test/unit/spec/controls-options-manager/index.js +287 -0
  452. package/test/unit/spec/controls-options-manager/util.js +504 -0
  453. package/test/unit/spec/fixture/locus.js +93 -90
  454. package/test/unit/spec/locus-info/controlsUtils.js +297 -32
  455. package/test/unit/spec/locus-info/embeddedAppsUtils.js +8 -6
  456. package/test/unit/spec/locus-info/index.js +598 -5
  457. package/test/unit/spec/locus-info/infoUtils.js +26 -33
  458. package/test/unit/spec/locus-info/lib/BasicSeqCmp.json +88 -430
  459. package/test/unit/spec/locus-info/lib/SeqCmp.json +513 -685
  460. package/test/unit/spec/locus-info/mediaSharesUtils.ts +22 -0
  461. package/test/unit/spec/locus-info/parser.js +3 -9
  462. package/test/unit/spec/locus-info/selfConstant.js +110 -103
  463. package/test/unit/spec/locus-info/selfUtils.js +236 -12
  464. package/test/unit/spec/media/index.ts +104 -8
  465. package/test/unit/spec/media/properties.ts +9 -9
  466. package/test/unit/spec/meeting/in-meeting-actions.ts +66 -3
  467. package/test/unit/spec/meeting/index.js +2908 -887
  468. package/test/unit/spec/meeting/locusMediaRequest.ts +436 -0
  469. package/test/unit/spec/meeting/muteState.js +421 -94
  470. package/test/unit/spec/meeting/request.js +421 -79
  471. package/test/unit/spec/meeting/utils.js +308 -189
  472. package/test/unit/spec/meeting-info/meetinginfov2.js +481 -76
  473. package/test/unit/spec/meeting-info/request.js +7 -9
  474. package/test/unit/spec/meeting-info/util.js +11 -12
  475. package/test/unit/spec/meeting-info/utilv2.js +131 -74
  476. package/test/unit/spec/meetings/collection.js +15 -1
  477. package/test/unit/spec/meetings/index.js +1052 -329
  478. package/test/unit/spec/meetings/utils.js +163 -14
  479. package/test/unit/spec/member/index.js +24 -1
  480. package/test/unit/spec/member/util.js +383 -32
  481. package/test/unit/spec/members/index.js +424 -55
  482. package/test/unit/spec/members/request.js +228 -40
  483. package/test/unit/spec/members/utils.js +191 -4
  484. package/test/unit/spec/metrics/index.js +113 -20
  485. package/test/unit/spec/multistream/mediaRequestManager.ts +650 -105
  486. package/test/unit/spec/multistream/receiveSlot.ts +76 -17
  487. package/test/unit/spec/multistream/receiveSlotManager.ts +69 -39
  488. package/test/unit/spec/multistream/remoteMedia.ts +32 -2
  489. package/test/unit/spec/multistream/remoteMediaGroup.ts +5 -5
  490. package/test/unit/spec/multistream/remoteMediaManager.ts +549 -65
  491. package/test/unit/spec/networkQualityMonitor/index.js +24 -18
  492. package/test/unit/spec/personal-meeting-room/personal-meeting-room.js +2 -7
  493. package/test/unit/spec/reachability/index.ts +176 -27
  494. package/test/unit/spec/reachability/request.js +66 -0
  495. package/test/unit/spec/reconnection-manager/index.js +62 -31
  496. package/test/unit/spec/recording-controller/index.js +231 -0
  497. package/test/unit/spec/recording-controller/util.js +102 -0
  498. package/test/unit/spec/roap/index.ts +19 -49
  499. package/test/unit/spec/roap/request.ts +187 -0
  500. package/test/unit/spec/roap/turnDiscovery.ts +92 -50
  501. package/test/unit/spec/stats-analyzer/index.js +116 -60
  502. package/test/utils/cmr.js +44 -42
  503. package/test/utils/constants.js +9 -0
  504. package/test/utils/integrationTestUtils.js +64 -0
  505. package/test/utils/testUtils.js +63 -99
  506. package/test/utils/webex-config.js +22 -18
  507. package/test/utils/webex-test-users.js +57 -50
  508. package/tsconfig.json +6 -0
  509. package/dist/media/internal-media-core-wrapper.js +0 -22
  510. package/dist/media/internal-media-core-wrapper.js.map +0 -1
  511. package/dist/meeting/effectsState.js +0 -334
  512. package/dist/meeting/effectsState.js.map +0 -1
  513. package/dist/multistream/multistreamMedia.js +0 -116
  514. package/dist/multistream/multistreamMedia.js.map +0 -1
  515. package/src/index.js +0 -15
  516. package/src/media/internal-media-core-wrapper.ts +0 -9
  517. package/src/meeting/effectsState.ts +0 -211
  518. package/src/multistream/multistreamMedia.ts +0 -92
  519. package/test/unit/spec/meeting/effectsState.js +0 -291
@@ -3,21 +3,23 @@
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 {
8
- AUDIO_INPUT,
9
- VIDEO_INPUT,
10
- MEDIA_TRACK_CONSTRAINT,
11
- } from '../constants';
9
+ import {AUDIO_INPUT, VIDEO_INPUT, MEDIA_TRACK_CONSTRAINT} from '../constants';
12
10
  import Config from '../config';
13
11
  import StaticConfig from '../common/config';
14
12
  import MediaError from '../common/errors/media';
15
13
  import BrowserDetection from '../common/browser-detection';
16
14
 
17
- import {RoapMediaConnection, MultistreamRoapMediaConnection} from './internal-media-core-wrapper';
18
-
19
15
  const {isBrowser} = BrowserDetection();
20
16
 
17
+ type MultistreamConnectionConfig = ConstructorParameters<typeof MultistreamRoapMediaConnection>[0];
18
+
19
+ export type BundlePolicy = ConstructorParameters<
20
+ typeof MultistreamRoapMediaConnection
21
+ >[0]['bundlePolicy'];
22
+
21
23
  /**
22
24
  * MediaDirection
23
25
  * @typedef {Object} MediaDirection
@@ -48,45 +50,6 @@ const {isBrowser} = BrowserDetection();
48
50
  */
49
51
  const Media: any = {};
50
52
 
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
- * format the media array for send
69
- * @param {String} mediaId
70
- * @param {Boolean} audioMuted
71
- * @param {Boolean} videoMuted
72
- * @returns {Array} medias
73
- */
74
- Media.generateLocalMedias = (mediaId: string, audioMuted: boolean, videoMuted: boolean) => {
75
- if (mediaId) {
76
- return [
77
- {
78
- localSdp: JSON.stringify({
79
- audioMuted,
80
- videoMuted
81
- }),
82
- mediaId
83
- }
84
- ];
85
- }
86
-
87
- return [];
88
- };
89
-
90
53
  /**
91
54
  * make a browser call to get the media
92
55
  * @param {SendOptions} options
@@ -94,9 +57,7 @@ Media.generateLocalMedias = (mediaId: string, audioMuted: boolean, videoMuted: b
94
57
  * @returns {Promise}
95
58
  */
96
59
  Media.getLocalMedia = (options: any, config: object) => {
97
- const {
98
- sendAudio, sendVideo, sendShare, sharePreferences, isSharing
99
- } = options;
60
+ const {sendAudio, sendVideo, sendShare, sharePreferences, isSharing} = options;
100
61
 
101
62
  if (sendAudio || sendVideo) {
102
63
  return Media.getMedia(sendAudio, sendVideo, config);
@@ -107,7 +68,7 @@ Media.getLocalMedia = (options: any, config: object) => {
107
68
  {
108
69
  sendAudio: false,
109
70
  sendShare: true,
110
- sharePreferences
71
+ sharePreferences,
111
72
  },
112
73
  config
113
74
  );
@@ -122,36 +83,41 @@ Media.getLocalMedia = (options: any, config: object) => {
122
83
  * @param {boolean} isMultistream
123
84
  * @param {string} debugId string useful for debugging (will appear in media connection logs)
124
85
  * @param {Object} options
125
- * @param {Object} [options.mediaProperties] only applicable to non-multistream connections, contains mediaDirection and local tracks:
86
+ * @param {Object} [options.mediaProperties] contains mediaDirection and local tracks:
126
87
  * audioTrack, videoTrack and shareTrack
127
88
  * @param {string} [options.remoteQualityLevel] LOW|MEDIUM|HIGH applicable only to non-multistream connections
128
89
  * @param {boolean} [options.enableRtx] applicable only to non-multistream connections
129
90
  * @param {boolean} [options.enableExtmap] applicable only to non-multistream connections
130
91
  * @param {Object} [options.turnServerInfo]
131
- * @returns {RoapMediaConnection}
92
+ * @param {BundlePolicy} [options.bundlePolicy]
93
+ * @returns {RoapMediaConnection | MultistreamRoapMediaConnection}
132
94
  */
133
95
  Media.createMediaConnection = (
134
96
  isMultistream: boolean,
135
97
  debugId: string,
136
98
  options: {
137
- mediaProperties?: {
99
+ mediaProperties: {
138
100
  mediaDirection?: {
139
- receiveAudio: boolean,
140
- receiveVideo: boolean,
141
- receiveShare: boolean,
142
- },
143
- audioTrack?: MediaStreamTrack,
144
- videoTrack?: MediaStreamTrack,
145
- shareTrack?: MediaStreamTrack
146
- },
147
- remoteQualityLevel?: 'LOW'|'MEDIUM'|'HIGH',
148
- enableRtx?: boolean,
149
- enableExtmap?: boolean,
101
+ receiveAudio: boolean;
102
+ receiveVideo: boolean;
103
+ receiveShare: boolean;
104
+ sendAudio: boolean;
105
+ sendVideo: boolean;
106
+ sendShare: boolean;
107
+ };
108
+ audioTrack?: LocalMicrophoneTrack;
109
+ videoTrack?: LocalCameraTrack;
110
+ shareTrack?: LocalDisplayTrack;
111
+ };
112
+ remoteQualityLevel?: 'LOW' | 'MEDIUM' | 'HIGH';
113
+ enableRtx?: boolean;
114
+ enableExtmap?: boolean;
150
115
  turnServerInfo?: {
151
- url: string,
152
- username: string,
153
- password: string
154
- }
116
+ url: string;
117
+ username: string;
118
+ password: string;
119
+ };
120
+ bundlePolicy?: BundlePolicy;
155
121
  }
156
122
  ) => {
157
123
  const {
@@ -159,7 +125,8 @@ Media.createMediaConnection = (
159
125
  remoteQualityLevel,
160
126
  enableRtx,
161
127
  enableExtmap,
162
- turnServerInfo
128
+ turnServerInfo,
129
+ bundlePolicy,
163
130
  } = options;
164
131
 
165
132
  const iceServers = [];
@@ -168,57 +135,65 @@ Media.createMediaConnection = (
168
135
  iceServers.push({
169
136
  urls: turnServerInfo.url,
170
137
  username: turnServerInfo.username || '',
171
- credential: turnServerInfo.password || ''
138
+ credential: turnServerInfo.password || '',
172
139
  });
173
140
  }
174
141
 
175
142
  if (isMultistream) {
176
- return new MultistreamRoapMediaConnection({
143
+ const config: MultistreamConnectionConfig = {
177
144
  iceServers,
178
- }, debugId);
145
+ enableMainAudio:
146
+ mediaProperties.mediaDirection?.sendAudio || mediaProperties.mediaDirection?.receiveAudio,
147
+ enableMainVideo:
148
+ mediaProperties.mediaDirection?.sendVideo || mediaProperties.mediaDirection?.receiveVideo,
149
+ };
150
+
151
+ if (bundlePolicy) {
152
+ config.bundlePolicy = bundlePolicy;
153
+ }
154
+
155
+ return new MultistreamRoapMediaConnection(config, debugId);
179
156
  }
180
157
 
181
158
  if (!mediaProperties) {
182
159
  throw new Error('mediaProperties have to be provided for non-multistream media connections');
183
160
  }
184
161
 
185
- const {
186
- mediaDirection,
187
- audioTrack,
188
- videoTrack,
189
- shareTrack
190
- } = mediaProperties;
191
-
192
-
193
- return new RoapMediaConnection({
194
- iceServers,
195
- skipInactiveTransceivers: false,
196
- requireH264: true,
197
- sdpMunging: {
198
- convertPort9to0: false,
199
- addContentSlides: true,
200
- bandwidthLimits: {
201
- audio: StaticConfig.meetings.bandwidth.audio,
202
- video: StaticConfig.meetings.bandwidth.video,
162
+ const {mediaDirection, audioTrack, videoTrack, shareTrack} = mediaProperties;
163
+
164
+ return new RoapMediaConnection(
165
+ {
166
+ iceServers,
167
+ skipInactiveTransceivers: false,
168
+ requireH264: true,
169
+ sdpMunging: {
170
+ convertPort9to0: false,
171
+ addContentSlides: true,
172
+ bandwidthLimits: {
173
+ audio: StaticConfig.meetings.bandwidth.audio,
174
+ video: StaticConfig.meetings.bandwidth.video,
175
+ },
176
+ startBitrate: StaticConfig.meetings.bandwidth.startBitrate,
177
+ periodicKeyframes: 20, // it's always been hardcoded in SDK so for now keeping it that way
178
+ disableExtmap: !enableExtmap,
179
+ disableRtx: !enableRtx, // see https://bugs.chromium.org/p/chromium/issues/detail?id=1020642 why we might want to remove RTX from SDP
203
180
  },
204
- startBitrate: StaticConfig.meetings.bandwidth.startBitrate,
205
- periodicKeyframes: 20, // it's always been hardcoded in SDK so for now keeping it that way
206
- disableExtmap: !enableExtmap,
207
- disableRtx: !enableRtx, // see https://bugs.chromium.org/p/chromium/issues/detail?id=1020642 why we might want to remove RTX from SDP
208
- }
209
- }, {
210
- send: {
211
- audio: audioTrack,
212
- video: videoTrack,
213
- screenShareVideo: shareTrack
214
181
  },
215
- receive: {
216
- audio: mediaDirection.receiveAudio,
217
- video: mediaDirection.receiveVideo,
218
- screenShareVideo: mediaDirection.receiveShare,
219
- remoteQualityLevel
220
- }
221
- }, debugId);
182
+ {
183
+ send: {
184
+ audio: audioTrack?.underlyingTrack,
185
+ video: videoTrack?.underlyingTrack,
186
+ screenShareVideo: shareTrack?.underlyingTrack,
187
+ },
188
+ receive: {
189
+ audio: mediaDirection.receiveAudio,
190
+ video: mediaDirection.receiveVideo,
191
+ screenShareVideo: mediaDirection.receiveShare,
192
+ remoteQualityLevel,
193
+ },
194
+ },
195
+ debugId
196
+ );
222
197
  };
223
198
 
224
199
  /**
@@ -252,38 +227,31 @@ Media.getDisplayMedia = (
252
227
  const hasSharePreferences = options.sharePreferences;
253
228
  const hasCustomConstraints = hasSharePreferences && hasSharePreferences.shareConstraints;
254
229
  const hasHighFrameRate = hasSharePreferences && hasSharePreferences.highFrameRate;
255
- const {
256
- screenResolution,
257
- resolution,
258
- videoShareFrameRate,
259
- screenFrameRate,
260
- aspectRatio
261
- } = Config.meetings;
230
+ const {screenResolution, resolution, videoShareFrameRate, screenFrameRate, aspectRatio} =
231
+ Config.meetings;
262
232
 
263
233
  let shareConstraints: any = {
264
234
  cursor: MEDIA_TRACK_CONSTRAINT.CURSOR.AWLAYS,
265
- aspectRatio
235
+ aspectRatio,
266
236
  };
267
237
 
268
238
  if (hasCustomConstraints) {
269
239
  shareConstraints = hasSharePreferences.shareConstraints;
270
- }
271
- else if (hasHighFrameRate) {
240
+ } else if (hasHighFrameRate) {
272
241
  shareConstraints = {
273
242
  ...shareConstraints,
274
243
  frameRate: videoShareFrameRate,
275
244
  height: resolution.idealHeight,
276
245
  width: resolution.idealWidth,
277
- ...config.resolution
246
+ ...config.resolution,
278
247
  };
279
- }
280
- else {
248
+ } else {
281
249
  shareConstraints = {
282
250
  ...shareConstraints,
283
251
  frameRate: customShareFrameRate || screenFrameRate,
284
252
  height: customResolution.idealHeight || screenResolution.idealHeight,
285
253
  width: customResolution.idealWidth || screenResolution.idealWidth,
286
- ...config.screenResolution
254
+ ...config.screenResolution,
287
255
  };
288
256
  }
289
257
 
@@ -294,15 +262,14 @@ Media.getDisplayMedia = (
294
262
  // to have higher quality, and for developers to control the values
295
263
  // eventually we may have to add the same functionality to chrome, OR conversely, get to with firefox
296
264
 
297
-
298
265
  if (isBrowser('firefox')) {
299
266
  const mediaConfig: any = {
300
267
  audio: options.sendAudio,
301
- video: options.sendShare
268
+ video: options.sendShare,
302
269
  };
303
270
 
304
-
305
- return navigator.mediaDevices.getDisplayMedia({audio: options.sendAudio, video: mediaConfig})
271
+ return navigator.mediaDevices
272
+ .getDisplayMedia({audio: options.sendAudio, video: mediaConfig})
306
273
  .then((stream) => {
307
274
  if (options.sendShare && stream.getVideoTracks().length > 0) {
308
275
  // Firefox has a bug with the spec where changing in the height and width only happens
@@ -311,7 +278,6 @@ Media.getDisplayMedia = (
311
278
  stream.getVideoTracks()[0].applyConstraints(shareConstraints);
312
279
  }
313
280
 
314
-
315
281
  return stream;
316
282
  });
317
283
  }
@@ -341,34 +307,32 @@ Media.getMedia = (audio: any | boolean, video: any | boolean, config: any) => {
341
307
  audio,
342
308
  // TODO: Remove temporary workaround once Firefox fixes low constraint issues
343
309
  // eslint-disable-next-line no-nested-ternary
344
- video: video ?
345
- isBrowser('firefox') && video.width && video.width.max === 320 ?
346
- {
347
- deviceId: video.deviceId ? video.deviceId : undefined,
348
- width: 320,
349
- height: 180,
350
- frameRate: video.frameRate ? video.frameRate : undefined,
351
- facingMode: video.facingMode ? video.facingMode : undefined,
352
- } :
353
- {
354
- deviceId: video.deviceId ? video.deviceId : undefined,
355
- width: video.width ? video.width : defaultWidth,
356
- height: video.height ? video.height : defaultHeight,
357
- frameRate: video.frameRate ? video.frameRate : undefined,
358
- facingMode: video.facingMode ? video.facingMode : undefined,
359
- } :
360
- false,
361
- fake: process.env.NODE_ENV === 'test' // Special case to get fake media for Firefox browser for testing
310
+ video: video
311
+ ? isBrowser('firefox') && video.width && video.width.max === 320
312
+ ? {
313
+ deviceId: video.deviceId ? video.deviceId : undefined,
314
+ width: 320,
315
+ height: 180,
316
+ frameRate: video.frameRate ? video.frameRate : undefined,
317
+ facingMode: video.facingMode ? video.facingMode : undefined,
318
+ }
319
+ : {
320
+ deviceId: video.deviceId ? video.deviceId : undefined,
321
+ width: video.width ? video.width : defaultWidth,
322
+ height: video.height ? video.height : defaultHeight,
323
+ frameRate: video.frameRate ? video.frameRate : undefined,
324
+ facingMode: video.facingMode ? video.facingMode : undefined,
325
+ }
326
+ : false,
327
+ fake: process.env.NODE_ENV === 'test', // Special case to get fake media for Firefox browser for testing
362
328
  };
363
329
 
364
- return navigator.mediaDevices
365
- .getUserMedia(mediaConfig)
366
- .catch((err) => {
367
- const logPath = 'Media:index#getMedia --> navigator.mediaDevices.getUserMedia';
330
+ return navigator.mediaDevices.getUserMedia(mediaConfig).catch((err) => {
331
+ const logPath = 'Media:index#getMedia --> navigator.mediaDevices.getUserMedia';
368
332
 
369
- LoggerProxy.logger.error(`${logPath} failed - ${err} (${err.constraint})`);
370
- throw err;
371
- });
333
+ LoggerProxy.logger.error(`${logPath} failed - ${err} (${err.constraint})`);
334
+ throw err;
335
+ });
372
336
  };
373
337
 
374
338
  /**
@@ -383,24 +347,24 @@ Media.getMedia = (audio: any | boolean, video: any | boolean, config: any) => {
383
347
  * sendVideo: true/false
384
348
  *}
385
349
  */
386
- Media.getSupportedDevice = ({ sendAudio, sendVideo }: { sendAudio: boolean; sendVideo: boolean }) =>
350
+ Media.getSupportedDevice = ({sendAudio, sendVideo}: {sendAudio: boolean; sendVideo: boolean}) =>
387
351
  Promise.resolve().then(() => {
388
352
  if (!navigator.mediaDevices || navigator.mediaDevices.enumerateDevices === undefined) {
389
353
  return {
390
354
  sendAudio: false,
391
- sendVideo: false
355
+ sendVideo: false,
392
356
  };
393
357
  }
394
358
 
395
359
  return navigator.mediaDevices.enumerateDevices().then((devices) => {
396
360
  const supported = {
397
361
  audio: devices.filter((device) => device.kind === AUDIO_INPUT).length > 0,
398
- video: devices.filter((device) => device.kind === VIDEO_INPUT).length > 0
362
+ video: devices.filter((device) => device.kind === VIDEO_INPUT).length > 0,
399
363
  };
400
364
 
401
365
  return {
402
366
  sendAudio: supported.audio && sendAudio,
403
- sendVideo: supported.video && sendVideo
367
+ sendVideo: supported.video && sendVideo,
404
368
  };
405
369
  });
406
370
  });
@@ -439,40 +403,11 @@ Media.stopTracks = (track: any) => {
439
403
  if (track && track.stop) {
440
404
  try {
441
405
  track.stop();
406
+ } catch (e) {
407
+ LoggerProxy.logger.error(
408
+ `Media:index#stopTracks --> Unable to stop the track with state ${track.readyState}, error: ${e}`
409
+ );
442
410
  }
443
- catch (e) {
444
- LoggerProxy.logger.error(`Media:index#stopTracks --> Unable to stop the track with state ${track.readyState}, error: ${e}`);
445
- }
446
- }
447
- });
448
- };
449
-
450
- /**
451
- *
452
- * Stop input stream
453
- * @param {Stream} stream A media stream
454
- * @returns {null}
455
- * @deprecated after v1.89.3
456
- */
457
- Media.stopStream = (stream: any) => {
458
- LoggerProxy.logger.warn('Media:index#stopStream --> [DEPRECATION WARNING]: stopStream has been deprecated after v1.89.3');
459
- if (!stream) {
460
- return Promise.resolve();
461
- }
462
-
463
- /*
464
- * To release local media
465
- * 1) Chrome requires all tracks to be stopped (stream.stop got deprecated)
466
- * 2) Firefox requires the stream to be stopped
467
- */
468
- return Promise.resolve().then(() => {
469
- if (stream.getTracks) {
470
- stream.getTracks().forEach((track) => {
471
- track.stop();
472
- });
473
- }
474
- else if (stream.stop) {
475
- stream.stop();
476
411
  }
477
412
  });
478
413
  };
@@ -510,13 +445,21 @@ Media.getUserMedia = (
510
445
  },
511
446
  config: object
512
447
  ) =>
513
- Media.getLocalMedia({
514
- sendAudio: mediaSetting.sendAudio ? audioVideo.audio || mediaSetting.sendAudio : false,
515
- sendVideo: mediaSetting.sendVideo ? audioVideo.video || mediaSetting.sendVideo : false
516
- }, config).then((localStream) => Media.getLocalMedia({
517
- sendShare: mediaSetting.sendShare,
518
- isSharing: mediaSetting.isSharing,
519
- sharePreferences
520
- }, config).then((shareStream) => [localStream, shareStream]));
448
+ Media.getLocalMedia(
449
+ {
450
+ sendAudio: mediaSetting.sendAudio ? audioVideo.audio || mediaSetting.sendAudio : false,
451
+ sendVideo: mediaSetting.sendVideo ? audioVideo.video || mediaSetting.sendVideo : false,
452
+ },
453
+ config
454
+ ).then((localStream) =>
455
+ Media.getLocalMedia(
456
+ {
457
+ sendShare: mediaSetting.sendShare,
458
+ isSharing: mediaSetting.isSharing,
459
+ sharePreferences,
460
+ },
461
+ config
462
+ ).then((shareStream) => [localStream, shareStream])
463
+ );
521
464
 
522
465
  export default Media;