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

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 (629) hide show
  1. package/README.md +58 -8
  2. package/UPGRADING.md +9 -9
  3. package/browsers.js +19 -24
  4. package/dist/annotation/annotation.types.js +7 -0
  5. package/dist/annotation/annotation.types.js.map +1 -0
  6. package/dist/annotation/constants.js +49 -0
  7. package/dist/annotation/constants.js.map +1 -0
  8. package/dist/annotation/index.js +342 -0
  9. package/dist/annotation/index.js.map +1 -0
  10. package/dist/breakouts/breakout.js +216 -0
  11. package/dist/breakouts/breakout.js.map +1 -0
  12. package/dist/breakouts/collection.js +23 -0
  13. package/dist/breakouts/collection.js.map +1 -0
  14. package/dist/breakouts/edit-lock-error.js +52 -0
  15. package/dist/breakouts/edit-lock-error.js.map +1 -0
  16. package/dist/breakouts/events.js +45 -0
  17. package/dist/breakouts/events.js.map +1 -0
  18. package/dist/breakouts/index.js +1048 -0
  19. package/dist/breakouts/index.js.map +1 -0
  20. package/dist/breakouts/request.js +78 -0
  21. package/dist/breakouts/request.js.map +1 -0
  22. package/dist/breakouts/utils.js +67 -0
  23. package/dist/breakouts/utils.js.map +1 -0
  24. package/dist/common/browser-detection.js +1 -20
  25. package/dist/common/browser-detection.js.map +1 -1
  26. package/dist/common/collection.js +5 -20
  27. package/dist/common/collection.js.map +1 -1
  28. package/dist/common/config.js +0 -7
  29. package/dist/common/config.js.map +1 -1
  30. package/dist/common/errors/captcha-error.js +10 -24
  31. package/dist/common/errors/captcha-error.js.map +1 -1
  32. package/dist/common/errors/intent-to-join.js +11 -24
  33. package/dist/common/errors/intent-to-join.js.map +1 -1
  34. package/dist/common/errors/join-meeting.js +12 -25
  35. package/dist/common/errors/join-meeting.js.map +1 -1
  36. package/dist/common/errors/media.js +10 -24
  37. package/dist/common/errors/media.js.map +1 -1
  38. package/dist/common/errors/no-meeting-info.js +51 -0
  39. package/dist/common/errors/no-meeting-info.js.map +1 -0
  40. package/dist/common/errors/parameter.js +5 -33
  41. package/dist/common/errors/parameter.js.map +1 -1
  42. package/dist/common/errors/password-error.js +10 -24
  43. package/dist/common/errors/password-error.js.map +1 -1
  44. package/dist/common/errors/permission.js +9 -23
  45. package/dist/common/errors/permission.js.map +1 -1
  46. package/dist/common/errors/reclaim-host-role-errors.js +158 -0
  47. package/dist/common/errors/reclaim-host-role-errors.js.map +1 -0
  48. package/dist/common/errors/reconnection-in-progress.js +0 -17
  49. package/dist/common/errors/reconnection-in-progress.js.map +1 -1
  50. package/dist/common/errors/reconnection.js +10 -24
  51. package/dist/common/errors/reconnection.js.map +1 -1
  52. package/dist/common/errors/stats.js +10 -24
  53. package/dist/common/errors/stats.js.map +1 -1
  54. package/dist/common/errors/webex-errors.js +54 -48
  55. package/dist/common/errors/webex-errors.js.map +1 -1
  56. package/dist/common/errors/webex-meetings-error.js +5 -25
  57. package/dist/common/errors/webex-meetings-error.js.map +1 -1
  58. package/dist/common/events/events-scope.js +0 -22
  59. package/dist/common/events/events-scope.js.map +1 -1
  60. package/dist/common/events/events.js +0 -23
  61. package/dist/common/events/events.js.map +1 -1
  62. package/dist/common/events/trigger-proxy.js +0 -12
  63. package/dist/common/events/trigger-proxy.js.map +1 -1
  64. package/dist/common/events/util.js +0 -15
  65. package/dist/common/events/util.js.map +1 -1
  66. package/dist/common/logs/logger-config.js +0 -4
  67. package/dist/common/logs/logger-config.js.map +1 -1
  68. package/dist/common/logs/logger-proxy.js +1 -8
  69. package/dist/common/logs/logger-proxy.js.map +1 -1
  70. package/dist/common/logs/request.js +41 -60
  71. package/dist/common/logs/request.js.map +1 -1
  72. package/dist/common/queue.js +28 -23
  73. package/dist/common/queue.js.map +1 -1
  74. package/dist/config.js +11 -15
  75. package/dist/config.js.map +1 -1
  76. package/dist/constants.js +347 -74
  77. package/dist/constants.js.map +1 -1
  78. package/dist/controls-options-manager/constants.js +14 -0
  79. package/dist/controls-options-manager/constants.js.map +1 -0
  80. package/dist/controls-options-manager/enums.js +27 -0
  81. package/dist/controls-options-manager/enums.js.map +1 -0
  82. package/dist/controls-options-manager/index.js +297 -0
  83. package/dist/controls-options-manager/index.js.map +1 -0
  84. package/dist/controls-options-manager/types.js +7 -0
  85. package/dist/controls-options-manager/types.js.map +1 -0
  86. package/dist/controls-options-manager/util.js +319 -0
  87. package/dist/controls-options-manager/util.js.map +1 -0
  88. package/dist/index.js +125 -18
  89. package/dist/index.js.map +1 -1
  90. package/dist/interceptors/index.js +15 -0
  91. package/dist/interceptors/index.js.map +1 -0
  92. package/dist/interceptors/locusRetry.js +93 -0
  93. package/dist/interceptors/locusRetry.js.map +1 -0
  94. package/dist/interpretation/collection.js +23 -0
  95. package/dist/interpretation/collection.js.map +1 -0
  96. package/dist/interpretation/index.js +380 -0
  97. package/dist/interpretation/index.js.map +1 -0
  98. package/dist/interpretation/siLanguage.js +25 -0
  99. package/dist/interpretation/siLanguage.js.map +1 -0
  100. package/dist/locus-info/controlsUtils.js +101 -29
  101. package/dist/locus-info/controlsUtils.js.map +1 -1
  102. package/dist/locus-info/embeddedAppsUtils.js +3 -26
  103. package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
  104. package/dist/locus-info/fullState.js +0 -15
  105. package/dist/locus-info/fullState.js.map +1 -1
  106. package/dist/locus-info/hostUtils.js +4 -12
  107. package/dist/locus-info/hostUtils.js.map +1 -1
  108. package/dist/locus-info/index.js +564 -246
  109. package/dist/locus-info/index.js.map +1 -1
  110. package/dist/locus-info/infoUtils.js +10 -38
  111. package/dist/locus-info/infoUtils.js.map +1 -1
  112. package/dist/locus-info/mediaSharesUtils.js +82 -38
  113. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  114. package/dist/locus-info/parser.js +314 -163
  115. package/dist/locus-info/parser.js.map +1 -1
  116. package/dist/locus-info/selfUtils.js +110 -92
  117. package/dist/locus-info/selfUtils.js.map +1 -1
  118. package/dist/media/index.js +107 -231
  119. package/dist/media/index.js.map +1 -1
  120. package/dist/media/properties.js +137 -222
  121. package/dist/media/properties.js.map +1 -1
  122. package/dist/media/util.js +2 -9
  123. package/dist/media/util.js.map +1 -1
  124. package/dist/mediaQualityMetrics/config.js +316 -501
  125. package/dist/mediaQualityMetrics/config.js.map +1 -1
  126. package/dist/meeting/in-meeting-actions.js +97 -14
  127. package/dist/meeting/in-meeting-actions.js.map +1 -1
  128. package/dist/meeting/index.js +5311 -3871
  129. package/dist/meeting/index.js.map +1 -1
  130. package/dist/meeting/locusMediaRequest.js +292 -0
  131. package/dist/meeting/locusMediaRequest.js.map +1 -0
  132. package/dist/meeting/muteState.js +260 -183
  133. package/dist/meeting/muteState.js.map +1 -1
  134. package/dist/meeting/request.js +421 -347
  135. package/dist/meeting/request.js.map +1 -1
  136. package/dist/meeting/request.type.js +7 -0
  137. package/dist/meeting/request.type.js.map +1 -0
  138. package/dist/meeting/state.js +21 -31
  139. package/dist/meeting/state.js.map +1 -1
  140. package/dist/meeting/util.js +672 -585
  141. package/dist/meeting/util.js.map +1 -1
  142. package/dist/meeting/voicea-meeting.js +172 -0
  143. package/dist/meeting/voicea-meeting.js.map +1 -0
  144. package/dist/meeting-info/collection.js +6 -25
  145. package/dist/meeting-info/collection.js.map +1 -1
  146. package/dist/meeting-info/index.js +87 -39
  147. package/dist/meeting-info/index.js.map +1 -1
  148. package/dist/meeting-info/meeting-info-v2.js +352 -283
  149. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  150. package/dist/meeting-info/request.js +3 -15
  151. package/dist/meeting-info/request.js.map +1 -1
  152. package/dist/meeting-info/util.js +99 -183
  153. package/dist/meeting-info/util.js.map +1 -1
  154. package/dist/meeting-info/utilv2.js +147 -234
  155. package/dist/meeting-info/utilv2.js.map +1 -1
  156. package/dist/meetings/collection.js +43 -19
  157. package/dist/meetings/collection.js.map +1 -1
  158. package/dist/meetings/index.js +895 -600
  159. package/dist/meetings/index.js.map +1 -1
  160. package/dist/meetings/meetings.types.js +7 -0
  161. package/dist/meetings/meetings.types.js.map +1 -0
  162. package/dist/meetings/request.js +26 -41
  163. package/dist/meetings/request.js.map +1 -1
  164. package/dist/meetings/util.js +184 -157
  165. package/dist/meetings/util.js.map +1 -1
  166. package/dist/member/index.js +134 -85
  167. package/dist/member/index.js.map +1 -1
  168. package/dist/member/types.js +25 -0
  169. package/dist/member/types.js.map +1 -0
  170. package/dist/member/util.js +158 -88
  171. package/dist/member/util.js.map +1 -1
  172. package/dist/members/collection.js +13 -12
  173. package/dist/members/collection.js.map +1 -1
  174. package/dist/members/index.js +194 -204
  175. package/dist/members/index.js.map +1 -1
  176. package/dist/members/request.js +113 -68
  177. package/dist/members/request.js.map +1 -1
  178. package/dist/members/types.js +15 -0
  179. package/dist/members/types.js.map +1 -0
  180. package/dist/members/util.js +324 -259
  181. package/dist/members/util.js.map +1 -1
  182. package/dist/metrics/constants.js +19 -7
  183. package/dist/metrics/constants.js.map +1 -1
  184. package/dist/metrics/index.js +11 -558
  185. package/dist/metrics/index.js.map +1 -1
  186. package/dist/multistream/mediaRequestManager.js +263 -50
  187. package/dist/multistream/mediaRequestManager.js.map +1 -1
  188. package/dist/multistream/receiveSlot.js +58 -65
  189. package/dist/multistream/receiveSlot.js.map +1 -1
  190. package/dist/multistream/receiveSlotManager.js +76 -95
  191. package/dist/multistream/receiveSlotManager.js.map +1 -1
  192. package/dist/multistream/remoteMedia.js +62 -76
  193. package/dist/multistream/remoteMedia.js.map +1 -1
  194. package/dist/multistream/remoteMediaGroup.js +82 -45
  195. package/dist/multistream/remoteMediaGroup.js.map +1 -1
  196. package/dist/multistream/remoteMediaManager.js +657 -448
  197. package/dist/multistream/remoteMediaManager.js.map +1 -1
  198. package/dist/multistream/sendSlotManager.js +255 -0
  199. package/dist/multistream/sendSlotManager.js.map +1 -0
  200. package/dist/networkQualityMonitor/index.js +40 -59
  201. package/dist/networkQualityMonitor/index.js.map +1 -1
  202. package/dist/personal-meeting-room/index.js +21 -45
  203. package/dist/personal-meeting-room/index.js.map +1 -1
  204. package/dist/personal-meeting-room/request.js +1 -31
  205. package/dist/personal-meeting-room/request.js.map +1 -1
  206. package/dist/personal-meeting-room/util.js +0 -13
  207. package/dist/personal-meeting-room/util.js.map +1 -1
  208. package/dist/reachability/clusterReachability.js +356 -0
  209. package/dist/reachability/clusterReachability.js.map +1 -0
  210. package/dist/reachability/index.js +297 -460
  211. package/dist/reachability/index.js.map +1 -1
  212. package/dist/reachability/request.js +20 -26
  213. package/dist/reachability/request.js.map +1 -1
  214. package/dist/reachability/util.js +29 -0
  215. package/dist/reachability/util.js.map +1 -0
  216. package/dist/reactions/constants.js +13 -0
  217. package/dist/reactions/constants.js.map +1 -0
  218. package/dist/reactions/reactions.js +109 -0
  219. package/dist/reactions/reactions.js.map +1 -0
  220. package/dist/reactions/reactions.type.js +36 -0
  221. package/dist/reactions/reactions.type.js.map +1 -0
  222. package/dist/reconnection-manager/index.js +413 -483
  223. package/dist/reconnection-manager/index.js.map +1 -1
  224. package/dist/recording-controller/enums.js +17 -0
  225. package/dist/recording-controller/enums.js.map +1 -0
  226. package/dist/recording-controller/index.js +362 -0
  227. package/dist/recording-controller/index.js.map +1 -0
  228. package/dist/recording-controller/util.js +64 -0
  229. package/dist/recording-controller/util.js.map +1 -0
  230. package/dist/roap/index.js +102 -86
  231. package/dist/roap/index.js.map +1 -1
  232. package/dist/roap/request.js +131 -135
  233. package/dist/roap/request.js.map +1 -1
  234. package/dist/roap/turnDiscovery.js +437 -116
  235. package/dist/roap/turnDiscovery.js.map +1 -1
  236. package/dist/rtcMetrics/constants.js +12 -0
  237. package/dist/rtcMetrics/constants.js.map +1 -0
  238. package/dist/rtcMetrics/index.js +179 -0
  239. package/dist/rtcMetrics/index.js.map +1 -0
  240. package/dist/statsAnalyzer/global.js +1 -95
  241. package/dist/statsAnalyzer/global.js.map +1 -1
  242. package/dist/statsAnalyzer/index.js +557 -583
  243. package/dist/statsAnalyzer/index.js.map +1 -1
  244. package/dist/statsAnalyzer/mqaUtil.js +326 -130
  245. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  246. package/dist/transcription/index.js +22 -47
  247. package/dist/transcription/index.js.map +1 -1
  248. package/dist/types/annotation/annotation.types.d.ts +42 -0
  249. package/dist/types/annotation/constants.d.ts +31 -0
  250. package/dist/types/annotation/index.d.ts +117 -0
  251. package/dist/types/breakouts/breakout.d.ts +8 -0
  252. package/dist/types/breakouts/collection.d.ts +5 -0
  253. package/dist/types/breakouts/edit-lock-error.d.ts +15 -0
  254. package/dist/types/breakouts/events.d.ts +8 -0
  255. package/dist/types/breakouts/index.d.ts +5 -0
  256. package/dist/types/breakouts/request.d.ts +22 -0
  257. package/dist/types/breakouts/utils.d.ts +15 -0
  258. package/dist/types/common/browser-detection.d.ts +9 -0
  259. package/dist/types/common/collection.d.ts +48 -0
  260. package/dist/types/common/config.d.ts +2 -0
  261. package/dist/types/common/errors/captcha-error.d.ts +15 -0
  262. package/dist/types/common/errors/intent-to-join.d.ts +16 -0
  263. package/dist/types/common/errors/join-meeting.d.ts +17 -0
  264. package/dist/types/common/errors/media.d.ts +15 -0
  265. package/dist/types/common/errors/no-meeting-info.d.ts +14 -0
  266. package/dist/types/common/errors/parameter.d.ts +15 -0
  267. package/dist/types/common/errors/password-error.d.ts +15 -0
  268. package/dist/types/common/errors/permission.d.ts +14 -0
  269. package/dist/types/common/errors/reclaim-host-role-errors.d.ts +60 -0
  270. package/dist/types/common/errors/reconnection-in-progress.d.ts +9 -0
  271. package/dist/types/common/errors/reconnection.d.ts +15 -0
  272. package/dist/types/common/errors/stats.d.ts +15 -0
  273. package/dist/types/common/errors/webex-errors.d.ts +93 -0
  274. package/dist/types/common/errors/webex-meetings-error.d.ts +20 -0
  275. package/dist/types/common/events/events-scope.d.ts +17 -0
  276. package/dist/types/common/events/events.d.ts +12 -0
  277. package/dist/types/common/events/trigger-proxy.d.ts +2 -0
  278. package/dist/types/common/events/util.d.ts +2 -0
  279. package/dist/types/common/logs/logger-config.d.ts +2 -0
  280. package/dist/types/common/logs/logger-proxy.d.ts +2 -0
  281. package/dist/types/common/logs/request.d.ts +36 -0
  282. package/dist/types/common/queue.d.ts +34 -0
  283. package/dist/types/config.d.ts +72 -0
  284. package/dist/types/constants.d.ts +1088 -0
  285. package/dist/types/controls-options-manager/constants.d.ts +4 -0
  286. package/dist/types/controls-options-manager/enums.d.ts +15 -0
  287. package/dist/types/controls-options-manager/index.d.ts +136 -0
  288. package/dist/types/controls-options-manager/types.d.ts +43 -0
  289. package/dist/types/controls-options-manager/util.d.ts +1 -0
  290. package/dist/types/index.d.ts +7 -0
  291. package/dist/types/interceptors/index.d.ts +2 -0
  292. package/dist/types/interceptors/locusRetry.d.ts +27 -0
  293. package/dist/types/interpretation/collection.d.ts +5 -0
  294. package/dist/types/interpretation/index.d.ts +5 -0
  295. package/dist/types/interpretation/siLanguage.d.ts +5 -0
  296. package/dist/types/locus-info/controlsUtils.d.ts +2 -0
  297. package/dist/types/locus-info/embeddedAppsUtils.d.ts +2 -0
  298. package/dist/types/locus-info/fullState.d.ts +2 -0
  299. package/dist/types/locus-info/hostUtils.d.ts +2 -0
  300. package/dist/types/locus-info/index.d.ts +322 -0
  301. package/dist/types/locus-info/infoUtils.d.ts +2 -0
  302. package/dist/types/locus-info/mediaSharesUtils.d.ts +2 -0
  303. package/dist/types/locus-info/parser.d.ts +272 -0
  304. package/dist/types/locus-info/selfUtils.d.ts +2 -0
  305. package/dist/types/media/index.d.ts +34 -0
  306. package/dist/types/media/properties.d.ts +93 -0
  307. package/dist/types/media/util.d.ts +2 -0
  308. package/dist/types/mediaQualityMetrics/config.d.ts +241 -0
  309. package/dist/types/meeting/in-meeting-actions.d.ts +167 -0
  310. package/dist/types/meeting/index.d.ts +1824 -0
  311. package/dist/types/meeting/locusMediaRequest.d.ts +74 -0
  312. package/dist/types/meeting/muteState.d.ts +178 -0
  313. package/dist/types/meeting/request.d.ts +293 -0
  314. package/dist/types/meeting/request.type.d.ts +11 -0
  315. package/dist/types/meeting/state.d.ts +9 -0
  316. package/dist/types/meeting/util.d.ts +118 -0
  317. package/dist/types/meeting/voicea-meeting.d.ts +16 -0
  318. package/dist/types/meeting-info/collection.d.ts +20 -0
  319. package/dist/types/meeting-info/index.d.ts +69 -0
  320. package/dist/types/meeting-info/meeting-info-v2.d.ts +123 -0
  321. package/dist/types/meeting-info/request.d.ts +22 -0
  322. package/dist/types/meeting-info/util.d.ts +2 -0
  323. package/dist/types/meeting-info/utilv2.d.ts +2 -0
  324. package/dist/types/meetings/collection.d.ts +40 -0
  325. package/dist/types/meetings/index.d.ts +389 -0
  326. package/dist/types/meetings/meetings.types.d.ts +4 -0
  327. package/dist/types/meetings/request.d.ts +27 -0
  328. package/dist/types/meetings/util.d.ts +18 -0
  329. package/dist/types/member/index.d.ts +160 -0
  330. package/dist/types/member/types.d.ts +32 -0
  331. package/dist/types/member/util.d.ts +2 -0
  332. package/dist/types/members/collection.d.ts +29 -0
  333. package/dist/types/members/index.d.ts +353 -0
  334. package/dist/types/members/request.d.ts +114 -0
  335. package/dist/types/members/types.d.ts +25 -0
  336. package/dist/types/members/util.d.ts +215 -0
  337. package/dist/types/metrics/constants.d.ts +70 -0
  338. package/dist/types/metrics/index.d.ts +45 -0
  339. package/dist/types/multistream/mediaRequestManager.d.ts +120 -0
  340. package/dist/types/multistream/receiveSlot.d.ts +68 -0
  341. package/dist/types/multistream/receiveSlotManager.d.ts +56 -0
  342. package/dist/types/multistream/remoteMedia.d.ts +72 -0
  343. package/dist/types/multistream/remoteMediaGroup.d.ts +49 -0
  344. package/dist/types/multistream/remoteMediaManager.d.ts +301 -0
  345. package/dist/types/multistream/sendSlotManager.d.ts +70 -0
  346. package/dist/types/networkQualityMonitor/index.d.ts +70 -0
  347. package/dist/types/personal-meeting-room/index.d.ts +47 -0
  348. package/dist/types/personal-meeting-room/request.d.ts +14 -0
  349. package/dist/types/personal-meeting-room/util.d.ts +2 -0
  350. package/dist/types/reachability/clusterReachability.d.ts +109 -0
  351. package/dist/types/reachability/index.d.ts +105 -0
  352. package/dist/types/reachability/request.d.ts +39 -0
  353. package/dist/types/reachability/util.d.ts +8 -0
  354. package/dist/types/reactions/constants.d.ts +3 -0
  355. package/dist/types/reactions/reactions.d.ts +4 -0
  356. package/dist/types/reactions/reactions.type.d.ts +52 -0
  357. package/dist/types/reconnection-manager/index.d.ts +136 -0
  358. package/dist/types/recording-controller/enums.d.ts +7 -0
  359. package/dist/types/recording-controller/index.d.ts +207 -0
  360. package/dist/types/recording-controller/util.d.ts +14 -0
  361. package/dist/types/roap/index.d.ts +86 -0
  362. package/dist/types/roap/request.d.ts +39 -0
  363. package/dist/types/roap/turnDiscovery.d.ts +155 -0
  364. package/dist/types/rtcMetrics/constants.d.ts +4 -0
  365. package/dist/types/rtcMetrics/index.d.ts +61 -0
  366. package/dist/types/statsAnalyzer/global.d.ts +36 -0
  367. package/dist/types/statsAnalyzer/index.d.ts +217 -0
  368. package/dist/types/statsAnalyzer/mqaUtil.d.ts +48 -0
  369. package/dist/types/transcription/index.d.ts +64 -0
  370. package/dist/types/webinar/collection.d.ts +16 -0
  371. package/dist/types/webinar/index.d.ts +5 -0
  372. package/dist/webinar/collection.js +44 -0
  373. package/dist/webinar/collection.js.map +1 -0
  374. package/dist/webinar/index.js +69 -0
  375. package/dist/webinar/index.js.map +1 -0
  376. package/internal-README.md +7 -6
  377. package/package.json +30 -21
  378. package/src/annotation/annotation.types.ts +50 -0
  379. package/src/annotation/constants.ts +36 -0
  380. package/src/annotation/index.ts +328 -0
  381. package/src/breakouts/README.md +220 -0
  382. package/src/breakouts/breakout.ts +188 -0
  383. package/src/breakouts/collection.ts +19 -0
  384. package/src/breakouts/edit-lock-error.ts +25 -0
  385. package/src/breakouts/events.ts +56 -0
  386. package/src/breakouts/index.ts +925 -0
  387. package/src/breakouts/request.ts +55 -0
  388. package/src/breakouts/utils.ts +57 -0
  389. package/src/common/{browser-detection.js → browser-detection.ts} +9 -6
  390. package/src/common/collection.ts +9 -7
  391. package/src/common/{config.js → config.ts} +1 -1
  392. package/src/common/errors/{captcha-error.js → captcha-error.ts} +11 -7
  393. package/src/common/errors/{intent-to-join.js → intent-to-join.ts} +12 -7
  394. package/src/common/errors/{join-meeting.js → join-meeting.ts} +17 -8
  395. package/src/common/errors/{media.js → media.ts} +11 -7
  396. package/src/common/errors/no-meeting-info.ts +24 -0
  397. package/src/common/errors/parameter.ts +11 -7
  398. package/src/common/errors/{password-error.js → password-error.ts} +11 -7
  399. package/src/common/errors/{permission.js → permission.ts} +10 -6
  400. package/src/common/errors/reclaim-host-role-errors.ts +134 -0
  401. package/src/common/errors/{reconnection.js → reconnection.ts} +11 -7
  402. package/src/common/errors/{stats.js → stats.ts} +11 -7
  403. package/src/common/errors/{webex-errors.js → webex-errors.ts} +51 -8
  404. package/src/common/errors/{webex-meetings-error.js → webex-meetings-error.ts} +4 -2
  405. package/src/common/events/{events-scope.js → events-scope.ts} +6 -2
  406. package/src/common/events/{events.js → events.ts} +5 -1
  407. package/src/common/events/{trigger-proxy.js → trigger-proxy.ts} +9 -5
  408. package/src/common/events/{util.js → util.ts} +2 -3
  409. package/src/common/logs/{logger-config.js → logger-config.ts} +1 -2
  410. package/src/common/logs/logger-proxy.ts +44 -0
  411. package/src/common/logs/{request.js → request.ts} +26 -9
  412. package/src/common/queue.ts +22 -9
  413. package/src/{config.js → config.ts} +19 -21
  414. package/src/constants.ts +296 -27
  415. package/src/controls-options-manager/constants.ts +5 -0
  416. package/src/controls-options-manager/enums.ts +18 -0
  417. package/src/controls-options-manager/index.ts +278 -0
  418. package/src/controls-options-manager/types.ts +59 -0
  419. package/src/controls-options-manager/util.ts +300 -0
  420. package/src/index.ts +45 -0
  421. package/src/interceptors/index.ts +3 -0
  422. package/src/interceptors/locusRetry.ts +67 -0
  423. package/src/interpretation/README.md +60 -0
  424. package/src/interpretation/collection.ts +19 -0
  425. package/src/interpretation/index.ts +349 -0
  426. package/src/interpretation/siLanguage.ts +18 -0
  427. package/src/locus-info/controlsUtils.ts +222 -0
  428. package/src/locus-info/{embeddedAppsUtils.js → embeddedAppsUtils.ts} +5 -6
  429. package/src/locus-info/{fullState.js → fullState.ts} +16 -12
  430. package/src/locus-info/{hostUtils.js → hostUtils.ts} +9 -8
  431. package/src/locus-info/{index.js → index.ts} +561 -119
  432. package/src/locus-info/{infoUtils.js → infoUtils.ts} +29 -10
  433. package/src/locus-info/{mediaSharesUtils.js → mediaSharesUtils.ts} +97 -17
  434. package/src/locus-info/{parser.js → parser.ts} +303 -104
  435. package/src/locus-info/{selfUtils.js → selfUtils.ts} +199 -68
  436. package/src/media/index.ts +460 -0
  437. package/src/media/properties.ts +283 -0
  438. package/src/media/{util.js → util.ts} +2 -2
  439. package/src/mediaQualityMetrics/config.ts +249 -0
  440. package/src/meeting/in-meeting-actions.ts +199 -3
  441. package/src/meeting/index.ts +8494 -0
  442. package/src/meeting/locusMediaRequest.ts +313 -0
  443. package/src/meeting/muteState.ts +465 -0
  444. package/src/meeting/request.ts +912 -0
  445. package/src/meeting/request.type.ts +13 -0
  446. package/src/meeting/{state.js → state.ts} +50 -35
  447. package/src/meeting/util.ts +799 -0
  448. package/src/meeting/voicea-meeting.ts +122 -0
  449. package/src/meeting-info/{collection.js → collection.ts} +6 -2
  450. package/src/meeting-info/index.ts +210 -0
  451. package/src/meeting-info/meeting-info-v2.ts +423 -0
  452. package/src/meeting-info/{request.js → request.ts} +14 -4
  453. package/src/meeting-info/{util.js → util.ts} +70 -58
  454. package/src/meeting-info/{utilv2.js → utilv2.ts} +99 -82
  455. package/src/meetings/collection.ts +76 -0
  456. package/src/meetings/index.ts +1539 -0
  457. package/src/meetings/meetings.types.ts +12 -0
  458. package/src/meetings/{request.js → request.ts} +34 -25
  459. package/src/meetings/{util.js → util.ts} +133 -38
  460. package/src/member/{index.js → index.ts} +159 -56
  461. package/src/member/types.ts +38 -0
  462. package/src/member/util.ts +397 -0
  463. package/src/members/{collection.js → collection.ts} +10 -2
  464. package/src/members/{index.js → index.ts} +351 -146
  465. package/src/members/request.ts +255 -0
  466. package/src/members/types.ts +29 -0
  467. package/src/members/util.ts +353 -0
  468. package/src/metrics/{constants.js → constants.ts} +17 -6
  469. package/src/metrics/index.ts +73 -0
  470. package/src/multistream/mediaRequestManager.ts +341 -64
  471. package/src/multistream/receiveSlot.ts +69 -26
  472. package/src/multistream/receiveSlotManager.ts +66 -42
  473. package/src/multistream/remoteMedia.ts +40 -5
  474. package/src/multistream/remoteMediaGroup.ts +82 -3
  475. package/src/multistream/remoteMediaManager.ts +401 -81
  476. package/src/multistream/sendSlotManager.ts +199 -0
  477. package/src/networkQualityMonitor/{index.js → index.ts} +41 -29
  478. package/src/personal-meeting-room/{index.js → index.ts} +28 -19
  479. package/src/personal-meeting-room/{request.js → request.ts} +13 -4
  480. package/src/personal-meeting-room/{util.js → util.ts} +4 -4
  481. package/src/reachability/clusterReachability.ts +320 -0
  482. package/src/reachability/index.ts +371 -0
  483. package/src/reachability/request.ts +50 -35
  484. package/src/reachability/util.ts +24 -0
  485. package/src/reactions/constants.ts +4 -0
  486. package/src/reactions/reactions.ts +104 -0
  487. package/src/reactions/reactions.type.ts +62 -0
  488. package/src/reconnection-manager/index.ts +643 -0
  489. package/src/recording-controller/enums.ts +8 -0
  490. package/src/recording-controller/index.ts +332 -0
  491. package/src/recording-controller/util.ts +75 -0
  492. package/src/roap/index.ts +288 -0
  493. package/src/roap/request.ts +153 -0
  494. package/src/roap/turnDiscovery.ts +374 -70
  495. package/src/rtcMetrics/constants.ts +3 -0
  496. package/src/rtcMetrics/index.ts +166 -0
  497. package/src/statsAnalyzer/global.ts +37 -0
  498. package/src/statsAnalyzer/index.ts +1275 -0
  499. package/src/statsAnalyzer/mqaUtil.ts +440 -0
  500. package/src/transcription/{index.js → index.ts} +46 -39
  501. package/src/webinar/collection.ts +31 -0
  502. package/src/webinar/index.ts +62 -0
  503. package/test/integration/spec/converged-space-meetings.js +233 -0
  504. package/test/integration/spec/journey.js +791 -531
  505. package/test/integration/spec/space-meeting.js +391 -204
  506. package/test/integration/spec/transcription.js +7 -8
  507. package/test/unit/spec/annotation/index.ts +418 -0
  508. package/test/unit/spec/breakouts/breakout.ts +238 -0
  509. package/test/unit/spec/breakouts/collection.ts +15 -0
  510. package/test/unit/spec/breakouts/edit-lock-error.ts +30 -0
  511. package/test/unit/spec/breakouts/events.ts +89 -0
  512. package/test/unit/spec/breakouts/index.ts +1793 -0
  513. package/test/unit/spec/breakouts/request.ts +104 -0
  514. package/test/unit/spec/breakouts/utils.js +72 -0
  515. package/test/unit/spec/common/browser-detection.js +9 -28
  516. package/test/unit/spec/common/queue.js +31 -2
  517. package/test/unit/spec/controls-options-manager/index.js +287 -0
  518. package/test/unit/spec/controls-options-manager/util.js +582 -0
  519. package/test/unit/spec/fixture/locus.js +93 -90
  520. package/test/unit/spec/interceptors/locusRetry.ts +131 -0
  521. package/test/unit/spec/interpretation/collection.ts +15 -0
  522. package/test/unit/spec/interpretation/index.ts +625 -0
  523. package/test/unit/spec/interpretation/siLanguage.ts +28 -0
  524. package/test/unit/spec/locus-info/controlsUtils.js +325 -32
  525. package/test/unit/spec/locus-info/embeddedAppsUtils.js +8 -6
  526. package/test/unit/spec/locus-info/index.js +1458 -21
  527. package/test/unit/spec/locus-info/infoUtils.js +71 -40
  528. package/test/unit/spec/locus-info/lib/BasicSeqCmp.json +88 -430
  529. package/test/unit/spec/locus-info/lib/SeqCmp.json +529 -685
  530. package/test/unit/spec/locus-info/mediaSharesUtils.ts +41 -0
  531. package/test/unit/spec/locus-info/parser.js +119 -44
  532. package/test/unit/spec/locus-info/selfConstant.js +120 -103
  533. package/test/unit/spec/locus-info/selfUtils.js +291 -12
  534. package/test/unit/spec/media/index.ts +194 -111
  535. package/test/unit/spec/media/properties.ts +11 -11
  536. package/test/unit/spec/meeting/in-meeting-actions.ts +96 -3
  537. package/test/unit/spec/meeting/index.js +8616 -1921
  538. package/test/unit/spec/meeting/locusMediaRequest.ts +442 -0
  539. package/test/unit/spec/meeting/muteState.js +568 -207
  540. package/test/unit/spec/meeting/request.js +602 -82
  541. package/test/unit/spec/meeting/utils.js +867 -179
  542. package/test/unit/spec/meeting/voicea-meeting.ts +266 -0
  543. package/test/unit/spec/meeting-info/index.js +300 -0
  544. package/test/unit/spec/meeting-info/meetinginfov2.js +631 -78
  545. package/test/unit/spec/meeting-info/request.js +7 -9
  546. package/test/unit/spec/meeting-info/util.js +11 -12
  547. package/test/unit/spec/meeting-info/utilv2.js +131 -74
  548. package/test/unit/spec/meetings/collection.js +27 -1
  549. package/test/unit/spec/meetings/index.js +1826 -374
  550. package/test/unit/spec/meetings/utils.js +243 -14
  551. package/test/unit/spec/member/index.js +61 -7
  552. package/test/unit/spec/member/util.js +526 -26
  553. package/test/unit/spec/members/index.js +536 -55
  554. package/test/unit/spec/members/request.js +228 -40
  555. package/test/unit/spec/members/utils.js +217 -4
  556. package/test/unit/spec/metrics/index.js +13 -68
  557. package/test/unit/spec/multistream/mediaRequestManager.ts +1032 -110
  558. package/test/unit/spec/multistream/receiveSlot.ts +77 -18
  559. package/test/unit/spec/multistream/receiveSlotManager.ts +69 -39
  560. package/test/unit/spec/multistream/remoteMedia.ts +40 -2
  561. package/test/unit/spec/multistream/remoteMediaGroup.ts +350 -5
  562. package/test/unit/spec/multistream/remoteMediaManager.ts +937 -65
  563. package/test/unit/spec/multistream/sendSlotManager.ts +274 -0
  564. package/test/unit/spec/networkQualityMonitor/index.js +24 -18
  565. package/test/unit/spec/personal-meeting-room/personal-meeting-room.js +2 -7
  566. package/test/unit/spec/reachability/clusterReachability.ts +279 -0
  567. package/test/unit/spec/reachability/index.ts +606 -26
  568. package/test/unit/spec/reachability/request.js +68 -0
  569. package/test/unit/spec/reachability/util.ts +40 -0
  570. package/test/unit/spec/reconnection-manager/index.js +222 -34
  571. package/test/unit/spec/recording-controller/index.js +306 -0
  572. package/test/unit/spec/recording-controller/util.js +229 -0
  573. package/test/unit/spec/roap/index.ts +238 -82
  574. package/test/unit/spec/roap/request.ts +255 -0
  575. package/test/unit/spec/roap/turnDiscovery.ts +707 -110
  576. package/test/unit/spec/rtcMetrics/index.ts +122 -0
  577. package/test/unit/spec/stats-analyzer/index.js +1331 -62
  578. package/test/unit/spec/webinar/collection.ts +13 -0
  579. package/test/unit/spec/webinar/index.ts +60 -0
  580. package/test/utils/cmr.js +44 -42
  581. package/test/utils/constants.js +9 -0
  582. package/test/utils/integrationTestUtils.js +46 -0
  583. package/test/utils/testUtils.js +63 -99
  584. package/test/utils/webex-config.js +22 -18
  585. package/test/utils/webex-test-users.js +65 -50
  586. package/tsconfig.json +6 -0
  587. package/dist/media/internal-media-core-wrapper.js +0 -22
  588. package/dist/media/internal-media-core-wrapper.js.map +0 -1
  589. package/dist/meeting/effectsState.js +0 -327
  590. package/dist/meeting/effectsState.js.map +0 -1
  591. package/dist/metrics/config.js +0 -301
  592. package/dist/metrics/config.js.map +0 -1
  593. package/dist/multistream/multistreamMedia.js +0 -116
  594. package/dist/multistream/multistreamMedia.js.map +0 -1
  595. package/dist/peer-connection-manager/util.js +0 -124
  596. package/dist/peer-connection-manager/util.js.map +0 -1
  597. package/src/common/logs/logger-proxy.js +0 -33
  598. package/src/index.js +0 -15
  599. package/src/locus-info/controlsUtils.js +0 -102
  600. package/src/media/index.js +0 -459
  601. package/src/media/internal-media-core-wrapper.ts +0 -9
  602. package/src/media/properties.js +0 -289
  603. package/src/mediaQualityMetrics/config.js +0 -382
  604. package/src/meeting/effectsState.js +0 -205
  605. package/src/meeting/index.js +0 -6284
  606. package/src/meeting/muteState.js +0 -318
  607. package/src/meeting/request.js +0 -684
  608. package/src/meeting/util.js +0 -506
  609. package/src/meeting-info/index.js +0 -131
  610. package/src/meeting-info/meeting-info-v2.js +0 -255
  611. package/src/meetings/collection.js +0 -40
  612. package/src/meetings/index.js +0 -1015
  613. package/src/member/util.js +0 -254
  614. package/src/members/request.js +0 -131
  615. package/src/members/util.js +0 -258
  616. package/src/metrics/config.js +0 -324
  617. package/src/metrics/index.js +0 -530
  618. package/src/multistream/multistreamMedia.ts +0 -92
  619. package/src/peer-connection-manager/util.ts +0 -117
  620. package/src/reachability/index.js +0 -464
  621. package/src/reconnection-manager/index.js +0 -519
  622. package/src/roap/index.js +0 -220
  623. package/src/roap/request.js +0 -127
  624. package/src/statsAnalyzer/global.js +0 -133
  625. package/src/statsAnalyzer/index.js +0 -1006
  626. package/src/statsAnalyzer/mqaUtil.js +0 -173
  627. package/test/unit/spec/meeting/effectsState.js +0 -291
  628. package/test/unit/spec/peerconnection-manager/utils.test-fixtures.ts +0 -389
  629. /package/src/common/errors/{reconnection-in-progress.js → reconnection-in-progress.ts} +0 -0
