@webex/plugin-meetings 3.0.0-beta.1 → 3.0.0-beta.104

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 (548) hide show
  1. package/UPGRADING.md +9 -9
  2. package/browsers.js +19 -24
  3. package/dist/annotation/annotation.types.js +7 -0
  4. package/dist/annotation/annotation.types.js.map +1 -0
  5. package/dist/annotation/constants.js +48 -0
  6. package/dist/annotation/constants.js.map +1 -0
  7. package/dist/annotation/index.js +357 -0
  8. package/dist/annotation/index.js.map +1 -0
  9. package/dist/breakouts/breakout.js +176 -0
  10. package/dist/breakouts/breakout.js.map +1 -0
  11. package/dist/breakouts/collection.js +23 -0
  12. package/dist/breakouts/collection.js.map +1 -0
  13. package/dist/breakouts/edit-lock-error.js +52 -0
  14. package/dist/breakouts/edit-lock-error.js.map +1 -0
  15. package/dist/breakouts/events.js +43 -0
  16. package/dist/breakouts/events.js.map +1 -0
  17. package/dist/breakouts/index.js +919 -0
  18. package/dist/breakouts/index.js.map +1 -0
  19. package/dist/breakouts/request.js +78 -0
  20. package/dist/breakouts/request.js.map +1 -0
  21. package/dist/breakouts/utils.js +67 -0
  22. package/dist/breakouts/utils.js.map +1 -0
  23. package/dist/common/browser-detection.js +1 -20
  24. package/dist/common/browser-detection.js.map +1 -1
  25. package/dist/common/collection.js +5 -20
  26. package/dist/common/collection.js.map +1 -1
  27. package/dist/common/config.js +0 -7
  28. package/dist/common/config.js.map +1 -1
  29. package/dist/common/errors/captcha-error.js +10 -24
  30. package/dist/common/errors/captcha-error.js.map +1 -1
  31. package/dist/common/errors/intent-to-join.js +11 -24
  32. package/dist/common/errors/intent-to-join.js.map +1 -1
  33. package/dist/common/errors/join-meeting.js +12 -25
  34. package/dist/common/errors/join-meeting.js.map +1 -1
  35. package/dist/common/errors/media.js +10 -24
  36. package/dist/common/errors/media.js.map +1 -1
  37. package/dist/common/errors/parameter.js +5 -33
  38. package/dist/common/errors/parameter.js.map +1 -1
  39. package/dist/common/errors/password-error.js +10 -24
  40. package/dist/common/errors/password-error.js.map +1 -1
  41. package/dist/common/errors/permission.js +9 -23
  42. package/dist/common/errors/permission.js.map +1 -1
  43. package/dist/common/errors/reconnection-in-progress.js +0 -17
  44. package/dist/common/errors/reconnection-in-progress.js.map +1 -1
  45. package/dist/common/errors/reconnection.js +10 -24
  46. package/dist/common/errors/reconnection.js.map +1 -1
  47. package/dist/common/errors/stats.js +10 -24
  48. package/dist/common/errors/stats.js.map +1 -1
  49. package/dist/common/errors/webex-errors.js +10 -69
  50. package/dist/common/errors/webex-errors.js.map +1 -1
  51. package/dist/common/errors/webex-meetings-error.js +5 -25
  52. package/dist/common/errors/webex-meetings-error.js.map +1 -1
  53. package/dist/common/events/events-scope.js +0 -22
  54. package/dist/common/events/events-scope.js.map +1 -1
  55. package/dist/common/events/events.js +0 -23
  56. package/dist/common/events/events.js.map +1 -1
  57. package/dist/common/events/trigger-proxy.js +0 -12
  58. package/dist/common/events/trigger-proxy.js.map +1 -1
  59. package/dist/common/events/util.js +0 -15
  60. package/dist/common/events/util.js.map +1 -1
  61. package/dist/common/logs/logger-config.js +0 -4
  62. package/dist/common/logs/logger-config.js.map +1 -1
  63. package/dist/common/logs/logger-proxy.js +1 -8
  64. package/dist/common/logs/logger-proxy.js.map +1 -1
  65. package/dist/common/logs/request.js +37 -60
  66. package/dist/common/logs/request.js.map +1 -1
  67. package/dist/common/queue.js +4 -14
  68. package/dist/common/queue.js.map +1 -1
  69. package/dist/config.js +7 -6
  70. package/dist/config.js.map +1 -1
  71. package/dist/constants.js +184 -122
  72. package/dist/constants.js.map +1 -1
  73. package/dist/controls-options-manager/constants.js +14 -0
  74. package/dist/controls-options-manager/constants.js.map +1 -0
  75. package/dist/controls-options-manager/enums.js +25 -0
  76. package/dist/controls-options-manager/enums.js.map +1 -0
  77. package/dist/controls-options-manager/index.js +297 -0
  78. package/dist/controls-options-manager/index.js.map +1 -0
  79. package/dist/controls-options-manager/types.js +7 -0
  80. package/dist/controls-options-manager/types.js.map +1 -0
  81. package/dist/controls-options-manager/util.js +250 -0
  82. package/dist/controls-options-manager/util.js.map +1 -0
  83. package/dist/index.js +72 -17
  84. package/dist/index.js.map +1 -1
  85. package/dist/locus-info/controlsUtils.js +56 -29
  86. package/dist/locus-info/controlsUtils.js.map +1 -1
  87. package/dist/locus-info/embeddedAppsUtils.js +3 -26
  88. package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
  89. package/dist/locus-info/fullState.js +0 -15
  90. package/dist/locus-info/fullState.js.map +1 -1
  91. package/dist/locus-info/hostUtils.js +4 -12
  92. package/dist/locus-info/hostUtils.js.map +1 -1
  93. package/dist/locus-info/index.js +362 -208
  94. package/dist/locus-info/index.js.map +1 -1
  95. package/dist/locus-info/infoUtils.js +3 -37
  96. package/dist/locus-info/infoUtils.js.map +1 -1
  97. package/dist/locus-info/mediaSharesUtils.js +12 -38
  98. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  99. package/dist/locus-info/parser.js +92 -118
  100. package/dist/locus-info/parser.js.map +1 -1
  101. package/dist/locus-info/selfUtils.js +99 -91
  102. package/dist/locus-info/selfUtils.js.map +1 -1
  103. package/dist/media/index.js +113 -337
  104. package/dist/media/index.js.map +1 -1
  105. package/dist/media/properties.js +96 -135
  106. package/dist/media/properties.js.map +1 -1
  107. package/dist/media/util.js +1 -35
  108. package/dist/media/util.js.map +1 -1
  109. package/dist/mediaQualityMetrics/config.js +505 -495
  110. package/dist/mediaQualityMetrics/config.js.map +1 -1
  111. package/dist/meeting/in-meeting-actions.js +59 -14
  112. package/dist/meeting/in-meeting-actions.js.map +1 -1
  113. package/dist/meeting/index.js +2909 -2398
  114. package/dist/meeting/index.js.map +1 -1
  115. package/dist/meeting/muteState.js +257 -112
  116. package/dist/meeting/muteState.js.map +1 -1
  117. package/dist/meeting/request.js +330 -264
  118. package/dist/meeting/request.js.map +1 -1
  119. package/dist/meeting/request.type.js +7 -0
  120. package/dist/meeting/request.type.js.map +1 -0
  121. package/dist/meeting/state.js +21 -31
  122. package/dist/meeting/state.js.map +1 -1
  123. package/dist/meeting/util.js +63 -261
  124. package/dist/meeting/util.js.map +1 -1
  125. package/dist/meeting-info/collection.js +6 -25
  126. package/dist/meeting-info/collection.js.map +1 -1
  127. package/dist/meeting-info/index.js +14 -32
  128. package/dist/meeting-info/index.js.map +1 -1
  129. package/dist/meeting-info/meeting-info-v2.js +273 -280
  130. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  131. package/dist/meeting-info/request.js +3 -15
  132. package/dist/meeting-info/request.js.map +1 -1
  133. package/dist/meeting-info/util.js +98 -183
  134. package/dist/meeting-info/util.js.map +1 -1
  135. package/dist/meeting-info/utilv2.js +155 -232
  136. package/dist/meeting-info/utilv2.js.map +1 -1
  137. package/dist/meetings/collection.js +26 -19
  138. package/dist/meetings/collection.js.map +1 -1
  139. package/dist/meetings/index.js +741 -548
  140. package/dist/meetings/index.js.map +1 -1
  141. package/dist/meetings/request.js +26 -41
  142. package/dist/meetings/request.js.map +1 -1
  143. package/dist/meetings/util.js +194 -149
  144. package/dist/meetings/util.js.map +1 -1
  145. package/dist/member/index.js +100 -85
  146. package/dist/member/index.js.map +1 -1
  147. package/dist/member/types.js +15 -0
  148. package/dist/member/types.js.map +1 -0
  149. package/dist/member/util.js +90 -68
  150. package/dist/member/util.js.map +1 -1
  151. package/dist/members/collection.js +13 -12
  152. package/dist/members/collection.js.map +1 -1
  153. package/dist/members/index.js +227 -188
  154. package/dist/members/index.js.map +1 -1
  155. package/dist/members/request.js +54 -39
  156. package/dist/members/request.js.map +1 -1
  157. package/dist/members/types.js +15 -0
  158. package/dist/members/types.js.map +1 -0
  159. package/dist/members/util.js +107 -44
  160. package/dist/members/util.js.map +1 -1
  161. package/dist/metrics/config.js +5 -14
  162. package/dist/metrics/config.js.map +1 -1
  163. package/dist/metrics/constants.js +3 -7
  164. package/dist/metrics/constants.js.map +1 -1
  165. package/dist/metrics/index.js +67 -159
  166. package/dist/metrics/index.js.map +1 -1
  167. package/dist/multistream/mediaRequestManager.js +250 -0
  168. package/dist/multistream/mediaRequestManager.js.map +1 -0
  169. package/dist/multistream/receiveSlot.js +202 -0
  170. package/dist/multistream/receiveSlot.js.map +1 -0
  171. package/dist/multistream/receiveSlotManager.js +176 -0
  172. package/dist/multistream/receiveSlotManager.js.map +1 -0
  173. package/dist/multistream/remoteMedia.js +270 -0
  174. package/dist/multistream/remoteMedia.js.map +1 -0
  175. package/dist/multistream/remoteMediaGroup.js +209 -0
  176. package/dist/multistream/remoteMediaGroup.js.map +1 -0
  177. package/dist/multistream/remoteMediaManager.js +1137 -0
  178. package/dist/multistream/remoteMediaManager.js.map +1 -0
  179. package/dist/networkQualityMonitor/index.js +40 -59
  180. package/dist/networkQualityMonitor/index.js.map +1 -1
  181. package/dist/personal-meeting-room/index.js +21 -45
  182. package/dist/personal-meeting-room/index.js.map +1 -1
  183. package/dist/personal-meeting-room/request.js +1 -31
  184. package/dist/personal-meeting-room/request.js.map +1 -1
  185. package/dist/personal-meeting-room/util.js +0 -13
  186. package/dist/personal-meeting-room/util.js.map +1 -1
  187. package/dist/reachability/index.js +192 -191
  188. package/dist/reachability/index.js.map +1 -1
  189. package/dist/reachability/request.js +15 -23
  190. package/dist/reachability/request.js.map +1 -1
  191. package/dist/reactions/constants.js +13 -0
  192. package/dist/reactions/constants.js.map +1 -0
  193. package/dist/reactions/reactions.js +109 -0
  194. package/dist/reactions/reactions.js.map +1 -0
  195. package/dist/reactions/reactions.type.js +36 -0
  196. package/dist/reactions/reactions.type.js.map +1 -0
  197. package/dist/reconnection-manager/index.js +386 -527
  198. package/dist/reconnection-manager/index.js.map +1 -1
  199. package/dist/recording-controller/enums.js +17 -0
  200. package/dist/recording-controller/enums.js.map +1 -0
  201. package/dist/recording-controller/index.js +343 -0
  202. package/dist/recording-controller/index.js.map +1 -0
  203. package/dist/recording-controller/util.js +63 -0
  204. package/dist/recording-controller/util.js.map +1 -0
  205. package/dist/roap/index.js +84 -286
  206. package/dist/roap/index.js.map +1 -1
  207. package/dist/roap/request.js +138 -238
  208. package/dist/roap/request.js.map +1 -1
  209. package/dist/roap/turnDiscovery.js +164 -102
  210. package/dist/roap/turnDiscovery.js.map +1 -1
  211. package/dist/statsAnalyzer/global.js +1 -93
  212. package/dist/statsAnalyzer/global.js.map +1 -1
  213. package/dist/statsAnalyzer/index.js +399 -470
  214. package/dist/statsAnalyzer/index.js.map +1 -1
  215. package/dist/statsAnalyzer/mqaUtil.js +143 -87
  216. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  217. package/dist/transcription/index.js +22 -47
  218. package/dist/transcription/index.js.map +1 -1
  219. package/dist/types/annotation/annotation.types.d.ts +34 -0
  220. package/dist/types/annotation/constants.d.ts +31 -0
  221. package/dist/types/annotation/index.d.ts +124 -0
  222. package/dist/types/breakouts/breakout.d.ts +8 -0
  223. package/dist/types/breakouts/collection.d.ts +5 -0
  224. package/dist/types/breakouts/edit-lock-error.d.ts +15 -0
  225. package/dist/types/breakouts/events.d.ts +2 -0
  226. package/dist/types/breakouts/index.d.ts +5 -0
  227. package/dist/types/breakouts/request.d.ts +22 -0
  228. package/dist/types/breakouts/utils.d.ts +15 -0
  229. package/dist/types/common/browser-detection.d.ts +9 -0
  230. package/dist/types/common/collection.d.ts +48 -0
  231. package/dist/types/common/config.d.ts +2 -0
  232. package/dist/types/common/errors/captcha-error.d.ts +15 -0
  233. package/dist/types/common/errors/intent-to-join.d.ts +16 -0
  234. package/dist/types/common/errors/join-meeting.d.ts +17 -0
  235. package/dist/types/common/errors/media.d.ts +15 -0
  236. package/dist/types/common/errors/parameter.d.ts +15 -0
  237. package/dist/types/common/errors/password-error.d.ts +15 -0
  238. package/dist/types/common/errors/permission.d.ts +14 -0
  239. package/dist/types/common/errors/reconnection-in-progress.d.ts +9 -0
  240. package/dist/types/common/errors/reconnection.d.ts +15 -0
  241. package/dist/types/common/errors/stats.d.ts +15 -0
  242. package/dist/types/common/errors/webex-errors.d.ts +69 -0
  243. package/dist/types/common/errors/webex-meetings-error.d.ts +20 -0
  244. package/dist/types/common/events/events-scope.d.ts +17 -0
  245. package/dist/types/common/events/events.d.ts +12 -0
  246. package/dist/types/common/events/trigger-proxy.d.ts +2 -0
  247. package/dist/types/common/events/util.d.ts +2 -0
  248. package/dist/types/common/logs/logger-config.d.ts +2 -0
  249. package/dist/types/common/logs/logger-proxy.d.ts +2 -0
  250. package/dist/types/common/logs/request.d.ts +34 -0
  251. package/dist/types/common/queue.d.ts +32 -0
  252. package/dist/types/config.d.ts +78 -0
  253. package/dist/types/constants.d.ts +968 -0
  254. package/dist/types/controls-options-manager/constants.d.ts +4 -0
  255. package/dist/types/controls-options-manager/enums.d.ts +13 -0
  256. package/dist/types/controls-options-manager/index.d.ts +136 -0
  257. package/dist/types/controls-options-manager/types.d.ts +37 -0
  258. package/dist/types/controls-options-manager/util.d.ts +1 -0
  259. package/dist/types/index.d.ts +7 -0
  260. package/dist/types/locus-info/controlsUtils.d.ts +2 -0
  261. package/dist/types/locus-info/embeddedAppsUtils.d.ts +2 -0
  262. package/dist/types/locus-info/fullState.d.ts +2 -0
  263. package/dist/types/locus-info/hostUtils.d.ts +2 -0
  264. package/dist/types/locus-info/index.d.ts +315 -0
  265. package/dist/types/locus-info/infoUtils.d.ts +2 -0
  266. package/dist/types/locus-info/mediaSharesUtils.d.ts +2 -0
  267. package/dist/types/locus-info/parser.d.ts +212 -0
  268. package/dist/types/locus-info/selfUtils.d.ts +2 -0
  269. package/dist/types/media/index.d.ts +34 -0
  270. package/dist/types/media/properties.d.ts +108 -0
  271. package/dist/types/media/util.d.ts +2 -0
  272. package/dist/types/mediaQualityMetrics/config.d.ts +365 -0
  273. package/dist/types/meeting/in-meeting-actions.d.ts +129 -0
  274. package/dist/types/meeting/index.d.ts +1748 -0
  275. package/dist/types/meeting/muteState.d.ts +185 -0
  276. package/dist/types/meeting/request.d.ts +275 -0
  277. package/dist/types/meeting/request.type.d.ts +11 -0
  278. package/dist/types/meeting/state.d.ts +9 -0
  279. package/dist/types/meeting/util.d.ts +2 -0
  280. package/dist/types/meeting-info/collection.d.ts +20 -0
  281. package/dist/types/meeting-info/index.d.ts +57 -0
  282. package/dist/types/meeting-info/meeting-info-v2.d.ts +112 -0
  283. package/dist/types/meeting-info/request.d.ts +22 -0
  284. package/dist/types/meeting-info/util.d.ts +2 -0
  285. package/dist/types/meeting-info/utilv2.d.ts +2 -0
  286. package/dist/types/meetings/collection.d.ts +31 -0
  287. package/dist/types/meetings/index.d.ts +345 -0
  288. package/dist/types/meetings/request.d.ts +27 -0
  289. package/dist/types/meetings/util.d.ts +18 -0
  290. package/dist/types/member/index.d.ts +156 -0
  291. package/dist/types/member/types.d.ts +21 -0
  292. package/dist/types/member/util.d.ts +2 -0
  293. package/dist/types/members/collection.d.ts +29 -0
  294. package/dist/types/members/index.d.ts +353 -0
  295. package/dist/types/members/request.d.ts +69 -0
  296. package/dist/types/members/types.d.ts +24 -0
  297. package/dist/types/members/util.d.ts +2 -0
  298. package/dist/types/metrics/config.d.ts +172 -0
  299. package/dist/types/metrics/constants.d.ts +54 -0
  300. package/dist/types/metrics/index.d.ts +152 -0
  301. package/dist/types/multistream/mediaRequestManager.d.ts +101 -0
  302. package/dist/types/multistream/receiveSlot.d.ts +68 -0
  303. package/dist/types/multistream/receiveSlotManager.d.ts +56 -0
  304. package/dist/types/multistream/remoteMedia.d.ts +72 -0
  305. package/dist/types/multistream/remoteMediaGroup.d.ts +47 -0
  306. package/dist/types/multistream/remoteMediaManager.d.ts +263 -0
  307. package/dist/types/networkQualityMonitor/index.d.ts +70 -0
  308. package/dist/types/personal-meeting-room/index.d.ts +47 -0
  309. package/dist/types/personal-meeting-room/request.d.ts +14 -0
  310. package/dist/types/personal-meeting-room/util.d.ts +2 -0
  311. package/dist/types/reachability/index.d.ts +152 -0
  312. package/dist/types/reachability/request.d.ts +37 -0
  313. package/dist/types/reactions/constants.d.ts +3 -0
  314. package/dist/types/reactions/reactions.d.ts +4 -0
  315. package/dist/types/reactions/reactions.type.d.ts +52 -0
  316. package/dist/types/reconnection-manager/index.d.ts +126 -0
  317. package/dist/types/recording-controller/enums.d.ts +7 -0
  318. package/dist/types/recording-controller/index.d.ts +193 -0
  319. package/dist/types/recording-controller/util.d.ts +13 -0
  320. package/dist/types/roap/index.d.ts +77 -0
  321. package/dist/types/roap/request.d.ts +38 -0
  322. package/dist/types/roap/turnDiscovery.d.ts +88 -0
  323. package/dist/types/statsAnalyzer/global.d.ts +36 -0
  324. package/dist/types/statsAnalyzer/index.d.ts +200 -0
  325. package/dist/types/statsAnalyzer/mqaUtil.d.ts +24 -0
  326. package/dist/types/transcription/index.d.ts +64 -0
  327. package/internal-README.md +7 -6
  328. package/package.json +29 -21
  329. package/src/annotation/annotation.types.ts +41 -0
  330. package/src/annotation/constants.ts +36 -0
  331. package/src/annotation/index.ts +339 -0
  332. package/src/breakouts/README.md +219 -0
  333. package/src/breakouts/breakout.ts +141 -0
  334. package/src/breakouts/collection.ts +19 -0
  335. package/src/breakouts/edit-lock-error.ts +25 -0
  336. package/src/breakouts/events.ts +37 -0
  337. package/src/breakouts/index.ts +823 -0
  338. package/src/breakouts/request.ts +55 -0
  339. package/src/breakouts/utils.ts +57 -0
  340. package/src/common/{browser-detection.js → browser-detection.ts} +9 -6
  341. package/src/common/collection.ts +9 -7
  342. package/src/common/{config.js → config.ts} +1 -1
  343. package/src/common/errors/{captcha-error.js → captcha-error.ts} +11 -7
  344. package/src/common/errors/{intent-to-join.js → intent-to-join.ts} +12 -7
  345. package/src/common/errors/{join-meeting.js → join-meeting.ts} +17 -8
  346. package/src/common/errors/{media.js → media.ts} +11 -7
  347. package/src/common/errors/parameter.ts +11 -7
  348. package/src/common/errors/{password-error.js → password-error.ts} +11 -7
  349. package/src/common/errors/{permission.js → permission.ts} +10 -6
  350. package/src/common/errors/{reconnection.js → reconnection.ts} +11 -7
  351. package/src/common/errors/{stats.js → stats.ts} +11 -7
  352. package/src/common/errors/{webex-errors.js → webex-errors.ts} +8 -25
  353. package/src/common/errors/{webex-meetings-error.js → webex-meetings-error.ts} +4 -2
  354. package/src/common/events/{events-scope.js → events-scope.ts} +6 -2
  355. package/src/common/events/{events.js → events.ts} +5 -1
  356. package/src/common/events/{trigger-proxy.js → trigger-proxy.ts} +9 -5
  357. package/src/common/events/{util.js → util.ts} +2 -3
  358. package/src/common/logs/{logger-config.js → logger-config.ts} +1 -2
  359. package/src/common/logs/logger-proxy.ts +44 -0
  360. package/src/common/logs/{request.js → request.ts} +22 -9
  361. package/src/common/queue.ts +1 -2
  362. package/src/{config.js → config.ts} +18 -12
  363. package/src/constants.ts +256 -183
  364. package/src/controls-options-manager/constants.ts +5 -0
  365. package/src/controls-options-manager/enums.ts +16 -0
  366. package/src/controls-options-manager/index.ts +278 -0
  367. package/src/controls-options-manager/types.ts +49 -0
  368. package/src/controls-options-manager/util.ts +229 -0
  369. package/src/index.ts +33 -0
  370. package/src/locus-info/controlsUtils.ts +169 -0
  371. package/src/locus-info/{embeddedAppsUtils.js → embeddedAppsUtils.ts} +5 -6
  372. package/src/locus-info/{fullState.js → fullState.ts} +16 -12
  373. package/src/locus-info/{hostUtils.js → hostUtils.ts} +9 -8
  374. package/src/locus-info/{index.js → index.ts} +331 -80
  375. package/src/locus-info/{infoUtils.js → infoUtils.ts} +19 -8
  376. package/src/locus-info/{mediaSharesUtils.js → mediaSharesUtils.ts} +17 -17
  377. package/src/locus-info/{parser.js → parser.ts} +67 -79
  378. package/src/locus-info/{selfUtils.js → selfUtils.ts} +196 -67
  379. package/src/media/index.ts +488 -0
  380. package/src/media/{properties.js → properties.ts} +67 -54
  381. package/src/media/util.ts +16 -0
  382. package/src/mediaQualityMetrics/config.ts +384 -0
  383. package/src/meeting/in-meeting-actions.ts +123 -3
  384. package/src/meeting/{index.js → index.ts} +3334 -1775
  385. package/src/meeting/muteState.ts +526 -0
  386. package/src/meeting/{request.js → request.ts} +350 -142
  387. package/src/meeting/request.type.ts +13 -0
  388. package/src/meeting/{state.js → state.ts} +50 -35
  389. package/src/meeting/{util.js → util.ts} +126 -159
  390. package/src/meeting-info/{collection.js → collection.ts} +6 -2
  391. package/src/meeting-info/{index.js → index.ts} +42 -36
  392. package/src/meeting-info/meeting-info-v2.ts +345 -0
  393. package/src/meeting-info/{request.js → request.ts} +14 -4
  394. package/src/meeting-info/{util.js → util.ts} +60 -51
  395. package/src/meeting-info/{utilv2.js → utilv2.ts} +76 -60
  396. package/src/meetings/{collection.js → collection.ts} +26 -3
  397. package/src/meetings/index.ts +1394 -0
  398. package/src/meetings/{request.js → request.ts} +34 -25
  399. package/src/meetings/util.ts +288 -0
  400. package/src/member/{index.js → index.ts} +124 -56
  401. package/src/member/types.ts +24 -0
  402. package/src/member/{util.js → util.ts} +105 -25
  403. package/src/members/{collection.js → collection.ts} +10 -2
  404. package/src/members/{index.js → index.ts} +359 -139
  405. package/src/members/request.ts +215 -0
  406. package/src/members/types.ts +28 -0
  407. package/src/members/{util.js → util.ts} +145 -54
  408. package/src/metrics/{config.js → config.ts} +256 -92
  409. package/src/metrics/{constants.js → constants.ts} +1 -6
  410. package/src/metrics/{index.js → index.ts} +116 -97
  411. package/src/multistream/mediaRequestManager.ts +324 -0
  412. package/src/multistream/receiveSlot.ts +184 -0
  413. package/src/multistream/receiveSlotManager.ts +166 -0
  414. package/src/multistream/remoteMedia.ts +254 -0
  415. package/src/multistream/remoteMediaGroup.ts +225 -0
  416. package/src/multistream/remoteMediaManager.ts +1075 -0
  417. package/src/networkQualityMonitor/{index.js → index.ts} +41 -29
  418. package/src/personal-meeting-room/{index.js → index.ts} +28 -19
  419. package/src/personal-meeting-room/{request.js → request.ts} +13 -4
  420. package/src/personal-meeting-room/{util.js → util.ts} +4 -4
  421. package/src/reachability/{index.js → index.ts} +157 -94
  422. package/src/reachability/request.ts +46 -35
  423. package/src/reactions/constants.ts +4 -0
  424. package/src/reactions/reactions.ts +104 -0
  425. package/src/reactions/reactions.type.ts +62 -0
  426. package/src/reconnection-manager/{index.js → index.ts} +261 -163
  427. package/src/recording-controller/enums.ts +8 -0
  428. package/src/recording-controller/index.ts +315 -0
  429. package/src/recording-controller/util.ts +58 -0
  430. package/src/roap/index.ts +241 -0
  431. package/src/roap/request.ts +172 -0
  432. package/src/roap/turnDiscovery.ts +127 -53
  433. package/src/statsAnalyzer/global.ts +37 -0
  434. package/src/statsAnalyzer/index.ts +1273 -0
  435. package/src/statsAnalyzer/mqaUtil.ts +291 -0
  436. package/src/transcription/{index.js → index.ts} +46 -39
  437. package/test/integration/spec/converged-space-meetings.js +177 -0
  438. package/test/integration/spec/journey.js +666 -464
  439. package/test/integration/spec/space-meeting.js +321 -206
  440. package/test/integration/spec/transcription.js +7 -8
  441. package/test/unit/spec/annotation/index.ts +435 -0
  442. package/test/unit/spec/breakouts/breakout.ts +184 -0
  443. package/test/unit/spec/breakouts/collection.ts +15 -0
  444. package/test/unit/spec/breakouts/edit-lock-error.ts +30 -0
  445. package/test/unit/spec/breakouts/events.ts +77 -0
  446. package/test/unit/spec/breakouts/index.ts +1504 -0
  447. package/test/unit/spec/breakouts/request.ts +104 -0
  448. package/test/unit/spec/breakouts/utils.js +72 -0
  449. package/test/unit/spec/common/browser-detection.js +9 -28
  450. package/test/unit/spec/controls-options-manager/index.js +287 -0
  451. package/test/unit/spec/controls-options-manager/util.js +403 -0
  452. package/test/unit/spec/fixture/locus.js +92 -90
  453. package/test/unit/spec/locus-info/controlsUtils.js +177 -32
  454. package/test/unit/spec/locus-info/embeddedAppsUtils.js +8 -6
  455. package/test/unit/spec/locus-info/index.js +493 -3
  456. package/test/unit/spec/locus-info/infoUtils.js +41 -32
  457. package/test/unit/spec/locus-info/lib/BasicSeqCmp.json +88 -430
  458. package/test/unit/spec/locus-info/lib/SeqCmp.json +513 -685
  459. package/test/unit/spec/locus-info/parser.js +3 -9
  460. package/test/unit/spec/locus-info/selfConstant.js +110 -103
  461. package/test/unit/spec/locus-info/selfUtils.js +236 -12
  462. package/test/unit/spec/media/index.ts +303 -0
  463. package/test/unit/spec/media/properties.ts +73 -82
  464. package/test/unit/spec/meeting/in-meeting-actions.ts +58 -3
  465. package/test/unit/spec/meeting/index.js +3127 -975
  466. package/test/unit/spec/meeting/muteState.js +375 -70
  467. package/test/unit/spec/meeting/request.js +217 -43
  468. package/test/unit/spec/meeting/utils.js +205 -163
  469. package/test/unit/spec/meeting-info/meetinginfov2.js +268 -74
  470. package/test/unit/spec/meeting-info/request.js +7 -9
  471. package/test/unit/spec/meeting-info/util.js +11 -12
  472. package/test/unit/spec/meeting-info/utilv2.js +131 -74
  473. package/test/unit/spec/meetings/collection.js +15 -1
  474. package/test/unit/spec/meetings/index.js +1052 -333
  475. package/test/unit/spec/meetings/utils.js +163 -14
  476. package/test/unit/spec/member/index.js +24 -1
  477. package/test/unit/spec/member/util.js +359 -32
  478. package/test/unit/spec/members/index.js +547 -37
  479. package/test/unit/spec/members/request.js +76 -20
  480. package/test/unit/spec/members/utils.js +191 -4
  481. package/test/unit/spec/metrics/index.js +46 -20
  482. package/test/unit/spec/multistream/mediaRequestManager.ts +1060 -0
  483. package/test/unit/spec/multistream/receiveSlot.ts +163 -0
  484. package/test/unit/spec/multistream/receiveSlotManager.ts +203 -0
  485. package/test/unit/spec/multistream/remoteMedia.ts +255 -0
  486. package/test/unit/spec/multistream/remoteMediaGroup.ts +396 -0
  487. package/test/unit/spec/multistream/remoteMediaManager.ts +1793 -0
  488. package/test/unit/spec/networkQualityMonitor/index.js +24 -18
  489. package/test/unit/spec/personal-meeting-room/personal-meeting-room.js +2 -7
  490. package/test/unit/spec/reachability/index.ts +176 -27
  491. package/test/unit/spec/reachability/request.js +66 -0
  492. package/test/unit/spec/reconnection-manager/index.js +106 -9
  493. package/test/unit/spec/recording-controller/index.js +231 -0
  494. package/test/unit/spec/recording-controller/util.js +102 -0
  495. package/test/unit/spec/roap/index.ts +78 -45
  496. package/test/unit/spec/roap/request.ts +217 -0
  497. package/test/unit/spec/roap/turnDiscovery.ts +93 -49
  498. package/test/unit/spec/stats-analyzer/index.js +118 -65
  499. package/test/utils/cmr.js +44 -42
  500. package/test/utils/constants.js +9 -0
  501. package/test/utils/integrationTestUtils.js +64 -0
  502. package/test/utils/testUtils.js +63 -99
  503. package/test/utils/webex-config.js +22 -18
  504. package/test/utils/webex-test-users.js +57 -50
  505. package/tsconfig.json +6 -0
  506. package/dist/meeting/effectsState.js +0 -327
  507. package/dist/meeting/effectsState.js.map +0 -1
  508. package/dist/peer-connection-manager/index.js +0 -794
  509. package/dist/peer-connection-manager/index.js.map +0 -1
  510. package/dist/peer-connection-manager/util.js +0 -124
  511. package/dist/peer-connection-manager/util.js.map +0 -1
  512. package/dist/roap/collection.js +0 -73
  513. package/dist/roap/collection.js.map +0 -1
  514. package/dist/roap/handler.js +0 -337
  515. package/dist/roap/handler.js.map +0 -1
  516. package/dist/roap/state.js +0 -164
  517. package/dist/roap/state.js.map +0 -1
  518. package/dist/roap/util.js +0 -102
  519. package/dist/roap/util.js.map +0 -1
  520. package/src/common/logs/logger-proxy.js +0 -33
  521. package/src/index.js +0 -15
  522. package/src/locus-info/controlsUtils.js +0 -102
  523. package/src/media/index.js +0 -593
  524. package/src/media/util.js +0 -38
  525. package/src/mediaQualityMetrics/config.js +0 -382
  526. package/src/meeting/effectsState.js +0 -205
  527. package/src/meeting/muteState.js +0 -318
  528. package/src/meeting-info/meeting-info-v2.js +0 -255
  529. package/src/meetings/index.js +0 -986
  530. package/src/meetings/util.js +0 -176
  531. package/src/members/request.js +0 -131
  532. package/src/peer-connection-manager/index.js +0 -723
  533. package/src/peer-connection-manager/util.ts +0 -117
  534. package/src/roap/collection.js +0 -63
  535. package/src/roap/handler.js +0 -252
  536. package/src/roap/index.js +0 -380
  537. package/src/roap/request.js +0 -198
  538. package/src/roap/state.js +0 -149
  539. package/src/roap/util.js +0 -93
  540. package/src/statsAnalyzer/global.js +0 -131
  541. package/src/statsAnalyzer/index.js +0 -1020
  542. package/src/statsAnalyzer/mqaUtil.js +0 -173
  543. package/test/unit/spec/meeting/effectsState.js +0 -293
  544. package/test/unit/spec/peerconnection-manager/index.js +0 -188
  545. package/test/unit/spec/peerconnection-manager/utils.js +0 -48
  546. package/test/unit/spec/peerconnection-manager/utils.test-fixtures.ts +0 -389
  547. package/test/unit/spec/roap/util.js +0 -30
  548. /package/src/common/errors/{reconnection-in-progress.js → reconnection-in-progress.ts} +0 -0
