@webex/plugin-meetings 2.60.0 → 2.60.1-next.10

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 (539) hide show
  1. package/README.md +58 -8
  2. package/dist/annotation/annotation.types.d.ts +42 -0
  3. package/dist/annotation/annotation.types.js +7 -0
  4. package/dist/annotation/annotation.types.js.map +1 -0
  5. package/dist/annotation/constants.d.ts +31 -0
  6. package/dist/annotation/constants.js +41 -0
  7. package/dist/annotation/constants.js.map +1 -0
  8. package/dist/annotation/index.d.ts +117 -0
  9. package/dist/annotation/index.js +357 -0
  10. package/dist/annotation/index.js.map +1 -0
  11. package/dist/breakouts/breakout.d.ts +8 -0
  12. package/dist/breakouts/breakout.js +215 -0
  13. package/dist/breakouts/breakout.js.map +1 -0
  14. package/dist/breakouts/collection.d.ts +5 -0
  15. package/dist/breakouts/collection.js +22 -0
  16. package/dist/breakouts/collection.js.map +1 -0
  17. package/dist/breakouts/edit-lock-error.d.ts +15 -0
  18. package/dist/breakouts/edit-lock-error.js +51 -0
  19. package/dist/breakouts/edit-lock-error.js.map +1 -0
  20. package/dist/breakouts/events.d.ts +8 -0
  21. package/dist/breakouts/events.js +44 -0
  22. package/dist/breakouts/events.js.map +1 -0
  23. package/dist/breakouts/index.d.ts +5 -0
  24. package/dist/breakouts/index.js +1047 -0
  25. package/dist/breakouts/index.js.map +1 -0
  26. package/dist/breakouts/request.d.ts +22 -0
  27. package/dist/breakouts/request.js +77 -0
  28. package/dist/breakouts/request.js.map +1 -0
  29. package/dist/breakouts/utils.d.ts +15 -0
  30. package/dist/breakouts/utils.js +64 -0
  31. package/dist/breakouts/utils.js.map +1 -0
  32. package/dist/common/browser-detection.js +2 -3
  33. package/dist/common/browser-detection.js.map +1 -1
  34. package/dist/common/collection.js +3 -4
  35. package/dist/common/collection.js.map +1 -1
  36. package/dist/common/config.js +1 -2
  37. package/dist/common/config.js.map +1 -1
  38. package/dist/common/errors/captcha-error.js +1 -2
  39. package/dist/common/errors/captcha-error.js.map +1 -1
  40. package/dist/common/errors/intent-to-join.js +1 -2
  41. package/dist/common/errors/intent-to-join.js.map +1 -1
  42. package/dist/common/errors/join-meeting.js +1 -2
  43. package/dist/common/errors/join-meeting.js.map +1 -1
  44. package/dist/common/errors/media.js +1 -2
  45. package/dist/common/errors/media.js.map +1 -1
  46. package/dist/common/errors/no-meeting-info.d.ts +14 -0
  47. package/dist/common/errors/no-meeting-info.js +50 -0
  48. package/dist/common/errors/no-meeting-info.js.map +1 -0
  49. package/dist/common/errors/parameter.js +3 -4
  50. package/dist/common/errors/parameter.js.map +1 -1
  51. package/dist/common/errors/password-error.js +1 -2
  52. package/dist/common/errors/password-error.js.map +1 -1
  53. package/dist/common/errors/permission.js +1 -2
  54. package/dist/common/errors/permission.js.map +1 -1
  55. package/dist/common/errors/{reclaim-host-role-error.js → reclaim-host-role-errors.js} +7 -11
  56. package/dist/common/errors/reclaim-host-role-errors.js.map +1 -0
  57. package/dist/common/errors/reconnection-in-progress.js +1 -2
  58. package/dist/common/errors/reconnection-in-progress.js.map +1 -1
  59. package/dist/common/errors/reconnection.js +1 -2
  60. package/dist/common/errors/reconnection.js.map +1 -1
  61. package/dist/common/errors/stats.js +1 -2
  62. package/dist/common/errors/stats.js.map +1 -1
  63. package/dist/common/errors/webex-errors.d.ts +20 -8
  64. package/dist/common/errors/webex-errors.js +48 -28
  65. package/dist/common/errors/webex-errors.js.map +1 -1
  66. package/dist/common/errors/webex-meetings-error.js +1 -2
  67. package/dist/common/errors/webex-meetings-error.js.map +1 -1
  68. package/dist/common/events/events-scope.js +1 -2
  69. package/dist/common/events/events-scope.js.map +1 -1
  70. package/dist/common/events/events.js +1 -2
  71. package/dist/common/events/events.js.map +1 -1
  72. package/dist/common/events/trigger-proxy.js +1 -2
  73. package/dist/common/events/trigger-proxy.js.map +1 -1
  74. package/dist/common/events/util.js +1 -2
  75. package/dist/common/events/util.js.map +1 -1
  76. package/dist/common/logs/logger-config.js +1 -2
  77. package/dist/common/logs/logger-config.js.map +1 -1
  78. package/dist/common/logs/logger-proxy.js +2 -3
  79. package/dist/common/logs/logger-proxy.js.map +1 -1
  80. package/dist/common/logs/request.d.ts +3 -1
  81. package/dist/common/logs/request.js +8 -5
  82. package/dist/common/logs/request.js.map +1 -1
  83. package/dist/common/queue.d.ts +9 -7
  84. package/dist/common/queue.js +22 -9
  85. package/dist/common/queue.js.map +1 -1
  86. package/dist/config.d.ts +6 -7
  87. package/dist/config.js +8 -10
  88. package/dist/config.js.map +1 -1
  89. package/dist/constants.d.ts +234 -100
  90. package/dist/constants.js +433 -444
  91. package/dist/constants.js.map +1 -1
  92. package/dist/controls-options-manager/constants.js +3 -6
  93. package/dist/controls-options-manager/constants.js.map +1 -1
  94. package/dist/controls-options-manager/enums.d.ts +11 -1
  95. package/dist/controls-options-manager/enums.js +15 -6
  96. package/dist/controls-options-manager/enums.js.map +1 -1
  97. package/dist/controls-options-manager/index.d.ts +17 -1
  98. package/dist/controls-options-manager/index.js +127 -38
  99. package/dist/controls-options-manager/index.js.map +1 -1
  100. package/dist/controls-options-manager/types.d.ts +43 -0
  101. package/dist/controls-options-manager/types.js +7 -0
  102. package/dist/controls-options-manager/types.js.map +1 -0
  103. package/dist/controls-options-manager/util.d.ts +1 -7
  104. package/dist/controls-options-manager/util.js +309 -19
  105. package/dist/controls-options-manager/util.js.map +1 -1
  106. package/dist/index.d.ts +6 -3
  107. package/dist/index.js +121 -5
  108. package/dist/index.js.map +1 -1
  109. package/dist/interceptors/index.d.ts +2 -0
  110. package/dist/interceptors/index.js +15 -0
  111. package/dist/interceptors/index.js.map +1 -0
  112. package/dist/interceptors/locusRetry.d.ts +27 -0
  113. package/dist/interceptors/locusRetry.js +94 -0
  114. package/dist/interceptors/locusRetry.js.map +1 -0
  115. package/dist/interpretation/collection.d.ts +5 -0
  116. package/dist/interpretation/collection.js +22 -0
  117. package/dist/interpretation/collection.js.map +1 -0
  118. package/dist/interpretation/index.d.ts +5 -0
  119. package/dist/interpretation/index.js +365 -0
  120. package/dist/interpretation/index.js.map +1 -0
  121. package/dist/interpretation/siLanguage.d.ts +5 -0
  122. package/dist/interpretation/siLanguage.js +24 -0
  123. package/dist/interpretation/siLanguage.js.map +1 -0
  124. package/dist/locus-info/controlsUtils.js +100 -11
  125. package/dist/locus-info/controlsUtils.js.map +1 -1
  126. package/dist/locus-info/embeddedAppsUtils.js +3 -4
  127. package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
  128. package/dist/locus-info/fullState.js +1 -2
  129. package/dist/locus-info/fullState.js.map +1 -1
  130. package/dist/locus-info/hostUtils.js +1 -2
  131. package/dist/locus-info/hostUtils.js.map +1 -1
  132. package/dist/locus-info/index.d.ts +57 -4
  133. package/dist/locus-info/index.js +425 -84
  134. package/dist/locus-info/index.js.map +1 -1
  135. package/dist/locus-info/infoUtils.js +13 -5
  136. package/dist/locus-info/infoUtils.js.map +1 -1
  137. package/dist/locus-info/mediaSharesUtils.js +58 -3
  138. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  139. package/dist/locus-info/parser.d.ts +66 -6
  140. package/dist/locus-info/parser.js +253 -80
  141. package/dist/locus-info/parser.js.map +1 -1
  142. package/dist/locus-info/selfUtils.js +97 -13
  143. package/dist/locus-info/selfUtils.js.map +1 -1
  144. package/dist/media/index.d.ts +2 -0
  145. package/dist/media/index.js +107 -319
  146. package/dist/media/index.js.map +1 -1
  147. package/dist/media/properties.d.ts +38 -53
  148. package/dist/media/properties.js +96 -153
  149. package/dist/media/properties.js.map +1 -1
  150. package/dist/media/util.js +1 -22
  151. package/dist/media/util.js.map +1 -1
  152. package/dist/mediaQualityMetrics/config.d.ts +234 -230
  153. package/dist/mediaQualityMetrics/config.js +302 -498
  154. package/dist/mediaQualityMetrics/config.js.map +1 -1
  155. package/dist/meeting/in-meeting-actions.d.ts +88 -0
  156. package/dist/meeting/in-meeting-actions.js +94 -3
  157. package/dist/meeting/in-meeting-actions.js.map +1 -1
  158. package/dist/meeting/index.d.ts +705 -520
  159. package/dist/meeting/index.js +5047 -3089
  160. package/dist/meeting/index.js.map +1 -1
  161. package/dist/meeting/locusMediaRequest.d.ts +74 -0
  162. package/dist/meeting/locusMediaRequest.js +291 -0
  163. package/dist/meeting/locusMediaRequest.js.map +1 -0
  164. package/dist/meeting/muteState.d.ts +93 -25
  165. package/dist/meeting/muteState.js +224 -133
  166. package/dist/meeting/muteState.js.map +1 -1
  167. package/dist/meeting/request.d.ts +82 -47
  168. package/dist/meeting/request.js +304 -199
  169. package/dist/meeting/request.js.map +1 -1
  170. package/dist/meeting/request.type.d.ts +11 -0
  171. package/dist/meeting/request.type.js +7 -0
  172. package/dist/meeting/request.type.js.map +1 -0
  173. package/dist/meeting/state.js +1 -2
  174. package/dist/meeting/state.js.map +1 -1
  175. package/dist/meeting/util.d.ts +118 -1
  176. package/dist/meeting/util.js +676 -435
  177. package/dist/meeting/util.js.map +1 -1
  178. package/dist/meeting/voicea-meeting.d.ts +20 -0
  179. package/dist/meeting/voicea-meeting.js +201 -0
  180. package/dist/meeting/voicea-meeting.js.map +1 -0
  181. package/dist/meeting-info/collection.js +3 -4
  182. package/dist/meeting-info/collection.js.map +1 -1
  183. package/dist/meeting-info/index.d.ts +13 -1
  184. package/dist/meeting-info/index.js +74 -7
  185. package/dist/meeting-info/index.js.map +1 -1
  186. package/dist/meeting-info/meeting-info-v2.d.ts +31 -1
  187. package/dist/meeting-info/meeting-info-v2.js +200 -63
  188. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  189. package/dist/meeting-info/request.js +1 -2
  190. package/dist/meeting-info/request.js.map +1 -1
  191. package/dist/meeting-info/util.js +2 -3
  192. package/dist/meeting-info/util.js.map +1 -1
  193. package/dist/meeting-info/utilv2.js +39 -41
  194. package/dist/meeting-info/utilv2.js.map +1 -1
  195. package/dist/meetings/collection.d.ts +17 -0
  196. package/dist/meetings/collection.js +42 -4
  197. package/dist/meetings/collection.js.map +1 -1
  198. package/dist/meetings/index.d.ts +114 -20
  199. package/dist/meetings/index.js +540 -126
  200. package/dist/meetings/index.js.map +1 -1
  201. package/dist/meetings/meetings.types.d.ts +4 -0
  202. package/dist/meetings/meetings.types.js +7 -0
  203. package/dist/meetings/meetings.types.js.map +1 -0
  204. package/dist/meetings/request.js +4 -3
  205. package/dist/meetings/request.js.map +1 -1
  206. package/dist/meetings/util.js +107 -6
  207. package/dist/meetings/util.js.map +1 -1
  208. package/dist/member/index.d.ts +13 -1
  209. package/dist/member/index.js +45 -2
  210. package/dist/member/index.js.map +1 -1
  211. package/dist/member/member.types.js +3 -4
  212. package/dist/member/member.types.js.map +1 -1
  213. package/dist/member/types.d.ts +32 -0
  214. package/dist/member/types.js +23 -0
  215. package/dist/member/types.js.map +1 -0
  216. package/dist/member/util.js +120 -29
  217. package/dist/member/util.js.map +1 -1
  218. package/dist/members/collection.d.ts +5 -0
  219. package/dist/members/collection.js +11 -2
  220. package/dist/members/collection.js.map +1 -1
  221. package/dist/members/index.d.ts +56 -11
  222. package/dist/members/index.js +174 -47
  223. package/dist/members/index.js.map +1 -1
  224. package/dist/members/request.d.ts +67 -11
  225. package/dist/members/request.js +102 -54
  226. package/dist/members/request.js.map +1 -1
  227. package/dist/members/types.js +3 -4
  228. package/dist/members/types.js.map +1 -1
  229. package/dist/members/util.d.ts +214 -1
  230. package/dist/members/util.js +327 -284
  231. package/dist/members/util.js.map +1 -1
  232. package/dist/metrics/constants.d.ts +15 -6
  233. package/dist/metrics/constants.js +17 -9
  234. package/dist/metrics/constants.js.map +1 -1
  235. package/dist/metrics/index.d.ts +4 -111
  236. package/dist/metrics/index.js +4 -452
  237. package/dist/metrics/index.js.map +1 -1
  238. package/dist/multistream/mediaRequestManager.d.ts +118 -0
  239. package/dist/multistream/mediaRequestManager.js +344 -0
  240. package/dist/multistream/mediaRequestManager.js.map +1 -0
  241. package/dist/multistream/receiveSlot.d.ts +68 -0
  242. package/dist/multistream/receiveSlot.js +200 -0
  243. package/dist/multistream/receiveSlot.js.map +1 -0
  244. package/dist/multistream/receiveSlotManager.d.ts +56 -0
  245. package/dist/multistream/receiveSlotManager.js +174 -0
  246. package/dist/multistream/receiveSlotManager.js.map +1 -0
  247. package/dist/multistream/remoteMedia.d.ts +72 -0
  248. package/dist/multistream/remoteMedia.js +268 -0
  249. package/dist/multistream/remoteMedia.js.map +1 -0
  250. package/dist/multistream/remoteMediaGroup.d.ts +47 -0
  251. package/dist/multistream/remoteMediaGroup.js +267 -0
  252. package/dist/multistream/remoteMediaGroup.js.map +1 -0
  253. package/dist/multistream/remoteMediaManager.d.ts +285 -0
  254. package/dist/multistream/remoteMediaManager.js +1211 -0
  255. package/dist/multistream/remoteMediaManager.js.map +1 -0
  256. package/dist/multistream/sendSlotManager.d.ts +61 -0
  257. package/dist/multistream/sendSlotManager.js +236 -0
  258. package/dist/multistream/sendSlotManager.js.map +1 -0
  259. package/dist/networkQualityMonitor/index.js +5 -4
  260. package/dist/networkQualityMonitor/index.js.map +1 -1
  261. package/dist/personal-meeting-room/index.js +2 -3
  262. package/dist/personal-meeting-room/index.js.map +1 -1
  263. package/dist/personal-meeting-room/request.js +2 -3
  264. package/dist/personal-meeting-room/request.js.map +1 -1
  265. package/dist/personal-meeting-room/util.js +1 -2
  266. package/dist/personal-meeting-room/util.js.map +1 -1
  267. package/dist/reachability/clusterReachability.d.ts +109 -0
  268. package/dist/reachability/clusterReachability.js +357 -0
  269. package/dist/reachability/clusterReachability.js.map +1 -0
  270. package/dist/reachability/index.d.ts +61 -95
  271. package/dist/reachability/index.js +304 -392
  272. package/dist/reachability/index.js.map +1 -1
  273. package/dist/reachability/request.d.ts +7 -3
  274. package/dist/reachability/request.js +18 -10
  275. package/dist/reachability/request.js.map +1 -1
  276. package/dist/reachability/util.d.ts +8 -0
  277. package/dist/reachability/util.js +29 -0
  278. package/dist/reachability/util.js.map +1 -0
  279. package/dist/reactions/constants.d.ts +3 -0
  280. package/dist/reactions/constants.js +12 -0
  281. package/dist/reactions/constants.js.map +1 -0
  282. package/dist/reactions/reactions.d.ts +2 -2
  283. package/dist/reactions/reactions.js +4 -6
  284. package/dist/reactions/reactions.js.map +1 -1
  285. package/dist/reactions/reactions.type.d.ts +23 -3
  286. package/dist/reactions/reactions.type.js +21 -23
  287. package/dist/reactions/reactions.type.js.map +1 -1
  288. package/dist/reconnection-manager/index.d.ts +32 -8
  289. package/dist/reconnection-manager/index.js +285 -232
  290. package/dist/reconnection-manager/index.js.map +1 -1
  291. package/dist/recording-controller/enums.js +4 -5
  292. package/dist/recording-controller/enums.js.map +1 -1
  293. package/dist/recording-controller/index.d.ts +15 -1
  294. package/dist/recording-controller/index.js +57 -46
  295. package/dist/recording-controller/index.js.map +1 -1
  296. package/dist/recording-controller/util.d.ts +5 -4
  297. package/dist/recording-controller/util.js +10 -10
  298. package/dist/recording-controller/util.js.map +1 -1
  299. package/dist/roap/index.d.ts +9 -47
  300. package/dist/roap/index.js +100 -238
  301. package/dist/roap/index.js.map +1 -1
  302. package/dist/roap/request.d.ts +18 -12
  303. package/dist/roap/request.js +126 -180
  304. package/dist/roap/request.js.map +1 -1
  305. package/dist/roap/turnDiscovery.d.ts +27 -16
  306. package/dist/roap/turnDiscovery.js +115 -105
  307. package/dist/roap/turnDiscovery.js.map +1 -1
  308. package/dist/rtcMetrics/constants.d.ts +4 -0
  309. package/dist/rtcMetrics/constants.js +11 -0
  310. package/dist/rtcMetrics/constants.js.map +1 -0
  311. package/dist/rtcMetrics/index.d.ts +54 -0
  312. package/dist/rtcMetrics/index.js +140 -0
  313. package/dist/rtcMetrics/index.js.map +1 -0
  314. package/dist/statsAnalyzer/global.d.ts +1 -83
  315. package/dist/statsAnalyzer/global.js +2 -85
  316. package/dist/statsAnalyzer/global.js.map +1 -1
  317. package/dist/statsAnalyzer/index.d.ts +50 -30
  318. package/dist/statsAnalyzer/index.js +436 -511
  319. package/dist/statsAnalyzer/index.js.map +1 -1
  320. package/dist/statsAnalyzer/mqaUtil.d.ts +8 -6
  321. package/dist/statsAnalyzer/mqaUtil.js +130 -90
  322. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  323. package/dist/transcription/index.js +1 -2
  324. package/dist/transcription/index.js.map +1 -1
  325. package/dist/webinar/collection.d.ts +16 -0
  326. package/dist/webinar/collection.js +43 -0
  327. package/dist/webinar/collection.js.map +1 -0
  328. package/dist/webinar/index.d.ts +5 -0
  329. package/dist/webinar/index.js +68 -0
  330. package/dist/webinar/index.js.map +1 -0
  331. package/package.json +39 -26
  332. package/src/annotation/annotation.types.ts +50 -0
  333. package/src/annotation/constants.ts +36 -0
  334. package/src/annotation/index.ts +328 -0
  335. package/src/breakouts/README.md +220 -0
  336. package/src/breakouts/breakout.ts +188 -0
  337. package/src/breakouts/collection.ts +19 -0
  338. package/src/breakouts/edit-lock-error.ts +25 -0
  339. package/src/breakouts/events.ts +56 -0
  340. package/src/breakouts/index.ts +925 -0
  341. package/src/breakouts/request.ts +55 -0
  342. package/src/breakouts/utils.ts +57 -0
  343. package/src/common/errors/no-meeting-info.ts +24 -0
  344. package/src/common/errors/webex-errors.ts +36 -12
  345. package/src/common/logs/logger-proxy.ts +1 -1
  346. package/src/common/logs/request.ts +5 -1
  347. package/src/common/queue.ts +22 -8
  348. package/src/config.ts +6 -7
  349. package/src/constants.ts +265 -100
  350. package/src/controls-options-manager/enums.ts +12 -0
  351. package/src/controls-options-manager/index.ts +116 -21
  352. package/src/controls-options-manager/types.ts +59 -0
  353. package/src/controls-options-manager/util.ts +294 -14
  354. package/src/index.ts +44 -0
  355. package/src/interceptors/index.ts +3 -0
  356. package/src/interceptors/locusRetry.ts +67 -0
  357. package/src/interpretation/README.md +60 -0
  358. package/src/interpretation/collection.ts +19 -0
  359. package/src/interpretation/index.ts +332 -0
  360. package/src/interpretation/siLanguage.ts +18 -0
  361. package/src/locus-info/controlsUtils.ts +110 -0
  362. package/src/locus-info/index.ts +450 -61
  363. package/src/locus-info/infoUtils.ts +14 -2
  364. package/src/locus-info/mediaSharesUtils.ts +64 -0
  365. package/src/locus-info/parser.ts +258 -47
  366. package/src/locus-info/selfUtils.ts +85 -2
  367. package/src/media/index.ts +153 -370
  368. package/src/media/properties.ts +106 -136
  369. package/src/media/util.ts +0 -21
  370. package/src/mediaQualityMetrics/config.ts +244 -377
  371. package/src/meeting/in-meeting-actions.ts +176 -0
  372. package/src/meeting/index.ts +4306 -2581
  373. package/src/meeting/locusMediaRequest.ts +313 -0
  374. package/src/meeting/muteState.ts +224 -138
  375. package/src/meeting/request.ts +214 -127
  376. package/src/meeting/request.type.ts +13 -0
  377. package/src/meeting/util.ts +687 -423
  378. package/src/meeting/voicea-meeting.ts +161 -0
  379. package/src/meeting-info/index.ts +81 -8
  380. package/src/meeting-info/meeting-info-v2.ts +163 -13
  381. package/src/meeting-info/util.ts +1 -1
  382. package/src/meeting-info/utilv2.ts +28 -28
  383. package/src/meetings/collection.ts +33 -0
  384. package/src/meetings/index.ts +529 -127
  385. package/src/meetings/meetings.types.ts +12 -0
  386. package/src/meetings/request.ts +2 -0
  387. package/src/meetings/util.ts +116 -5
  388. package/src/member/index.ts +43 -1
  389. package/src/member/types.ts +38 -0
  390. package/src/member/util.ts +125 -28
  391. package/src/members/collection.ts +8 -0
  392. package/src/members/index.ts +187 -52
  393. package/src/members/request.ts +87 -27
  394. package/src/members/util.ts +332 -291
  395. package/src/metrics/constants.ts +15 -6
  396. package/src/metrics/index.ts +1 -471
  397. package/src/multistream/mediaRequestManager.ts +440 -0
  398. package/src/multistream/receiveSlot.ts +184 -0
  399. package/src/multistream/receiveSlotManager.ts +166 -0
  400. package/src/multistream/remoteMedia.ts +254 -0
  401. package/src/multistream/remoteMediaGroup.ts +284 -0
  402. package/src/multistream/remoteMediaManager.ts +1145 -0
  403. package/src/multistream/sendSlotManager.ts +170 -0
  404. package/src/networkQualityMonitor/index.ts +6 -6
  405. package/src/reachability/clusterReachability.ts +320 -0
  406. package/src/reachability/index.ts +246 -347
  407. package/src/reachability/request.ts +17 -8
  408. package/src/reachability/util.ts +24 -0
  409. package/src/reactions/constants.ts +4 -0
  410. package/src/reactions/reactions.ts +4 -4
  411. package/src/reactions/reactions.type.ts +30 -4
  412. package/src/reconnection-manager/index.ts +168 -156
  413. package/src/recording-controller/index.ts +20 -3
  414. package/src/recording-controller/util.ts +26 -9
  415. package/src/roap/index.ts +96 -241
  416. package/src/roap/request.ts +74 -148
  417. package/src/roap/turnDiscovery.ts +62 -56
  418. package/src/rtcMetrics/constants.ts +3 -0
  419. package/src/rtcMetrics/index.ts +124 -0
  420. package/src/statsAnalyzer/global.ts +1 -84
  421. package/src/statsAnalyzer/index.ts +479 -645
  422. package/src/statsAnalyzer/mqaUtil.ts +128 -126
  423. package/src/webinar/collection.ts +31 -0
  424. package/src/webinar/index.ts +62 -0
  425. package/test/integration/spec/converged-space-meetings.js +233 -0
  426. package/test/integration/spec/journey.js +320 -264
  427. package/test/integration/spec/space-meeting.js +77 -4
  428. package/test/unit/spec/annotation/index.ts +418 -0
  429. package/test/unit/spec/breakouts/breakout.ts +237 -0
  430. package/test/unit/spec/breakouts/collection.ts +15 -0
  431. package/test/unit/spec/breakouts/edit-lock-error.ts +30 -0
  432. package/test/unit/spec/breakouts/events.ts +89 -0
  433. package/test/unit/spec/breakouts/index.ts +1790 -0
  434. package/test/unit/spec/breakouts/request.ts +104 -0
  435. package/test/unit/spec/breakouts/utils.js +72 -0
  436. package/test/unit/spec/common/queue.js +31 -2
  437. package/test/unit/spec/controls-options-manager/index.js +163 -0
  438. package/test/unit/spec/controls-options-manager/util.js +576 -60
  439. package/test/unit/spec/fixture/locus.js +1 -0
  440. package/test/unit/spec/interceptors/locusRetry.ts +131 -0
  441. package/test/unit/spec/interpretation/collection.ts +15 -0
  442. package/test/unit/spec/interpretation/index.ts +589 -0
  443. package/test/unit/spec/interpretation/siLanguage.ts +28 -0
  444. package/test/unit/spec/locus-info/controlsUtils.js +323 -30
  445. package/test/unit/spec/locus-info/index.js +1438 -16
  446. package/test/unit/spec/locus-info/infoUtils.js +54 -16
  447. package/test/unit/spec/locus-info/lib/SeqCmp.json +16 -0
  448. package/test/unit/spec/locus-info/lib/selfConstant.js +48 -0
  449. package/test/unit/spec/locus-info/mediaSharesUtils.ts +32 -0
  450. package/test/unit/spec/locus-info/parser.js +116 -35
  451. package/test/unit/spec/locus-info/selfUtils.js +275 -0
  452. package/test/unit/spec/media/index.ts +290 -0
  453. package/test/unit/spec/media/properties.ts +75 -84
  454. package/test/unit/spec/meeting/in-meeting-actions.ts +86 -0
  455. package/test/unit/spec/meeting/index.js +8886 -2815
  456. package/test/unit/spec/meeting/locusMediaRequest.ts +442 -0
  457. package/test/unit/spec/meeting/muteState.js +409 -213
  458. package/test/unit/spec/meeting/request.js +523 -43
  459. package/test/unit/spec/meeting/utils.js +834 -24
  460. package/test/unit/spec/meeting-info/index.js +300 -0
  461. package/test/unit/spec/meeting-info/meetinginfov2.js +527 -5
  462. package/test/unit/spec/meeting-info/utilv2.js +21 -0
  463. package/test/unit/spec/meetings/collection.js +26 -0
  464. package/test/unit/spec/meetings/index.js +1446 -217
  465. package/test/unit/spec/meetings/utils.js +202 -2
  466. package/test/unit/spec/member/index.js +32 -9
  467. package/test/unit/spec/member/util.js +499 -61
  468. package/test/unit/spec/members/index.js +394 -5
  469. package/test/unit/spec/members/request.js +206 -27
  470. package/test/unit/spec/members/utils.js +173 -38
  471. package/test/unit/spec/metrics/index.js +1 -50
  472. package/test/unit/spec/multistream/mediaRequestManager.ts +1418 -0
  473. package/test/unit/spec/multistream/receiveSlot.ts +163 -0
  474. package/test/unit/spec/multistream/receiveSlotManager.ts +203 -0
  475. package/test/unit/spec/multistream/remoteMedia.ts +255 -0
  476. package/test/unit/spec/multistream/remoteMediaGroup.ts +662 -0
  477. package/test/unit/spec/multistream/remoteMediaManager.ts +1924 -0
  478. package/test/unit/spec/multistream/sendSlotManager.ts +242 -0
  479. package/test/unit/spec/networkQualityMonitor/index.js +4 -4
  480. package/test/unit/spec/reachability/clusterReachability.ts +279 -0
  481. package/test/unit/spec/reachability/index.ts +532 -24
  482. package/test/unit/spec/reachability/request.js +68 -0
  483. package/test/unit/spec/reachability/util.ts +40 -0
  484. package/test/unit/spec/reconnection-manager/index.js +163 -24
  485. package/test/unit/spec/recording-controller/index.js +293 -218
  486. package/test/unit/spec/recording-controller/util.js +223 -96
  487. package/test/unit/spec/roap/index.ts +187 -77
  488. package/test/unit/spec/roap/request.ts +255 -0
  489. package/test/unit/spec/roap/turnDiscovery.ts +86 -48
  490. package/test/unit/spec/rtcMetrics/index.ts +93 -0
  491. package/test/unit/spec/stats-analyzer/index.js +644 -165
  492. package/test/unit/spec/webinar/collection.ts +13 -0
  493. package/test/unit/spec/webinar/index.ts +60 -0
  494. package/test/utils/constants.js +9 -0
  495. package/test/utils/integrationTestUtils.js +46 -0
  496. package/test/utils/testUtils.js +0 -45
  497. package/test/utils/webex-config.js +4 -0
  498. package/test/utils/webex-test-users.js +7 -3
  499. package/dist/common/errors/reclaim-host-role-error.js.map +0 -1
  500. package/dist/meeting/effectsState.d.ts +0 -42
  501. package/dist/meeting/effectsState.js +0 -260
  502. package/dist/meeting/effectsState.js.map +0 -1
  503. package/dist/metrics/config.d.ts +0 -169
  504. package/dist/metrics/config.js +0 -289
  505. package/dist/metrics/config.js.map +0 -1
  506. package/dist/peer-connection-manager/index.d.ts +0 -6
  507. package/dist/peer-connection-manager/index.js +0 -671
  508. package/dist/peer-connection-manager/index.js.map +0 -1
  509. package/dist/peer-connection-manager/util.d.ts +0 -6
  510. package/dist/peer-connection-manager/util.js +0 -110
  511. package/dist/peer-connection-manager/util.js.map +0 -1
  512. package/dist/roap/collection.d.ts +0 -10
  513. package/dist/roap/collection.js +0 -63
  514. package/dist/roap/collection.js.map +0 -1
  515. package/dist/roap/handler.d.ts +0 -47
  516. package/dist/roap/handler.js +0 -279
  517. package/dist/roap/handler.js.map +0 -1
  518. package/dist/roap/state.d.ts +0 -9
  519. package/dist/roap/state.js +0 -127
  520. package/dist/roap/state.js.map +0 -1
  521. package/dist/roap/util.d.ts +0 -2
  522. package/dist/roap/util.js +0 -76
  523. package/dist/roap/util.js.map +0 -1
  524. package/src/index.js +0 -15
  525. package/src/meeting/effectsState.ts +0 -209
  526. package/src/metrics/config.ts +0 -485
  527. package/src/peer-connection-manager/index.ts +0 -847
  528. package/src/peer-connection-manager/util.ts +0 -119
  529. package/src/roap/collection.ts +0 -62
  530. package/src/roap/handler.ts +0 -294
  531. package/src/roap/state.ts +0 -156
  532. package/src/roap/util.ts +0 -100
  533. package/test/unit/spec/meeting/effectsState.js +0 -281
  534. package/test/unit/spec/peerconnection-manager/index.js +0 -218
  535. package/test/unit/spec/peerconnection-manager/utils.js +0 -49
  536. package/test/unit/spec/peerconnection-manager/utils.test-fixtures.ts +0 -388
  537. package/test/unit/spec/roap/util.js +0 -30
  538. /package/dist/common/errors/{reclaim-host-role-error.d.ts → reclaim-host-role-errors.d.ts} +0 -0
  539. /package/src/common/errors/{reclaim-host-role-error.ts → reclaim-host-role-errors.ts} +0 -0