@@ -1,33 +0,0 @@
1
- /* eslint-disable no-unused-vars */
2
- import LoggerConfig from './logger-config';
3
-
4
- const LoggerProxy = {
5
- logger: {
6
- info: (args) => { console.error('LoggerProxy->info#NO LOGGER DEFINED'); },
7
- log: (args) => { console.error('LoggerProxy->log#NO LOGGER DEFINED'); },
8
- error: (args) => { console.error('LoggerProxy->error#NO LOGGER DEFINED'); },
9
- warn: (args) => { console.error('LoggerProxy->warn#NO LOGGER DEFINED'); },
10
- trace: (args) => { console.error('LoggerProxy->trace#NO LOGGER DEFINED'); },
11
- debug: (args) => { console.error('LoggerProxy->debug#NO LOGGER DEFINED'); }
12
- }
13
- };
14
-
15
- LoggerProxy.set = (logger) => {
16
- if (!LoggerConfig.enable) {
17
- LoggerProxy.logger = {
18
- info: () => {},
19
- log: () => {},
20
- error: () => {},
21
- warn: () => {},
22
- trace: () => {},
23
- debug: () => {}
24
- };
25
- }
26
- else {
27
- LoggerProxy.logger = logger;
28
- }
29
- };
30
-
31
- LoggerProxy.get = () => LoggerProxy.logger;
32
-
33
- export default LoggerProxy;
package/src/index.js DELETED
@@ -1,15 +0,0 @@
1
- /* eslint-env browser */
2
- import {registerPlugin} from '@webex/webex-core';
3
-
4
- import Meetings from './meetings';
5
- import config from './config';
6
-
7
- registerPlugin('meetings', Meetings, {
8
- config
9
- });
10
-
11
- export default Meetings;
12
-
13
- export * as CONSTANTS from './constants';
14
-
15
- export {default as TriggerProxy} from './common/events/trigger-proxy';
@@ -1,102 +0,0 @@
1
- import {isEqual} from 'lodash';
2
-
3
- const ControlsUtils = {};
4
-
5
- /**
6
- * Controls
7
- * @typedef {Object} LocusControls
8
- * @property {Object} record
9
- * @property {Boolean} record.recording
10
- * @property {Object} record.meta
11
- * @property {String} record.meta.modifiedBy
12
- */
13
-
14
- /**
15
- * parse the relevant host values that we care about: id
16
- * @param {LocusControls} controls
17
- * @returns {Object} parsedObject - parsed host or null if host was undefined
18
- * @returns {String} parsedObject.recordingId
19
- */
20
- ControlsUtils.parse = (controls) => {
21
- const parsedControls = {...controls};
22
-
23
- if (controls && controls.record) {
24
- parsedControls.record = {
25
- modifiedBy: ControlsUtils.getId(controls),
26
- paused: controls.record.paused ? controls.record.paused : false,
27
- recording: controls.record.recording,
28
- lastModified: controls.record.meta.lastModified
29
- };
30
- }
31
-
32
- if (controls && controls.meetingContainer) {
33
- parsedControls.meetingContainer = {
34
- meetingContainerUrl: controls.meetingContainer.meetingContainerUrl
35
- };
36
- }
37
-
38
- if (controls && controls.transcribe) {
39
- parsedControls.transcribe = {
40
- transcribing: controls.transcribe.transcribing,
41
- caption: controls.transcribe.caption
42
- };
43
- }
44
-
45
- if (controls && controls.entryExitTone) {
46
- parsedControls.entryExitTone = controls.entryExitTone.enabled ? controls.entryExitTone.mode : null;
47
- }
48
-
49
- return parsedControls;
50
- };
51
-
52
- /**
53
- * parses and returns previous state vs current state and triggers the changes.
54
- * @param {LocusControls} oldControls previous state
55
- * @param {LocusControls} newControls current state
56
- * @returns {Object} combination of state plus the changes
57
- */
58
- ControlsUtils.getControls = (oldControls, newControls) => {
59
- const previous = ControlsUtils.parse(oldControls);
60
- const current = ControlsUtils.parse(newControls);
61
-
62
- return {
63
- previous,
64
- current,
65
- updates: {
66
- hasRecordingPausedChanged: current?.record &&
67
- !isEqual(previous?.record?.paused, current.record.paused) &&
68
- (previous?.record?.recording || current?.record?.recording), // see comments directly below
69
-
70
- hasRecordingChanged: current?.record &&
71
- !isEqual(previous?.record?.recording, current?.record?.recording) && // upon first join, previous?.record?.recording = undefined; thus, never going to be equal and will always return true
72
- (previous?.record?.recording || current?.record?.recording), // therefore, condition added to prevent false firings of #meeting:recording:stopped upon first joining a meeting
73
-
74
- hasMeetingContainerChanged: current?.meetingContainer &&
75
- !isEqual(previous?.meetingContainer?.meetingContainerUrl,
76
- current?.meetingContainer?.meetingContainerUrl),
77
-
78
- hasTranscribeChanged: current?.transcribe &&
79
- !isEqual(previous?.transcribe?.transcribing, current?.transcribe?.transcribing) && // upon first join, previous?.record?.recording = undefined; thus, never going to be equal and will always return true
80
- (previous?.transcribe?.transcribing || current?.transcribe?.transcribing), // therefore, condition added to prevent false firings of #meeting:recording:stopped upon first joining a meeting
81
-
82
- hasEntryExitToneChanged: !!(newControls.entryExitTone &&
83
- !isEqual(previous?.entryExitTone, current?.entryExitTone) &&
84
- (previous?.entryExitTone || current?.entryExitTone)),
85
- }
86
- };
87
- };
88
-
89
- /**
90
- * Extract the id from the record controls object
91
- * @param {LocusControls} controls
92
- * @returns {String|null}
93
- */
94
- ControlsUtils.getId = (controls) => {
95
- if (controls.record.meta) {
96
- return controls.record.meta.modifiedBy;
97
- }
98
-
99
- return null;
100
- };
101
-
102
- export default ControlsUtils;
@@ -1,459 +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
- MEDIA_TRACK_CONSTRAINT,
11
- } from '../constants';
12
- import Config from '../config';
13
- import StaticConfig from '../common/config';
14
- import MediaError from '../common/errors/media';
15
- import BrowserDetection from '../common/browser-detection';
16
-
17
- import {RoapMediaConnection, MultistreamRoapMediaConnection} from './internal-media-core-wrapper';
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
- * format the media array for send
69
- * @param {String} mediaId
70
- * @param {Boolean} audioMuted
71
- * @param {Boolean} videoMuted
72
- * @returns {Array} medias
73
- */
74
- Media.generateLocalMedias = (mediaId, audioMuted, videoMuted) => {
75
- if (mediaId) {
76
- return [
77
- {
78
- localSdp: JSON.stringify({
79
- audioMuted,
80
- videoMuted
81
- }),
82
- mediaId
83
- }
84
- ];
85
- }
86
-
87
- return [];
88
- };
89
-
90
- /**
91
- * make a browser call to get the media
92
- * @param {SendOptions} options
93
- * @param {Object} config SDK Configuration for meetings plugin
94
- * @returns {Promise}
95
- */
96
- Media.getLocalMedia = (options, config) => {
97
- const {
98
- sendAudio, sendVideo, sendShare, sharePreferences, isSharing
99
- } = options;
100
-
101
- if (sendAudio || sendVideo) {
102
- return Media.getMedia(sendAudio, sendVideo, config);
103
- }
104
-
105
- if (sendShare && !isSharing) {
106
- return Media.getDisplayMedia(
107
- {
108
- sendAudio: false,
109
- sendShare: true,
110
- sharePreferences
111
- },
112
- config
113
- );
114
- }
115
-
116
- return Promise.resolve(undefined);
117
- };
118
-
119
- /**
120
- * 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
123
- * @param {Object} options
124
- * @param {boolean} options.isMultistream
125
- * @param {string} [options.remoteQualityLevel] LOW|MEDIUM|HIGH applicable only to non-multistream connections
126
- * @param {boolean} [options.enableRtx] applicable only to non-multistream connections
127
- * @param {boolean} [options.enableExtmap] applicable only to non-multistream connections
128
- * @param {Object} [options.turnServerInfo]
129
- * @returns {RoapMediaConnection}
130
- */
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;
144
-
145
- const iceServers = [];
146
-
147
- if (turnServerInfo) {
148
- iceServers.push({
149
- urls: turnServerInfo.url,
150
- username: turnServerInfo.username || '',
151
- credential: turnServerInfo.password || ''
152
- });
153
- }
154
-
155
- if (isMultistream) {
156
- return new MultistreamRoapMediaConnection({
157
- iceServers,
158
- }, 'mc');
159
- }
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,
171
- },
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
- },
183
- receive: {
184
- audio: mediaDirection.receiveAudio,
185
- video: mediaDirection.receiveVideo,
186
- screenShareVideo: mediaDirection.receiveShare,
187
- remoteQualityLevel
188
- }
189
- }, 'mc');
190
- };
191
-
192
- /**
193
- * generates share streams
194
- * @param {Object} options parameter
195
- * @param {Boolean} options.sendAudio send audio from the display share
196
- * @param {Boolean} options.sendShare send video from the display share
197
- * @param {Object} options.sharePreferences
198
- * @param {MediaTrackConstraints} options.sharePreferences.shareConstraints constraints to apply to video
199
- * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/MediaTrackConstraints}
200
- * @param {Boolean} options.sharePreferences.highFrameRate if shareConstraints isn't provided, set default values based off of this boolean
201
- * @param {Object} config SDK Configuration for meetings plugin
202
- * @returns {Promise.<MediaStream>}
203
- */
204
- Media.getDisplayMedia = (options, config = {}) => {
205
- // SDK screen share resolution settings from Webex.init
206
- const customResolution = config.screenResolution || {};
207
- // user defined screen share frame rate
208
- const customShareFrameRate = config.screenFrameRate || null;
209
- // user defined share preferences
210
- const hasSharePreferences = options.sharePreferences;
211
- const hasCustomConstraints = hasSharePreferences && hasSharePreferences.shareConstraints;
212
- const hasHighFrameRate = hasSharePreferences && hasSharePreferences.highFrameRate;
213
- const {
214
- screenResolution,
215
- resolution,
216
- videoShareFrameRate,
217
- screenFrameRate,
218
- aspectRatio
219
- } = Config.meetings;
220
-
221
- let shareConstraints = {
222
- cursor: MEDIA_TRACK_CONSTRAINT.CURSOR.AWLAYS,
223
- aspectRatio
224
- };
225
-
226
- if (hasCustomConstraints) {
227
- shareConstraints = hasSharePreferences.shareConstraints;
228
- }
229
- else if (hasHighFrameRate) {
230
- shareConstraints = {
231
- ...shareConstraints,
232
- frameRate: videoShareFrameRate,
233
- height: resolution.idealHeight,
234
- width: resolution.idealWidth,
235
- ...config.resolution
236
- };
237
- }
238
- else {
239
- shareConstraints = {
240
- ...shareConstraints,
241
- frameRate: customShareFrameRate || screenFrameRate,
242
- height: customResolution.idealHeight || screenResolution.idealHeight,
243
- width: customResolution.idealWidth || screenResolution.idealWidth,
244
- ...config.screenResolution
245
- };
246
- }
247
-
248
- // chrome and webkit based browsers (edge, safari) automatically adjust everything
249
- // and we have noticed higher quality with those browser types
250
- // firefox specifically has some issues with resolution and frame rate decision making
251
- // so we are making it optional and configurable (with defaults) for firefox
252
- // to have higher quality, and for developers to control the values
253
- // eventually we may have to add the same functionality to chrome, OR conversely, get to with firefox
254
-
255
-
256
- if (isBrowser('firefox')) {
257
- const mediaConfig = {
258
- audio: options.sendAudio,
259
- video: options.sendShare
260
- };
261
-
262
-
263
- return navigator.mediaDevices.getDisplayMedia({audio: options.sendAudio, video: mediaConfig})
264
- .then((stream) => {
265
- if (options.sendShare && stream.getVideoTracks().length > 0) {
266
- // Firefox has a bug with the spec where changing in the height and width only happens
267
- // after we get the inital tracks
268
- // https://bugzilla.mozilla.org/show_bug.cgi?id=1321221
269
- stream.getVideoTracks()[0].applyConstraints(shareConstraints);
270
- }
271
-
272
-
273
- return stream;
274
- });
275
- }
276
-
277
- const getDisplayMediaParams = {video: options.sendShare ? shareConstraints : false};
278
-
279
- // safari doesn't support sending screen share audio
280
- // https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getDisplayMedia
281
- if (options.sendAudio && isBrowser('safari')) {
282
- getDisplayMediaParams.audio = options.sendAudio;
283
- }
284
-
285
- return navigator.mediaDevices.getDisplayMedia(getDisplayMediaParams);
286
- };
287
-
288
- /**
289
- * generates audio and video using constraints (often called after getSupportedDevices)
290
- * @param {Object|Boolean} audio gum constraints
291
- * @param {Object|Boolean} video gum constraints
292
- * @param {Object} config SDK Configuration for meetings plugin
293
- * @returns {Object} {streams}
294
- */
295
- Media.getMedia = (audio, video, config) => {
296
- const defaultWidth = {ideal: config.resolution.idealWidth, max: config.resolution.maxWidth};
297
- const defaultHeight = {ideal: config.resolution.idealHeight, max: config.resolution.maxHeight};
298
- const mediaConfig = {
299
- audio,
300
- // TODO: Remove temporary workaround once Firefox fixes low constraint issues
301
- // 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
316
- };
317
-
318
- return navigator.mediaDevices
319
- .getUserMedia(mediaConfig)
320
- .catch((err) => {
321
- const logPath = 'Media:index#getMedia --> navigator.mediaDevices.getUserMedia';
322
-
323
- LoggerProxy.logger.error(`${logPath} failed - ${err} (${err.constraint})`);
324
- throw err;
325
- });
326
- };
327
-
328
- /**
329
- * Checks if the machine has at least one audio or video device (Dont use this for screen share)
330
- * @param {object} [options]
331
- * {
332
- * sendAudio: true/false,
333
- * sendVideo: true/false
334
- * }
335
- * @returns {Object} {
336
- * sendAudio: true/false,
337
- * sendVideo: true/false
338
- *}
339
- */
340
- Media.getSupportedDevice = ({sendAudio, sendVideo}) =>
341
- Promise.resolve().then(() => {
342
- if (!navigator.mediaDevices || navigator.mediaDevices.enumerateDevices === undefined) {
343
- return {
344
- sendAudio: false,
345
- sendVideo: false
346
- };
347
- }
348
-
349
- return navigator.mediaDevices.enumerateDevices().then((devices) => {
350
- const supported = {
351
- audio: devices.filter((device) => device.kind === AUDIO_INPUT).length > 0,
352
- video: devices.filter((device) => device.kind === VIDEO_INPUT).length > 0
353
- };
354
-
355
- return {
356
- sendAudio: supported.audio && sendAudio,
357
- sendVideo: supported.video && sendVideo
358
- };
359
- });
360
- });
361
-
362
- /**
363
- * proxy to browser navigator.mediaDevices.enumerateDevices()
364
- * @returns {Promise}
365
- */
366
- Media.getDevices = () => {
367
- if (navigator && navigator.mediaDevices && navigator.mediaDevices.enumerateDevices) {
368
- return navigator.mediaDevices.enumerateDevices();
369
- }
370
-
371
- return Promise.reject(new MediaError('enumerateDevices not supported.'));
372
- };
373
-
374
- /**
375
- *
376
- * Toggle a specific stream
377
- * noop as of now, does nothing
378
- * @returns {null}
379
- */
380
- Media.toggleStream = () => {};
381
-
382
- /**
383
- * Stop input stream
384
- * @param {MediaTrack} track A media stream
385
- * @returns {null}
386
- */
387
- Media.stopTracks = (track) => {
388
- if (!track) {
389
- return Promise.resolve();
390
- }
391
-
392
- return Promise.resolve().then(() => {
393
- if (track && track.stop) {
394
- try {
395
- track.stop();
396
- }
397
- catch (e) {
398
- LoggerProxy.logger.error(`Media:index#stopTracks --> Unable to stop the track with state ${track.readyState}, error: ${e}`);
399
- }
400
- }
401
- });
402
- };
403
-
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
- /**
435
- * generates streams for audio video and share
436
- * @param {object} mediaSetting parameter
437
- * @param {Object} mediaSetting.sendAudio sendAudio: {Boolean} sendAudio constraints
438
- * @param {Object} mediaSetting.sendVideo sendVideo: {Boolean} sendVideo constraints
439
- * @param {Object} mediaSetting.sendShare sendShare: {Boolean} sendShare constraints
440
- * @param {Object} mediaSetting.isSharing isSharing: {Boolean} isSharing constraints
441
- * @param {Object} audioVideo parameter
442
- * @param {Object} audioVideo.audio {deviceId: {String}}
443
- * @param {Object} audioVideo.video {deviceId: {String}}
444
- * @param {Object} sharePreferences parameter
445
- * @param {Object} sharePreferences.shareConstraints parameter
446
- * @param {Boolean} sharePreferences.highFrameRate parameter
447
- * @param {Object} config SDK Config
448
- * @returns {Array} [localStream, shareStream]
449
- */
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]));
458
-
459
- export default Media;
@@ -1,9 +0,0 @@
1
- import {MediaConnection as MC} from '@webex/internal-media-core';
2
-
3
- /* We have this wrapper just because otherwise it's impossible to mock
4
- * RoapMediaConnection and MultistreamRoapMediaConnection constructors in unit tests,
5
- * because they are exported by @webex/internal-media-core as non-writable, non-configurable
6
- * properties of MediaConnection and sinon doesn't allow spying on them or stubbing them.
7
- */
8
- export const RoapMediaConnection = MC.RoapMediaConnection;
9
- export const MultistreamRoapMediaConnection = MC.MultistreamRoapMediaConnection;