@webex/plugin-meetings 3.0.0-beta.7 → 3.0.0-beta.71

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 (506) hide show
  1. package/UPGRADING.md +9 -9
  2. package/browsers.js +19 -24
  3. package/dist/breakouts/breakout.js +178 -0
  4. package/dist/breakouts/breakout.js.map +1 -0
  5. package/dist/breakouts/collection.js +23 -0
  6. package/dist/breakouts/collection.js.map +1 -0
  7. package/dist/breakouts/edit-lock-error.js +52 -0
  8. package/dist/breakouts/edit-lock-error.js.map +1 -0
  9. package/dist/breakouts/index.js +843 -0
  10. package/dist/breakouts/index.js.map +1 -0
  11. package/dist/breakouts/request.js +78 -0
  12. package/dist/breakouts/request.js.map +1 -0
  13. package/dist/breakouts/utils.js +56 -0
  14. package/dist/breakouts/utils.js.map +1 -0
  15. package/dist/common/browser-detection.js +1 -20
  16. package/dist/common/browser-detection.js.map +1 -1
  17. package/dist/common/collection.js +5 -20
  18. package/dist/common/collection.js.map +1 -1
  19. package/dist/common/config.js +0 -7
  20. package/dist/common/config.js.map +1 -1
  21. package/dist/common/errors/captcha-error.js +10 -24
  22. package/dist/common/errors/captcha-error.js.map +1 -1
  23. package/dist/common/errors/intent-to-join.js +11 -24
  24. package/dist/common/errors/intent-to-join.js.map +1 -1
  25. package/dist/common/errors/join-meeting.js +12 -25
  26. package/dist/common/errors/join-meeting.js.map +1 -1
  27. package/dist/common/errors/media.js +10 -24
  28. package/dist/common/errors/media.js.map +1 -1
  29. package/dist/common/errors/parameter.js +5 -33
  30. package/dist/common/errors/parameter.js.map +1 -1
  31. package/dist/common/errors/password-error.js +10 -24
  32. package/dist/common/errors/password-error.js.map +1 -1
  33. package/dist/common/errors/permission.js +9 -23
  34. package/dist/common/errors/permission.js.map +1 -1
  35. package/dist/common/errors/reconnection-in-progress.js +0 -17
  36. package/dist/common/errors/reconnection-in-progress.js.map +1 -1
  37. package/dist/common/errors/reconnection.js +10 -24
  38. package/dist/common/errors/reconnection.js.map +1 -1
  39. package/dist/common/errors/stats.js +10 -24
  40. package/dist/common/errors/stats.js.map +1 -1
  41. package/dist/common/errors/webex-errors.js +6 -41
  42. package/dist/common/errors/webex-errors.js.map +1 -1
  43. package/dist/common/errors/webex-meetings-error.js +5 -25
  44. package/dist/common/errors/webex-meetings-error.js.map +1 -1
  45. package/dist/common/events/events-scope.js +0 -22
  46. package/dist/common/events/events-scope.js.map +1 -1
  47. package/dist/common/events/events.js +0 -23
  48. package/dist/common/events/events.js.map +1 -1
  49. package/dist/common/events/trigger-proxy.js +0 -12
  50. package/dist/common/events/trigger-proxy.js.map +1 -1
  51. package/dist/common/events/util.js +0 -15
  52. package/dist/common/events/util.js.map +1 -1
  53. package/dist/common/logs/logger-config.js +0 -4
  54. package/dist/common/logs/logger-config.js.map +1 -1
  55. package/dist/common/logs/logger-proxy.js +1 -8
  56. package/dist/common/logs/logger-proxy.js.map +1 -1
  57. package/dist/common/logs/request.js +37 -60
  58. package/dist/common/logs/request.js.map +1 -1
  59. package/dist/common/queue.js +4 -14
  60. package/dist/common/queue.js.map +1 -1
  61. package/dist/config.js +6 -6
  62. package/dist/config.js.map +1 -1
  63. package/dist/constants.js +143 -52
  64. package/dist/constants.js.map +1 -1
  65. package/dist/controls-options-manager/constants.js +14 -0
  66. package/dist/controls-options-manager/constants.js.map +1 -0
  67. package/dist/controls-options-manager/enums.js +16 -0
  68. package/dist/controls-options-manager/enums.js.map +1 -0
  69. package/dist/controls-options-manager/index.js +261 -0
  70. package/dist/controls-options-manager/index.js.map +1 -0
  71. package/dist/controls-options-manager/util.js +39 -0
  72. package/dist/controls-options-manager/util.js.map +1 -0
  73. package/dist/index.js +11 -18
  74. package/dist/index.js.map +1 -1
  75. package/dist/locus-info/controlsUtils.js +31 -29
  76. package/dist/locus-info/controlsUtils.js.map +1 -1
  77. package/dist/locus-info/embeddedAppsUtils.js +3 -26
  78. package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
  79. package/dist/locus-info/fullState.js +0 -15
  80. package/dist/locus-info/fullState.js.map +1 -1
  81. package/dist/locus-info/hostUtils.js +4 -12
  82. package/dist/locus-info/hostUtils.js.map +1 -1
  83. package/dist/locus-info/index.js +237 -198
  84. package/dist/locus-info/index.js.map +1 -1
  85. package/dist/locus-info/infoUtils.js +3 -37
  86. package/dist/locus-info/infoUtils.js.map +1 -1
  87. package/dist/locus-info/mediaSharesUtils.js +12 -38
  88. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  89. package/dist/locus-info/parser.js +92 -118
  90. package/dist/locus-info/parser.js.map +1 -1
  91. package/dist/locus-info/selfUtils.js +80 -89
  92. package/dist/locus-info/selfUtils.js.map +1 -1
  93. package/dist/media/index.js +56 -146
  94. package/dist/media/index.js.map +1 -1
  95. package/dist/media/properties.js +83 -117
  96. package/dist/media/properties.js.map +1 -1
  97. package/dist/media/util.js +2 -9
  98. package/dist/media/util.js.map +1 -1
  99. package/dist/mediaQualityMetrics/config.js +505 -495
  100. package/dist/mediaQualityMetrics/config.js.map +1 -1
  101. package/dist/meeting/in-meeting-actions.js +31 -14
  102. package/dist/meeting/in-meeting-actions.js.map +1 -1
  103. package/dist/meeting/index.js +2225 -2244
  104. package/dist/meeting/index.js.map +1 -1
  105. package/dist/meeting/muteState.js +102 -100
  106. package/dist/meeting/muteState.js.map +1 -1
  107. package/dist/meeting/request.js +308 -264
  108. package/dist/meeting/request.js.map +1 -1
  109. package/dist/meeting/request.type.js +7 -0
  110. package/dist/meeting/request.type.js.map +1 -0
  111. package/dist/meeting/state.js +21 -31
  112. package/dist/meeting/state.js.map +1 -1
  113. package/dist/meeting/util.js +63 -217
  114. package/dist/meeting/util.js.map +1 -1
  115. package/dist/meeting-info/collection.js +6 -25
  116. package/dist/meeting-info/collection.js.map +1 -1
  117. package/dist/meeting-info/index.js +14 -32
  118. package/dist/meeting-info/index.js.map +1 -1
  119. package/dist/meeting-info/meeting-info-v2.js +193 -268
  120. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  121. package/dist/meeting-info/request.js +3 -15
  122. package/dist/meeting-info/request.js.map +1 -1
  123. package/dist/meeting-info/util.js +98 -183
  124. package/dist/meeting-info/util.js.map +1 -1
  125. package/dist/meeting-info/utilv2.js +137 -228
  126. package/dist/meeting-info/utilv2.js.map +1 -1
  127. package/dist/meetings/collection.js +26 -19
  128. package/dist/meetings/collection.js.map +1 -1
  129. package/dist/meetings/index.js +565 -552
  130. package/dist/meetings/index.js.map +1 -1
  131. package/dist/meetings/request.js +26 -41
  132. package/dist/meetings/request.js.map +1 -1
  133. package/dist/meetings/util.js +151 -155
  134. package/dist/meetings/util.js.map +1 -1
  135. package/dist/member/index.js +100 -85
  136. package/dist/member/index.js.map +1 -1
  137. package/dist/member/types.js +15 -0
  138. package/dist/member/types.js.map +1 -0
  139. package/dist/member/util.js +90 -68
  140. package/dist/member/util.js.map +1 -1
  141. package/dist/members/collection.js +13 -12
  142. package/dist/members/collection.js.map +1 -1
  143. package/dist/members/index.js +152 -204
  144. package/dist/members/index.js.map +1 -1
  145. package/dist/members/request.js +35 -39
  146. package/dist/members/request.js.map +1 -1
  147. package/dist/members/types.js +15 -0
  148. package/dist/members/types.js.map +1 -0
  149. package/dist/members/util.js +76 -46
  150. package/dist/members/util.js.map +1 -1
  151. package/dist/metrics/config.js +4 -14
  152. package/dist/metrics/config.js.map +1 -1
  153. package/dist/metrics/constants.js +1 -6
  154. package/dist/metrics/constants.js.map +1 -1
  155. package/dist/metrics/index.js +59 -156
  156. package/dist/metrics/index.js.map +1 -1
  157. package/dist/multistream/mediaRequestManager.js +116 -52
  158. package/dist/multistream/mediaRequestManager.js.map +1 -1
  159. package/dist/multistream/receiveSlot.js +58 -65
  160. package/dist/multistream/receiveSlot.js.map +1 -1
  161. package/dist/multistream/receiveSlotManager.js +58 -93
  162. package/dist/multistream/receiveSlotManager.js.map +1 -1
  163. package/dist/multistream/remoteMedia.js +55 -74
  164. package/dist/multistream/remoteMedia.js.map +1 -1
  165. package/dist/multistream/remoteMediaGroup.js +6 -40
  166. package/dist/multistream/remoteMediaGroup.js.map +1 -1
  167. package/dist/multistream/remoteMediaManager.js +466 -442
  168. package/dist/multistream/remoteMediaManager.js.map +1 -1
  169. package/dist/networkQualityMonitor/index.js +40 -59
  170. package/dist/networkQualityMonitor/index.js.map +1 -1
  171. package/dist/personal-meeting-room/index.js +21 -45
  172. package/dist/personal-meeting-room/index.js.map +1 -1
  173. package/dist/personal-meeting-room/request.js +1 -31
  174. package/dist/personal-meeting-room/request.js.map +1 -1
  175. package/dist/personal-meeting-room/util.js +0 -13
  176. package/dist/personal-meeting-room/util.js.map +1 -1
  177. package/dist/reachability/index.js +192 -191
  178. package/dist/reachability/index.js.map +1 -1
  179. package/dist/reachability/request.js +15 -23
  180. package/dist/reachability/request.js.map +1 -1
  181. package/dist/reactions/constants.js +13 -0
  182. package/dist/reactions/constants.js.map +1 -0
  183. package/dist/reactions/reactions.js +109 -0
  184. package/dist/reactions/reactions.js.map +1 -0
  185. package/dist/reactions/reactions.type.js +36 -0
  186. package/dist/reactions/reactions.type.js.map +1 -0
  187. package/dist/reconnection-manager/index.js +342 -460
  188. package/dist/reconnection-manager/index.js.map +1 -1
  189. package/dist/recording-controller/enums.js +17 -0
  190. package/dist/recording-controller/enums.js.map +1 -0
  191. package/dist/recording-controller/index.js +343 -0
  192. package/dist/recording-controller/index.js.map +1 -0
  193. package/dist/recording-controller/util.js +63 -0
  194. package/dist/recording-controller/util.js.map +1 -0
  195. package/dist/roap/index.js +48 -70
  196. package/dist/roap/index.js.map +1 -1
  197. package/dist/roap/request.js +143 -131
  198. package/dist/roap/request.js.map +1 -1
  199. package/dist/roap/turnDiscovery.js +91 -98
  200. package/dist/roap/turnDiscovery.js.map +1 -1
  201. package/dist/statsAnalyzer/global.js +1 -95
  202. package/dist/statsAnalyzer/global.js.map +1 -1
  203. package/dist/statsAnalyzer/index.js +372 -455
  204. package/dist/statsAnalyzer/index.js.map +1 -1
  205. package/dist/statsAnalyzer/mqaUtil.js +143 -87
  206. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  207. package/dist/transcription/index.js +22 -47
  208. package/dist/transcription/index.js.map +1 -1
  209. package/dist/types/breakouts/breakout.d.ts +8 -0
  210. package/dist/types/breakouts/collection.d.ts +5 -0
  211. package/dist/types/breakouts/edit-lock-error.d.ts +15 -0
  212. package/dist/types/breakouts/index.d.ts +5 -0
  213. package/dist/types/breakouts/request.d.ts +22 -0
  214. package/dist/types/breakouts/utils.d.ts +8 -0
  215. package/dist/types/common/browser-detection.d.ts +9 -0
  216. package/dist/types/common/collection.d.ts +48 -0
  217. package/dist/types/common/config.d.ts +2 -0
  218. package/dist/types/common/errors/captcha-error.d.ts +15 -0
  219. package/dist/types/common/errors/intent-to-join.d.ts +16 -0
  220. package/dist/types/common/errors/join-meeting.d.ts +17 -0
  221. package/dist/types/common/errors/media.d.ts +15 -0
  222. package/dist/types/common/errors/parameter.d.ts +15 -0
  223. package/dist/types/common/errors/password-error.d.ts +15 -0
  224. package/dist/types/common/errors/permission.d.ts +14 -0
  225. package/dist/types/common/errors/reconnection-in-progress.d.ts +9 -0
  226. package/dist/types/common/errors/reconnection.d.ts +15 -0
  227. package/dist/types/common/errors/stats.d.ts +15 -0
  228. package/dist/types/common/errors/webex-errors.d.ts +69 -0
  229. package/dist/types/common/errors/webex-meetings-error.d.ts +20 -0
  230. package/dist/types/common/events/events-scope.d.ts +17 -0
  231. package/dist/types/common/events/events.d.ts +12 -0
  232. package/dist/types/common/events/trigger-proxy.d.ts +2 -0
  233. package/dist/types/common/events/util.d.ts +2 -0
  234. package/dist/types/common/logs/logger-config.d.ts +2 -0
  235. package/dist/types/common/logs/logger-proxy.d.ts +2 -0
  236. package/dist/types/common/logs/request.d.ts +34 -0
  237. package/dist/types/common/queue.d.ts +32 -0
  238. package/dist/types/config.d.ts +77 -0
  239. package/dist/types/constants.d.ts +944 -0
  240. package/dist/types/controls-options-manager/constants.d.ts +4 -0
  241. package/dist/types/controls-options-manager/enums.d.ts +6 -0
  242. package/dist/types/controls-options-manager/index.d.ts +128 -0
  243. package/dist/types/controls-options-manager/util.d.ts +9 -0
  244. package/dist/types/index.d.ts +6 -0
  245. package/dist/types/locus-info/controlsUtils.d.ts +2 -0
  246. package/dist/types/locus-info/embeddedAppsUtils.d.ts +2 -0
  247. package/dist/types/locus-info/fullState.d.ts +2 -0
  248. package/dist/types/locus-info/hostUtils.d.ts +2 -0
  249. package/dist/types/locus-info/index.d.ts +276 -0
  250. package/dist/types/locus-info/infoUtils.d.ts +2 -0
  251. package/dist/types/locus-info/mediaSharesUtils.d.ts +2 -0
  252. package/dist/types/locus-info/parser.d.ts +212 -0
  253. package/dist/types/locus-info/selfUtils.d.ts +2 -0
  254. package/dist/types/media/index.d.ts +32 -0
  255. package/dist/types/media/properties.d.ts +108 -0
  256. package/dist/types/media/util.d.ts +2 -0
  257. package/dist/types/mediaQualityMetrics/config.d.ts +365 -0
  258. package/dist/types/meeting/in-meeting-actions.d.ts +101 -0
  259. package/dist/types/meeting/index.d.ts +1720 -0
  260. package/dist/types/meeting/muteState.d.ts +132 -0
  261. package/dist/types/meeting/request.d.ts +271 -0
  262. package/dist/types/meeting/request.type.d.ts +11 -0
  263. package/dist/types/meeting/state.d.ts +9 -0
  264. package/dist/types/meeting/util.d.ts +2 -0
  265. package/dist/types/meeting-info/collection.d.ts +20 -0
  266. package/dist/types/meeting-info/index.d.ts +57 -0
  267. package/dist/types/meeting-info/meeting-info-v2.d.ts +93 -0
  268. package/dist/types/meeting-info/request.d.ts +22 -0
  269. package/dist/types/meeting-info/util.d.ts +2 -0
  270. package/dist/types/meeting-info/utilv2.d.ts +2 -0
  271. package/dist/types/meetings/collection.d.ts +31 -0
  272. package/dist/types/meetings/index.d.ts +315 -0
  273. package/dist/types/meetings/request.d.ts +27 -0
  274. package/dist/types/meetings/util.d.ts +18 -0
  275. package/dist/types/member/index.d.ts +156 -0
  276. package/dist/types/member/types.d.ts +21 -0
  277. package/dist/types/member/util.d.ts +2 -0
  278. package/dist/types/members/collection.d.ts +29 -0
  279. package/dist/types/members/index.d.ts +343 -0
  280. package/dist/types/members/request.d.ts +58 -0
  281. package/dist/types/members/types.d.ts +24 -0
  282. package/dist/types/members/util.d.ts +2 -0
  283. package/dist/types/metrics/config.d.ts +171 -0
  284. package/dist/types/metrics/constants.d.ts +53 -0
  285. package/dist/types/metrics/index.d.ts +152 -0
  286. package/dist/types/multistream/mediaRequestManager.d.ts +68 -0
  287. package/dist/types/multistream/receiveSlot.d.ts +68 -0
  288. package/dist/types/multistream/receiveSlotManager.d.ts +49 -0
  289. package/dist/types/multistream/remoteMedia.d.ts +100 -0
  290. package/dist/types/multistream/remoteMediaGroup.d.ts +56 -0
  291. package/dist/types/multistream/remoteMediaManager.d.ts +263 -0
  292. package/dist/types/networkQualityMonitor/index.d.ts +70 -0
  293. package/dist/types/personal-meeting-room/index.d.ts +47 -0
  294. package/dist/types/personal-meeting-room/request.d.ts +14 -0
  295. package/dist/types/personal-meeting-room/util.d.ts +2 -0
  296. package/dist/types/reachability/index.d.ts +152 -0
  297. package/dist/types/reachability/request.d.ts +37 -0
  298. package/dist/types/reactions/constants.d.ts +3 -0
  299. package/dist/types/reactions/reactions.d.ts +4 -0
  300. package/dist/types/reactions/reactions.type.d.ts +52 -0
  301. package/dist/types/reconnection-manager/index.d.ts +126 -0
  302. package/dist/types/recording-controller/enums.d.ts +7 -0
  303. package/dist/types/recording-controller/index.d.ts +193 -0
  304. package/dist/types/recording-controller/util.d.ts +13 -0
  305. package/dist/types/roap/index.d.ts +77 -0
  306. package/dist/types/roap/request.d.ts +38 -0
  307. package/dist/types/roap/turnDiscovery.d.ts +74 -0
  308. package/dist/types/statsAnalyzer/global.d.ts +36 -0
  309. package/dist/types/statsAnalyzer/index.d.ts +195 -0
  310. package/dist/types/statsAnalyzer/mqaUtil.d.ts +24 -0
  311. package/dist/types/transcription/index.d.ts +64 -0
  312. package/internal-README.md +7 -6
  313. package/package.json +27 -21
  314. package/src/breakouts/README.md +219 -0
  315. package/src/breakouts/breakout.ts +153 -0
  316. package/src/breakouts/collection.ts +19 -0
  317. package/src/breakouts/edit-lock-error.ts +25 -0
  318. package/src/breakouts/index.ts +745 -0
  319. package/src/breakouts/request.ts +55 -0
  320. package/src/breakouts/utils.ts +44 -0
  321. package/src/common/{browser-detection.js → browser-detection.ts} +9 -6
  322. package/src/common/collection.ts +9 -7
  323. package/src/common/{config.js → config.ts} +1 -1
  324. package/src/common/errors/{captcha-error.js → captcha-error.ts} +11 -7
  325. package/src/common/errors/{intent-to-join.js → intent-to-join.ts} +12 -7
  326. package/src/common/errors/{join-meeting.js → join-meeting.ts} +17 -8
  327. package/src/common/errors/{media.js → media.ts} +11 -7
  328. package/src/common/errors/parameter.ts +11 -7
  329. package/src/common/errors/{password-error.js → password-error.ts} +11 -7
  330. package/src/common/errors/{permission.js → permission.ts} +10 -6
  331. package/src/common/errors/{reconnection.js → reconnection.ts} +11 -7
  332. package/src/common/errors/{stats.js → stats.ts} +11 -7
  333. package/src/common/errors/{webex-errors.js → webex-errors.ts} +8 -7
  334. package/src/common/errors/{webex-meetings-error.js → webex-meetings-error.ts} +4 -2
  335. package/src/common/events/{events-scope.js → events-scope.ts} +6 -2
  336. package/src/common/events/{events.js → events.ts} +5 -1
  337. package/src/common/events/{trigger-proxy.js → trigger-proxy.ts} +9 -5
  338. package/src/common/events/{util.js → util.ts} +2 -3
  339. package/src/common/logs/{logger-config.js → logger-config.ts} +1 -2
  340. package/src/common/logs/logger-proxy.ts +44 -0
  341. package/src/common/logs/{request.js → request.ts} +22 -9
  342. package/src/common/queue.ts +1 -2
  343. package/src/{config.js → config.ts} +17 -12
  344. package/src/constants.ts +92 -5
  345. package/src/controls-options-manager/constants.ts +5 -0
  346. package/src/controls-options-manager/enums.ts +7 -0
  347. package/src/controls-options-manager/index.ts +240 -0
  348. package/src/controls-options-manager/util.ts +30 -0
  349. package/src/index.js +4 -1
  350. package/src/locus-info/controlsUtils.ts +141 -0
  351. package/src/locus-info/{embeddedAppsUtils.js → embeddedAppsUtils.ts} +5 -6
  352. package/src/locus-info/{fullState.js → fullState.ts} +16 -12
  353. package/src/locus-info/{hostUtils.js → hostUtils.ts} +9 -8
  354. package/src/locus-info/{index.js → index.ts} +211 -71
  355. package/src/locus-info/{infoUtils.js → infoUtils.ts} +19 -8
  356. package/src/locus-info/{mediaSharesUtils.js → mediaSharesUtils.ts} +17 -17
  357. package/src/locus-info/{parser.js → parser.ts} +67 -79
  358. package/src/locus-info/{selfUtils.js → selfUtils.ts} +183 -67
  359. package/src/media/{index.js → index.ts} +179 -176
  360. package/src/media/{properties.js → properties.ts} +60 -37
  361. package/src/media/{util.js → util.ts} +2 -2
  362. package/src/mediaQualityMetrics/config.ts +384 -0
  363. package/src/meeting/in-meeting-actions.ts +67 -3
  364. package/src/meeting/{index.js → index.ts} +2605 -1605
  365. package/src/meeting/{muteState.js → muteState.ts} +138 -73
  366. package/src/meeting/{request.js → request.ts} +326 -142
  367. package/src/meeting/request.type.ts +13 -0
  368. package/src/meeting/{state.js → state.ts} +50 -35
  369. package/src/meeting/{util.js → util.ts} +131 -115
  370. package/src/meeting-info/{collection.js → collection.ts} +6 -2
  371. package/src/meeting-info/{index.js → index.ts} +42 -36
  372. package/src/meeting-info/meeting-info-v2.ts +273 -0
  373. package/src/meeting-info/{request.js → request.ts} +14 -4
  374. package/src/meeting-info/{util.js → util.ts} +60 -51
  375. package/src/meeting-info/{utilv2.js → utilv2.ts} +65 -58
  376. package/src/meetings/{collection.js → collection.ts} +26 -3
  377. package/src/meetings/index.ts +1275 -0
  378. package/src/meetings/{request.js → request.ts} +34 -25
  379. package/src/meetings/{util.js → util.ts} +99 -33
  380. package/src/member/{index.js → index.ts} +124 -56
  381. package/src/member/types.ts +24 -0
  382. package/src/member/{util.js → util.ts} +105 -25
  383. package/src/members/{collection.js → collection.ts} +10 -2
  384. package/src/members/{index.js → index.ts} +281 -144
  385. package/src/members/{request.js → request.ts} +80 -16
  386. package/src/members/types.ts +28 -0
  387. package/src/members/{util.js → util.ts} +108 -55
  388. package/src/metrics/{config.js → config.ts} +255 -92
  389. package/src/metrics/{constants.js → constants.ts} +0 -6
  390. package/src/metrics/{index.js → index.ts} +110 -94
  391. package/src/multistream/mediaRequestManager.ts +144 -40
  392. package/src/multistream/receiveSlot.ts +69 -26
  393. package/src/multistream/receiveSlotManager.ts +50 -38
  394. package/src/multistream/remoteMedia.ts +30 -4
  395. package/src/multistream/remoteMediaGroup.ts +4 -3
  396. package/src/multistream/remoteMediaManager.ts +230 -66
  397. package/src/networkQualityMonitor/{index.js → index.ts} +41 -29
  398. package/src/personal-meeting-room/{index.js → index.ts} +28 -19
  399. package/src/personal-meeting-room/{request.js → request.ts} +13 -4
  400. package/src/personal-meeting-room/{util.js → util.ts} +4 -4
  401. package/src/reachability/{index.js → index.ts} +157 -94
  402. package/src/reachability/request.ts +46 -35
  403. package/src/reactions/constants.ts +4 -0
  404. package/src/reactions/reactions.ts +104 -0
  405. package/src/reactions/reactions.type.ts +62 -0
  406. package/src/reconnection-manager/{index.js → index.ts} +228 -120
  407. package/src/recording-controller/enums.ts +8 -0
  408. package/src/recording-controller/index.ts +315 -0
  409. package/src/recording-controller/util.ts +58 -0
  410. package/src/roap/{index.js → index.ts} +77 -60
  411. package/src/roap/request.ts +172 -0
  412. package/src/roap/turnDiscovery.ts +81 -41
  413. package/src/statsAnalyzer/global.ts +37 -0
  414. package/src/statsAnalyzer/index.ts +1242 -0
  415. package/src/statsAnalyzer/mqaUtil.ts +291 -0
  416. package/src/transcription/{index.js → index.ts} +46 -39
  417. package/test/integration/spec/converged-space-meetings.js +176 -0
  418. package/test/integration/spec/journey.js +665 -464
  419. package/test/integration/spec/space-meeting.js +320 -206
  420. package/test/integration/spec/transcription.js +7 -8
  421. package/test/unit/spec/breakouts/breakout.ts +178 -0
  422. package/test/unit/spec/breakouts/collection.ts +15 -0
  423. package/test/unit/spec/breakouts/edit-lock-error.ts +30 -0
  424. package/test/unit/spec/breakouts/index.ts +1252 -0
  425. package/test/unit/spec/breakouts/request.ts +104 -0
  426. package/test/unit/spec/breakouts/utils.js +54 -0
  427. package/test/unit/spec/common/browser-detection.js +9 -28
  428. package/test/unit/spec/controls-options-manager/index.js +204 -0
  429. package/test/unit/spec/controls-options-manager/util.js +86 -0
  430. package/test/unit/spec/fixture/locus.js +92 -90
  431. package/test/unit/spec/locus-info/controlsUtils.js +133 -34
  432. package/test/unit/spec/locus-info/embeddedAppsUtils.js +8 -6
  433. package/test/unit/spec/locus-info/index.js +303 -2
  434. package/test/unit/spec/locus-info/infoUtils.js +41 -32
  435. package/test/unit/spec/locus-info/lib/BasicSeqCmp.json +88 -430
  436. package/test/unit/spec/locus-info/lib/SeqCmp.json +513 -685
  437. package/test/unit/spec/locus-info/parser.js +3 -9
  438. package/test/unit/spec/locus-info/selfConstant.js +101 -103
  439. package/test/unit/spec/locus-info/selfUtils.js +165 -12
  440. package/test/unit/spec/media/index.ts +72 -8
  441. package/test/unit/spec/media/properties.ts +9 -9
  442. package/test/unit/spec/meeting/in-meeting-actions.ts +29 -2
  443. package/test/unit/spec/meeting/index.js +2503 -802
  444. package/test/unit/spec/meeting/muteState.js +146 -61
  445. package/test/unit/spec/meeting/request.js +141 -43
  446. package/test/unit/spec/meeting/utils.js +135 -164
  447. package/test/unit/spec/meeting-info/meetinginfov2.js +100 -73
  448. package/test/unit/spec/meeting-info/request.js +7 -9
  449. package/test/unit/spec/meeting-info/util.js +11 -12
  450. package/test/unit/spec/meeting-info/utilv2.js +110 -74
  451. package/test/unit/spec/meetings/collection.js +15 -1
  452. package/test/unit/spec/meetings/index.js +622 -263
  453. package/test/unit/spec/meetings/utils.js +65 -14
  454. package/test/unit/spec/member/index.js +24 -1
  455. package/test/unit/spec/member/util.js +359 -32
  456. package/test/unit/spec/members/index.js +294 -54
  457. package/test/unit/spec/members/request.js +50 -20
  458. package/test/unit/spec/members/utils.js +147 -4
  459. package/test/unit/spec/metrics/index.js +16 -21
  460. package/test/unit/spec/multistream/mediaRequestManager.ts +369 -68
  461. package/test/unit/spec/multistream/receiveSlot.ts +76 -17
  462. package/test/unit/spec/multistream/receiveSlotManager.ts +60 -38
  463. package/test/unit/spec/multistream/remoteMedia.ts +32 -2
  464. package/test/unit/spec/multistream/remoteMediaGroup.ts +5 -5
  465. package/test/unit/spec/multistream/remoteMediaManager.ts +549 -65
  466. package/test/unit/spec/networkQualityMonitor/index.js +24 -18
  467. package/test/unit/spec/personal-meeting-room/personal-meeting-room.js +2 -7
  468. package/test/unit/spec/reachability/index.ts +176 -27
  469. package/test/unit/spec/reachability/request.js +66 -0
  470. package/test/unit/spec/reconnection-manager/index.js +58 -30
  471. package/test/unit/spec/recording-controller/index.js +231 -0
  472. package/test/unit/spec/recording-controller/util.js +102 -0
  473. package/test/unit/spec/roap/index.ts +12 -8
  474. package/test/unit/spec/roap/request.ts +217 -0
  475. package/test/unit/spec/roap/turnDiscovery.ts +72 -49
  476. package/test/unit/spec/stats-analyzer/index.js +108 -57
  477. package/test/utils/cmr.js +44 -42
  478. package/test/utils/constants.js +9 -0
  479. package/test/utils/testUtils.js +98 -77
  480. package/test/utils/webex-config.js +22 -18
  481. package/test/utils/webex-test-users.js +57 -50
  482. package/tsconfig.json +6 -0
  483. package/dist/media/internal-media-core-wrapper.js +0 -22
  484. package/dist/media/internal-media-core-wrapper.js.map +0 -1
  485. package/dist/meeting/effectsState.js +0 -327
  486. package/dist/meeting/effectsState.js.map +0 -1
  487. package/dist/multistream/multistreamMedia.js +0 -116
  488. package/dist/multistream/multistreamMedia.js.map +0 -1
  489. package/dist/peer-connection-manager/util.js +0 -124
  490. package/dist/peer-connection-manager/util.js.map +0 -1
  491. package/src/common/logs/logger-proxy.js +0 -33
  492. package/src/locus-info/controlsUtils.js +0 -102
  493. package/src/media/internal-media-core-wrapper.ts +0 -9
  494. package/src/mediaQualityMetrics/config.js +0 -382
  495. package/src/meeting/effectsState.js +0 -205
  496. package/src/meeting-info/meeting-info-v2.js +0 -255
  497. package/src/meetings/index.js +0 -1015
  498. package/src/multistream/multistreamMedia.ts +0 -92
  499. package/src/peer-connection-manager/util.ts +0 -117
  500. package/src/roap/request.js +0 -127
  501. package/src/statsAnalyzer/global.js +0 -133
  502. package/src/statsAnalyzer/index.js +0 -1006
  503. package/src/statsAnalyzer/mqaUtil.js +0 -173
  504. package/test/unit/spec/meeting/effectsState.js +0 -291
  505. package/test/unit/spec/peerconnection-manager/utils.test-fixtures.ts +0 -389
  506. /package/src/common/errors/{reconnection-in-progress.js → reconnection-in-progress.ts} +0 -0
