@webex/plugin-meetings 3.0.0-beta.4 → 3.0.0-beta.40

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