@webex/plugin-meetings 3.0.0-beta.2 → 3.0.0-beta.20

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 (365) hide show
  1. package/UPGRADING.md +9 -9
  2. package/browsers.js +19 -24
  3. package/dist/breakouts/breakout.js +116 -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/index.js +226 -0
  8. package/dist/breakouts/index.js.map +1 -0
  9. package/dist/common/browser-detection.js +1 -20
  10. package/dist/common/browser-detection.js.map +1 -1
  11. package/dist/common/collection.js +5 -20
  12. package/dist/common/collection.js.map +1 -1
  13. package/dist/common/config.js +0 -7
  14. package/dist/common/config.js.map +1 -1
  15. package/dist/common/errors/captcha-error.js +10 -24
  16. package/dist/common/errors/captcha-error.js.map +1 -1
  17. package/dist/common/errors/intent-to-join.js +11 -24
  18. package/dist/common/errors/intent-to-join.js.map +1 -1
  19. package/dist/common/errors/join-meeting.js +12 -25
  20. package/dist/common/errors/join-meeting.js.map +1 -1
  21. package/dist/common/errors/media.js +10 -24
  22. package/dist/common/errors/media.js.map +1 -1
  23. package/dist/common/errors/parameter.js +5 -33
  24. package/dist/common/errors/parameter.js.map +1 -1
  25. package/dist/common/errors/password-error.js +10 -24
  26. package/dist/common/errors/password-error.js.map +1 -1
  27. package/dist/common/errors/permission.js +9 -23
  28. package/dist/common/errors/permission.js.map +1 -1
  29. package/dist/common/errors/reconnection-in-progress.js +0 -17
  30. package/dist/common/errors/reconnection-in-progress.js.map +1 -1
  31. package/dist/common/errors/reconnection.js +10 -24
  32. package/dist/common/errors/reconnection.js.map +1 -1
  33. package/dist/common/errors/stats.js +10 -24
  34. package/dist/common/errors/stats.js.map +1 -1
  35. package/dist/common/errors/webex-errors.js +6 -41
  36. package/dist/common/errors/webex-errors.js.map +1 -1
  37. package/dist/common/errors/webex-meetings-error.js +5 -25
  38. package/dist/common/errors/webex-meetings-error.js.map +1 -1
  39. package/dist/common/events/events-scope.js +0 -22
  40. package/dist/common/events/events-scope.js.map +1 -1
  41. package/dist/common/events/events.js +0 -23
  42. package/dist/common/events/events.js.map +1 -1
  43. package/dist/common/events/trigger-proxy.js +0 -12
  44. package/dist/common/events/trigger-proxy.js.map +1 -1
  45. package/dist/common/events/util.js +0 -15
  46. package/dist/common/events/util.js.map +1 -1
  47. package/dist/common/logs/logger-config.js +0 -4
  48. package/dist/common/logs/logger-config.js.map +1 -1
  49. package/dist/common/logs/logger-proxy.js +1 -8
  50. package/dist/common/logs/logger-proxy.js.map +1 -1
  51. package/dist/common/logs/request.js +37 -60
  52. package/dist/common/logs/request.js.map +1 -1
  53. package/dist/common/queue.js +4 -14
  54. package/dist/common/queue.js.map +1 -1
  55. package/dist/config.js +6 -6
  56. package/dist/config.js.map +1 -1
  57. package/dist/constants.js +88 -46
  58. package/dist/constants.js.map +1 -1
  59. package/dist/index.js +1 -17
  60. package/dist/index.js.map +1 -1
  61. package/dist/locus-info/controlsUtils.js +12 -29
  62. package/dist/locus-info/controlsUtils.js.map +1 -1
  63. package/dist/locus-info/embeddedAppsUtils.js +3 -26
  64. package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
  65. package/dist/locus-info/fullState.js +0 -15
  66. package/dist/locus-info/fullState.js.map +1 -1
  67. package/dist/locus-info/hostUtils.js +4 -12
  68. package/dist/locus-info/hostUtils.js.map +1 -1
  69. package/dist/locus-info/index.js +184 -190
  70. package/dist/locus-info/index.js.map +1 -1
  71. package/dist/locus-info/infoUtils.js +3 -37
  72. package/dist/locus-info/infoUtils.js.map +1 -1
  73. package/dist/locus-info/mediaSharesUtils.js +12 -38
  74. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  75. package/dist/locus-info/parser.js +92 -118
  76. package/dist/locus-info/parser.js.map +1 -1
  77. package/dist/locus-info/selfUtils.js +34 -91
  78. package/dist/locus-info/selfUtils.js.map +1 -1
  79. package/dist/media/index.js +67 -111
  80. package/dist/media/index.js.map +1 -1
  81. package/dist/media/properties.js +80 -114
  82. package/dist/media/properties.js.map +1 -1
  83. package/dist/media/util.js +2 -9
  84. package/dist/media/util.js.map +1 -1
  85. package/dist/mediaQualityMetrics/config.js +10 -12
  86. package/dist/mediaQualityMetrics/config.js.map +1 -1
  87. package/dist/meeting/effectsState.js +125 -190
  88. package/dist/meeting/effectsState.js.map +1 -1
  89. package/dist/meeting/in-meeting-actions.js +5 -14
  90. package/dist/meeting/in-meeting-actions.js.map +1 -1
  91. package/dist/meeting/index.js +1692 -1925
  92. package/dist/meeting/index.js.map +1 -1
  93. package/dist/meeting/muteState.js +36 -77
  94. package/dist/meeting/muteState.js.map +1 -1
  95. package/dist/meeting/request.js +224 -230
  96. package/dist/meeting/request.js.map +1 -1
  97. package/dist/meeting/request.type.js +7 -0
  98. package/dist/meeting/request.type.js.map +1 -0
  99. package/dist/meeting/state.js +21 -31
  100. package/dist/meeting/state.js.map +1 -1
  101. package/dist/meeting/util.js +43 -215
  102. package/dist/meeting/util.js.map +1 -1
  103. package/dist/meeting-info/collection.js +6 -25
  104. package/dist/meeting-info/collection.js.map +1 -1
  105. package/dist/meeting-info/index.js +14 -32
  106. package/dist/meeting-info/index.js.map +1 -1
  107. package/dist/meeting-info/meeting-info-v2.js +193 -268
  108. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  109. package/dist/meeting-info/request.js +3 -15
  110. package/dist/meeting-info/request.js.map +1 -1
  111. package/dist/meeting-info/util.js +98 -183
  112. package/dist/meeting-info/util.js.map +1 -1
  113. package/dist/meeting-info/utilv2.js +137 -228
  114. package/dist/meeting-info/utilv2.js.map +1 -1
  115. package/dist/meetings/collection.js +5 -20
  116. package/dist/meetings/collection.js.map +1 -1
  117. package/dist/meetings/index.js +490 -560
  118. package/dist/meetings/index.js.map +1 -1
  119. package/dist/meetings/request.js +24 -41
  120. package/dist/meetings/request.js.map +1 -1
  121. package/dist/meetings/util.js +99 -155
  122. package/dist/meetings/util.js.map +1 -1
  123. package/dist/member/index.js +78 -86
  124. package/dist/member/index.js.map +1 -1
  125. package/dist/member/util.js +31 -68
  126. package/dist/member/util.js.map +1 -1
  127. package/dist/members/collection.js +3 -12
  128. package/dist/members/collection.js.map +1 -1
  129. package/dist/members/index.js +93 -200
  130. package/dist/members/index.js.map +1 -1
  131. package/dist/members/request.js +16 -39
  132. package/dist/members/request.js.map +1 -1
  133. package/dist/members/util.js +9 -38
  134. package/dist/members/util.js.map +1 -1
  135. package/dist/metrics/config.js +0 -2
  136. package/dist/metrics/config.js.map +1 -1
  137. package/dist/metrics/constants.js +1 -2
  138. package/dist/metrics/constants.js.map +1 -1
  139. package/dist/metrics/index.js +55 -135
  140. package/dist/metrics/index.js.map +1 -1
  141. package/dist/multistream/mediaRequestManager.js +57 -32
  142. package/dist/multistream/mediaRequestManager.js.map +1 -1
  143. package/dist/multistream/multistreamMedia.js +15 -21
  144. package/dist/multistream/multistreamMedia.js.map +1 -1
  145. package/dist/multistream/receiveSlot.js +10 -50
  146. package/dist/multistream/receiveSlot.js.map +1 -1
  147. package/dist/multistream/receiveSlotManager.js +45 -82
  148. package/dist/multistream/receiveSlotManager.js.map +1 -1
  149. package/dist/multistream/remoteMedia.js +18 -58
  150. package/dist/multistream/remoteMedia.js.map +1 -1
  151. package/dist/multistream/remoteMediaGroup.js +6 -40
  152. package/dist/multistream/remoteMediaGroup.js.map +1 -1
  153. package/dist/multistream/remoteMediaManager.js +362 -416
  154. package/dist/multistream/remoteMediaManager.js.map +1 -1
  155. package/dist/networkQualityMonitor/index.js +36 -57
  156. package/dist/networkQualityMonitor/index.js.map +1 -1
  157. package/dist/personal-meeting-room/index.js +21 -45
  158. package/dist/personal-meeting-room/index.js.map +1 -1
  159. package/dist/personal-meeting-room/request.js +1 -31
  160. package/dist/personal-meeting-room/request.js.map +1 -1
  161. package/dist/personal-meeting-room/util.js +0 -13
  162. package/dist/personal-meeting-room/util.js.map +1 -1
  163. package/dist/reachability/index.js +138 -182
  164. package/dist/reachability/index.js.map +1 -1
  165. package/dist/reachability/request.js +3 -18
  166. package/dist/reachability/request.js.map +1 -1
  167. package/dist/reactions/constants.js +13 -0
  168. package/dist/reactions/constants.js.map +1 -0
  169. package/dist/reactions/reactions.js +109 -0
  170. package/dist/reactions/reactions.js.map +1 -0
  171. package/dist/reactions/reactions.type.js +36 -0
  172. package/dist/reactions/reactions.type.js.map +1 -0
  173. package/dist/reconnection-manager/index.js +322 -455
  174. package/dist/reconnection-manager/index.js.map +1 -1
  175. package/dist/recording-controller/enums.js +17 -0
  176. package/dist/recording-controller/enums.js.map +1 -0
  177. package/dist/recording-controller/index.js +343 -0
  178. package/dist/recording-controller/index.js.map +1 -0
  179. package/dist/recording-controller/util.js +63 -0
  180. package/dist/recording-controller/util.js.map +1 -0
  181. package/dist/roap/index.js +39 -64
  182. package/dist/roap/index.js.map +1 -1
  183. package/dist/roap/request.js +94 -113
  184. package/dist/roap/request.js.map +1 -1
  185. package/dist/roap/turnDiscovery.js +85 -94
  186. package/dist/roap/turnDiscovery.js.map +1 -1
  187. package/dist/statsAnalyzer/global.js +0 -2
  188. package/dist/statsAnalyzer/global.js.map +1 -1
  189. package/dist/statsAnalyzer/index.js +85 -175
  190. package/dist/statsAnalyzer/index.js.map +1 -1
  191. package/dist/statsAnalyzer/mqaUtil.js +72 -53
  192. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  193. package/dist/transcription/index.js +22 -47
  194. package/dist/transcription/index.js.map +1 -1
  195. package/internal-README.md +7 -6
  196. package/package.json +25 -20
  197. package/src/breakouts/README.md +190 -0
  198. package/src/breakouts/breakout.ts +110 -0
  199. package/src/breakouts/collection.ts +19 -0
  200. package/src/breakouts/index.ts +225 -0
  201. package/src/common/{browser-detection.js → browser-detection.ts} +9 -6
  202. package/src/common/collection.ts +9 -7
  203. package/src/common/{config.js → config.ts} +1 -1
  204. package/src/common/errors/{captcha-error.js → captcha-error.ts} +11 -7
  205. package/src/common/errors/{intent-to-join.js → intent-to-join.ts} +12 -7
  206. package/src/common/errors/{join-meeting.js → join-meeting.ts} +17 -8
  207. package/src/common/errors/{media.js → media.ts} +11 -7
  208. package/src/common/errors/parameter.ts +11 -7
  209. package/src/common/errors/{password-error.js → password-error.ts} +11 -7
  210. package/src/common/errors/{permission.js → permission.ts} +10 -6
  211. package/src/common/errors/{reconnection-in-progress.js → reconnection-in-progress.ts} +0 -0
  212. package/src/common/errors/{reconnection.js → reconnection.ts} +11 -7
  213. package/src/common/errors/{stats.js → stats.ts} +11 -7
  214. package/src/common/errors/{webex-errors.js → webex-errors.ts} +8 -7
  215. package/src/common/errors/{webex-meetings-error.js → webex-meetings-error.ts} +4 -2
  216. package/src/common/events/{events-scope.js → events-scope.ts} +6 -2
  217. package/src/common/events/{events.js → events.ts} +5 -1
  218. package/src/common/events/{trigger-proxy.js → trigger-proxy.ts} +9 -5
  219. package/src/common/events/{util.js → util.ts} +2 -3
  220. package/src/common/logs/{logger-config.js → logger-config.ts} +1 -2
  221. package/src/common/logs/logger-proxy.ts +44 -0
  222. package/src/common/logs/{request.js → request.ts} +22 -9
  223. package/src/common/queue.ts +1 -2
  224. package/src/{config.js → config.ts} +17 -12
  225. package/src/constants.ts +40 -1
  226. package/src/index.js +1 -1
  227. package/src/locus-info/controlsUtils.ts +114 -0
  228. package/src/locus-info/{embeddedAppsUtils.js → embeddedAppsUtils.ts} +5 -6
  229. package/src/locus-info/{fullState.js → fullState.ts} +16 -12
  230. package/src/locus-info/{hostUtils.js → hostUtils.ts} +9 -8
  231. package/src/locus-info/{index.js → index.ts} +148 -64
  232. package/src/locus-info/{infoUtils.js → infoUtils.ts} +19 -8
  233. package/src/locus-info/{mediaSharesUtils.js → mediaSharesUtils.ts} +17 -17
  234. package/src/locus-info/{parser.js → parser.ts} +67 -79
  235. package/src/locus-info/{selfUtils.js → selfUtils.ts} +123 -68
  236. package/src/media/{index.js → index.ts} +181 -131
  237. package/src/media/{properties.js → properties.ts} +47 -28
  238. package/src/media/{util.js → util.ts} +2 -2
  239. package/src/mediaQualityMetrics/{config.js → config.ts} +46 -46
  240. package/src/meeting/{effectsState.js → effectsState.ts} +47 -41
  241. package/src/meeting/in-meeting-actions.ts +15 -3
  242. package/src/meeting/{index.js → index.ts} +2263 -1427
  243. package/src/meeting/{muteState.js → muteState.ts} +78 -42
  244. package/src/meeting/{request.js → request.ts} +292 -142
  245. package/src/meeting/request.type.ts +13 -0
  246. package/src/meeting/{state.js → state.ts} +50 -35
  247. package/src/meeting/{util.js → util.ts} +112 -115
  248. package/src/meeting-info/{collection.js → collection.ts} +6 -2
  249. package/src/meeting-info/{index.js → index.ts} +42 -36
  250. package/src/meeting-info/meeting-info-v2.ts +273 -0
  251. package/src/meeting-info/{request.js → request.ts} +14 -4
  252. package/src/meeting-info/{util.js → util.ts} +60 -51
  253. package/src/meeting-info/{utilv2.js → utilv2.ts} +65 -58
  254. package/src/meetings/{collection.js → collection.ts} +6 -3
  255. package/src/meetings/index.ts +1159 -0
  256. package/src/meetings/{request.js → request.ts} +32 -25
  257. package/src/meetings/{util.js → util.ts} +34 -32
  258. package/src/member/{index.js → index.ts} +102 -56
  259. package/src/member/{util.js → util.ts} +52 -25
  260. package/src/members/{collection.js → collection.ts} +2 -2
  261. package/src/members/{index.js → index.ts} +219 -142
  262. package/src/members/{request.js → request.ts} +60 -16
  263. package/src/members/{util.js → util.ts} +50 -48
  264. package/src/metrics/{config.js → config.ts} +254 -83
  265. package/src/metrics/{constants.js → constants.ts} +0 -2
  266. package/src/metrics/{index.js → index.ts} +106 -74
  267. package/src/multistream/mediaRequestManager.ts +81 -15
  268. package/src/multistream/multistreamMedia.ts +5 -0
  269. package/src/multistream/receiveSlot.ts +18 -12
  270. package/src/multistream/receiveSlotManager.ts +23 -21
  271. package/src/multistream/remoteMedia.ts +15 -5
  272. package/src/multistream/remoteMediaGroup.ts +4 -3
  273. package/src/multistream/remoteMediaManager.ts +153 -37
  274. package/src/networkQualityMonitor/{index.js → index.ts} +37 -25
  275. package/src/personal-meeting-room/{index.js → index.ts} +28 -19
  276. package/src/personal-meeting-room/{request.js → request.ts} +13 -4
  277. package/src/personal-meeting-room/{util.js → util.ts} +4 -4
  278. package/src/reachability/{index.js → index.ts} +99 -83
  279. package/src/reachability/request.ts +39 -33
  280. package/src/reactions/constants.ts +4 -0
  281. package/src/reactions/reactions.ts +104 -0
  282. package/src/reactions/reactions.type.ts +62 -0
  283. package/src/reconnection-manager/{index.js → index.ts} +195 -102
  284. package/src/recording-controller/enums.ts +8 -0
  285. package/src/recording-controller/index.ts +315 -0
  286. package/src/recording-controller/util.ts +58 -0
  287. package/src/roap/{index.js → index.ts} +73 -56
  288. package/src/roap/request.ts +157 -0
  289. package/src/roap/turnDiscovery.ts +77 -37
  290. package/src/statsAnalyzer/{global.js → global.ts} +30 -33
  291. package/src/statsAnalyzer/{index.js → index.ts} +468 -192
  292. package/src/statsAnalyzer/mqaUtil.ts +290 -0
  293. package/src/transcription/{index.js → index.ts} +46 -39
  294. package/test/integration/spec/journey.js +664 -463
  295. package/test/integration/spec/space-meeting.js +320 -206
  296. package/test/integration/spec/transcription.js +7 -8
  297. package/test/unit/spec/breakouts/breakout.ts +119 -0
  298. package/test/unit/spec/breakouts/collection.ts +15 -0
  299. package/test/unit/spec/breakouts/index.ts +293 -0
  300. package/test/unit/spec/common/browser-detection.js +9 -28
  301. package/test/unit/spec/fixture/locus.js +92 -90
  302. package/test/unit/spec/locus-info/controlsUtils.js +25 -5
  303. package/test/unit/spec/locus-info/embeddedAppsUtils.js +8 -6
  304. package/test/unit/spec/locus-info/index.js +104 -2
  305. package/test/unit/spec/locus-info/infoUtils.js +41 -32
  306. package/test/unit/spec/locus-info/lib/BasicSeqCmp.json +88 -430
  307. package/test/unit/spec/locus-info/lib/SeqCmp.json +513 -685
  308. package/test/unit/spec/locus-info/parser.js +3 -9
  309. package/test/unit/spec/locus-info/selfConstant.js +97 -103
  310. package/test/unit/spec/locus-info/selfUtils.js +105 -12
  311. package/test/unit/spec/media/index.ts +31 -47
  312. package/test/unit/spec/media/properties.ts +9 -9
  313. package/test/unit/spec/meeting/effectsState.js +39 -45
  314. package/test/unit/spec/meeting/in-meeting-actions.ts +5 -2
  315. package/test/unit/spec/meeting/index.js +2017 -742
  316. package/test/unit/spec/meeting/muteState.js +42 -33
  317. package/test/unit/spec/meeting/request.js +115 -44
  318. package/test/unit/spec/meeting/utils.js +104 -171
  319. package/test/unit/spec/meeting-info/meetinginfov2.js +100 -73
  320. package/test/unit/spec/meeting-info/request.js +7 -9
  321. package/test/unit/spec/meeting-info/util.js +11 -12
  322. package/test/unit/spec/meeting-info/utilv2.js +110 -74
  323. package/test/unit/spec/meetings/collection.js +1 -1
  324. package/test/unit/spec/meetings/index.js +439 -257
  325. package/test/unit/spec/meetings/utils.js +14 -12
  326. package/test/unit/spec/member/index.js +0 -1
  327. package/test/unit/spec/member/util.js +31 -7
  328. package/test/unit/spec/members/index.js +104 -54
  329. package/test/unit/spec/members/request.js +29 -20
  330. package/test/unit/spec/members/utils.js +8 -5
  331. package/test/unit/spec/metrics/index.js +16 -21
  332. package/test/unit/spec/multistream/mediaRequestManager.ts +316 -50
  333. package/test/unit/spec/multistream/receiveSlot.ts +6 -6
  334. package/test/unit/spec/multistream/receiveSlotManager.ts +13 -13
  335. package/test/unit/spec/multistream/remoteMedia.ts +10 -2
  336. package/test/unit/spec/multistream/remoteMediaGroup.ts +5 -5
  337. package/test/unit/spec/multistream/remoteMediaManager.ts +412 -65
  338. package/test/unit/spec/networkQualityMonitor/index.js +21 -15
  339. package/test/unit/spec/personal-meeting-room/personal-meeting-room.js +2 -7
  340. package/test/unit/spec/reachability/index.ts +58 -26
  341. package/test/unit/spec/reconnection-manager/index.js +102 -9
  342. package/test/unit/spec/recording-controller/index.js +231 -0
  343. package/test/unit/spec/recording-controller/util.js +102 -0
  344. package/test/unit/spec/roap/index.ts +2 -1
  345. package/test/unit/spec/roap/request.ts +114 -0
  346. package/test/unit/spec/roap/turnDiscovery.ts +64 -45
  347. package/test/unit/spec/stats-analyzer/index.js +27 -22
  348. package/test/utils/cmr.js +44 -42
  349. package/test/utils/testUtils.js +83 -74
  350. package/test/utils/webex-config.js +18 -18
  351. package/test/utils/webex-test-users.js +54 -50
  352. package/tsconfig.json +6 -0
  353. package/dist/media/internal-media-core-wrapper.js +0 -22
  354. package/dist/media/internal-media-core-wrapper.js.map +0 -1
  355. package/dist/peer-connection-manager/util.js +0 -124
  356. package/dist/peer-connection-manager/util.js.map +0 -1
  357. package/src/common/logs/logger-proxy.js +0 -33
  358. package/src/locus-info/controlsUtils.js +0 -102
  359. package/src/media/internal-media-core-wrapper.ts +0 -9
  360. package/src/meeting-info/meeting-info-v2.js +0 -255
  361. package/src/meetings/index.js +0 -1015
  362. package/src/peer-connection-manager/util.ts +0 -117
  363. package/src/roap/request.js +0 -127
  364. package/src/statsAnalyzer/mqaUtil.js +0 -173
  365. package/test/unit/spec/peerconnection-manager/utils.test-fixtures.ts +0 -389