@@ -1 +1 @@
1
- {"version":3,"names":["SelfUtils","PSTN_DEVICE_TYPE","parse","self","deviceId","joinedWith","devices","find","device","url","pstnDevices","filter","deviceType","remoteMuted","getRemoteMuted","unmuteAllowed","getUnmuteAllowed","localAudioUnmuteRequested","getLocalAudioUnmuteRequested","localAudioUnmuteRequired","getLocalAudioUnmuteRequired","lastModified","getLastModified","modifiedBy","getModifiedBy","guest","moderator","mediaStatus","getStatus","status","state","currentMediaStatus","getMediaStatus","mediaSessions","creator","isCreator","selfId","id","selfIdentity","getSelfIdentity","selfUrl","removed","roles","getRoles","isUserUnadmitted","_IDLE_","intent","type","_WAIT_","layout","getLayout","canNotViewTheParticipantList","isSharingBlocked","controls","layouts","undefined","role","reduce","hasRole","push","getSelves","oldSelf","newSelf","previous","current","updates","isUserAdmitted","isMutedByOthersChanged","mutedByOthersChanged","localAudioUnmuteRequestedByServer","localAudioUnmuteRequiredByServer","moderatorChanged","isMediaInactiveOrReleased","wasMediaInactiveOrReleased","isUserObserving","isDeviceObserving","layoutChanged","isMediaInactive","audioStateChange","audio","videoStateChange","video","shareStateChange","share","canNotViewTheParticipantListChanged","isSharingBlockedChanged","isJoined","_JOINED_","previousMediaStatus","MEDIA_STATE","inactive","direction","meta","person","muted","requestedToUnmute","disallowUnmute","audioStatus","videoStatus","slides","videoSlidesStatus","changedSelf","_LEFT_","reason","MEETING_END_REASON","INACTIVE","MEDIA_RELEASED","isLocusUserUnadmitted","check","isLocusUserAdmitted","ParameterError","_MOVE_MEDIA_","_OBSERVE_","getSipUrl","partner","sipUri","_CALL_","sipUrl","media","mediaType","AUDIO","mediaContent","MediaContent","main","VIDEO"],"sources":["selfUtils.js"],"sourcesContent":["\nimport {\n _IDLE_,\n _JOINED_,\n _CALL_,\n _WAIT_,\n _MOVE_MEDIA_,\n _OBSERVE_,\n _LEFT_,\n MEETING_END_REASON,\n MEDIA_STATE,\n AUDIO,\n VIDEO,\n MediaContent\n} from '../constants';\nimport ParameterError from '../common/errors/parameter';\n\nconst SelfUtils = {};\nconst PSTN_DEVICE_TYPE = 'PROVISIONAL';\n\n/**\n * parses the relevant values for self: muted, guest, moderator, mediaStatus, state, joinedWith, pstnDevices, creator, id\n * @param {Object} self\n * @param {String} deviceId\n * @returns {undefined}\n */\nSelfUtils.parse = (self, deviceId) => {\n if (self) {\n const joinedWith = self.devices.find((device) => deviceId === device.url);\n const pstnDevices = self.devices.filter((device) => PSTN_DEVICE_TYPE === device.deviceType);\n\n return {\n remoteMuted: SelfUtils.getRemoteMuted(self),\n unmuteAllowed: SelfUtils.getUnmuteAllowed(self),\n localAudioUnmuteRequested: SelfUtils.getLocalAudioUnmuteRequested(self),\n localAudioUnmuteRequired: SelfUtils.getLocalAudioUnmuteRequired(self),\n lastModified: SelfUtils.getLastModified(self),\n modifiedBy: SelfUtils.getModifiedBy(self),\n guest: self.guest,\n moderator: self.moderator,\n // cumulative media stats\n mediaStatus: SelfUtils.getStatus(self.status),\n // TODO: what should be the status if user has refreshed the page,\n // check the joinedWith parameter and communicate to the user\n state: self.state,\n // TODO: give a proper name . With same device as login or different login`\n // Some times we might have joined with both mobile and web\n joinedWith,\n pstnDevices,\n // current media stats is for the current device who has joined\n currentMediaStatus: SelfUtils.getMediaStatus(\n joinedWith?.mediaSessions\n ),\n creator: self.isCreator, // check if its used,\n selfId: self.id,\n selfIdentity: SelfUtils.getSelfIdentity(self),\n selfUrl: self.url,\n removed: self.removed,\n roles: SelfUtils.getRoles(self),\n isUserUnadmitted: self.state === _IDLE_ && joinedWith?.intent?.type === _WAIT_,\n layout: SelfUtils.getLayout(self),\n canNotViewTheParticipantList: SelfUtils.canNotViewTheParticipantList(self),\n isSharingBlocked: SelfUtils.isSharingBlocked(self)\n };\n }\n\n return null;\n};\n\nSelfUtils.getLayout = (self) => (Array.isArray(self?.controls?.layouts) ? self.controls.layouts[0].type : undefined);\n\nSelfUtils.getRoles = (self) => (self?.controls?.role?.roles || []).reduce((roles, role) => {\n if (role.hasRole) {\n roles.push(role.type);\n }\n\n return roles;\n}, []);\n\nSelfUtils.canNotViewTheParticipantList = (self) => !!self?.canNotViewTheParticipantList;\n\nSelfUtils.isSharingBlocked = (self) => !!self?.isSharingBlocked;\n\nSelfUtils.getSelves = (oldSelf, newSelf, deviceId) => {\n const previous = oldSelf && SelfUtils.parse(oldSelf, deviceId);\n const current = newSelf && SelfUtils.parse(newSelf, deviceId);\n const updates = {};\n\n updates.isUserUnadmitted = SelfUtils.isUserUnadmitted(current);\n updates.isUserAdmitted = SelfUtils.isUserAdmitted(previous, current);\n updates.isMutedByOthersChanged = SelfUtils.mutedByOthersChanged(previous, current);\n updates.localAudioUnmuteRequestedByServer = SelfUtils.localAudioUnmuteRequestedByServer(previous, current);\n updates.localAudioUnmuteRequiredByServer = SelfUtils.localAudioUnmuteRequiredByServer(previous, current);\n updates.moderatorChanged = SelfUtils.moderatorChanged(previous, current);\n updates.isMediaInactiveOrReleased = SelfUtils.wasMediaInactiveOrReleased(previous, current);\n updates.isUserObserving = SelfUtils.isDeviceObserving(previous, current);\n updates.layoutChanged = SelfUtils.layoutChanged(previous, current);\n\n updates.isMediaInactive = SelfUtils.isMediaInactive(previous, current);\n updates.audioStateChange = previous?.currentMediaStatus.audio !== current.currentMediaStatus.audio;\n updates.videoStateChange = previous?.currentMediaStatus.video !== current.currentMediaStatus.video;\n updates.shareStateChange = previous?.currentMediaStatus.share !== current.currentMediaStatus.share;\n\n updates.canNotViewTheParticipantListChanged = previous?.canNotViewTheParticipantList !== current.canNotViewTheParticipantList;\n updates.isSharingBlockedChanged = previous?.isSharingBlocked !== current.isSharingBlocked;\n\n return {\n previous,\n current,\n updates\n };\n};\n\n/**\n * Checks if user has joined the meeting\n * @param {Object} self\n * @returns {boolean} isJoined\n*/\nSelfUtils.isJoined = (self) => self?.state === _JOINED_;\n\n/**\n * Validate if the Meeting Layout Controls Layout has changed.\n *\n * @param {Self} previous - Previous self state\n * @param {Self} current - Current self state [per event]\n * @returns {boolean} - If the MEeting Layout Controls Layout has changed.\n */\nSelfUtils.layoutChanged = (previous, current) => current?.layout && previous?.layout !== current?.layout;\n\n\nSelfUtils.isMediaInactive = (previous, current) => {\n if (\n previous &&\n previous.joinedWith &&\n previous.joinedWith.mediaSessions &&\n current &&\n current.joinedWith &&\n current.joinedWith.mediaSessions\n ) {\n const previousMediaStatus = SelfUtils.getMediaStatus(\n previous.joinedWith.mediaSessions\n );\n const currentMediaStatus = SelfUtils.getMediaStatus(\n current.joinedWith.mediaSessions\n );\n\n if (\n previousMediaStatus.audio && currentMediaStatus.audio &&\n previousMediaStatus.audio.state !== MEDIA_STATE.inactive &&\n currentMediaStatus.audio.state === MEDIA_STATE.inactive &&\n currentMediaStatus.audio.direction !== MEDIA_STATE.inactive\n ) {\n return true;\n }\n\n if (\n previousMediaStatus.video && currentMediaStatus.video &&\n previousMediaStatus.video.state !== MEDIA_STATE.inactive &&\n currentMediaStatus.video.state === MEDIA_STATE.inactive &&\n currentMediaStatus.video.direction !== MEDIA_STATE.inactive\n ) {\n return true;\n }\n\n if (\n previousMediaStatus.share && currentMediaStatus.share &&\n previousMediaStatus.share.state !== MEDIA_STATE.inactive &&\n currentMediaStatus.share.state === MEDIA_STATE.inactive &&\n currentMediaStatus.share.direction !== MEDIA_STATE.inactive\n ) {\n return true;\n }\n\n return false;\n }\n\n return false;\n};\n\nSelfUtils.getLastModified = (self) => {\n if (!self || !self.controls || !self.controls.audio || !self.controls.audio.meta || !self.controls.audio.meta.lastModified) {\n return null;\n }\n\n return self.controls.audio.meta.lastModified;\n};\n\nSelfUtils.getModifiedBy = (self) => {\n if (!self || !self.controls || !self.controls.audio || !self.controls.audio.meta || !self.controls.audio.meta.modifiedBy) {\n return null;\n }\n\n return self.controls.audio.meta.modifiedBy;\n};\n\n/**\n * get the id from the self object\n * @param {Object} self\n * @returns {String}\n */\nSelfUtils.getSelfIdentity = (self) => {\n if (!self && !self.person) {\n return null;\n }\n\n return self.person.id;\n};\n\n/**\n * get the \"remote mute\" property from the self object\n * @param {Object} self\n * @returns {Boolean}\n */\nSelfUtils.getRemoteMuted = (self) => {\n if (!self || !self.controls || !self.controls.audio) {\n return null;\n }\n\n return self.controls.audio.muted;\n};\n\nSelfUtils.getLocalAudioUnmuteRequested = (self) => !!self?.controls?.audio?.requestedToUnmute;\n\nSelfUtils.getUnmuteAllowed = (self) => {\n if (!self || !self.controls || !self.controls.audio) {\n return null;\n }\n\n return !self.controls.audio.disallowUnmute;\n};\n\n\nSelfUtils.getLocalAudioUnmuteRequired = (self) => !!self?.controls?.audio?.localAudioUnmuteRequired;\n\nSelfUtils.getStatus = (status) => ({\n audio: status.audioStatus,\n video: status.videoStatus,\n slides: status.videoSlidesStatus\n});\n\n\n/**\n * @param {Object} oldSelf\n * @param {Object} changedSelf\n * @returns {Boolean}\n */\nSelfUtils.wasMediaInactiveOrReleased = (oldSelf = {}, changedSelf) => oldSelf.joinedWith && oldSelf.joinedWith.state === _JOINED_ && changedSelf.joinedWith.state === _LEFT_ &&\n (changedSelf.joinedWith.reason === MEETING_END_REASON.INACTIVE || changedSelf.joinedWith.reason === MEETING_END_REASON.MEDIA_RELEASED);\n\n\n/**\n * @param {Object} check\n * @returns {Boolean}\n */\nSelfUtils.isLocusUserUnadmitted = (check) => check && check.joinedWith?.intent?.type === _WAIT_ && check.state === _IDLE_;\n\n/**\n * @param {Object} check\n * @returns {Boolean}\n */\nSelfUtils.isLocusUserAdmitted = (check) => check && check.joinedWith?.intent?.type !== _WAIT_ && check.state === _JOINED_;\n\n/**\n * @param {Object} self\n * @returns {Boolean}\n * @throws {Error} when self is undefined\n */\nSelfUtils.isUserUnadmitted = (self) => {\n if (!self) {\n throw new ParameterError('self must be defined to determine if self is unadmitted as guest.');\n }\n\n return SelfUtils.isLocusUserUnadmitted(self);\n};\n\nSelfUtils.moderatorChanged = (oldSelf, changedSelf) => {\n if (!oldSelf) {\n return true;\n }\n if (!changedSelf) {\n throw new ParameterError('New self must be defined to determine if self transitioned moderator status.');\n }\n\n return oldSelf.moderator !== changedSelf.moderator;\n};\n\n\n/**\n * @param {Object} oldSelf\n * @param {Object} changedSelf\n * @returns {Boolean}\n * @throws {Error} if changed self was undefined\n */\nSelfUtils.isDeviceObserving = (oldSelf, changedSelf) => oldSelf && oldSelf.joinedWith?.intent?.type === _MOVE_MEDIA_ && changedSelf && changedSelf.joinedWith?.intent?.type === _OBSERVE_;\n\n/**\n * @param {Object} oldSelf\n * @param {Object} changedSelf\n * @returns {Boolean}\n * @throws {Error} if changed self was undefined\n */\nSelfUtils.isUserAdmitted = (oldSelf, changedSelf) => {\n if (!oldSelf) {\n // if there was no previous locus, it couldn't have been admitted yet\n return false;\n }\n if (!changedSelf) {\n throw new ParameterError('New self must be defined to determine if self transitioned to admitted as guest.');\n }\n\n return SelfUtils.isLocusUserUnadmitted(oldSelf) && SelfUtils.isLocusUserAdmitted(changedSelf);\n};\n\nSelfUtils.mutedByOthersChanged = (oldSelf, changedSelf) => {\n if (!changedSelf) {\n throw new ParameterError('New self must be defined to determine if self was muted by others.');\n }\n\n if (!oldSelf || (oldSelf.remoteMuted === null)) {\n if (changedSelf.remoteMuted) {\n return true; // this happens when mute on-entry is enabled\n }\n\n // we don't want to be sending the 'meeting:self:unmutedByOthers' notification on meeting join\n return false;\n }\n\n return (changedSelf.remoteMuted !== null) &&\n ((oldSelf.remoteMuted !== changedSelf.remoteMuted) || (changedSelf.remoteMuted && (oldSelf.unmuteAllowed !== changedSelf.unmuteAllowed)));\n};\n\nSelfUtils.localAudioUnmuteRequestedByServer = (oldSelf = {}, changedSelf) => {\n if (!changedSelf) {\n throw new ParameterError('New self must be defined to determine if self received request to unmute.');\n }\n\n return changedSelf.localAudioUnmuteRequested && !oldSelf.localAudioUnmuteRequested;\n};\n\n\nSelfUtils.localAudioUnmuteRequiredByServer = (oldSelf = {}, changedSelf) => {\n if (!changedSelf) {\n throw new ParameterError('New self must be defined to determine if localAudioUnmuteRequired changed.');\n }\n\n return !changedSelf.remoteMuted && changedSelf.localAudioUnmuteRequired && (oldSelf.localAudioUnmuteRequired !== changedSelf.localAudioUnmuteRequired);\n};\n\n/**\n * extract the sipUrl from the partner\n * @param {Object} partner\n * @param {Object} info\n * @returns {Object}\n */\n\nSelfUtils.getSipUrl = (partner, type, sipUri) => {\n // For webex meeting the sipUrl gets updated in info parser\n if (partner && type === _CALL_) {\n return {sipUri: partner.person.sipUrl || partner.person.id};\n }\n\n return {sipUri};\n};\n\nSelfUtils.getMediaStatus = (mediaSessions = []) => {\n const mediaStatus = {\n audio: {},\n video: {},\n share: {}\n };\n\n mediaStatus.audio = mediaSessions.find((media) => media.mediaType === AUDIO && media.mediaContent === MediaContent.main);\n mediaStatus.video = mediaSessions.find((media) => media.mediaType === VIDEO && media.mediaContent === MediaContent.main);\n mediaStatus.share = mediaSessions.find((media) => media.mediaType === VIDEO && media.mediaContent === MediaContent.slides);\n\n return mediaStatus;\n};\n\n\nexport default SelfUtils;\n"],"mappings":"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"}
1
+ {"version":3,"names":["SelfUtils","PSTN_DEVICE_TYPE","parse","self","deviceId","joinedWith","devices","find","device","url","pstnDevices","filter","deviceType","remoteVideoMuted","getRemoteVideoMuted","remoteMuted","getRemoteMuted","unmuteAllowed","getUnmuteAllowed","localAudioUnmuteRequested","getLocalAudioUnmuteRequested","localAudioUnmuteRequired","getLocalAudioUnmuteRequired","lastModified","getLastModified","modifiedBy","getModifiedBy","guest","moderator","mediaStatus","getStatus","status","state","currentMediaStatus","getMediaStatus","mediaSessions","creator","isCreator","selfId","id","selfIdentity","getSelfIdentity","selfUrl","removed","roles","getRoles","isUserUnadmitted","_IDLE_","intent","type","_WAIT_","layout","getLayout","canNotViewTheParticipantList","isSharingBlocked","breakoutSessions","getBreakouts","controls","breakout","sessions","layouts","undefined","role","reduce","hasRole","push","getSelves","oldSelf","newSelf","previous","current","updates","isUserAdmitted","isVideoMutedByOthersChanged","videoMutedByOthersChanged","isMutedByOthersChanged","mutedByOthersChanged","localAudioUnmuteRequestedByServer","localAudioUnmuteRequiredByServer","moderatorChanged","isUpgradeToModeratorOrCohost","isMediaInactiveOrReleased","wasMediaInactiveOrReleased","isUserObserving","isDeviceObserving","layoutChanged","isMediaInactive","audioStateChange","audio","videoStateChange","video","shareStateChange","share","canNotViewTheParticipantListChanged","isSharingBlockedChanged","breakoutsChanged","isJoined","_JOINED_","previousMediaStatus","MEDIA_STATE","inactive","direction","meta","person","muted","requestedToUnmute","disallowUnmute","audioStatus","videoStatus","slides","videoSlidesStatus","changedSelf","_LEFT_","reason","MEETING_END_REASON","INACTIVE","MEDIA_RELEASED","isLocusUserUnadmitted","check","isLocusUserAdmitted","ParameterError","isAttendeeOnly","includes","SELF_ROLES","ATTENDEE","COHOST","MODERATOR","isCohost","isModerator","_MOVE_MEDIA_","_OBSERVE_","getSipUrl","partner","sipUri","_CALL_","sipUrl","media","mediaType","AUDIO","mediaContent","MediaContent","main","VIDEO"],"sources":["selfUtils.ts"],"sourcesContent":["/* eslint-disable default-param-last */\n\nimport {isEqual} from 'lodash';\nimport {\n _IDLE_,\n _JOINED_,\n _CALL_,\n _WAIT_,\n _MOVE_MEDIA_,\n _OBSERVE_,\n _LEFT_,\n MEETING_END_REASON,\n MEDIA_STATE,\n AUDIO,\n VIDEO,\n MediaContent,\n SELF_ROLES,\n} from '../constants';\nimport ParameterError from '../common/errors/parameter';\n\nconst SelfUtils: any = {};\nconst PSTN_DEVICE_TYPE = 'PROVISIONAL';\n\n/**\n * parses the relevant values for self: muted, guest, moderator, mediaStatus, state, joinedWith, pstnDevices, creator, id\n * @param {Object} self\n * @param {String} deviceId\n * @returns {undefined}\n */\nSelfUtils.parse = (self: any, deviceId: string) => {\n if (self) {\n const joinedWith = self.devices.find((device) => deviceId === device.url);\n const pstnDevices = self.devices.filter((device) => PSTN_DEVICE_TYPE === device.deviceType);\n\n return {\n remoteVideoMuted: SelfUtils.getRemoteVideoMuted(self),\n remoteMuted: SelfUtils.getRemoteMuted(self),\n unmuteAllowed: SelfUtils.getUnmuteAllowed(self),\n localAudioUnmuteRequested: SelfUtils.getLocalAudioUnmuteRequested(self),\n localAudioUnmuteRequired: SelfUtils.getLocalAudioUnmuteRequired(self),\n lastModified: SelfUtils.getLastModified(self),\n modifiedBy: SelfUtils.getModifiedBy(self),\n guest: self.guest,\n moderator: self.moderator,\n // cumulative media stats\n mediaStatus: SelfUtils.getStatus(self.status),\n // TODO: what should be the status if user has refreshed the page,\n // check the joinedWith parameter and communicate to the user\n state: self.state,\n // TODO: give a proper name . With same device as login or different login`\n // Some times we might have joined with both mobile and web\n joinedWith,\n pstnDevices,\n // current media stats is for the current device who has joined\n currentMediaStatus: SelfUtils.getMediaStatus(joinedWith?.mediaSessions),\n creator: self.isCreator, // check if its used,\n selfId: self.id,\n selfIdentity: SelfUtils.getSelfIdentity(self),\n selfUrl: self.url,\n removed: self.removed,\n roles: SelfUtils.getRoles(self),\n isUserUnadmitted: self.state === _IDLE_ && joinedWith?.intent?.type === _WAIT_,\n layout: SelfUtils.getLayout(self),\n canNotViewTheParticipantList: SelfUtils.canNotViewTheParticipantList(self),\n isSharingBlocked: SelfUtils.isSharingBlocked(self),\n breakoutSessions: SelfUtils.getBreakouts(self),\n };\n }\n\n return null;\n};\n\nSelfUtils.getBreakouts = (self) => self?.controls?.breakout?.sessions;\n\nSelfUtils.getLayout = (self) =>\n Array.isArray(self?.controls?.layouts) ? self.controls.layouts[0].type : undefined;\n\nSelfUtils.getRoles = (self) =>\n (self?.controls?.role?.roles || []).reduce((roles, role) => {\n if (role.hasRole) {\n roles.push(role.type);\n }\n\n return roles;\n }, []);\n\nSelfUtils.canNotViewTheParticipantList = (self) => !!self?.canNotViewTheParticipantList;\n\nSelfUtils.isSharingBlocked = (self) => !!self?.isSharingBlocked;\n\nSelfUtils.getSelves = (oldSelf, newSelf, deviceId) => {\n const previous = oldSelf && SelfUtils.parse(oldSelf, deviceId);\n const current = newSelf && SelfUtils.parse(newSelf, deviceId);\n const updates: any = {};\n\n updates.isUserUnadmitted = SelfUtils.isUserUnadmitted(current);\n updates.isUserAdmitted = SelfUtils.isUserAdmitted(previous, current);\n updates.isVideoMutedByOthersChanged = SelfUtils.videoMutedByOthersChanged(previous, current);\n updates.isMutedByOthersChanged = SelfUtils.mutedByOthersChanged(previous, current);\n updates.localAudioUnmuteRequestedByServer = SelfUtils.localAudioUnmuteRequestedByServer(\n previous,\n current\n );\n updates.localAudioUnmuteRequiredByServer = SelfUtils.localAudioUnmuteRequiredByServer(\n previous,\n current\n );\n updates.moderatorChanged = SelfUtils.moderatorChanged(previous, current);\n updates.isUpgradeToModeratorOrCohost = SelfUtils.isUpgradeToModeratorOrCohost(previous, current);\n updates.isMediaInactiveOrReleased = SelfUtils.wasMediaInactiveOrReleased(previous, current);\n updates.isUserObserving = SelfUtils.isDeviceObserving(previous, current);\n updates.layoutChanged = SelfUtils.layoutChanged(previous, current);\n\n updates.isMediaInactive = SelfUtils.isMediaInactive(previous, current);\n updates.audioStateChange =\n previous?.currentMediaStatus.audio !== current.currentMediaStatus.audio;\n updates.videoStateChange =\n previous?.currentMediaStatus.video !== current.currentMediaStatus.video;\n updates.shareStateChange =\n previous?.currentMediaStatus.share !== current.currentMediaStatus.share;\n\n updates.canNotViewTheParticipantListChanged =\n previous?.canNotViewTheParticipantList !== current.canNotViewTheParticipantList;\n updates.isSharingBlockedChanged = previous?.isSharingBlocked !== current.isSharingBlocked;\n updates.breakoutsChanged = SelfUtils.breakoutsChanged(previous, current);\n\n return {\n previous,\n current,\n updates,\n };\n};\n\n/**\n * Checks if user has joined the meeting\n * @param {Object} self\n * @returns {boolean} isJoined\n */\nSelfUtils.isJoined = (self: any) => self?.state === _JOINED_;\n\n/**\n * Validate if the Meeting Layout Controls Layout has changed.\n *\n * @param {Self} previous - Previous self state\n * @param {Self} current - Current self state [per event]\n * @returns {boolean} - If the MEeting Layout Controls Layout has changed.\n */\nSelfUtils.layoutChanged = (previous: any, current: any) =>\n current?.layout && previous?.layout !== current?.layout;\n\nSelfUtils.breakoutsChanged = (previous, current) =>\n !isEqual(previous?.breakoutSessions, current?.breakoutSessions);\n\nSelfUtils.isMediaInactive = (previous, current) => {\n if (\n previous &&\n previous.joinedWith &&\n previous.joinedWith.mediaSessions &&\n current &&\n current.joinedWith &&\n current.joinedWith.mediaSessions\n ) {\n const previousMediaStatus = SelfUtils.getMediaStatus(previous.joinedWith.mediaSessions);\n const currentMediaStatus = SelfUtils.getMediaStatus(current.joinedWith.mediaSessions);\n\n if (\n previousMediaStatus.audio &&\n currentMediaStatus.audio &&\n previousMediaStatus.audio.state !== MEDIA_STATE.inactive &&\n currentMediaStatus.audio.state === MEDIA_STATE.inactive &&\n currentMediaStatus.audio.direction !== MEDIA_STATE.inactive\n ) {\n return true;\n }\n\n if (\n previousMediaStatus.video &&\n currentMediaStatus.video &&\n previousMediaStatus.video.state !== MEDIA_STATE.inactive &&\n currentMediaStatus.video.state === MEDIA_STATE.inactive &&\n currentMediaStatus.video.direction !== MEDIA_STATE.inactive\n ) {\n return true;\n }\n\n if (\n previousMediaStatus.share &&\n currentMediaStatus.share &&\n previousMediaStatus.share.state !== MEDIA_STATE.inactive &&\n currentMediaStatus.share.state === MEDIA_STATE.inactive &&\n currentMediaStatus.share.direction !== MEDIA_STATE.inactive\n ) {\n return true;\n }\n\n return false;\n }\n\n return false;\n};\n\nSelfUtils.getLastModified = (self) => {\n if (\n !self ||\n !self.controls ||\n !self.controls.audio ||\n !self.controls.audio.meta ||\n !self.controls.audio.meta.lastModified\n ) {\n return null;\n }\n\n return self.controls.audio.meta.lastModified;\n};\n\nSelfUtils.getModifiedBy = (self) => {\n if (\n !self ||\n !self.controls ||\n !self.controls.audio ||\n !self.controls.audio.meta ||\n !self.controls.audio.meta.modifiedBy\n ) {\n return null;\n }\n\n return self.controls.audio.meta.modifiedBy;\n};\n\n/**\n * get the id from the self object\n * @param {Object} self\n * @returns {String}\n */\nSelfUtils.getSelfIdentity = (self: any) => {\n if (!self && !self.person) {\n return null;\n }\n\n return self.person.id;\n};\n\n/**\n * get the \"remote video mute\" property from the self object\n * @param {Object} self\n * @returns {Boolean}\n */\nSelfUtils.getRemoteVideoMuted = (self: any) => {\n if (!self || !self.controls || !self.controls.video) {\n return null;\n }\n\n return self.controls.video.muted;\n};\n\n/**\n * get the \"remote mute\" property from the self object\n * @param {Object} self\n * @returns {Boolean}\n */\nSelfUtils.getRemoteMuted = (self: any) => {\n if (!self || !self.controls || !self.controls.audio) {\n return null;\n }\n\n return self.controls.audio.muted;\n};\n\nSelfUtils.getLocalAudioUnmuteRequested = (self) => !!self?.controls?.audio?.requestedToUnmute;\n\nSelfUtils.getUnmuteAllowed = (self) => {\n if (!self || !self.controls || !self.controls.audio) {\n return null;\n }\n\n return !self.controls.audio.disallowUnmute;\n};\n\nSelfUtils.getLocalAudioUnmuteRequired = (self) => !!self?.controls?.audio?.localAudioUnmuteRequired;\n\nSelfUtils.getStatus = (status) => ({\n audio: status.audioStatus,\n video: status.videoStatus,\n slides: status.videoSlidesStatus,\n});\n\n/**\n * @param {Object} oldSelf\n * @param {Object} changedSelf\n * @returns {Boolean}\n */\nSelfUtils.wasMediaInactiveOrReleased = (oldSelf: any = {}, changedSelf: any) =>\n oldSelf.joinedWith &&\n oldSelf.joinedWith.state === _JOINED_ &&\n changedSelf.joinedWith.state === _LEFT_ &&\n (changedSelf.joinedWith.reason === MEETING_END_REASON.INACTIVE ||\n changedSelf.joinedWith.reason === MEETING_END_REASON.MEDIA_RELEASED);\n\n/**\n * @param {Object} check\n * @returns {Boolean}\n */\nSelfUtils.isLocusUserUnadmitted = (check: any) =>\n check && check.joinedWith?.intent?.type === _WAIT_ && check.state === _IDLE_;\n\n/**\n * @param {Object} check\n * @returns {Boolean}\n */\nSelfUtils.isLocusUserAdmitted = (check: any) =>\n check && check.joinedWith?.intent?.type !== _WAIT_ && check.state === _JOINED_;\n\n/**\n * @param {Object} self\n * @returns {Boolean}\n * @throws {Error} when self is undefined\n */\nSelfUtils.isUserUnadmitted = (self: object) => {\n if (!self) {\n throw new ParameterError('self must be defined to determine if self is unadmitted as guest.');\n }\n\n return SelfUtils.isLocusUserUnadmitted(self);\n};\n\nSelfUtils.moderatorChanged = (oldSelf, changedSelf) => {\n if (!oldSelf) {\n return true;\n }\n if (!changedSelf) {\n throw new ParameterError(\n 'New self must be defined to determine if self transitioned moderator status.'\n );\n }\n\n return oldSelf.moderator !== changedSelf.moderator;\n};\n\n/**\n * @param {Object} oldSelf\n * @param {Object} changedSelf\n * @returns {Boolean}\n * @throws {Error} if changed self was undefined\n */\nSelfUtils.isUpgradeToModeratorOrCohost = (oldSelf, changedSelf) => {\n if (!oldSelf) {\n return false;\n }\n if (!changedSelf) {\n throw new ParameterError(\n 'New self must be defined to determine if self transitioned moderator or cohost status.'\n );\n }\n const isAttendeeOnly =\n oldSelf.roles.includes(SELF_ROLES.ATTENDEE) &&\n !oldSelf.roles.includes(SELF_ROLES.COHOST) &&\n !oldSelf.roles.includes(SELF_ROLES.MODERATOR);\n const isCohost = changedSelf.roles.includes(SELF_ROLES.COHOST);\n const isModerator = changedSelf.roles.includes(SELF_ROLES.MODERATOR);\n\n return isAttendeeOnly && (isCohost || isModerator);\n};\n\n/**\n * @param {Object} oldSelf\n * @param {Object} changedSelf\n * @returns {Boolean}\n * @throws {Error} if changed self was undefined\n */\nSelfUtils.isDeviceObserving = (oldSelf: any, changedSelf: any) =>\n oldSelf &&\n oldSelf.joinedWith?.intent?.type === _MOVE_MEDIA_ &&\n changedSelf &&\n changedSelf.joinedWith?.intent?.type === _OBSERVE_;\n\n/**\n * @param {Object} oldSelf\n * @param {Object} changedSelf\n * @returns {Boolean}\n * @throws {Error} if changed self was undefined\n */\nSelfUtils.isUserAdmitted = (oldSelf: object, changedSelf: object) => {\n if (!oldSelf) {\n // if there was no previous locus, it couldn't have been admitted yet\n return false;\n }\n if (!changedSelf) {\n throw new ParameterError(\n 'New self must be defined to determine if self transitioned to admitted as guest.'\n );\n }\n\n return SelfUtils.isLocusUserUnadmitted(oldSelf) && SelfUtils.isLocusUserAdmitted(changedSelf);\n};\n\nSelfUtils.videoMutedByOthersChanged = (oldSelf, changedSelf) => {\n if (!changedSelf) {\n throw new ParameterError(\n 'New self must be defined to determine if self was video muted by others.'\n );\n }\n\n if (!oldSelf || oldSelf.remoteVideoMuted === null) {\n if (changedSelf.remoteVideoMuted) {\n return true; // this happens when host disables \"Allow start video\"\n }\n\n // we don't want to be sending the 'meeting:self:videoUnmutedByOthers' notification on meeting join\n return false;\n }\n\n return oldSelf.remoteVideoMuted !== changedSelf.remoteVideoMuted;\n};\n\nSelfUtils.mutedByOthersChanged = (oldSelf, changedSelf) => {\n if (!changedSelf) {\n throw new ParameterError('New self must be defined to determine if self was muted by others.');\n }\n\n if (!oldSelf || oldSelf.remoteMuted === null) {\n if (changedSelf.remoteMuted) {\n return true; // this happens when mute on-entry is enabled\n }\n\n // we don't want to be sending the 'meeting:self:unmutedByOthers' notification on meeting join\n return false;\n }\n\n return (\n changedSelf.remoteMuted !== null &&\n (oldSelf.remoteMuted !== changedSelf.remoteMuted ||\n (changedSelf.remoteMuted && oldSelf.unmuteAllowed !== changedSelf.unmuteAllowed))\n );\n};\n\nSelfUtils.localAudioUnmuteRequestedByServer = (oldSelf: any = {}, changedSelf: any) => {\n if (!changedSelf) {\n throw new ParameterError(\n 'New self must be defined to determine if self received request to unmute.'\n );\n }\n\n return changedSelf.localAudioUnmuteRequested && !oldSelf.localAudioUnmuteRequested;\n};\n\nSelfUtils.localAudioUnmuteRequiredByServer = (oldSelf: any = {}, changedSelf: any) => {\n if (!changedSelf) {\n throw new ParameterError(\n 'New self must be defined to determine if localAudioUnmuteRequired changed.'\n );\n }\n\n return (\n !changedSelf.remoteMuted &&\n changedSelf.localAudioUnmuteRequired &&\n oldSelf.localAudioUnmuteRequired !== changedSelf.localAudioUnmuteRequired\n );\n};\n\n/**\n * extract the sipUrl from the partner\n * @param {Object} partner\n * @param {Object} info\n * @returns {Object}\n */\n\nSelfUtils.getSipUrl = (partner: any, type, sipUri) => {\n // For webex meeting the sipUrl gets updated in info parser\n if (partner && type === _CALL_) {\n return {sipUri: partner.person.sipUrl || partner.person.id};\n }\n\n return {sipUri};\n};\n\nSelfUtils.getMediaStatus = (mediaSessions = []) => {\n const mediaStatus = {\n audio: {},\n video: {},\n share: {},\n };\n\n mediaStatus.audio = mediaSessions.find(\n (media) => media.mediaType === AUDIO && media.mediaContent === MediaContent.main\n );\n mediaStatus.video = mediaSessions.find(\n (media) => media.mediaType === VIDEO && media.mediaContent === MediaContent.main\n );\n mediaStatus.share = mediaSessions.find(\n (media) => media.mediaType === VIDEO && media.mediaContent === MediaContent.slides\n );\n\n return mediaStatus;\n};\n\nexport default SelfUtils;\n"],"mappings":"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"}
@@ -1,51 +1,31 @@
1
1
  "use strict";