@@ -1,593 +0,0 @@
1
- /*!
2
- * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
3
- */
4
- /* globals navigator */
5
-
6
- import LoggerProxy from '../common/logs/logger-proxy';
7
- import {
8
- AUDIO_INPUT,
9
- VIDEO_INPUT,
10
- PEER_CONNECTION_STATE,
11
- MEDIA_TRACK_CONSTRAINT
12
- } from '../constants';
13
- import Config from '../config';
14
- import PeerConnectionManager from '../peer-connection-manager';
15
- import ReconnectionError from '../common/errors/reconnection';
16
- import MediaError from '../common/errors/media';
17
- import BrowserDetection from '../common/browser-detection';
18
-
19
- const {isBrowser} = BrowserDetection();
20
-
21
- /**
22
- * MediaDirection
23
- * @typedef {Object} MediaDirection
24
- * @property {boolean} sendAudio
25
- * @property {boolean} receiveAudio
26
- * @property {boolean} sendVideo
27
- * @property {boolean} receiveVideo
28
- * @property {boolean} sendShare
29
- * @property {boolean} receiveShare
30
- */
31
-
32
- /**
33
- * SendOptions
34
- * @typedef {Object} SendOptions
35
- * @property sendAudio
36
- * @property sendVideo
37
- * @property sendShare
38
- * @property isSharing
39
- * @property {Object} sharePreferences
40
- */
41
- /**
42
- *
43
- * @public
44
- * @export
45
- * Mimic browser APIs as "the ultimate browser".
46
- * Handles the quirks of each browser.
47
- * Extends and enhances adapter.js, i.e., the "media" file from the web client.
48
- */
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
- };
66
-
67
- /**
68
- * @param {RTCPeerConnection} peerConnection
69
- * @param {Object} meetingProperties
70
- * @param {string} meetingProperties.meetingId
71
- * @param {string} meetingProperties.remoteQualityLevel LOW|MEDIUM|HIGH
72
- * @returns {Promise}
73
- */
74
- Media.reconnectMedia = (peerConnection, {
75
- meetingId,
76
- remoteQualityLevel,
77
- enableRtx,
78
- enableExtmap
79
- }) => {
80
- if (peerConnection.connectionState === PEER_CONNECTION_STATE.CLOSED ||
81
- peerConnection.connectionState === PEER_CONNECTION_STATE.FAILED) {
82
- return Promise.reject(new ReconnectionError('Reinitiate peerconnection'));
83
- }
84
-
85
- return PeerConnectionManager.createOffer(peerConnection, {
86
- meetingId,
87
- remoteQualityLevel,
88
- enableRtx,
89
- enableExtmap
90
- });
91
- };
92
-
93
- /**
94
- * format the media array for send
95
- * @param {String} mediaId
96
- * @param {Boolean} audioMuted
97
- * @param {Boolean} videoMuted
98
- * @returns {Array} medias
99
- */
100
- Media.generateLocalMedias = (mediaId, audioMuted, videoMuted) => {
101
- if (mediaId) {
102
- return [
103
- {
104
- localSdp: JSON.stringify({
105
- audioMuted,
106
- videoMuted
107
- }),
108
- mediaId
109
- }
110
- ];
111
- }
112
-
113
- return [];
114
- };
115
-
116
- /**
117
- * make a browser call to get the media
118
- * @param {SendOptions} options
119
- * @param {Object} config SDK Configuration for meetings plugin
120
- * @returns {Promise}
121
- */
122
- Media.getLocalMedia = (options, config) => {
123
- const {
124
- sendAudio, sendVideo, sendShare, sharePreferences, isSharing
125
- } = options;
126
-
127
- if (sendAudio || sendVideo) {
128
- return Media.getMedia(sendAudio, sendVideo, config);
129
- }
130
-
131
- if (sendShare && !isSharing) {
132
- return Media.getDisplayMedia(
133
- {
134
- sendAudio: false,
135
- sendShare: true,
136
- sharePreferences
137
- },
138
- config
139
- );
140
- }
141
-
142
- return Promise.resolve(undefined);
143
- };
144
- /**
145
- * Returns the direction and tracks
146
- * @param {string} trackType type of track (audio/video)
147
- * @param {object} track tracks passed
148
- * @param {boolean} receiveTracks do you want to receive tracks from the remote side
149
- * @returns {Object} returns direction tracks to be added in transceiver
150
- */
151
- Media.checkTracks = (trackType, track, receiveTracks) => {
152
- const getDirection = (sendTracks, receiveTracks) => {
153
- if (sendTracks && receiveTracks) {
154
- return 'sendrecv';
155
- } if (sendTracks && !receiveTracks) {
156
- return 'sendonly';
157
- } if (!sendTracks && receiveTracks) {
158
- return 'recvonly';
159
- }
160
-
161
- return 'inactive';
162
- };
163
-
164
- if (track) {
165
- return {track, direction: getDirection(!!track, receiveTracks)};
166
- }
167
-
168
- return {track: trackType, direction: getDirection(!!track, receiveTracks)};
169
- };
170
- /**
171
- * creates peerconnection and attaches streams
172
- * @param {MediaDirection} mediaProperties
173
- * @param {Object} meetingProperties
174
- * @param {string} meetingProperties.meetingId
175
- * @param {string} meetingProperties.remoteQualityLevel LOW|MEDIUM|HIGH
176
- * @returns {Array} [peerConnection, ]
177
- */
178
- Media.attachMedia = (mediaProperties, {
179
- meetingId,
180
- remoteQualityLevel,
181
- enableRtx,
182
- enableExtmap
183
- }) => {
184
- const {
185
- mediaDirection,
186
- audioTrack,
187
- videoTrack,
188
- shareTrack,
189
- peerConnection
190
- } = mediaProperties;
191
-
192
- let result = null;
193
-
194
- // Add Transceiver for audio
195
- result = Media.checkTracks('audio', mediaDirection.sendAudio && audioTrack, mediaDirection.receiveAudio);
196
- peerConnection.audioTransceiver = peerConnection.addTransceiver(result.track, {direction: result.direction});
197
-
198
- // Add Transceiver for video
199
- result = Media.checkTracks('video', mediaDirection.sendVideo && videoTrack, mediaDirection.receiveVideo);
200
- peerConnection.videoTransceiver = peerConnection.addTransceiver(result.track, {direction: result.direction});
201
-
202
- // Add Transceiver for share
203
- result = Media.checkTracks('video', mediaDirection.sendShare && shareTrack, mediaDirection.receiveShare);
204
- peerConnection.shareTransceiver = peerConnection.addTransceiver(result.track, {direction: result.direction});
205
-
206
- peerConnection.onnegotiationneeded = (event) => {
207
- LoggerProxy.logger.info(`Media:index#attachMedia --> onnegotiationneeded#PeerConnection: ${event}`);
208
- };
209
-
210
- return PeerConnectionManager.createOffer(peerConnection, {
211
- meetingId,
212
- remoteQualityLevel,
213
- enableRtx,
214
- enableExtmap
215
- });
216
- };
217
-
218
- /**
219
- * updates all the media streams and creates a new media offer
220
- * @param {MediaDirection} mediaProperties
221
- * @param {Object} meetingProperties
222
- * @param {string} meetingProperties.meetingId
223
- * @param {string} meetingProperties.remoteQualityLevel LOW|MEDIUM|HIGH
224
- * @returns {Promise}
225
- */
226
- Media.updateMedia = (mediaProperties, {
227
- meetingId,
228
- remoteQualityLevel,
229
- enableRtx,
230
- enableExtmap
231
- }) => {
232
- const {
233
- mediaDirection,
234
- audioTrack,
235
- videoTrack,
236
- shareTrack,
237
- peerConnection
238
- } = mediaProperties;
239
-
240
- // update audio transceiver
241
- Media.setTrackOnTransceiver(peerConnection.audioTransceiver, {
242
- type: 'audio',
243
- track: audioTrack,
244
- sendTrack: mediaDirection.sendAudio && audioTrack,
245
- receiveTrack: mediaDirection.receiveAudio
246
- });
247
-
248
- // update video transceiver
249
- Media.setTrackOnTransceiver(peerConnection.videoTransceiver, {
250
- type: 'video',
251
- track: videoTrack,
252
- sendTrack: mediaDirection.sendVideo && videoTrack,
253
- receiveTrack: mediaDirection.receiveVideo
254
- });
255
-
256
- // update content transceiver
257
- Media.setTrackOnTransceiver(peerConnection.shareTransceiver, {
258
- type: 'video',
259
- track: shareTrack,
260
- sendTrack: mediaDirection.sendShare && shareTrack,
261
- receiveTrack: mediaDirection.receiveShare
262
- });
263
- peerConnection.onnegotiationneeded = (event) => {
264
- LoggerProxy.logger.info(`Media:index#updateMedia --> onnegotiationneeded#PeerConnection: ${event}`);
265
- };
266
-
267
- return PeerConnectionManager.createOffer(peerConnection, {
268
- meetingId,
269
- remoteQualityLevel,
270
- enableRtx,
271
- enableExtmap
272
- });
273
- };
274
-
275
- /**
276
- * @param {RTCRtpTransceiver} transceiver
277
- * @param {Object} options
278
- * @param {MediaStreamTrack} options.track
279
- * @returns {undefined}
280
- */
281
- Media.setTrackOnTransceiver = (transceiver, options) => {
282
- const {
283
- type, track, sendTrack, receiveTrack
284
- } = options;
285
-
286
- try {
287
- const result = Media.checkTracks(type, sendTrack && track, receiveTrack);
288
-
289
- transceiver.direction = result.direction;
290
- if (options.track) {
291
- transceiver.sender.replaceTrack(track);
292
- }
293
- }
294
- catch (e) {
295
- LoggerProxy.logger.error(`Media:index#setTrackOnTransceiver --> ${e}`);
296
- throw e;
297
- }
298
- };
299
-
300
- /**
301
- * creates a new offer
302
- * @param {Object} meetingProperties
303
- * @param {string} meetingProperties.meetingId
304
- * @param {string} meetingProperties.remoteQualityLevel LOW|MEDIUM|HIGH
305
- * @param {RTCPeerConnection} peerConnection
306
- * @param {RTCRtpTransceiver} transceiver
307
- * @param {Object} options see #Media.setTrackOnTransceiver
308
- * @returns {Promise}
309
- */
310
- Media.updateTransceiver = ({
311
- meetingId,
312
- remoteQualityLevel,
313
- enableRtx,
314
- enableExtmap
315
- }, peerConnection, transceiver, options) => {
316
- Media.setTrackOnTransceiver(transceiver, options);
317
-
318
- return PeerConnectionManager.createOffer(peerConnection, {
319
- meetingId,
320
- remoteQualityLevel,
321
- enableRtx,
322
- enableExtmap
323
- });
324
- };
325
-
326
- /**
327
- * generates share streams
328
- * @param {Object} options parameter
329
- * @param {Boolean} options.sendAudio send audio from the display share
330
- * @param {Boolean} options.sendShare send video from the display share
331
- * @param {Object} options.sharePreferences
332
- * @param {MediaTrackConstraints} options.sharePreferences.shareConstraints constraints to apply to video
333
- * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/MediaTrackConstraints}
334
- * @param {Boolean} options.sharePreferences.highFrameRate if shareConstraints isn't provided, set default values based off of this boolean
335
- * @param {Object} config SDK Configuration for meetings plugin
336
- * @returns {Promise.<MediaStream>}
337
- */
338
- Media.getDisplayMedia = (options, config = {}) => {
339
- // SDK screen share resolution settings from Webex.init
340
- const customResolution = config.screenResolution || {};
341
- // user defined screen share frame rate
342
- const customShareFrameRate = config.screenFrameRate || null;
343
- // user defined share preferences
344
- const hasSharePreferences = options.sharePreferences;
345
- const hasCustomConstraints = hasSharePreferences && hasSharePreferences.shareConstraints;
346
- const hasHighFrameRate = hasSharePreferences && hasSharePreferences.highFrameRate;
347
- const {
348
- screenResolution,
349
- resolution,
350
- videoShareFrameRate,
351
- screenFrameRate,
352
- aspectRatio
353
- } = Config.meetings;
354
-
355
- let shareConstraints = {
356
- cursor: MEDIA_TRACK_CONSTRAINT.CURSOR.AWLAYS,
357
- aspectRatio
358
- };
359
-
360
- if (hasCustomConstraints) {
361
- shareConstraints = hasSharePreferences.shareConstraints;
362
- }
363
- else if (hasHighFrameRate) {
364
- shareConstraints = {
365
- ...shareConstraints,
366
- frameRate: videoShareFrameRate,
367
- height: resolution.idealHeight,
368
- width: resolution.idealWidth,
369
- ...config.resolution
370
- };
371
- }
372
- else {
373
- shareConstraints = {
374
- ...shareConstraints,
375
- frameRate: customShareFrameRate || screenFrameRate,
376
- height: customResolution.idealHeight || screenResolution.idealHeight,
377
- width: customResolution.idealWidth || screenResolution.idealWidth,
378
- ...config.screenResolution
379
- };
380
- }
381
-
382
- // chrome and webkit based browsers (edge, safari) automatically adjust everything
383
- // and we have noticed higher quality with those browser types
384
- // firefox specifically has some issues with resolution and frame rate decision making
385
- // so we are making it optional and configurable (with defaults) for firefox
386
- // to have higher quality, and for developers to control the values
387
- // eventually we may have to add the same functionality to chrome, OR conversely, get to with firefox
388
-
389
-
390
- if (isBrowser('firefox')) {
391
- const mediaConfig = {
392
- audio: options.sendAudio,
393
- video: options.sendShare
394
- };
395
-
396
-
397
- return navigator.mediaDevices.getDisplayMedia({audio: options.sendAudio, video: mediaConfig})
398
- .then((stream) => {
399
- if (options.sendShare && stream.getVideoTracks().length > 0) {
400
- // Firefox has a bug with the spec where changing in the height and width only happens
401
- // after we get the inital tracks
402
- // https://bugzilla.mozilla.org/show_bug.cgi?id=1321221
403
- stream.getVideoTracks()[0].applyConstraints(shareConstraints);
404
- }
405
-
406
-
407
- return stream;
408
- });
409
- }
410
-
411
- const getDisplayMediaParams = {video: options.sendShare ? shareConstraints : false};
412
-
413
- // safari doesn't support sending screen share audio
414
- // https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getDisplayMedia
415
- if (options.sendAudio && isBrowser('safari')) {
416
- getDisplayMediaParams.audio = options.sendAudio;
417
- }
418
-
419
- return navigator.mediaDevices.getDisplayMedia(getDisplayMediaParams);
420
- };
421
-
422
- /**
423
- * generates audio and video using constraints (often called after getSupportedDevices)
424
- * @param {Object|Boolean} audio gum constraints
425
- * @param {Object|Boolean} video gum constraints
426
- * @param {Object} config SDK Configuration for meetings plugin
427
- * @returns {Object} {streams}
428
- */
429
- Media.getMedia = (audio, video, config) => {
430
- const defaultWidth = {ideal: config.resolution.idealWidth, max: config.resolution.maxWidth};
431
- const defaultHeight = {ideal: config.resolution.idealHeight, max: config.resolution.maxHeight};
432
- const mediaConfig = {
433
- audio,
434
- // TODO: Remove temporary workaround once Firefox fixes low constraint issues
435
- // eslint-disable-next-line no-nested-ternary
436
- video: video ?
437
- isBrowser('firefox') && video.width && video.width.max === 320 ?
438
- {
439
- deviceId: video.deviceId ? video.deviceId : undefined,
440
- width: 320,
441
- height: 180
442
- } :
443
- {
444
- deviceId: video.deviceId ? video.deviceId : undefined,
445
- width: video.width ? video.width : defaultWidth,
446
- height: video.height ? video.height : defaultHeight
447
- } :
448
- false,
449
- fake: process.env.NODE_ENV === 'test' // Special case to get fake media for Firefox browser for testing
450
- };
451
-
452
- return navigator.mediaDevices
453
- .getUserMedia(mediaConfig)
454
- .catch((err) => {
455
- const logPath = 'Media:index#getMedia --> navigator.mediaDevices.getUserMedia';
456
-
457
- LoggerProxy.logger.error(`${logPath} failed - ${err} (${err.constraint})`);
458
- throw err;
459
- });
460
- };
461
-
462
- /**
463
- * Checks if the machine has at least one audio or video device (Dont use this for screen share)
464
- * @param {object} [options]
465
- * {
466
- * sendAudio: true/false,
467
- * sendVideo: true/false
468
- * }
469
- * @returns {Object} {
470
- * sendAudio: true/false,
471
- * sendVideo: true/false
472
- *}
473
- */
474
- Media.getSupportedDevice = ({sendAudio, sendVideo}) =>
475
- Promise.resolve().then(() => {
476
- if (!navigator.mediaDevices || navigator.mediaDevices.enumerateDevices === undefined) {
477
- return {
478
- sendAudio: false,
479
- sendVideo: false
480
- };
481
- }
482
-
483
- return navigator.mediaDevices.enumerateDevices().then((devices) => {
484
- const supported = {
485
- audio: devices.filter((device) => device.kind === AUDIO_INPUT).length > 0,
486
- video: devices.filter((device) => device.kind === VIDEO_INPUT).length > 0
487
- };
488
-
489
- return {
490
- sendAudio: supported.audio && sendAudio,
491
- sendVideo: supported.video && sendVideo
492
- };
493
- });
494
- });
495
-
496
- /**
497
- * proxy to browser navigator.mediaDevices.enumerateDevices()
498
- * @returns {Promise}
499
- */
500
- Media.getDevices = () => {
501
- if (navigator && navigator.mediaDevices && navigator.mediaDevices.enumerateDevices) {
502
- return navigator.mediaDevices.enumerateDevices();
503
- }
504
-
505
- return Promise.reject(new MediaError('enumerateDevices not supported.'));
506
- };
507
-
508
- /**
509
- *
510
- * Toggle a specific stream
511
- * noop as of now, does nothing
512
- * @returns {null}
513
- */
514
- Media.toggleStream = () => {};
515
-
516
- /**
517
- * Stop input stream
518
- * @param {MediaTrack} track A media stream
519
- * @returns {null}
520
- */
521
- Media.stopTracks = (track) => {
522
- if (!track) {
523
- return Promise.resolve();
524
- }
525
-
526
- return Promise.resolve().then(() => {
527
- if (track && track.stop) {
528
- try {
529
- track.stop();
530
- }
531
- catch (e) {
532
- LoggerProxy.logger.error(`Media:index#stopTracks --> Unable to stop the track with state ${track.readyState}, error: ${e}`);
533
- }
534
- }
535
- });
536
- };
537
-
538
- /**
539
- *
540
- * Stop input stream
541
- * @param {Stream} stream A media stream
542
- * @returns {null}
543
- * @deprecated after v1.89.3
544
- */
545
- Media.stopStream = (stream) => {
546
- LoggerProxy.logger.warn('Media:index#stopStream --> [DEPRECATION WARNING]: stopStream has been deprecated after v1.89.3');
547
- if (!stream) {
548
- return Promise.resolve();
549
- }
550
-
551
- /*
552
- * To release local media
553
- * 1) Chrome requires all tracks to be stopped (stream.stop got deprecated)
554
- * 2) Firefox requires the stream to be stopped
555
- */
556
- return Promise.resolve().then(() => {
557
- if (stream.getTracks) {
558
- stream.getTracks().forEach((track) => {
559
- track.stop();
560
- });
561
- }
562
- else if (stream.stop) {
563
- stream.stop();
564
- }
565
- });
566
- };
567
-
568
- /**
569
- * generates streams for audio video and share
570
- * @param {object} mediaSetting parameter
571
- * @param {Object} mediaSetting.sendAudio sendAudio: {Boolean} sendAudio constraints
572
- * @param {Object} mediaSetting.sendVideo sendVideo: {Boolean} sendVideo constraints
573
- * @param {Object} mediaSetting.sendShare sendShare: {Boolean} sendShare constraints
574
- * @param {Object} mediaSetting.isSharing isSharing: {Boolean} isSharing constraints
575
- * @param {Object} audioVideo parameter
576
- * @param {Object} audioVideo.audio {deviceId: {String}}
577
- * @param {Object} audioVideo.video {deviceId: {String}}
578
- * @param {Object} sharePreferences parameter
579
- * @param {Object} sharePreferences.shareConstraints parameter
580
- * @param {Boolean} sharePreferences.highFrameRate parameter
581
- * @param {Object} config SDK Config
582
- * @returns {Array} [localStream, shareStream]
583
- */
584
- Media.getUserMedia = (mediaSetting, audioVideo, sharePreferences, config) => Media.getLocalMedia({
585
- sendAudio: mediaSetting.sendAudio ? audioVideo.audio || mediaSetting.sendAudio : false,
586
- sendVideo: mediaSetting.sendVideo ? audioVideo.video || mediaSetting.sendVideo : false
587
- }, config).then((localStream) => Media.getLocalMedia({
588
- sendShare: mediaSetting.sendShare,
589
- isSharing: mediaSetting.isSharing,
590
- sharePreferences
591
- }, config).then((shareStream) => [localStream, shareStream]));
592
-
593
- export default Media;
package/src/media/util.js DELETED
@@ -1,38 +0,0 @@
1
- /* globals MediaStream */
2
- import window from 'global/window';
3
-
4
- import BrowserDetection from '../common/browser-detection';
5
- import LoggerProxy from '../common/logs/logger-proxy';
6
-
7
- const {isBrowser} = BrowserDetection();
8
-
9
- const MediaUtil = {};
10
-
11
- MediaUtil.createPeerConnection = (turnServerInfo) => {
12
- const config = {iceServers: []};
13
-
14
- if (turnServerInfo) {
15
- config.iceServers.push({
16
- urls: turnServerInfo.url,
17
- username: turnServerInfo.username || '',
18
- credential: turnServerInfo.password || ''
19
- });
20
- }
21
- if (isBrowser('firefox')) {
22
- config.bundlePolicy = 'max-compat';
23
- }
24
-
25
- return new window.RTCPeerConnection(config);
26
- };
27
-
28
-
29
- MediaUtil.createMediaStream = (tracks) => {
30
- if (!tracks) {
31
- LoggerProxy.logger.error('Media:util#createMediaStream --> Tracks don\'t exist');
32
- }
33
- const filtredTracks = tracks.filter((element) => !!element);
34
-
35
- return new MediaStream(filtredTracks);
36
- };
37
-
38
- export default MediaUtil;