@@ -1,164 +1,125 @@
1
1
  "use strict";
2
2
 
3
3
  var _Reflect$construct = require("@babel/runtime-corejs2/core-js/reflect/construct");
4
-
5
4
  var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
6
-
7
5
  var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
8
-
9
6
  _Object$defineProperty(exports, "__esModule", {
10
7
  value: true
11
8
  });
12
-
13
9
  exports.ReceiveSlotEvents = exports.ReceiveSlot = void 0;
14
-
15
10
  var _weakMap = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/weak-map"));
16
-
17
11
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
18
-
19
12
  var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));
20
-
21
13
  var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/assertThisInitialized"));
22
-
23
14
  var _inherits2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/inherits"));
24
-
25
15
  var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/possibleConstructorReturn"));
26
-
27
16
  var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/getPrototypeOf"));
28
-
29
17
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
30
-
31
18
  var _classPrivateFieldGet2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classPrivateFieldGet"));
32
-
33
19
  var _classPrivateFieldSet2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classPrivateFieldSet"));
34
-
35
20
  var _internalMediaCore = require("@webex/internal-media-core");
36
-
37
21
  var _loggerProxy = _interopRequireDefault(require("../common/logs/logger-proxy"));
38
-
39
22
  var _eventsScope = _interopRequireDefault(require("../common/events/events-scope"));