@@ -0,0 +1,200 @@
1
+ "use strict";
2
+
3
+ var _Reflect$construct = require("@babel/runtime-corejs2/core-js/reflect/construct");
4
+ var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
5
+ var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
6
+ _Object$defineProperty(exports, "__esModule", {
7
+ value: true
8
+ });
9
+ exports.ReceiveSlotEvents = exports.ReceiveSlot = void 0;
10
+ var _stringify = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/json/stringify"));
11
+ var _weakMap = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/weak-map"));
12
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
13
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));
14
+ var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/assertThisInitialized"));
15
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/inherits"));
16
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/possibleConstructorReturn"));
17
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/getPrototypeOf"));
18
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
19
+ var _classPrivateFieldGet2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classPrivateFieldGet"));
20
+ var _classPrivateFieldSet2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classPrivateFieldSet"));
21
+ var _internalMediaCore = require("@webex/internal-media-core");
22
+ var _loggerProxy = _interopRequireDefault(require("../common/logs/logger-proxy"));
23
+ var _eventsScope = _interopRequireDefault(require("../common/events/events-scope"));
24
+ 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); }; }
25
+ 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; } }
26
+ function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
27
+ function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } } /* eslint-disable valid-jsdoc */
28
+ var ReceiveSlotEvents = exports.ReceiveSlotEvents = {
29
+ SourceUpdate: 'sourceUpdate',
30
+ MaxFsUpdate: 'maxFsUpdate'
31
+ };
32
+ var receiveSlotCounter = 0;
33
+ var _memberId = /*#__PURE__*/new _weakMap.default();
34
+ var _csi = /*#__PURE__*/new _weakMap.default();
35
+ var _sourceState = /*#__PURE__*/new _weakMap.default();
36
+ /**
37
+ * Class representing a receive slot. A single receive slot is able to receive a single track
38
+ * for example some participant's main video or audio
39
+ */
40
+ var ReceiveSlot = exports.ReceiveSlot = /*#__PURE__*/function (_EventsScope) {
41
+ (0, _inherits2.default)(ReceiveSlot, _EventsScope);
42
+ var _super = _createSuper(ReceiveSlot);
43
+ /**
44
+ * constructor - don't use it directly, you should always use meeting.receiveSlotManager.allocateSlot()
45
+ * to create any receive slots
46
+ *
47
+ * @param {MediaType} mediaType
48
+ * @param {ReceiveSlot} mcReceiveSlot
49
+ * @param {FindMemberIdCallback} findMemberIdCallback callback for finding memberId for given CSI
50
+ */
51
+ function ReceiveSlot(mediaType, mcReceiveSlot, findMemberIdCallback) {
52
+ var _this;
53
+ (0, _classCallCheck2.default)(this, ReceiveSlot);
54
+ _this = _super.call(this);
55
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "mcReceiveSlot", void 0);
56
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "findMemberIdCallback", void 0);
57
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "id", void 0);
58
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "mediaType", void 0);
59
+ _classPrivateFieldInitSpec((0, _assertThisInitialized2.default)(_this), _memberId, {
60
+ writable: true,
61
+ value: void 0
62
+ });
63
+ _classPrivateFieldInitSpec((0, _assertThisInitialized2.default)(_this), _csi, {
64
+ writable: true,
65
+ value: void 0
66
+ });
67
+ _classPrivateFieldInitSpec((0, _assertThisInitialized2.default)(_this), _sourceState, {
68
+ writable: true,
69
+ value: void 0
70
+ });
71
+ receiveSlotCounter += 1;
72
+ _this.findMemberIdCallback = findMemberIdCallback;
73
+ _this.mediaType = mediaType;
74
+ _this.mcReceiveSlot = mcReceiveSlot;
75
+ (0, _classPrivateFieldSet2.default)((0, _assertThisInitialized2.default)(_this), _sourceState, 'no source');
76
+ _this.id = "r".concat(receiveSlotCounter);
77
+ _this.setupEventListeners();
78
+ return _this;
79
+ }
80
+
81
+ /**
82
+ * Getter for memberId
83
+ */
84
+ (0, _createClass2.default)(ReceiveSlot, [{
85
+ key: "memberId",
86
+ get: function get() {
87
+ return (0, _classPrivateFieldGet2.default)(this, _memberId);
88
+ }
89
+
90
+ /**
91
+ * Getter for csi
92
+ */
93
+ }, {
94
+ key: "csi",
95
+ get: function get() {
96
+ return (0, _classPrivateFieldGet2.default)(this, _csi);
97
+ }
98
+
99
+ /**
100
+ * Set the max frame size for this slot
101
+ * @param newFs frame size
102
+ */
103
+ }, {
104
+ key: "setMaxFs",
105
+ value: function setMaxFs(newFs) {
106
+ // emit event for media request manager to listen to
107
+
108
+ this.emit({
109
+ file: 'meeting/receiveSlot',
110
+ function: 'findMemberId'
111
+ }, ReceiveSlotEvents.MaxFsUpdate, {
112
+ maxFs: newFs
113
+ });
114
+ }
115
+
116
+ /**
117
+ * Getter for sourceState
118
+ */
119
+ }, {
120
+ key: "sourceState",
121
+ get: function get() {
122
+ return (0, _classPrivateFieldGet2.default)(this, _sourceState);
123
+ }
124
+
125
+ /**
126
+ * registers event handlers with the underlying ReceiveSlot
127
+ */
128
+ }, {
129
+ key: "setupEventListeners",
130
+ value: function setupEventListeners() {
131
+ var _this2 = this;
132
+ var scope = {
133
+ file: 'meeting/receiveSlot',
134
+ function: 'setupEventListeners'
135
+ };
136
+ this.mcReceiveSlot.on(_internalMediaCore.ReceiveSlotEvents.SourceUpdate, function (state, csi) {
137
+ _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));
138
+ (0, _classPrivateFieldSet2.default)(_this2, _memberId, csi ? _this2.findMemberIdCallback(csi) : undefined);
139
+ (0, _classPrivateFieldSet2.default)(_this2, _csi, csi);
140
+ (0, _classPrivateFieldSet2.default)(_this2, _sourceState, state);
141
+ _this2.emit(scope, ReceiveSlotEvents.SourceUpdate, {
142
+ state: (0, _classPrivateFieldGet2.default)(_this2, _sourceState),
143
+ csi: (0, _classPrivateFieldGet2.default)(_this2, _csi),
144
+ memberId: (0, _classPrivateFieldGet2.default)(_this2, _memberId)
145
+ });
146
+ });
147
+ }
148
+
149
+ /** Tries to find the member id for this receive slot if it hasn't got one */
150
+ }, {
151
+ key: "findMemberId",
152
+ value: function findMemberId() {
153
+ if ((0, _classPrivateFieldGet2.default)(this, _memberId) === undefined && (0, _classPrivateFieldGet2.default)(this, _csi)) {
154
+ (0, _classPrivateFieldSet2.default)(this, _memberId, this.findMemberIdCallback((0, _classPrivateFieldGet2.default)(this, _csi)));
155
+ if ((0, _classPrivateFieldGet2.default)(this, _memberId)) {
156
+ // if we found the memberId, simulate source update so that the client app knows that something's changed
157
+ this.emit({
158
+ file: 'meeting/receiveSlot',
159
+ function: 'findMemberId'
160
+ }, ReceiveSlotEvents.SourceUpdate, {
161
+ state: (0, _classPrivateFieldGet2.default)(this, _sourceState),
162
+ csi: (0, _classPrivateFieldGet2.default)(this, _csi),
163
+ memberId: (0, _classPrivateFieldGet2.default)(this, _memberId)
164
+ });
165
+ }
166
+ }
167
+ }
168
+
169
+ /**
170
+ * @returns {string} a log message used to identify the receive slot
171
+ */
172
+ }, {
173
+ key: "logString",
174
+ get: function get() {
175
+ return "ReceiveSlot - ".concat(this.id, ": ").concat((0, _stringify.default)(this.mcReceiveSlot.id));
176
+ }
177
+
178
+ /**
179
+ * The MediaStream object associated with this slot.
180
+ *
181
+ * @returns {MediaStream} The MediaStreamTrack.
182
+ */
183
+ }, {
184
+ key: "stream",
185
+ get: function get() {
186
+ return this.mcReceiveSlot.stream;
187
+ }
188
+
189
+ /**
190
+ * The underlying WCME receive slot
191
+ */
192
+ }, {
193
+ key: "wcmeReceiveSlot",
194
+ get: function get() {
195
+ return this.mcReceiveSlot;
196
+ }
197
+ }]);
198
+ return ReceiveSlot;
199
+ }(_eventsScope.default);
200
+ //# sourceMappingURL=receiveSlot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_internalMediaCore","require","_loggerProxy","_interopRequireDefault","_eventsScope","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","default","result","NewTarget","constructor","_Reflect$construct","arguments","apply","_possibleConstructorReturn2","Reflect","sham","Proxy","Boolean","prototype","valueOf","call","e","_classPrivateFieldInitSpec","obj","privateMap","value","_checkPrivateRedeclaration","set","privateCollection","has","TypeError","ReceiveSlotEvents","exports","SourceUpdate","MaxFsUpdate","receiveSlotCounter","_memberId","_weakMap","_csi","_sourceState","ReceiveSlot","_EventsScope","_inherits2","_super","mediaType","mcReceiveSlot","findMemberIdCallback","_this","_classCallCheck2","_defineProperty2","_assertThisInitialized2","writable","_classPrivateFieldSet2","id","concat","setupEventListeners","_createClass2","key","get","_classPrivateFieldGet2","setMaxFs","newFs","emit","file","function","maxFs","_this2","scope","on","WcmeReceiveSlotEvents","state","csi","LoggerProxy","logger","log","undefined","memberId","findMemberId","_stringify","stream","EventsScope"],"sources":["receiveSlot.ts"],"sourcesContent":["/* eslint-disable valid-jsdoc */\nimport {\n MediaType,\n ReceiveSlot as WcmeReceiveSlot,\n ReceiveSlotEvents as WcmeReceiveSlotEvents,\n StreamState,\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 MaxFsUpdate: 'maxFsUpdate',\n};\n\nexport type {StreamState} 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: StreamState;\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 * Set the max frame size for this slot\n * @param newFs frame size\n */\n public setMaxFs(newFs) {\n // emit event for media request manager to listen to\n\n this.emit(\n {\n file: 'meeting/receiveSlot',\n function: 'findMemberId',\n },\n ReceiveSlotEvents.MaxFsUpdate,\n {\n maxFs: newFs,\n }\n );\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 private setupEventListeners() {\n const scope = {\n file: 'meeting/receiveSlot',\n function: 'setupEventListeners',\n };\n\n this.mcReceiveSlot.on(\n WcmeReceiveSlotEvents.SourceUpdate,\n (state: StreamState, 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 /** Tries to find the member id for this receive slot if it hasn't got one */\n public findMemberId() {\n if (this.#memberId === undefined && this.#csi) {\n this.#memberId = this.findMemberIdCallback(this.#csi);\n\n if (this.#memberId) {\n // if we found the memberId, simulate source update so that the client app knows that something's changed\n this.emit(\n {\n file: 'meeting/receiveSlot',\n function: 'findMemberId',\n },\n ReceiveSlotEvents.SourceUpdate,\n {\n state: this.#sourceState,\n csi: this.#csi,\n memberId: this.#memberId,\n }\n );\n }\n }\n }\n\n /**\n * @returns {string} a log message used to identify the receive slot\n */\n public get logString() {\n return `ReceiveSlot - ${this.id}: ${JSON.stringify(this.mcReceiveSlot.id)}`;\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"],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ import { MediaType, ReceiveSlot as WcmeReceiveSlot } from '@webex/internal-media-core';
2
+ import { FindMemberIdCallback, ReceiveSlot } from './receiveSlot';
3
+ export type CreateSlotCallback = (mediaType: MediaType) => Promise<WcmeReceiveSlot>;
4
+ export type { CSI, FindMemberIdCallback } from './receiveSlot';
5
+ /**
6
+ * Manages all receive slots used by a meeting. WMCE receive slots cannot be ever deleted,
7
+ * so this manager has a pool in order to re-use the slots that were released earlier.
8
+ */
9
+ export declare class ReceiveSlotManager {
10
+ private allocatedSlots;
11
+ private freeSlots;
12
+ private createSlotCallback;
13
+ private findMemberIdByCsiCallback;
14
+ /**
15
+ * Constructor
16
+ * @param {Meeting} meeting
17
+ */
18
+ constructor(createSlotCallback: CreateSlotCallback, findMemberIdByCsiCallback: FindMemberIdCallback);
19
+ /**
20
+ * Creates a new receive slot or returns one from the existing pool of free slots
21
+ *
22
+ * @param {MediaType} mediaType
23
+ * @returns {Promise<ReceiveSlot>}
24
+ */
25
+ allocateSlot(mediaType: MediaType): Promise<ReceiveSlot>;
26
+ /**
27
+ * Releases the slot back to the pool so it can be re-used by others in the future
28
+ * @param {ReceiveSlot} slot
29
+ */
30
+ releaseSlot(slot: ReceiveSlot): void;
31
+ /**
32
+ * Resets the slot manager - this method should be called when the media connection is torn down
33
+ */
34
+ reset(): void;
35
+ /**
36
+ * Returns statistics about the managed slots
37
+ *
38
+ * @returns {Object}
39
+ */
40
+ getStats(): {
41
+ numAllocatedSlots: {};
42
+ numFreeSlots: {};
43
+ };
44
+ /**
45
+ * Tries to find the member id on all allocated receive slots
46
+ * This function should be called when new members are added to the meeting.
47
+ */
48
+ updateMemberIds(): void;
49
+ /**
50
+ * Find a receive slot by a ssrc.
51
+ *
52
+ * @param ssrc - The ssrc of the receive slot to find.
53
+ * @returns - The receive slot with this ssrc, undefined if not found.
54
+ */
55
+ findReceiveSlotBySsrc(ssrc: number): ReceiveSlot | undefined;
56
+ }
@@ -0,0 +1,174 @@
1
+ "use strict";
2
+
3
+ var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
4
+ var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
5
+ _Object$defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.ReceiveSlotManager = void 0;
9
+ var _keys = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/keys"));
10
+ var _values = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/values"));
11
+ var _regenerator = _interopRequireDefault(require("@babel/runtime-corejs2/regenerator"));
12
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/asyncToGenerator"));
13
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
14
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));
15
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
16
+ var _internalMediaCore = require("@webex/internal-media-core");
17
+ var _loggerProxy = _interopRequireDefault(require("../common/logs/logger-proxy"));
18
+ var _receiveSlot = require("./receiveSlot");
19
+ /* eslint-disable valid-jsdoc */
20
+ /* eslint-disable import/prefer-default-export */
21
+ /**
22
+ * Manages all receive slots used by a meeting. WMCE receive slots cannot be ever deleted,
23
+ * so this manager has a pool in order to re-use the slots that were released earlier.
24
+ */
25
+ var ReceiveSlotManager = exports.ReceiveSlotManager = /*#__PURE__*/function () {
26
+ /**
27
+ * Constructor
28
+ * @param {Meeting} meeting
29
+ */
30
+ function ReceiveSlotManager(createSlotCallback, findMemberIdByCsiCallback) {
31
+ (0, _classCallCheck2.default)(this, ReceiveSlotManager);
32
+ (0, _defineProperty2.default)(this, "allocatedSlots", void 0);
33
+ (0, _defineProperty2.default)(this, "freeSlots", void 0);
34
+ (0, _defineProperty2.default)(this, "createSlotCallback", void 0);
35
+ (0, _defineProperty2.default)(this, "findMemberIdByCsiCallback", void 0);
36
+ this.allocatedSlots = (0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)({}, _internalMediaCore.MediaType.AudioMain, []), _internalMediaCore.MediaType.VideoMain, []), _internalMediaCore.MediaType.AudioSlides, []), _internalMediaCore.MediaType.VideoSlides, []);
37
+ this.freeSlots = (0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)({}, _internalMediaCore.MediaType.AudioMain, []), _internalMediaCore.MediaType.VideoMain, []), _internalMediaCore.MediaType.AudioSlides, []), _internalMediaCore.MediaType.VideoSlides, []);
38
+ this.createSlotCallback = createSlotCallback;
39
+ this.findMemberIdByCsiCallback = findMemberIdByCsiCallback;
40
+ }
41
+
42
+ /**
43
+ * Creates a new receive slot or returns one from the existing pool of free slots
44
+ *
45
+ * @param {MediaType} mediaType
46
+ * @returns {Promise<ReceiveSlot>}
47
+ */
48
+ (0, _createClass2.default)(ReceiveSlotManager, [{
49
+ key: "allocateSlot",
50
+ value: (function () {
51
+ var _allocateSlot = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(mediaType) {
52
+ var availableSlot, wcmeReceiveSlot, receiveSlot;
53
+ return _regenerator.default.wrap(function _callee$(_context) {
54
+ while (1) switch (_context.prev = _context.next) {
55
+ case 0:
56
+ // try to use one of the free ones
57
+ availableSlot = this.freeSlots[mediaType].pop();
58
+ if (!availableSlot) {
59
+ _context.next = 5;
60
+ break;
61
+ }
62
+ this.allocatedSlots[mediaType].push(availableSlot);
63
+ _loggerProxy.default.logger.log("".concat(mediaType, ": receive slot re-used: ").concat(availableSlot.id));
64
+ return _context.abrupt("return", availableSlot);
65
+ case 5:
66
+ _context.next = 7;
67
+ return this.createSlotCallback(mediaType);
68
+ case 7:
69
+ wcmeReceiveSlot = _context.sent;
70
+ receiveSlot = new _receiveSlot.ReceiveSlot(mediaType, wcmeReceiveSlot, this.findMemberIdByCsiCallback);
71
+ this.allocatedSlots[mediaType].push(receiveSlot);
72
+ _loggerProxy.default.logger.log("".concat(mediaType, ": new receive slot allocated: ").concat(receiveSlot.id));
73
+ return _context.abrupt("return", receiveSlot);
74
+ case 12:
75
+ case "end":
76
+ return _context.stop();
77
+ }
78
+ }, _callee, this);
79
+ }));
80
+ function allocateSlot(_x) {
81
+ return _allocateSlot.apply(this, arguments);
82
+ }
83
+ return allocateSlot;
84
+ }()
85
+ /**
86
+ * Releases the slot back to the pool so it can be re-used by others in the future
87
+ * @param {ReceiveSlot} slot
88
+ */
89
+ )
90
+ }, {
91
+ key: "releaseSlot",
92
+ value: function releaseSlot(slot) {
93
+ var idx = this.allocatedSlots[slot.mediaType].findIndex(function (allocatedSlot) {
94
+ return allocatedSlot === slot;
95
+ });
96
+ if (idx >= 0) {
97
+ this.allocatedSlots[slot.mediaType].splice(idx, 1);
98
+ this.freeSlots[slot.mediaType].push(slot);
99
+ _loggerProxy.default.logger.log("".concat(slot.mediaType, ": receive slot released: ").concat(slot.id));
100
+ } else {
101
+ _loggerProxy.default.logger.warn("ReceiveSlotManager#releaseSlot --> trying to release a ".concat(slot.mediaType, "} slot that is not managed by this ReceiveSlotManager"));
102
+ }
103
+ }
104
+
105
+ /**
106
+ * Resets the slot manager - this method should be called when the media connection is torn down
107
+ */
108
+ }, {
109
+ key: "reset",
110
+ value: function reset() {
111
+ this.allocatedSlots = (0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)({}, _internalMediaCore.MediaType.AudioMain, []), _internalMediaCore.MediaType.VideoMain, []), _internalMediaCore.MediaType.AudioSlides, []), _internalMediaCore.MediaType.VideoSlides, []);
112
+ this.freeSlots = (0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)({}, _internalMediaCore.MediaType.AudioMain, []), _internalMediaCore.MediaType.VideoMain, []), _internalMediaCore.MediaType.AudioSlides, []), _internalMediaCore.MediaType.VideoSlides, []);
113
+ }
114
+
115
+ /**
116
+ * Returns statistics about the managed slots
117
+ *
118
+ * @returns {Object}
119
+ */
120
+ }, {
121
+ key: "getStats",
122
+ value: function getStats() {
123
+ var _this = this;
124
+ var numAllocatedSlots = {};
125
+ var numFreeSlots = {};
126
+ (0, _keys.default)(this.allocatedSlots).forEach(function (key) {
127
+ if (_this.allocatedSlots[key].length > 0) {
128
+ numAllocatedSlots[key] = _this.allocatedSlots[key].length;
129
+ }
130
+ });
131
+ (0, _keys.default)(this.freeSlots).forEach(function (key) {
132
+ if (_this.freeSlots[key].length > 0) {
133
+ numFreeSlots[key] = _this.freeSlots[key].length;
134
+ }
135
+ });
136
+ return {
137
+ numAllocatedSlots: numAllocatedSlots,
138
+ numFreeSlots: numFreeSlots
139
+ };
140
+ }
141
+
142
+ /**
143
+ * Tries to find the member id on all allocated receive slots
144
+ * This function should be called when new members are added to the meeting.
145
+ */
146
+ }, {
147
+ key: "updateMemberIds",
148
+ value: function updateMemberIds() {
149
+ var _this2 = this;
150
+ (0, _keys.default)(this.allocatedSlots).forEach(function (key) {
151
+ _this2.allocatedSlots[key].forEach(function (slot) {
152
+ slot.findMemberId();
153
+ });
154
+ });
155
+ }
156
+
157
+ /**
158
+ * Find a receive slot by a ssrc.
159
+ *
160
+ * @param ssrc - The ssrc of the receive slot to find.
161
+ * @returns - The receive slot with this ssrc, undefined if not found.
162
+ */
163
+ }, {
164
+ key: "findReceiveSlotBySsrc",
165
+ value: function findReceiveSlotBySsrc(ssrc) {
166
+ return (0, _values.default)(this.allocatedSlots).flat().find(function (r) {
167
+ var _r$wcmeReceiveSlot, _r$wcmeReceiveSlot$id;
168
+ return ssrc && ((_r$wcmeReceiveSlot = r.wcmeReceiveSlot) === null || _r$wcmeReceiveSlot === void 0 ? void 0 : (_r$wcmeReceiveSlot$id = _r$wcmeReceiveSlot.id) === null || _r$wcmeReceiveSlot$id === void 0 ? void 0 : _r$wcmeReceiveSlot$id.ssrc) === ssrc;
169
+ });
170
+ }
171
+ }]);
172
+ return ReceiveSlotManager;
173
+ }();
174
+ //# sourceMappingURL=receiveSlotManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_internalMediaCore","require","_loggerProxy","_interopRequireDefault","_receiveSlot","ReceiveSlotManager","exports","createSlotCallback","findMemberIdByCsiCallback","_classCallCheck2","default","_defineProperty2","allocatedSlots","MediaType","AudioMain","VideoMain","AudioSlides","VideoSlides","freeSlots","_createClass2","key","value","_allocateSlot","_asyncToGenerator2","_regenerator","mark","_callee","mediaType","availableSlot","wcmeReceiveSlot","receiveSlot","wrap","_callee$","_context","prev","next","pop","push","LoggerProxy","logger","log","concat","id","abrupt","sent","ReceiveSlot","stop","allocateSlot","_x","apply","arguments","releaseSlot","slot","idx","findIndex","allocatedSlot","splice","warn","reset","getStats","_this","numAllocatedSlots","numFreeSlots","_keys","forEach","length","updateMemberIds","_this2","findMemberId","findReceiveSlotBySsrc","ssrc","_values","flat","find","r","_r$wcmeReceiveSlot","_r$wcmeReceiveSlot$id"],"sources":["receiveSlotManager.ts"],"sourcesContent":["/* eslint-disable valid-jsdoc */\n/* eslint-disable import/prefer-default-export */\nimport {MediaType, ReceiveSlot as WcmeReceiveSlot} from '@webex/internal-media-core';\nimport LoggerProxy from '../common/logs/logger-proxy';\n\nimport {FindMemberIdCallback, ReceiveSlot} from './receiveSlot';\n\nexport type CreateSlotCallback = (mediaType: MediaType) => Promise<WcmeReceiveSlot>;\n\nexport type {CSI, FindMemberIdCallback} 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 createSlotCallback: CreateSlotCallback;\n\n private findMemberIdByCsiCallback: FindMemberIdCallback;\n\n /**\n * Constructor\n * @param {Meeting} meeting\n */\n constructor(\n createSlotCallback: CreateSlotCallback,\n findMemberIdByCsiCallback: FindMemberIdCallback\n ) {\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.createSlotCallback = createSlotCallback;\n this.findMemberIdByCsiCallback = findMemberIdByCsiCallback;\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 // 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(`${mediaType}: receive slot re-used: ${availableSlot.id}`);\n\n return availableSlot;\n }\n\n // we have to create a new one\n const wcmeReceiveSlot = await this.createSlotCallback(mediaType);\n\n const receiveSlot = new ReceiveSlot(mediaType, wcmeReceiveSlot, this.findMemberIdByCsiCallback);\n\n this.allocatedSlots[mediaType].push(receiveSlot);\n LoggerProxy.logger.log(`${mediaType}: 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(`${slot.mediaType}: receive slot released: ${slot.id}`);\n } else {\n LoggerProxy.logger.warn(\n `ReceiveSlotManager#releaseSlot --> trying to release a ${slot.mediaType}} 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 /**\n * Tries to find the member id on all allocated receive slots\n * This function should be called when new members are added to the meeting.\n */\n updateMemberIds() {\n Object.keys(this.allocatedSlots).forEach((key) => {\n this.allocatedSlots[key].forEach((slot: ReceiveSlot) => {\n slot.findMemberId();\n });\n });\n }\n\n /**\n * Find a receive slot by a ssrc.\n *\n * @param ssrc - The ssrc of the receive slot to find.\n * @returns - The receive slot with this ssrc, undefined if not found.\n */\n findReceiveSlotBySsrc(ssrc: number): ReceiveSlot | undefined {\n return Object.values(this.allocatedSlots)\n .flat()\n .find((r) => ssrc && r.wcmeReceiveSlot?.id?.ssrc === ssrc);\n }\n}\n"],"mappings":"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"}
@@ -0,0 +1,72 @@
1
+ import { MediaType, StreamState } from '@webex/internal-media-core';
2
+ import EventsScope from '../common/events/events-scope';
3
+ import { MediaRequestManager } from './mediaRequestManager';
4
+ import { ReceiveSlot } from './receiveSlot';
5
+ export declare const RemoteMediaEvents: {
6
+ SourceUpdate: string;
7
+ Stopped: string;
8
+ };
9
+ export type RemoteVideoResolution = 'thumbnail' | 'very small' | 'small' | 'medium' | 'large' | 'best';
10
+ /**
11
+ * Converts pane size into h264 maxFs
12
+ * @param {PaneSize} paneSize
13
+ * @returns {number}
14
+ */
15
+ export declare function getMaxFs(paneSize: RemoteVideoResolution): number;
16
+ type Options = {
17
+ resolution?: RemoteVideoResolution;
18
+ };
19
+ export type RemoteMediaId = string;
20
+ /**
21
+ * Class representing a remote audio/video stream.
22
+ *
23
+ * Internally it is associated with a specific receive slot
24
+ * and a media request for it.
25
+ */
26
+ export declare class RemoteMedia extends EventsScope {
27
+ private receiveSlot?;
28
+ private readonly mediaRequestManager;
29
+ private readonly options;
30
+ private mediaRequestId?;
31
+ readonly id: RemoteMediaId;
32
+ /**
33
+ * Constructs RemoteMedia instance
34
+ *
35
+ * @param receiveSlot
36
+ * @param mediaRequestManager
37
+ * @param options
38
+ */
39
+ constructor(receiveSlot: ReceiveSlot, mediaRequestManager: MediaRequestManager, options?: Options);
40
+ /**
41
+ * Supply the width and height of the video element
42
+ * to restrict the requested resolution to this size
43
+ * @param width width of the video element
44
+ * @param height height of the video element
45
+ */
46
+ setSizeHint(width: any, height: any): void;
47
+ /**
48
+ * registers event listeners on the receive slot and forwards all the events
49
+ */
50
+ private setupEventListeners;
51
+ /**
52
+ * Getter for mediaType
53
+ */
54
+ get mediaType(): MediaType;
55
+ /**
56
+ * Getter for memberId
57
+ */
58
+ get memberId(): string;
59
+ /**
60
+ * Getter for csi
61
+ */
62
+ get csi(): number;
63
+ /**
64
+ * Getter for source state
65
+ */
66
+ get sourceState(): StreamState;
67
+ /**
68
+ * Getter for remote media stream
69
+ */
70
+ get stream(): MediaStream;
71
+ }
72
+ export {};