2
2
 
3
3
  var _Object$keys = require("@babel/runtime-corejs2/core-js/object/keys");
4
-
5
4
  var _Object$getOwnPropertySymbols = require("@babel/runtime-corejs2/core-js/object/get-own-property-symbols");
6
-
7
5
  var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptor");
8
-
9
6
  var _Object$getOwnPropertyDescriptors = require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptors");
10
-
11
7
  var _Object$defineProperties = require("@babel/runtime-corejs2/core-js/object/define-properties");
12
-
13
8
  var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
14
-
15
9
  var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
16
-
17
10
  _Object$defineProperty(exports, "__esModule", {
18
11
  value: true
19
12
  });
20
-
21
13
  exports.default = void 0;
22
-
23
14
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
24
-
25
15
  var _stringify = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/json/stringify"));
26
-
27
16
  var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/promise"));
28
-
17
+ var _internalMediaCore = require("@webex/internal-media-core");
29
18
  var _loggerProxy = _interopRequireDefault(require("../common/logs/logger-proxy"));
30
-
31
19
  var _constants = require("../constants");
32
-
33
20
  var _config = _interopRequireDefault(require("../config"));
34
-
35
21
  var _config2 = _interopRequireDefault(require("../common/config"));
36
-
37
22
  var _media = _interopRequireDefault(require("../common/errors/media"));