40
-
41
23
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = _Reflect$construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
42
-
43
24
  function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !_Reflect$construct) return false; if (_Reflect$construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(_Reflect$construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
44
-
45
25
  function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
46
-
47
26
  function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
48
-
49
27
  var ReceiveSlotEvents = {
50
28
  SourceUpdate: 'sourceUpdate'
51
29
  };
52
30
  exports.ReceiveSlotEvents = ReceiveSlotEvents;
53
31
  var receiveSlotCounter = 0;
54
-
55
32
  var _memberId = /*#__PURE__*/new _weakMap.default();
56
-
57
33
  var _csi = /*#__PURE__*/new _weakMap.default();
58
-
59
34
  var _sourceState = /*#__PURE__*/new _weakMap.default();
60
-
61
35
  /**
62
36
  * Class representing a receive slot. A single receive slot is able to receive a single track
63
37
  * for example some participant's main video or audio
64
38
  */
65
39
  var ReceiveSlot = /*#__PURE__*/function (_EventsScope) {
66
40
  (0, _inherits2.default)(ReceiveSlot, _EventsScope);
67
-
68
41
  var _super = _createSuper(ReceiveSlot);
69
-
70
42
  /**
71
43
  * constructor - don't use it directly, you should always use meeting.receiveSlotManager.allocateSlot()
72
44
  * to create any receive slots
73
45
  *
74
- * @param {MC.MediaType} mediaType
75
- * @param {MC.ReceiveSlot} mcReceiveSlot
46
+ * @param {MediaType} mediaType
47
+ * @param {ReceiveSlot} mcReceiveSlot
76
48
  * @param {FindMemberIdCallback} findMemberIdCallback callback for finding memberId for given CSI
77
49
  */
78
50
  function ReceiveSlot(mediaType, mcReceiveSlot, findMemberIdCallback) {
79
51
  var _this;
80
-
81
52
  (0, _classCallCheck2.default)(this, ReceiveSlot);
82
53
  _this = _super.call(this);
83
54
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "mcReceiveSlot", void 0);
84
55
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "findMemberIdCallback", void 0);
85
56
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "id", void 0);
86
57
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "mediaType", void 0);
87
-
88
58
  _classPrivateFieldInitSpec((0, _assertThisInitialized2.default)(_this), _memberId, {
89
59
  writable: true,
90
60
  value: void 0
91
61
  });
92
-
93
62
  _classPrivateFieldInitSpec((0, _assertThisInitialized2.default)(_this), _csi, {
94
63
  writable: true,
95
64
  value: void 0
96
65
  });
97
-
98
66
  _classPrivateFieldInitSpec((0, _assertThisInitialized2.default)(_this), _sourceState, {
99
67
  writable: true,
100
68
  value: void 0
101
69
  });
102
-
103
70
  receiveSlotCounter += 1;
104
71
  _this.findMemberIdCallback = findMemberIdCallback;
105
72
  _this.mediaType = mediaType;
106
73
  _this.mcReceiveSlot = mcReceiveSlot;
107
74
  (0, _classPrivateFieldSet2.default)((0, _assertThisInitialized2.default)(_this), _sourceState, 'no source');
108
75
  _this.id = "r".concat(receiveSlotCounter);
109
-
110
76
  _this.setupEventListeners();
111
-
112
77
  return _this;
113
78
  }
79
+
114
80
  /**
115
81
  * Getter for memberId
116
82
  */
117
-
118
-
119
83
  (0, _createClass2.default)(ReceiveSlot, [{
120
84
  key: "memberId",
121
85
  get: function get() {
122
86
  return (0, _classPrivateFieldGet2.default)(this, _memberId);
123
87
  }
88
+
124
89
  /**
125
90
  * Getter for csi
126
91
  */
127
-
128
92
  }, {
129
93
  key: "csi",
130
94
  get: function get() {
131
95
  return (0, _classPrivateFieldGet2.default)(this, _csi);
132
96
  }
97
+
133
98
  /**
134
99
  * Getter for sourceState
135
100
  */
136
-
137
101
  }, {
138
102
  key: "sourceState",
139
103
  get: function get() {
140
104
  return (0, _classPrivateFieldGet2.default)(this, _sourceState);
141
105
  }
106
+
142
107
  /**
143
108
  * registers event handlers with the underlying ReceiveSlot
144
109
  */
145
-
146
110
  }, {
147
111
  key: "setupEventListeners",
148
112
  value: function setupEventListeners() {
149
113
  var _this2 = this;
150
-
151
114
  var scope = {
152
115
  file: 'meeting/receiveSlot',
153
116
  function: 'setupEventListeners'
154
117
  };
155
- this.mcReceiveSlot.on(_internalMediaCore.MediaConnection.ReceiveSlotEvents.SourceUpdate, function (state, csi) {
118
+ this.mcReceiveSlot.on(_internalMediaCore.ReceiveSlotEvents.SourceUpdate, function (state, csi) {
156
119
  _loggerProxy.default.logger.log("ReceiveSlot#setupEventListeners --> got source update on receive slot ".concat(_this2.id, ", mediaType=").concat(_this2.mediaType, ", csi=").concat(csi, ", state=").concat(state));
157
-
158
120
  (0, _classPrivateFieldSet2.default)(_this2, _memberId, csi ? _this2.findMemberIdCallback(csi) : undefined);
159
121
  (0, _classPrivateFieldSet2.default)(_this2, _csi, csi);
160
122
  (0, _classPrivateFieldSet2.default)(_this2, _sourceState, state);
161
-
162
123
  _this2.emit(scope, ReceiveSlotEvents.SourceUpdate, {
163
124
  state: (0, _classPrivateFieldGet2.default)(_this2, _sourceState),
164
125
  csi: (0, _classPrivateFieldGet2.default)(_this2, _csi),
@@ -166,26 +127,27 @@ var ReceiveSlot = /*#__PURE__*/function (_EventsScope) {
166
127
  });
167
128
  });
168
129
  }
130
+
169
131
  /**
170
132
  * The MediaStream object associated with this slot.
171
133
  *
172
134
  * @returns {MediaStream} The MediaStreamTrack.
173
135
  */
174
-
175
136
  }, {
176
137
  key: "stream",
177
138
  get: function get() {
178
139
  return this.mcReceiveSlot.stream;
179
140
  }
141
+
180
142
  /**
181
143
  * The underlying WCME receive slot
182
144
  */
183
-
184
145
  }, {
185
146
  key: "wcmeReceiveSlot",
186
147
  get: function get() {
187
148
  return this.mcReceiveSlot;
188
149
  }
150
+
189
151
  /**
190
152
  * Resets the source state to the default 'no source' value.
191
153
  * This function should be called on receive slots that are
@@ -193,7 +155,6 @@ var ReceiveSlot = /*#__PURE__*/function (_EventsScope) {
193
155
  * does not send any more events on such slots, so the sourceState
194
156
  * value would not represent the truth anymore.
195
157
  */
196
-
197
158
  }, {
198
159
  key: "resetSourceState",
199
160
  value: function resetSourceState() {
@@ -204,6 +165,5 @@ var ReceiveSlot = /*#__PURE__*/function (_EventsScope) {
204
165
  }]);
205
166
  return ReceiveSlot;
206
167
  }(_eventsScope.default);
207
-
208
168
  exports.ReceiveSlot = ReceiveSlot;
209
169
  //# sourceMappingURL=receiveSlot.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["ReceiveSlotEvents","SourceUpdate","receiveSlotCounter","ReceiveSlot","mediaType","mcReceiveSlot","findMemberIdCallback","id","setupEventListeners","scope","file","function","on","MC","state","csi","LoggerProxy","logger","log","undefined","emit","memberId","stream","EventsScope"],"sources":["receiveSlot.ts"],"sourcesContent":["import {MediaConnection as MC} from '@webex/internal-media-core';\n\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport EventsScope from '../common/events/events-scope';\n\nexport const ReceiveSlotEvents = {\n SourceUpdate: 'sourceUpdate',\n};\n\nexport type SourceState = MC.SourceState;\nexport type CSI = number;\nexport type MemberId = string;\nexport type ReceiveSlotId = string;\n\nlet receiveSlotCounter = 0;\n\nexport type FindMemberIdCallback = (csi: CSI) => MemberId | undefined;\n\n/**\n * Class representing a receive slot. A single receive slot is able to receive a single track\n * for example some participant's main video or audio\n */\nexport class ReceiveSlot extends EventsScope {\n private readonly mcReceiveSlot: MC.ReceiveSlot;\n\n private readonly findMemberIdCallback: FindMemberIdCallback;\n\n public readonly id: ReceiveSlotId;\n\n public readonly mediaType: MC.MediaType;\n\n #memberId?: MemberId;\n\n #csi?: CSI;\n\n #sourceState: MC.SourceState;\n\n /**\n * constructor - don't use it directly, you should always use meeting.receiveSlotManager.allocateSlot()\n * to create any receive slots\n *\n * @param {MC.MediaType} mediaType\n * @param {MC.ReceiveSlot} mcReceiveSlot\n * @param {FindMemberIdCallback} findMemberIdCallback callback for finding memberId for given CSI\n */\n constructor(\n mediaType: MC.MediaType,\n mcReceiveSlot: MC.ReceiveSlot,\n findMemberIdCallback: FindMemberIdCallback\n ) {\n super();\n\n receiveSlotCounter += 1;\n\n this.findMemberIdCallback = findMemberIdCallback;\n this.mediaType = mediaType;\n this.mcReceiveSlot = mcReceiveSlot;\n this.#sourceState = 'no source';\n this.id = `r${receiveSlotCounter}`;\n\n this.setupEventListeners();\n }\n\n /**\n * Getter for memberId\n */\n public get memberId() {\n return this.#memberId;\n }\n\n /**\n * Getter for csi\n */\n public get csi() {\n return this.#csi;\n }\n\n /**\n * Getter for sourceState\n */\n public get sourceState() {\n return this.#sourceState;\n }\n\n /**\n * registers event handlers with the underlying ReceiveSlot\n */\n setupEventListeners() {\n const scope = {\n file: 'meeting/receiveSlot',\n function: 'setupEventListeners',\n };\n\n this.mcReceiveSlot.on(\n MC.ReceiveSlotEvents.SourceUpdate,\n (state: MC.SourceState, csi?: number) => {\n LoggerProxy.logger.log(\n `ReceiveSlot#setupEventListeners --> got source update on receive slot ${this.id}, mediaType=${this.mediaType}, csi=${csi}, state=${state}`\n );\n this.#memberId = csi ? this.findMemberIdCallback(csi) : undefined;\n this.#csi = csi;\n this.#sourceState = state;\n\n this.emit(scope, ReceiveSlotEvents.SourceUpdate, {\n state: this.#sourceState,\n csi: this.#csi,\n memberId: this.#memberId,\n });\n }\n );\n }\n\n /**\n * The MediaStream object associated with this slot.\n *\n * @returns {MediaStream} The MediaStreamTrack.\n */\n get stream(): MediaStream {\n return this.mcReceiveSlot.stream;\n }\n\n /**\n * The underlying WCME receive slot\n */\n get wcmeReceiveSlot(): MC.ReceiveSlot {\n return this.mcReceiveSlot;\n }\n\n /**\n * Resets the source state to the default 'no source' value.\n * This function should be called on receive slots that are\n * no longer part of a media request. It's needed because WCME\n * does not send any more events on such slots, so the sourceState\n * value would not represent the truth anymore.\n */\n public resetSourceState() {\n this.#sourceState = 'no source';\n this.#csi = undefined;\n this.#memberId = undefined;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AAEA;;AACA;;;;;;;;;;AAEO,IAAMA,iBAAiB,GAAG;EAC/BC,YAAY,EAAE;AADiB,CAA1B;;AASP,IAAIC,kBAAkB,GAAG,CAAzB;;;;;;;;AAIA;AACA;AACA;AACA;IACaC,W;;;;;EAeX;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EACE,qBACEC,SADF,EAEEC,aAFF,EAGEC,oBAHF,EAIE;IAAA;;IAAA;IACA;IADA;IAAA;IAAA;IAAA;;IAAA;MAAA;MAAA;IAAA;;IAAA;MAAA;MAAA;IAAA;;IAAA;MAAA;MAAA;IAAA;;IAGAJ,kBAAkB,IAAI,CAAtB;IAEA,MAAKI,oBAAL,GAA4BA,oBAA5B;IACA,MAAKF,SAAL,GAAiBA,SAAjB;IACA,MAAKC,aAAL,GAAqBA,aAArB;IACA,+FAAoB,WAApB;IACA,MAAKE,EAAL,cAAcL,kBAAd;;IAEA,MAAKM,mBAAL;;IAXA;EAYD;EAED;AACF;AACA;;;;;SACE,eAAsB;MACpB,2CAAO,IAAP;IACD;IAED;AACF;AACA;;;;SACE,eAAiB;MACf,2CAAO,IAAP;IACD;IAED;AACF;AACA;;;;SACE,eAAyB;MACvB,2CAAO,IAAP;IACD;IAED;AACF;AACA;;;;WACE,+BAAsB;MAAA;;MACpB,IAAMC,KAAK,GAAG;QACZC,IAAI,EAAE,qBADM;QAEZC,QAAQ,EAAE;MAFE,CAAd;MAKA,KAAKN,aAAL,CAAmBO,EAAnB,CACEC,kCAAA,CAAGb,iBAAH,CAAqBC,YADvB,EAEE,UAACa,KAAD,EAAwBC,GAAxB,EAAyC;QACvCC,oBAAA,CAAYC,MAAZ,CAAmBC,GAAnB,iFAC2E,MAAI,CAACX,EADhF,yBACiG,MAAI,CAACH,SADtG,mBACwHW,GADxH,qBACsID,KADtI;;QAGA,0CAAI,aAAaC,GAAG,GAAG,MAAI,CAACT,oBAAL,CAA0BS,GAA1B,CAAH,GAAoCI,SAApD,CAAJ;QACA,0CAAI,QAAQJ,GAAR,CAAJ;QACA,0CAAI,gBAAgBD,KAAhB,CAAJ;;QAEA,MAAI,CAACM,IAAL,CAAUX,KAAV,EAAiBT,iBAAiB,CAACC,YAAnC,EAAiD;UAC/Ca,KAAK,sCAAE,MAAF,eAD0C;UAE/CC,GAAG,sCAAE,MAAF,OAF4C;UAG/CM,QAAQ,sCAAE,MAAF;QAHuC,CAAjD;MAKD,CAfH;IAiBD;IAED;AACF;AACA;AACA;AACA;;;;SACE,eAA0B;MACxB,OAAO,KAAKhB,aAAL,CAAmBiB,MAA1B;IACD;IAED;AACF;AACA;;;;SACE,eAAsC;MACpC,OAAO,KAAKjB,aAAZ;IACD;IAED;AACF;AACA;AACA;AACA;AACA;AACA;;;;WACE,4BAA0B;MACxB,wDAAoB,WAApB;MACA,gDAAYc,SAAZ;MACA,qDAAiBA,SAAjB;IACD;;;EArH8BI,oB"}
1
+ {"version":3,"names":["ReceiveSlotEvents","SourceUpdate","receiveSlotCounter","ReceiveSlot","mediaType","mcReceiveSlot","findMemberIdCallback","id","setupEventListeners","scope","file","function","on","WcmeReceiveSlotEvents","state","csi","LoggerProxy","logger","log","undefined","emit","memberId","stream","EventsScope"],"sources":["receiveSlot.ts"],"sourcesContent":["/* eslint-disable valid-jsdoc */\nimport {\n MediaType,\n ReceiveSlot as WcmeReceiveSlot,\n ReceiveSlotEvents as WcmeReceiveSlotEvents,\n SourceState,\n} from '@webex/internal-media-core';\n\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport EventsScope from '../common/events/events-scope';\n\nexport const ReceiveSlotEvents = {\n SourceUpdate: 'sourceUpdate',\n};\n\nexport type {SourceState} from '@webex/internal-media-core';\nexport type CSI = number;\nexport type MemberId = string;\nexport type ReceiveSlotId = string;\n\nlet receiveSlotCounter = 0;\n\nexport type FindMemberIdCallback = (csi: CSI) => MemberId | undefined;\n\n/**\n * Class representing a receive slot. A single receive slot is able to receive a single track\n * for example some participant's main video or audio\n */\nexport class ReceiveSlot extends EventsScope {\n private readonly mcReceiveSlot: WcmeReceiveSlot;\n\n private readonly findMemberIdCallback: FindMemberIdCallback;\n\n public readonly id: ReceiveSlotId;\n\n public readonly mediaType: MediaType;\n\n #memberId?: MemberId;\n\n #csi?: CSI;\n\n #sourceState: SourceState;\n\n /**\n * constructor - don't use it directly, you should always use meeting.receiveSlotManager.allocateSlot()\n * to create any receive slots\n *\n * @param {MediaType} mediaType\n * @param {ReceiveSlot} mcReceiveSlot\n * @param {FindMemberIdCallback} findMemberIdCallback callback for finding memberId for given CSI\n */\n constructor(\n mediaType: MediaType,\n mcReceiveSlot: WcmeReceiveSlot,\n findMemberIdCallback: FindMemberIdCallback\n ) {\n super();\n\n receiveSlotCounter += 1;\n\n this.findMemberIdCallback = findMemberIdCallback;\n this.mediaType = mediaType;\n this.mcReceiveSlot = mcReceiveSlot;\n this.#sourceState = 'no source';\n this.id = `r${receiveSlotCounter}`;\n\n this.setupEventListeners();\n }\n\n /**\n * Getter for memberId\n */\n public get memberId() {\n return this.#memberId;\n }\n\n /**\n * Getter for csi\n */\n public get csi() {\n return this.#csi;\n }\n\n /**\n * Getter for sourceState\n */\n public get sourceState() {\n return this.#sourceState;\n }\n\n /**\n * registers event handlers with the underlying ReceiveSlot\n */\n setupEventListeners() {\n const scope = {\n file: 'meeting/receiveSlot',\n function: 'setupEventListeners',\n };\n\n this.mcReceiveSlot.on(\n WcmeReceiveSlotEvents.SourceUpdate,\n (state: SourceState, csi?: number) => {\n LoggerProxy.logger.log(\n `ReceiveSlot#setupEventListeners --> got source update on receive slot ${this.id}, mediaType=${this.mediaType}, csi=${csi}, state=${state}`\n );\n this.#memberId = csi ? this.findMemberIdCallback(csi) : undefined;\n this.#csi = csi;\n this.#sourceState = state;\n\n this.emit(scope, ReceiveSlotEvents.SourceUpdate, {\n state: this.#sourceState,\n csi: this.#csi,\n memberId: this.#memberId,\n });\n }\n );\n }\n\n /**\n * The MediaStream object associated with this slot.\n *\n * @returns {MediaStream} The MediaStreamTrack.\n */\n get stream(): MediaStream {\n return this.mcReceiveSlot.stream;\n }\n\n /**\n * The underlying WCME receive slot\n */\n get wcmeReceiveSlot(): WcmeReceiveSlot {\n return this.mcReceiveSlot;\n }\n\n /**\n * Resets the source state to the default 'no source' value.\n * This function should be called on receive slots that are\n * no longer part of a media request. It's needed because WCME\n * does not send any more events on such slots, so the sourceState\n * value would not represent the truth anymore.\n */\n public resetSourceState() {\n this.#sourceState = 'no source';\n this.#csi = undefined;\n this.#memberId = undefined;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AACA;AAOA;AACA;AAAwD;AAAA;AAAA;AAAA;AAEjD,IAAMA,iBAAiB,GAAG;EAC/BC,YAAY,EAAE;AAChB,CAAC;AAAC;AAOF,IAAIC,kBAAkB,GAAG,CAAC;AAAC;AAAA;AAAA;AAI3B;AACA;AACA;AACA;AAHA,IAIaC,WAAW;EAAA;EAAA;EAetB;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EACE,qBACEC,SAAoB,EACpBC,aAA8B,EAC9BC,oBAA0C,EAC1C;IAAA;IAAA;IACA;IAAQ;IAAA;IAAA;IAAA;IAAA;MAAA;MAAA;IAAA;IAAA;MAAA;MAAA;IAAA;IAAA;MAAA;MAAA;IAAA;IAERJ,kBAAkB,IAAI,CAAC;IAEvB,MAAKI,oBAAoB,GAAGA,oBAAoB;IAChD,MAAKF,SAAS,GAAGA,SAAS;IAC1B,MAAKC,aAAa,GAAGA,aAAa;IAClC,+FAAoB,WAAW;IAC/B,MAAKE,EAAE,cAAOL,kBAAkB,CAAE;IAElC,MAAKM,mBAAmB,EAAE;IAAC;EAC7B;;EAEA;AACF;AACA;EAFE;IAAA;IAAA,KAGA,eAAsB;MACpB,2CAAO,IAAI;IACb;;IAEA;AACF;AACA;EAFE;IAAA;IAAA,KAGA,eAAiB;MACf,2CAAO,IAAI;IACb;;IAEA;AACF;AACA;EAFE;IAAA;IAAA,KAGA,eAAyB;MACvB,2CAAO,IAAI;IACb;;IAEA;AACF;AACA;EAFE;IAAA;IAAA,OAGA,+BAAsB;MAAA;MACpB,IAAMC,KAAK,GAAG;QACZC,IAAI,EAAE,qBAAqB;QAC3BC,QAAQ,EAAE;MACZ,CAAC;MAED,IAAI,CAACN,aAAa,CAACO,EAAE,CACnBC,oCAAqB,CAACZ,YAAY,EAClC,UAACa,KAAkB,EAAEC,GAAY,EAAK;QACpCC,oBAAW,CAACC,MAAM,CAACC,GAAG,iFACqD,MAAI,CAACX,EAAE,yBAAe,MAAI,CAACH,SAAS,mBAASW,GAAG,qBAAWD,KAAK,EAC1I;QACD,0CAAI,aAAaC,GAAG,GAAG,MAAI,CAACT,oBAAoB,CAACS,GAAG,CAAC,GAAGI,SAAS;QACjE,0CAAI,QAAQJ,GAAG;QACf,0CAAI,gBAAgBD,KAAK;QAEzB,MAAI,CAACM,IAAI,CAACX,KAAK,EAAET,iBAAiB,CAACC,YAAY,EAAE;UAC/Ca,KAAK,sCAAE,MAAI,eAAa;UACxBC,GAAG,sCAAE,MAAI,OAAK;UACdM,QAAQ,sCAAE,MAAI;QAChB,CAAC,CAAC;MACJ,CAAC,CACF;IACH;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAA;IAAA,KAKA,eAA0B;MACxB,OAAO,IAAI,CAAChB,aAAa,CAACiB,MAAM;IAClC;;IAEA;AACF;AACA;EAFE;IAAA;IAAA,KAGA,eAAuC;MACrC,OAAO,IAAI,CAACjB,aAAa;IAC3B;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAA;IAAA,OAOA,4BAA0B;MACxB,wCAAI,gBAAgB,WAAW;MAC/B,wCAAI,QAAQc,SAAS;MACrB,wCAAI,aAAaA,SAAS;IAC5B;EAAC;EAAA;AAAA,EArH8BI,oBAAW;AAAA"}
@@ -1,37 +1,23 @@
1
1
  "use strict";
2
2
 
3
3
  var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
4
-
5
4
  var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
6
-
7
5
  _Object$defineProperty(exports, "__esModule", {
8
6
  value: true
9
7
  });
10
-
11
8
  exports.ReceiveSlotManager = void 0;
12
-
13
9
  var _regenerator = _interopRequireDefault(require("@babel/runtime-corejs2/regenerator"));
14
-
15
10
  var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/promise"));
16
-
17
11
  var _keys = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/keys"));
18
-
19
12
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/asyncToGenerator"));
20
-
21
13
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
22
-
23
14
  var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));
24
-
25
15
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
26
-
27
16
  var _internalMediaCore = require("@webex/internal-media-core");
28
-
29
17
  var _loggerProxy = _interopRequireDefault(require("../common/logs/logger-proxy"));
30
-
31
18
  var _receiveSlot = require("./receiveSlot");
32
-
19
+ /* eslint-disable valid-jsdoc */
33
20
  /* eslint-disable import/prefer-default-export */
34
-
35
21
  /**
36
22
  * Manages all receive slots used by a meeting. WMCE receive slots cannot be ever deleted,
37
23
  * so this manager has a pool in order to re-use the slots that were released earlier.
@@ -43,133 +29,111 @@ var ReceiveSlotManager = /*#__PURE__*/function () {
43
29
  */
44
30
  function ReceiveSlotManager(meeting) {
45
31
  var _this$allocatedSlots, _this$freeSlots;
46
-
47
32
  (0, _classCallCheck2.default)(this, ReceiveSlotManager);
48
33
  (0, _defineProperty2.default)(this, "allocatedSlots", void 0);
49
34
  (0, _defineProperty2.default)(this, "freeSlots", void 0);
50
35
  (0, _defineProperty2.default)(this, "meeting", void 0);
51
- this.allocatedSlots = (_this$allocatedSlots = {}, (0, _defineProperty2.default)(_this$allocatedSlots, _internalMediaCore.MediaConnection.MediaType.AudioMain, []), (0, _defineProperty2.default)(_this$allocatedSlots, _internalMediaCore.MediaConnection.MediaType.VideoMain, []), (0, _defineProperty2.default)(_this$allocatedSlots, _internalMediaCore.MediaConnection.MediaType.AudioSlides, []), (0, _defineProperty2.default)(_this$allocatedSlots, _internalMediaCore.MediaConnection.MediaType.VideoSlides, []), _this$allocatedSlots);
52
- this.freeSlots = (_this$freeSlots = {}, (0, _defineProperty2.default)(_this$freeSlots, _internalMediaCore.MediaConnection.MediaType.AudioMain, []), (0, _defineProperty2.default)(_this$freeSlots, _internalMediaCore.MediaConnection.MediaType.VideoMain, []), (0, _defineProperty2.default)(_this$freeSlots, _internalMediaCore.MediaConnection.MediaType.AudioSlides, []), (0, _defineProperty2.default)(_this$freeSlots, _internalMediaCore.MediaConnection.MediaType.VideoSlides, []), _this$freeSlots);
36
+ this.allocatedSlots = (_this$allocatedSlots = {}, (0, _defineProperty2.default)(_this$allocatedSlots, _internalMediaCore.MediaType.AudioMain, []), (0, _defineProperty2.default)(_this$allocatedSlots, _internalMediaCore.MediaType.VideoMain, []), (0, _defineProperty2.default)(_this$allocatedSlots, _internalMediaCore.MediaType.AudioSlides, []), (0, _defineProperty2.default)(_this$allocatedSlots, _internalMediaCore.MediaType.VideoSlides, []), _this$allocatedSlots);
37
+ this.freeSlots = (_this$freeSlots = {}, (0, _defineProperty2.default)(_this$freeSlots, _internalMediaCore.MediaType.AudioMain, []), (0, _defineProperty2.default)(_this$freeSlots, _internalMediaCore.MediaType.VideoMain, []), (0, _defineProperty2.default)(_this$freeSlots, _internalMediaCore.MediaType.AudioSlides, []), (0, _defineProperty2.default)(_this$freeSlots, _internalMediaCore.MediaType.VideoSlides, []), _this$freeSlots);
53
38
  this.meeting = meeting;
54
39
  }
40
+
55
41
  /**
56
42
  * Creates a new receive slot or returns one from the existing pool of free slots
57
43
  *
58
- * @param {MC.MediaType} mediaType
44
+ * @param {MediaType} mediaType
59
45
  * @returns {Promise<ReceiveSlot>}
60
46
  */
61
-
62
-
63
47
  (0, _createClass2.default)(ReceiveSlotManager, [{
64
48
  key: "allocateSlot",
65
49
  value: function () {
66
50
  var _allocateSlot = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(mediaType) {
67
51
  var _this$meeting,
68
- _this$meeting$mediaPr,
69
- _this = this;
70
-
52
+ _this$meeting$mediaPr,
53
+ _this = this;
71
54
  var availableSlot, wcmeReceiveSlot, receiveSlot;
72
55
  return _regenerator.default.wrap(function _callee$(_context) {
73
- while (1) {
74
- switch (_context.prev = _context.next) {
75
- case 0:
76
- if ((_this$meeting = this.meeting) !== null && _this$meeting !== void 0 && (_this$meeting$mediaPr = _this$meeting.mediaProperties) !== null && _this$meeting$mediaPr !== void 0 && _this$meeting$mediaPr.webrtcMediaConnection) {
77
- _context.next = 2;
78
- break;
79
- }
80
-
81
- return _context.abrupt("return", _promise.default.reject(new Error('Webrtc media connection is missing')));
82
-
83
- case 2:
84
- // try to use one of the free ones
85
- availableSlot = this.freeSlots[mediaType].pop();
86
-
87
- if (!availableSlot) {
88
- _context.next = 7;
89
- break;
90
- }
91
-
92
- this.allocatedSlots[mediaType].push(availableSlot);
93
-
94
- _loggerProxy.default.logger.log("receive slot re-used: ".concat(availableSlot.id));
95
-
96
- return _context.abrupt("return", availableSlot);
97
-
98
- case 7:
99
- _context.next = 9;
100
- return this.meeting.mediaProperties.webrtcMediaConnection.createReceiveSlot(mediaType);
101
-
102
- case 9:
103
- wcmeReceiveSlot = _context.sent;
104
- receiveSlot = new _receiveSlot.ReceiveSlot(mediaType, wcmeReceiveSlot, function (csi) {
105
- var _this$meeting$members;
106
-
107
- return (_this$meeting$members = _this.meeting.members.findMemberByCsi(csi)) === null || _this$meeting$members === void 0 ? void 0 : _this$meeting$members.id;
108
- });
109
- this.allocatedSlots[mediaType].push(receiveSlot);
110
-
111
- _loggerProxy.default.logger.log("new receive slot allocated: ".concat(receiveSlot.id));
112
-
113
- return _context.abrupt("return", receiveSlot);
114
-
115
- case 14:
116
- case "end":
117
- return _context.stop();
118
- }
56
+ while (1) switch (_context.prev = _context.next) {
57
+ case 0:
58
+ if ((_this$meeting = this.meeting) !== null && _this$meeting !== void 0 && (_this$meeting$mediaPr = _this$meeting.mediaProperties) !== null && _this$meeting$mediaPr !== void 0 && _this$meeting$mediaPr.webrtcMediaConnection) {
59
+ _context.next = 2;
60
+ break;
61
+ }
62
+ return _context.abrupt("return", _promise.default.reject(new Error('Webrtc media connection is missing')));
63
+ case 2:
64
+ // try to use one of the free ones
65
+ availableSlot = this.freeSlots[mediaType].pop();
66
+ if (!availableSlot) {
67
+ _context.next = 7;
68
+ break;
69
+ }
70
+ this.allocatedSlots[mediaType].push(availableSlot);
71
+ _loggerProxy.default.logger.log("receive slot re-used: ".concat(availableSlot.id));
72
+ return _context.abrupt("return", availableSlot);
73
+ case 7:
74
+ _context.next = 9;
75
+ return this.meeting.mediaProperties.webrtcMediaConnection.createReceiveSlot(mediaType);
76
+ case 9:
77
+ wcmeReceiveSlot = _context.sent;
78
+ receiveSlot = new _receiveSlot.ReceiveSlot(mediaType, wcmeReceiveSlot,
79
+ // @ts-ignore
80
+ function (csi) {
81
+ var _this$meeting$members;
82
+ return (_this$meeting$members = _this.meeting.members.findMemberByCsi(csi)) === null || _this$meeting$members === void 0 ? void 0 : _this$meeting$members.id;
83
+ });
84
+ this.allocatedSlots[mediaType].push(receiveSlot);
85
+ _loggerProxy.default.logger.log("new receive slot allocated: ".concat(receiveSlot.id));
86
+ return _context.abrupt("return", receiveSlot);
87
+ case 14:
88
+ case "end":
89
+ return _context.stop();
119
90
  }
120
91
  }, _callee, this);
121
92
  }));
122
-
123
93
  function allocateSlot(_x) {
124
94
  return _allocateSlot.apply(this, arguments);
125
95
  }
126
-
127
96
  return allocateSlot;
128
97
  }()
129
98
  /**
130
99
  * Releases the slot back to the pool so it can be re-used by others in the future
131
100
  * @param {ReceiveSlot} slot
132
101
  */
133
-
134
102
  }, {
135
103
  key: "releaseSlot",
136
104
  value: function releaseSlot(slot) {
137
105
  var idx = this.allocatedSlots[slot.mediaType].findIndex(function (allocatedSlot) {
138
106
  return allocatedSlot === slot;
139
107
  });
140
-
141
108
  if (idx >= 0) {
142
109
  this.allocatedSlots[slot.mediaType].splice(idx, 1);
143
110
  this.freeSlots[slot.mediaType].push(slot);
144
-
145
111
  _loggerProxy.default.logger.log("receive slot released: ".concat(slot.id));
146
112
  } else {
147
113
  _loggerProxy.default.logger.warn('ReceiveSlotManager#releaseSlot --> trying to release a slot that is not managed by this ReceiveSlotManager');
148
114
  }
149
115
  }
116
+
150
117
  /**
151
118
  * Resets the slot manager - this method should be called when the media connection is torn down
152
119
  */
153
-
154
120
  }, {
155
121
  key: "reset",
156
122
  value: function reset() {
157
123
  var _this$allocatedSlots2, _this$freeSlots2;
158
-
159
- this.allocatedSlots = (_this$allocatedSlots2 = {}, (0, _defineProperty2.default)(_this$allocatedSlots2, _internalMediaCore.MediaConnection.MediaType.AudioMain, []), (0, _defineProperty2.default)(_this$allocatedSlots2, _internalMediaCore.MediaConnection.MediaType.VideoMain, []), (0, _defineProperty2.default)(_this$allocatedSlots2, _internalMediaCore.MediaConnection.MediaType.AudioSlides, []), (0, _defineProperty2.default)(_this$allocatedSlots2, _internalMediaCore.MediaConnection.MediaType.VideoSlides, []), _this$allocatedSlots2);
160
- this.freeSlots = (_this$freeSlots2 = {}, (0, _defineProperty2.default)(_this$freeSlots2, _internalMediaCore.MediaConnection.MediaType.AudioMain, []), (0, _defineProperty2.default)(_this$freeSlots2, _internalMediaCore.MediaConnection.MediaType.VideoMain, []), (0, _defineProperty2.default)(_this$freeSlots2, _internalMediaCore.MediaConnection.MediaType.AudioSlides, []), (0, _defineProperty2.default)(_this$freeSlots2, _internalMediaCore.MediaConnection.MediaType.VideoSlides, []), _this$freeSlots2);
124
+ this.allocatedSlots = (_this$allocatedSlots2 = {}, (0, _defineProperty2.default)(_this$allocatedSlots2, _internalMediaCore.MediaType.AudioMain, []), (0, _defineProperty2.default)(_this$allocatedSlots2, _internalMediaCore.MediaType.VideoMain, []), (0, _defineProperty2.default)(_this$allocatedSlots2, _internalMediaCore.MediaType.AudioSlides, []), (0, _defineProperty2.default)(_this$allocatedSlots2, _internalMediaCore.MediaType.VideoSlides, []), _this$allocatedSlots2);
125
+ this.freeSlots = (_this$freeSlots2 = {}, (0, _defineProperty2.default)(_this$freeSlots2, _internalMediaCore.MediaType.AudioMain, []), (0, _defineProperty2.default)(_this$freeSlots2, _internalMediaCore.MediaType.VideoMain, []), (0, _defineProperty2.default)(_this$freeSlots2, _internalMediaCore.MediaType.AudioSlides, []), (0, _defineProperty2.default)(_this$freeSlots2, _internalMediaCore.MediaType.VideoSlides, []), _this$freeSlots2);
161
126
  }
127
+
162
128
  /**
163
129
  * Returns statistics about the managed slots
164
130
  *
165
131
  * @returns {Object}
166
132
  */
167
-
168
133
  }, {
169
134
  key: "getStats",
170
135
  value: function getStats() {
171
136
  var _this2 = this;
172
-
173
137
  var numAllocatedSlots = {};
174
138
  var numFreeSlots = {};
175
139
  (0, _keys.default)(this.allocatedSlots).forEach(function (key) {
@@ -190,6 +154,5 @@ var ReceiveSlotManager = /*#__PURE__*/function () {
190
154
  }]);
191
155
  return ReceiveSlotManager;
192
156
  }();
193
-
194
157
  exports.ReceiveSlotManager = ReceiveSlotManager;
195
158
  //# sourceMappingURL=receiveSlotManager.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["ReceiveSlotManager","meeting","allocatedSlots","MC","MediaType","AudioMain","VideoMain","AudioSlides","VideoSlides","freeSlots","mediaType","mediaProperties","webrtcMediaConnection","reject","Error","availableSlot","pop","push","LoggerProxy","logger","log","id","createReceiveSlot","wcmeReceiveSlot","receiveSlot","ReceiveSlot","csi","members","findMemberByCsi","slot","idx","findIndex","allocatedSlot","splice","warn","numAllocatedSlots","numFreeSlots","forEach","key","length"],"sources":["receiveSlotManager.ts"],"sourcesContent":["/* eslint-disable import/prefer-default-export */\nimport {MediaConnection as MC} from '@webex/internal-media-core';\n\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport Meeting from '../meeting';\n\nimport {CSI, ReceiveSlot} from './receiveSlot';\n\n/**\n * Manages all receive slots used by a meeting. WMCE receive slots cannot be ever deleted,\n * so this manager has a pool in order to re-use the slots that were released earlier.\n */\nexport class ReceiveSlotManager {\n private allocatedSlots: {[key in MC.MediaType]: ReceiveSlot[]};\n\n private freeSlots: {[key in MC.MediaType]: ReceiveSlot[]};\n\n private meeting: Meeting;\n\n /**\n * Constructor\n * @param {Meeting} meeting\n */\n constructor(meeting) {\n this.allocatedSlots = {\n [MC.MediaType.AudioMain]: [],\n [MC.MediaType.VideoMain]: [],\n [MC.MediaType.AudioSlides]: [],\n [MC.MediaType.VideoSlides]: [],\n };\n this.freeSlots = {\n [MC.MediaType.AudioMain]: [],\n [MC.MediaType.VideoMain]: [],\n [MC.MediaType.AudioSlides]: [],\n [MC.MediaType.VideoSlides]: [],\n };\n this.meeting = meeting;\n }\n\n /**\n * Creates a new receive slot or returns one from the existing pool of free slots\n *\n * @param {MC.MediaType} mediaType\n * @returns {Promise<ReceiveSlot>}\n */\n async allocateSlot(mediaType: MC.MediaType): Promise<ReceiveSlot> {\n if (!this.meeting?.mediaProperties?.webrtcMediaConnection) {\n return Promise.reject(new Error('Webrtc media connection is missing'));\n }\n\n // try to use one of the free ones\n const availableSlot = this.freeSlots[mediaType].pop();\n\n if (availableSlot) {\n this.allocatedSlots[mediaType].push(availableSlot);\n\n LoggerProxy.logger.log(`receive slot re-used: ${availableSlot.id}`);\n\n return availableSlot;\n }\n\n // we have to create a new one\n const wcmeReceiveSlot =\n await this.meeting.mediaProperties.webrtcMediaConnection.createReceiveSlot(mediaType);\n\n const receiveSlot = new ReceiveSlot(\n mediaType,\n wcmeReceiveSlot,\n (csi: CSI) => this.meeting.members.findMemberByCsi(csi)?.id\n );\n\n this.allocatedSlots[mediaType].push(receiveSlot);\n LoggerProxy.logger.log(`new receive slot allocated: ${receiveSlot.id}`);\n\n return receiveSlot;\n }\n\n /**\n * Releases the slot back to the pool so it can be re-used by others in the future\n * @param {ReceiveSlot} slot\n */\n releaseSlot(slot: ReceiveSlot) {\n const idx = this.allocatedSlots[slot.mediaType].findIndex(\n (allocatedSlot) => allocatedSlot === slot\n );\n\n if (idx >= 0) {\n this.allocatedSlots[slot.mediaType].splice(idx, 1);\n this.freeSlots[slot.mediaType].push(slot);\n LoggerProxy.logger.log(`receive slot released: ${slot.id}`);\n } else {\n LoggerProxy.logger.warn(\n 'ReceiveSlotManager#releaseSlot --> trying to release a slot that is not managed by this ReceiveSlotManager'\n );\n }\n }\n\n /**\n * Resets the slot manager - this method should be called when the media connection is torn down\n */\n reset() {\n this.allocatedSlots = {\n [MC.MediaType.AudioMain]: [],\n [MC.MediaType.VideoMain]: [],\n [MC.MediaType.AudioSlides]: [],\n [MC.MediaType.VideoSlides]: [],\n };\n this.freeSlots = {\n [MC.MediaType.AudioMain]: [],\n [MC.MediaType.VideoMain]: [],\n [MC.MediaType.AudioSlides]: [],\n [MC.MediaType.VideoSlides]: [],\n };\n }\n\n /**\n * Returns statistics about the managed slots\n *\n * @returns {Object}\n */\n getStats() {\n const numAllocatedSlots = {};\n const numFreeSlots = {};\n\n Object.keys(this.allocatedSlots).forEach((key) => {\n if (this.allocatedSlots[key].length > 0) {\n numAllocatedSlots[key] = this.allocatedSlots[key].length;\n }\n });\n\n Object.keys(this.freeSlots).forEach((key) => {\n if (this.freeSlots[key].length > 0) {\n numFreeSlots[key] = this.freeSlots[key].length;\n }\n });\n\n return {\n numAllocatedSlots,\n numFreeSlots,\n };\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["ReceiveSlotManager","meeting","allocatedSlots","MediaType","AudioMain","VideoMain","AudioSlides","VideoSlides","freeSlots","mediaType","mediaProperties","webrtcMediaConnection","reject","Error","availableSlot","pop","push","LoggerProxy","logger","log","id","createReceiveSlot","wcmeReceiveSlot","receiveSlot","ReceiveSlot","csi","members","findMemberByCsi","slot","idx","findIndex","allocatedSlot","splice","warn","numAllocatedSlots","numFreeSlots","forEach","key","length"],"sources":["receiveSlotManager.ts"],"sourcesContent":["/* eslint-disable valid-jsdoc */\n/* eslint-disable import/prefer-default-export */\nimport {MediaType} from '@webex/internal-media-core';\n\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport Meeting from '../meeting';\n\nimport {CSI, ReceiveSlot} from './receiveSlot';\n\n/**\n * Manages all receive slots used by a meeting. WMCE receive slots cannot be ever deleted,\n * so this manager has a pool in order to re-use the slots that were released earlier.\n */\nexport class ReceiveSlotManager {\n private allocatedSlots: {[key in MediaType]: ReceiveSlot[]};\n\n private freeSlots: {[key in MediaType]: ReceiveSlot[]};\n\n private meeting: Meeting;\n\n /**\n * Constructor\n * @param {Meeting} meeting\n */\n constructor(meeting) {\n this.allocatedSlots = {\n [MediaType.AudioMain]: [],\n [MediaType.VideoMain]: [],\n [MediaType.AudioSlides]: [],\n [MediaType.VideoSlides]: [],\n };\n this.freeSlots = {\n [MediaType.AudioMain]: [],\n [MediaType.VideoMain]: [],\n [MediaType.AudioSlides]: [],\n [MediaType.VideoSlides]: [],\n };\n this.meeting = meeting;\n }\n\n /**\n * Creates a new receive slot or returns one from the existing pool of free slots\n *\n * @param {MediaType} mediaType\n * @returns {Promise<ReceiveSlot>}\n */\n async allocateSlot(mediaType: MediaType): Promise<ReceiveSlot> {\n if (!this.meeting?.mediaProperties?.webrtcMediaConnection) {\n return Promise.reject(new Error('Webrtc media connection is missing'));\n }\n\n // try to use one of the free ones\n const availableSlot = this.freeSlots[mediaType].pop();\n\n if (availableSlot) {\n this.allocatedSlots[mediaType].push(availableSlot);\n\n LoggerProxy.logger.log(`receive slot re-used: ${availableSlot.id}`);\n\n return availableSlot;\n }\n\n // we have to create a new one\n const wcmeReceiveSlot =\n await this.meeting.mediaProperties.webrtcMediaConnection.createReceiveSlot(mediaType);\n\n const receiveSlot = new ReceiveSlot(\n mediaType,\n wcmeReceiveSlot,\n // @ts-ignore\n (csi: CSI) => this.meeting.members.findMemberByCsi(csi)?.id\n );\n\n this.allocatedSlots[mediaType].push(receiveSlot);\n LoggerProxy.logger.log(`new receive slot allocated: ${receiveSlot.id}`);\n\n return receiveSlot;\n }\n\n /**\n * Releases the slot back to the pool so it can be re-used by others in the future\n * @param {ReceiveSlot} slot\n */\n releaseSlot(slot: ReceiveSlot) {\n const idx = this.allocatedSlots[slot.mediaType].findIndex(\n (allocatedSlot) => allocatedSlot === slot\n );\n\n if (idx >= 0) {\n this.allocatedSlots[slot.mediaType].splice(idx, 1);\n this.freeSlots[slot.mediaType].push(slot);\n LoggerProxy.logger.log(`receive slot released: ${slot.id}`);\n } else {\n LoggerProxy.logger.warn(\n 'ReceiveSlotManager#releaseSlot --> trying to release a slot that is not managed by this ReceiveSlotManager'\n );\n }\n }\n\n /**\n * Resets the slot manager - this method should be called when the media connection is torn down\n */\n reset() {\n this.allocatedSlots = {\n [MediaType.AudioMain]: [],\n [MediaType.VideoMain]: [],\n [MediaType.AudioSlides]: [],\n [MediaType.VideoSlides]: [],\n };\n this.freeSlots = {\n [MediaType.AudioMain]: [],\n [MediaType.VideoMain]: [],\n [MediaType.AudioSlides]: [],\n [MediaType.VideoSlides]: [],\n };\n }\n\n /**\n * Returns statistics about the managed slots\n *\n * @returns {Object}\n */\n getStats() {\n const numAllocatedSlots = {};\n const numFreeSlots = {};\n\n Object.keys(this.allocatedSlots).forEach((key) => {\n if (this.allocatedSlots[key].length > 0) {\n numAllocatedSlots[key] = this.allocatedSlots[key].length;\n }\n });\n\n Object.keys(this.freeSlots).forEach((key) => {\n if (this.freeSlots[key].length > 0) {\n numFreeSlots[key] = this.freeSlots[key].length;\n }\n });\n\n return {\n numAllocatedSlots,\n numFreeSlots,\n };\n }\n}\n"],"mappings":"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"}