38
-
39
23
  var _browserDetection = _interopRequireDefault(require("../common/browser-detection"));
40
-
41
- var _internalMediaCoreWrapper = require("./internal-media-core-wrapper");
42
-
43
24
  function ownKeys(object, enumerableOnly) { var keys = _Object$keys(object); if (_Object$getOwnPropertySymbols) { var symbols = _Object$getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
44
-
45
25
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } return target; }
46
-
47
26
  var _BrowserDetection = (0, _browserDetection.default)(),
48
- isBrowser = _BrowserDetection.isBrowser;
27
+ isBrowser = _BrowserDetection.isBrowser;
28
+
49
29
  /**
50
30
  * MediaDirection
51
31
  * @typedef {Object} MediaDirection
@@ -66,7 +46,6 @@ var _BrowserDetection = (0, _browserDetection.default)(),
66
46
  * @property isSharing
67
47
  * @property {Object} sharePreferences
68
48
  */
69
-
70
49
  /**
71
50
  *
72
51
  * @public
@@ -75,24 +54,8 @@ var _BrowserDetection = (0, _browserDetection.default)(),
75
54
  * Handles the quirks of each browser.
76
55
  * Extends and enhances adapter.js, i.e., the "media" file from the web client.
77
56
  */
78
-
79
-
80
57
  var Media = {};
81
- /**
82
- * @param {boolean} enabled
83
- * @param {MediaStreamTrack} track
84
- * @returns {Boolean}
85
- * @public
86
- */
87
-
88
- Media.setLocalTrack = function (enabled, track) {
89
- if (track) {
90
- track.enabled = enabled;
91
- return true;
92
- }
93
58
 
94
- return false;
95
- };
96
59
  /**
97
60
  * format the media array for send
98
61
  * @param {String} mediaId
@@ -100,8 +63,6 @@ Media.setLocalTrack = function (enabled, track) {
100
63
  * @param {Boolean} videoMuted
101
64
  * @returns {Array} medias
102
65
  */
103
-
104
-
105
66
  Media.generateLocalMedias = function (mediaId, audioMuted, videoMuted) {
106
67
  if (mediaId) {
107
68
  return [{
@@ -112,28 +73,24 @@ Media.generateLocalMedias = function (mediaId, audioMuted, videoMuted) {
112
73
  mediaId: mediaId
113
74
  }];
114
75
  }
115
-
116
76
  return [];
117
77
  };
78
+
118
79
  /**
119
80
  * make a browser call to get the media
120
81
  * @param {SendOptions} options
121
82
  * @param {Object} config SDK Configuration for meetings plugin
122
83
  * @returns {Promise}
123
84
  */
124
-
125
-
126
85
  Media.getLocalMedia = function (options, config) {
127
86
  var sendAudio = options.sendAudio,
128
- sendVideo = options.sendVideo,
129
- sendShare = options.sendShare,
130
- sharePreferences = options.sharePreferences,
131
- isSharing = options.isSharing;
132
-
87
+ sendVideo = options.sendVideo,
88
+ sendShare = options.sendShare,
89
+ sharePreferences = options.sharePreferences,
90
+ isSharing = options.isSharing;
133
91
  if (sendAudio || sendVideo) {
134
92
  return Media.getMedia(sendAudio, sendVideo, config);
135
93
  }
136
-
137
94
  if (sendShare && !isSharing) {
138
95
  return Media.getDisplayMedia({
139
96
  sendAudio: false,
@@ -141,33 +98,30 @@ Media.getLocalMedia = function (options, config) {
141
98
  sharePreferences: sharePreferences
142
99
  }, config);
143
100
  }
144
-
145
101
  return _promise.default.resolve(undefined);
146
102
  };
103
+
147
104
  /**
148
105
  * creates a webrtc media connection with provided tracks and mediaDirection configuration
149
106
  *
150
107
  * @param {boolean} isMultistream
151
108
  * @param {string} debugId string useful for debugging (will appear in media connection logs)
152
109
  * @param {Object} options
153
- * @param {Object} [options.mediaProperties] only applicable to non-multistream connections, contains mediaDirection and local tracks:
110
+ * @param {Object} [options.mediaProperties] contains mediaDirection and local tracks:
154
111
  * audioTrack, videoTrack and shareTrack
155
112
  * @param {string} [options.remoteQualityLevel] LOW|MEDIUM|HIGH applicable only to non-multistream connections
156
113
  * @param {boolean} [options.enableRtx] applicable only to non-multistream connections
157
114
  * @param {boolean} [options.enableExtmap] applicable only to non-multistream connections
158
115
  * @param {Object} [options.turnServerInfo]
159
- * @returns {RoapMediaConnection}
116
+ * @returns {RoapMediaConnection | MultistreamRoapMediaConnection}
160
117
  */
161
-
162
-
163
118
  Media.createMediaConnection = function (isMultistream, debugId, options) {
164
119
  var mediaProperties = options.mediaProperties,
165
- remoteQualityLevel = options.remoteQualityLevel,
166
- enableRtx = options.enableRtx,
167
- enableExtmap = options.enableExtmap,
168
- turnServerInfo = options.turnServerInfo;
120
+ remoteQualityLevel = options.remoteQualityLevel,
121
+ enableRtx = options.enableRtx,
122
+ enableExtmap = options.enableExtmap,
123
+ turnServerInfo = options.turnServerInfo;
169
124
  var iceServers = [];
170
-
171
125
  if (turnServerInfo) {
172
126
  iceServers.push({
173
127
  urls: turnServerInfo.url,
@@ -175,22 +129,22 @@ Media.createMediaConnection = function (isMultistream, debugId, options) {
175
129
  credential: turnServerInfo.password || ''
176
130
  });
177
131
  }
178
-
179
132
  if (isMultistream) {
180
- return new _internalMediaCoreWrapper.MultistreamRoapMediaConnection({
181
- iceServers: iceServers
133
+ var _mediaProperties$medi, _mediaProperties$medi2, _mediaProperties$medi3, _mediaProperties$medi4;
134
+ return new _internalMediaCore.MultistreamRoapMediaConnection({
135
+ iceServers: iceServers,
136
+ enableMainAudio: ((_mediaProperties$medi = mediaProperties.mediaDirection) === null || _mediaProperties$medi === void 0 ? void 0 : _mediaProperties$medi.sendAudio) || ((_mediaProperties$medi2 = mediaProperties.mediaDirection) === null || _mediaProperties$medi2 === void 0 ? void 0 : _mediaProperties$medi2.receiveAudio),
137
+ enableMainVideo: ((_mediaProperties$medi3 = mediaProperties.mediaDirection) === null || _mediaProperties$medi3 === void 0 ? void 0 : _mediaProperties$medi3.sendVideo) || ((_mediaProperties$medi4 = mediaProperties.mediaDirection) === null || _mediaProperties$medi4 === void 0 ? void 0 : _mediaProperties$medi4.receiveVideo)
182
138
  }, debugId);
183
139
  }
184
-
185
140
  if (!mediaProperties) {
186
141
  throw new Error('mediaProperties have to be provided for non-multistream media connections');
187
142
  }
188
-
189
143
  var mediaDirection = mediaProperties.mediaDirection,
190
- audioTrack = mediaProperties.audioTrack,
191
- videoTrack = mediaProperties.videoTrack,
192
- shareTrack = mediaProperties.shareTrack;
193
- return new _internalMediaCoreWrapper.RoapMediaConnection({
144
+ audioTrack = mediaProperties.audioTrack,
145
+ videoTrack = mediaProperties.videoTrack,
146
+ shareTrack = mediaProperties.shareTrack;
147
+ return new _internalMediaCore.RoapMediaConnection({
194
148
  iceServers: iceServers,
195
149
  skipInactiveTransceivers: false,
196
150
  requireH264: true,
@@ -206,13 +160,12 @@ Media.createMediaConnection = function (isMultistream, debugId, options) {
206
160
  // it's always been hardcoded in SDK so for now keeping it that way
207
161
  disableExtmap: !enableExtmap,
208
162
  disableRtx: !enableRtx // see https://bugs.chromium.org/p/chromium/issues/detail?id=1020642 why we might want to remove RTX from SDP
209
-
210
163
  }
211
164
  }, {
212
165
  send: {
213
- audio: audioTrack,
214
- video: videoTrack,
215
- screenShareVideo: shareTrack
166
+ audio: audioTrack === null || audioTrack === void 0 ? void 0 : audioTrack.underlyingTrack,
167
+ video: videoTrack === null || videoTrack === void 0 ? void 0 : videoTrack.underlyingTrack,
168
+ screenShareVideo: shareTrack === null || shareTrack === void 0 ? void 0 : shareTrack.underlyingTrack
216
169
  },
217
170
  receive: {
218
171
  audio: mediaDirection.receiveAudio,
@@ -222,6 +175,7 @@ Media.createMediaConnection = function (isMultistream, debugId, options) {
222
175
  }
223
176
  }, debugId);
224
177
  };
178
+
225
179
  /**
226
180
  * generates share streams
227
181
  * @param {Object} options parameter
@@ -234,29 +188,26 @@ Media.createMediaConnection = function (isMultistream, debugId, options) {
234
188
  * @param {Object} config SDK Configuration for meetings plugin
235
189
  * @returns {Promise.<MediaStream>}
236
190
  */
237
-
238
-
239
191
  Media.getDisplayMedia = function (options) {
240
192
  var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
241
193
  // SDK screen share resolution settings from Webex.init
242
- var customResolution = config.screenResolution || {}; // user defined screen share frame rate
243
-
244
- var customShareFrameRate = config.screenFrameRate || null; // user defined share preferences
245
-
194
+ var customResolution = config.screenResolution || {};
195
+ // user defined screen share frame rate
196
+ var customShareFrameRate = config.screenFrameRate || null;
197
+ // user defined share preferences
246
198
  var hasSharePreferences = options.sharePreferences;
247
199
  var hasCustomConstraints = hasSharePreferences && hasSharePreferences.shareConstraints;
248
200
  var hasHighFrameRate = hasSharePreferences && hasSharePreferences.highFrameRate;
249
201
  var _Config$meetings = _config.default.meetings,
250
- screenResolution = _Config$meetings.screenResolution,
251
- resolution = _Config$meetings.resolution,
252
- videoShareFrameRate = _Config$meetings.videoShareFrameRate,
253
- screenFrameRate = _Config$meetings.screenFrameRate,
254
- aspectRatio = _Config$meetings.aspectRatio;
202
+ screenResolution = _Config$meetings.screenResolution,
203
+ resolution = _Config$meetings.resolution,
204
+ videoShareFrameRate = _Config$meetings.videoShareFrameRate,
205
+ screenFrameRate = _Config$meetings.screenFrameRate,
206
+ aspectRatio = _Config$meetings.aspectRatio;
255
207
  var shareConstraints = {
256
208
  cursor: _constants.MEDIA_TRACK_CONSTRAINT.CURSOR.AWLAYS,
257
209
  aspectRatio: aspectRatio
258
210
  };
259
-
260
211
  if (hasCustomConstraints) {
261
212
  shareConstraints = hasSharePreferences.shareConstraints;
262
213
  } else if (hasHighFrameRate) {
@@ -271,14 +222,15 @@ Media.getDisplayMedia = function (options) {
271
222
  height: customResolution.idealHeight || screenResolution.idealHeight,
272
223
  width: customResolution.idealWidth || screenResolution.idealWidth
273
224
  }, config.screenResolution);
274
- } // chrome and webkit based browsers (edge, safari) automatically adjust everything
225
+ }
226
+
227
+ // chrome and webkit based browsers (edge, safari) automatically adjust everything
275
228
  // and we have noticed higher quality with those browser types
276
229
  // firefox specifically has some issues with resolution and frame rate decision making
277
230
  // so we are making it optional and configurable (with defaults) for firefox
278
231
  // to have higher quality, and for developers to control the values
279
232
  // eventually we may have to add the same functionality to chrome, OR conversely, get to with firefox
280
233
 
281
-
282
234
  if (isBrowser('firefox')) {
283
235
  var mediaConfig = {
284
236
  audio: options.sendAudio,
@@ -294,22 +246,21 @@ Media.getDisplayMedia = function (options) {
294
246
  // https://bugzilla.mozilla.org/show_bug.cgi?id=1321221
295
247
  stream.getVideoTracks()[0].applyConstraints(shareConstraints);
296
248
  }
297
-
298
249
  return stream;
299
250
  });
300
251
  }
301
-
302
252
  var getDisplayMediaParams = {
303
253
  video: options.sendShare ? shareConstraints : false
304
- }; // safari doesn't support sending screen share audio
305
- // https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getDisplayMedia
254
+ };
306
255
 
256
+ // safari doesn't support sending screen share audio
257
+ // https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getDisplayMedia
307
258
  if (options.sendAudio && isBrowser('safari')) {
308
259
  getDisplayMediaParams.audio = options.sendAudio;
309
260
  }
310
-
311
261
  return navigator.mediaDevices.getDisplayMedia(getDisplayMediaParams);
312
262
  };
263
+
313
264
  /**
314
265
  * generates audio and video using constraints (often called after getSupportedDevices)
315
266
  * @param {Object|Boolean} audio gum constraints
@@ -317,8 +268,6 @@ Media.getDisplayMedia = function (options) {
317
268
  * @param {Object} config SDK Configuration for meetings plugin
318
269
  * @returns {Object} {streams}
319
270
  */
320
-
321
-
322
271
  Media.getMedia = function (audio, video, config) {
323
272
  var defaultWidth = {
324
273
  ideal: config.resolution.idealWidth,
@@ -335,23 +284,26 @@ Media.getMedia = function (audio, video, config) {
335
284
  video: video ? isBrowser('firefox') && video.width && video.width.max === 320 ? {
336
285
  deviceId: video.deviceId ? video.deviceId : undefined,
337
286
  width: 320,
338
- height: 180
287
+ height: 180,
288
+ frameRate: video.frameRate ? video.frameRate : undefined,
289
+ facingMode: video.facingMode ? video.facingMode : undefined
339
290
  } : {
340
291
  deviceId: video.deviceId ? video.deviceId : undefined,
341
292
  width: video.width ? video.width : defaultWidth,
342
- height: video.height ? video.height : defaultHeight
293
+ height: video.height ? video.height : defaultHeight,
294
+ frameRate: video.frameRate ? video.frameRate : undefined,
295
+ facingMode: video.facingMode ? video.facingMode : undefined
343
296
  } : false,
344
297
  fake: process.env.NODE_ENV === 'test' // Special case to get fake media for Firefox browser for testing
345
-
346
298
  };
299
+
347
300
  return navigator.mediaDevices.getUserMedia(mediaConfig).catch(function (err) {
348
301
  var logPath = 'Media:index#getMedia --> navigator.mediaDevices.getUserMedia';
349
-
350
302
  _loggerProxy.default.logger.error("".concat(logPath, " failed - ").concat(err, " (").concat(err.constraint, ")"));
351
-
352
303
  throw err;
353
304
  });
354
305
  };
306
+
355
307
  /**
356
308
  * Checks if the machine has at least one audio or video device (Dont use this for screen share)
357
309
  * @param {object} [options]
@@ -364,11 +316,9 @@ Media.getMedia = function (audio, video, config) {
364
316
  * sendVideo: true/false
365
317
  *}
366
318
  */
367
-
368
-
369
319
  Media.getSupportedDevice = function (_ref) {
370
320
  var sendAudio = _ref.sendAudio,
371
- sendVideo = _ref.sendVideo;
321
+ sendVideo = _ref.sendVideo;
372
322
  return _promise.default.resolve().then(function () {
373
323
  if (!navigator.mediaDevices || navigator.mediaDevices.enumerateDevices === undefined) {
374
324
  return {
@@ -376,7 +326,6 @@ Media.getSupportedDevice = function (_ref) {
376
326
  sendVideo: false
377
327
  };
378
328
  }
379
-
380
329
  return navigator.mediaDevices.enumerateDevices().then(function (devices) {
381
330
  var supported = {
382
331
  audio: devices.filter(function (device) {
@@ -393,40 +342,35 @@ Media.getSupportedDevice = function (_ref) {
393
342
  });
394
343
  });
395
344
  };
345
+
396
346
  /**
397
347
  * proxy to browser navigator.mediaDevices.enumerateDevices()
398
348
  * @returns {Promise}
399
349
  */
400
-
401
-
402
350
  Media.getDevices = function () {
403
351
  if (navigator && navigator.mediaDevices && navigator.mediaDevices.enumerateDevices) {
404
352
  return navigator.mediaDevices.enumerateDevices();
405
353
  }
406
-
407
354
  return _promise.default.reject(new _media.default('enumerateDevices not supported.'));
408
355
  };
356
+
409
357
  /**
410
358
  *
411
359
  * Toggle a specific stream
412
360
  * noop as of now, does nothing
413
361
  * @returns {null}
414
362
  */
415
-
416
-
417
363
  Media.toggleStream = function () {};
364
+
418
365
  /**
419
366
  * Stop input stream
420
367
  * @param {MediaTrack} track A media stream
421
368
  * @returns {null}
422
369
  */
423
-
424
-
425
370
  Media.stopTracks = function (track) {
426
371
  if (!track) {
427
372
  return _promise.default.resolve();
428
373
  }
429
-
430
374
  return _promise.default.resolve().then(function () {
431
375
  if (track && track.stop) {
432
376
  try {
@@ -437,38 +381,7 @@ Media.stopTracks = function (track) {
437
381
  }
438
382
  });
439
383
  };
440
- /**
441
- *
442
- * Stop input stream
443
- * @param {Stream} stream A media stream
444
- * @returns {null}
445
- * @deprecated after v1.89.3
446
- */
447
-
448
384
 
449
- Media.stopStream = function (stream) {
450
- _loggerProxy.default.logger.warn('Media:index#stopStream --> [DEPRECATION WARNING]: stopStream has been deprecated after v1.89.3');
451
-
452
- if (!stream) {
453
- return _promise.default.resolve();
454
- }
455
- /*
456
- * To release local media
457
- * 1) Chrome requires all tracks to be stopped (stream.stop got deprecated)
458
- * 2) Firefox requires the stream to be stopped
459
- */
460
-
461
-
462
- return _promise.default.resolve().then(function () {
463
- if (stream.getTracks) {
464
- stream.getTracks().forEach(function (track) {
465
- track.stop();
466
- });
467
- } else if (stream.stop) {
468
- stream.stop();
469
- }
470
- });
471
- };
472
385
  /**
473
386
  * generates streams for audio video and share
474
387
  * @param {object} mediaSetting parameter
@@ -485,8 +398,6 @@ Media.stopStream = function (stream) {
485
398
  * @param {Object} config SDK Config
486
399
  * @returns {Array} [localStream, shareStream]
487
400
  */
488
-
489
-
490
401
  Media.getUserMedia = function (mediaSetting, audioVideo, sharePreferences, config) {
491
402
  return Media.getLocalMedia({
492
403
  sendAudio: mediaSetting.sendAudio ? audioVideo.audio || mediaSetting.sendAudio : false,
@@ -501,7 +412,6 @@ Media.getUserMedia = function (mediaSetting, audioVideo, sharePreferences, confi
501
412
  });
502
413
  });
503
414
  };
504
-
505
415
  var _default = Media;
506
416
  exports.default = _default;
507
417
  //# sourceMappingURL=index.js.map