@webex/plugin-meetings 3.0.0-beta.32 → 3.0.0-beta.321

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 (378) hide show
  1. package/README.md +46 -8
  2. package/dist/annotation/annotation.types.js +7 -0
  3. package/dist/annotation/annotation.types.js.map +1 -0
  4. package/dist/annotation/constants.js +49 -0
  5. package/dist/annotation/constants.js.map +1 -0
  6. package/dist/annotation/index.js +342 -0
  7. package/dist/annotation/index.js.map +1 -0
  8. package/dist/breakouts/breakout.js +94 -15
  9. package/dist/breakouts/breakout.js.map +1 -1
  10. package/dist/breakouts/edit-lock-error.js +52 -0
  11. package/dist/breakouts/edit-lock-error.js.map +1 -0
  12. package/dist/breakouts/events.js +45 -0
  13. package/dist/breakouts/events.js.map +1 -0
  14. package/dist/breakouts/index.js +709 -35
  15. package/dist/breakouts/index.js.map +1 -1
  16. package/dist/breakouts/utils.js +45 -1
  17. package/dist/breakouts/utils.js.map +1 -1
  18. package/dist/common/errors/no-meeting-info.js +51 -0
  19. package/dist/common/errors/no-meeting-info.js.map +1 -0
  20. package/dist/common/errors/reclaim-host-role-errors.js +158 -0
  21. package/dist/common/errors/reclaim-host-role-errors.js.map +1 -0
  22. package/dist/common/errors/webex-errors.js +48 -7
  23. package/dist/common/errors/webex-errors.js.map +1 -1
  24. package/dist/common/logs/logger-proxy.js +1 -1
  25. package/dist/common/logs/logger-proxy.js.map +1 -1
  26. package/dist/common/logs/request.js +5 -1
  27. package/dist/common/logs/request.js.map +1 -1
  28. package/dist/common/queue.js +24 -9
  29. package/dist/common/queue.js.map +1 -1
  30. package/dist/config.js +5 -11
  31. package/dist/config.js.map +1 -1
  32. package/dist/constants.js +233 -29
  33. package/dist/constants.js.map +1 -1
  34. package/dist/controls-options-manager/enums.js +14 -2
  35. package/dist/controls-options-manager/enums.js.map +1 -1
  36. package/dist/controls-options-manager/index.js +109 -15
  37. package/dist/controls-options-manager/index.js.map +1 -1
  38. package/dist/controls-options-manager/types.js +7 -0
  39. package/dist/controls-options-manager/types.js.map +1 -0
  40. package/dist/controls-options-manager/util.js +309 -18
  41. package/dist/controls-options-manager/util.js.map +1 -1
  42. package/dist/index.js +112 -1
  43. package/dist/index.js.map +1 -1
  44. package/dist/interpretation/collection.js +23 -0
  45. package/dist/interpretation/collection.js.map +1 -0
  46. package/dist/interpretation/index.js +366 -0
  47. package/dist/interpretation/index.js.map +1 -0
  48. package/dist/interpretation/siLanguage.js +25 -0
  49. package/dist/interpretation/siLanguage.js.map +1 -0
  50. package/dist/locus-info/controlsUtils.js +91 -2
  51. package/dist/locus-info/controlsUtils.js.map +1 -1
  52. package/dist/locus-info/index.js +383 -62
  53. package/dist/locus-info/index.js.map +1 -1
  54. package/dist/locus-info/infoUtils.js +7 -1
  55. package/dist/locus-info/infoUtils.js.map +1 -1
  56. package/dist/locus-info/mediaSharesUtils.js +57 -1
  57. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  58. package/dist/locus-info/parser.js +249 -72
  59. package/dist/locus-info/parser.js.map +1 -1
  60. package/dist/locus-info/selfUtils.js +89 -14
  61. package/dist/locus-info/selfUtils.js.map +1 -1
  62. package/dist/media/index.js +61 -116
  63. package/dist/media/index.js.map +1 -1
  64. package/dist/media/properties.js +73 -124
  65. package/dist/media/properties.js.map +1 -1
  66. package/dist/meeting/in-meeting-actions.js +84 -2
  67. package/dist/meeting/in-meeting-actions.js.map +1 -1
  68. package/dist/meeting/index.js +3810 -2939
  69. package/dist/meeting/index.js.map +1 -1
  70. package/dist/meeting/locusMediaRequest.js +292 -0
  71. package/dist/meeting/locusMediaRequest.js.map +1 -0
  72. package/dist/meeting/muteState.js +230 -124
  73. package/dist/meeting/muteState.js.map +1 -1
  74. package/dist/meeting/request.js +260 -196
  75. package/dist/meeting/request.js.map +1 -1
  76. package/dist/meeting/util.js +601 -417
  77. package/dist/meeting/util.js.map +1 -1
  78. package/dist/meeting-info/index.js +73 -7
  79. package/dist/meeting-info/index.js.map +1 -1
  80. package/dist/meeting-info/meeting-info-v2.js +192 -51
  81. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  82. package/dist/meeting-info/util.js +1 -1
  83. package/dist/meeting-info/util.js.map +1 -1
  84. package/dist/meeting-info/utilv2.js +36 -36
  85. package/dist/meeting-info/utilv2.js.map +1 -1
  86. package/dist/meetings/collection.js +39 -0
  87. package/dist/meetings/collection.js.map +1 -1
  88. package/dist/meetings/index.js +415 -115
  89. package/dist/meetings/index.js.map +1 -1
  90. package/dist/meetings/meetings.types.js +7 -0
  91. package/dist/meetings/meetings.types.js.map +1 -0
  92. package/dist/meetings/request.js +2 -0
  93. package/dist/meetings/request.js.map +1 -1
  94. package/dist/meetings/util.js +72 -6
  95. package/dist/meetings/util.js.map +1 -1
  96. package/dist/member/index.js +58 -0
  97. package/dist/member/index.js.map +1 -1
  98. package/dist/member/types.js +25 -0
  99. package/dist/member/types.js.map +1 -0
  100. package/dist/member/util.js +132 -25
  101. package/dist/member/util.js.map +1 -1
  102. package/dist/members/collection.js +10 -0
  103. package/dist/members/collection.js.map +1 -1
  104. package/dist/members/index.js +102 -6
  105. package/dist/members/index.js.map +1 -1
  106. package/dist/members/request.js +106 -38
  107. package/dist/members/request.js.map +1 -1
  108. package/dist/members/types.js +15 -0
  109. package/dist/members/types.js.map +1 -0
  110. package/dist/members/util.js +326 -232
  111. package/dist/members/util.js.map +1 -1
  112. package/dist/metrics/constants.js +13 -5
  113. package/dist/metrics/constants.js.map +1 -1
  114. package/dist/metrics/index.js +1 -468
  115. package/dist/metrics/index.js.map +1 -1
  116. package/dist/multistream/mediaRequestManager.js +228 -58
  117. package/dist/multistream/mediaRequestManager.js.map +1 -1
  118. package/dist/multistream/receiveSlot.js +29 -16
  119. package/dist/multistream/receiveSlot.js.map +1 -1
  120. package/dist/multistream/receiveSlotManager.js +39 -36
  121. package/dist/multistream/receiveSlotManager.js.map +1 -1
  122. package/dist/multistream/remoteMedia.js +44 -18
  123. package/dist/multistream/remoteMedia.js.map +1 -1
  124. package/dist/multistream/remoteMediaGroup.js +60 -3
  125. package/dist/multistream/remoteMediaGroup.js.map +1 -1
  126. package/dist/multistream/remoteMediaManager.js +209 -59
  127. package/dist/multistream/remoteMediaManager.js.map +1 -1
  128. package/dist/multistream/sendSlotManager.js +233 -0
  129. package/dist/multistream/sendSlotManager.js.map +1 -0
  130. package/dist/reachability/index.js +225 -59
  131. package/dist/reachability/index.js.map +1 -1
  132. package/dist/reachability/request.js +17 -8
  133. package/dist/reachability/request.js.map +1 -1
  134. package/dist/reconnection-manager/index.js +201 -156
  135. package/dist/reconnection-manager/index.js.map +1 -1
  136. package/dist/recording-controller/index.js +21 -2
  137. package/dist/recording-controller/index.js.map +1 -1
  138. package/dist/recording-controller/util.js +9 -8
  139. package/dist/recording-controller/util.js.map +1 -1
  140. package/dist/roap/index.js +62 -32
  141. package/dist/roap/index.js.map +1 -1
  142. package/dist/roap/request.js +112 -97
  143. package/dist/roap/request.js.map +1 -1
  144. package/dist/roap/turnDiscovery.js +95 -36
  145. package/dist/roap/turnDiscovery.js.map +1 -1
  146. package/dist/rtcMetrics/constants.js +12 -0
  147. package/dist/rtcMetrics/constants.js.map +1 -0
  148. package/dist/rtcMetrics/index.js +142 -0
  149. package/dist/rtcMetrics/index.js.map +1 -0
  150. package/dist/statsAnalyzer/index.js +107 -79
  151. package/dist/statsAnalyzer/index.js.map +1 -1
  152. package/dist/statsAnalyzer/mqaUtil.js +27 -26
  153. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  154. package/dist/types/annotation/annotation.types.d.ts +42 -0
  155. package/dist/types/annotation/constants.d.ts +31 -0
  156. package/dist/types/annotation/index.d.ts +117 -0
  157. package/dist/types/breakouts/edit-lock-error.d.ts +15 -0
  158. package/dist/types/breakouts/events.d.ts +8 -0
  159. package/dist/types/breakouts/utils.d.ts +14 -0
  160. package/dist/types/common/errors/no-meeting-info.d.ts +14 -0
  161. package/dist/types/common/errors/reclaim-host-role-errors.d.ts +60 -0
  162. package/dist/types/common/errors/webex-errors.d.ts +25 -1
  163. package/dist/types/common/logs/request.d.ts +2 -0
  164. package/dist/types/common/queue.d.ts +9 -7
  165. package/dist/types/config.d.ts +1 -7
  166. package/dist/types/constants.d.ts +194 -24
  167. package/dist/types/controls-options-manager/enums.d.ts +11 -1
  168. package/dist/types/controls-options-manager/index.d.ts +17 -1
  169. package/dist/types/controls-options-manager/types.d.ts +43 -0
  170. package/dist/types/controls-options-manager/util.d.ts +1 -7
  171. package/dist/types/index.d.ts +6 -4
  172. package/dist/types/interpretation/collection.d.ts +5 -0
  173. package/dist/types/interpretation/index.d.ts +5 -0
  174. package/dist/types/interpretation/siLanguage.d.ts +5 -0
  175. package/dist/types/locus-info/index.d.ts +57 -4
  176. package/dist/types/locus-info/parser.d.ts +67 -6
  177. package/dist/types/media/index.d.ts +2 -0
  178. package/dist/types/media/properties.d.ts +34 -48
  179. package/dist/types/meeting/in-meeting-actions.d.ts +84 -2
  180. package/dist/types/meeting/index.d.ts +464 -510
  181. package/dist/types/meeting/locusMediaRequest.d.ts +74 -0
  182. package/dist/types/meeting/muteState.d.ts +99 -23
  183. package/dist/types/meeting/request.d.ts +72 -43
  184. package/dist/types/meeting/util.d.ts +101 -1
  185. package/dist/types/meeting-info/index.d.ts +13 -1
  186. package/dist/types/meeting-info/meeting-info-v2.d.ts +31 -1
  187. package/dist/types/meetings/collection.d.ts +17 -0
  188. package/dist/types/meetings/index.d.ts +98 -20
  189. package/dist/types/meetings/meetings.types.d.ts +4 -0
  190. package/dist/types/member/index.d.ts +14 -0
  191. package/dist/types/member/types.d.ts +32 -0
  192. package/dist/types/members/collection.d.ts +5 -0
  193. package/dist/types/members/index.d.ts +35 -2
  194. package/dist/types/members/request.d.ts +73 -9
  195. package/dist/types/members/types.d.ts +25 -0
  196. package/dist/types/members/util.d.ts +214 -1
  197. package/dist/types/metrics/constants.d.ts +12 -4
  198. package/dist/types/metrics/index.d.ts +4 -119
  199. package/dist/types/multistream/mediaRequestManager.d.ts +72 -5
  200. package/dist/types/multistream/receiveSlot.d.ts +13 -11
  201. package/dist/types/multistream/receiveSlotManager.d.ts +14 -4
  202. package/dist/types/multistream/remoteMedia.d.ts +8 -29
  203. package/dist/types/multistream/remoteMediaGroup.d.ts +0 -9
  204. package/dist/types/multistream/remoteMediaManager.d.ts +46 -2
  205. package/dist/types/multistream/sendSlotManager.d.ts +61 -0
  206. package/dist/types/reachability/index.d.ts +61 -7
  207. package/dist/types/reachability/request.d.ts +7 -3
  208. package/dist/types/reconnection-manager/index.d.ts +9 -0
  209. package/dist/types/recording-controller/index.d.ts +15 -1
  210. package/dist/types/recording-controller/util.d.ts +5 -4
  211. package/dist/types/roap/index.d.ts +2 -1
  212. package/dist/types/roap/request.d.ts +15 -11
  213. package/dist/types/roap/turnDiscovery.d.ts +21 -3
  214. package/dist/types/rtcMetrics/constants.d.ts +4 -0
  215. package/dist/types/rtcMetrics/index.d.ts +54 -0
  216. package/dist/types/statsAnalyzer/index.d.ts +7 -1
  217. package/dist/types/webinar/collection.d.ts +16 -0
  218. package/dist/types/webinar/index.d.ts +5 -0
  219. package/dist/webinar/collection.js +44 -0
  220. package/dist/webinar/collection.js.map +1 -0
  221. package/dist/webinar/index.js +69 -0
  222. package/dist/webinar/index.js.map +1 -0
  223. package/package.json +24 -20
  224. package/src/annotation/annotation.types.ts +50 -0
  225. package/src/annotation/constants.ts +36 -0
  226. package/src/annotation/index.ts +328 -0
  227. package/src/breakouts/README.md +42 -12
  228. package/src/breakouts/breakout.ts +67 -9
  229. package/src/breakouts/edit-lock-error.ts +25 -0
  230. package/src/breakouts/events.ts +56 -0
  231. package/src/breakouts/index.ts +592 -20
  232. package/src/breakouts/utils.ts +42 -0
  233. package/src/common/errors/no-meeting-info.ts +24 -0
  234. package/src/common/errors/reclaim-host-role-errors.ts +134 -0
  235. package/src/common/errors/webex-errors.ts +44 -2
  236. package/src/common/logs/logger-proxy.ts +1 -1
  237. package/src/common/logs/request.ts +5 -1
  238. package/src/common/queue.ts +22 -8
  239. package/src/config.ts +4 -10
  240. package/src/constants.ts +221 -19
  241. package/src/controls-options-manager/enums.ts +12 -0
  242. package/src/controls-options-manager/index.ts +116 -21
  243. package/src/controls-options-manager/types.ts +59 -0
  244. package/src/controls-options-manager/util.ts +294 -14
  245. package/src/index.ts +40 -0
  246. package/src/interpretation/README.md +60 -0
  247. package/src/interpretation/collection.ts +19 -0
  248. package/src/interpretation/index.ts +332 -0
  249. package/src/interpretation/siLanguage.ts +18 -0
  250. package/src/locus-info/controlsUtils.ts +108 -0
  251. package/src/locus-info/index.ts +413 -59
  252. package/src/locus-info/infoUtils.ts +10 -2
  253. package/src/locus-info/mediaSharesUtils.ts +64 -0
  254. package/src/locus-info/parser.ts +258 -47
  255. package/src/locus-info/selfUtils.ts +81 -5
  256. package/src/media/index.ts +102 -122
  257. package/src/media/properties.ts +87 -110
  258. package/src/meeting/in-meeting-actions.ts +167 -3
  259. package/src/meeting/index.ts +3162 -2553
  260. package/src/meeting/locusMediaRequest.ts +313 -0
  261. package/src/meeting/muteState.ts +229 -131
  262. package/src/meeting/request.ts +177 -121
  263. package/src/meeting/util.ts +588 -394
  264. package/src/meeting-info/index.ts +81 -8
  265. package/src/meeting-info/meeting-info-v2.ts +170 -14
  266. package/src/meeting-info/util.ts +1 -1
  267. package/src/meeting-info/utilv2.ts +23 -23
  268. package/src/meetings/collection.ts +33 -0
  269. package/src/meetings/index.ts +445 -123
  270. package/src/meetings/meetings.types.ts +12 -0
  271. package/src/meetings/request.ts +2 -0
  272. package/src/meetings/util.ts +80 -11
  273. package/src/member/index.ts +58 -0
  274. package/src/member/types.ts +38 -0
  275. package/src/member/util.ts +141 -25
  276. package/src/members/collection.ts +8 -0
  277. package/src/members/index.ts +134 -8
  278. package/src/members/request.ts +97 -17
  279. package/src/members/types.ts +29 -0
  280. package/src/members/util.ts +333 -240
  281. package/src/metrics/constants.ts +12 -4
  282. package/src/metrics/index.ts +1 -490
  283. package/src/multistream/mediaRequestManager.ts +277 -82
  284. package/src/multistream/receiveSlot.ts +31 -17
  285. package/src/multistream/receiveSlotManager.ts +34 -24
  286. package/src/multistream/remoteMedia.ts +27 -2
  287. package/src/multistream/remoteMediaGroup.ts +59 -0
  288. package/src/multistream/remoteMediaManager.ts +148 -30
  289. package/src/multistream/sendSlotManager.ts +170 -0
  290. package/src/reachability/index.ts +228 -37
  291. package/src/reachability/request.ts +17 -8
  292. package/src/reconnection-manager/index.ts +83 -56
  293. package/src/recording-controller/index.ts +20 -3
  294. package/src/recording-controller/util.ts +26 -9
  295. package/src/roap/index.ts +63 -32
  296. package/src/roap/request.ts +100 -104
  297. package/src/roap/turnDiscovery.ts +48 -26
  298. package/src/rtcMetrics/constants.ts +3 -0
  299. package/src/rtcMetrics/index.ts +124 -0
  300. package/src/statsAnalyzer/index.ts +135 -92
  301. package/src/statsAnalyzer/mqaUtil.ts +30 -28
  302. package/src/webinar/collection.ts +31 -0
  303. package/src/webinar/index.ts +62 -0
  304. package/test/integration/spec/converged-space-meetings.js +60 -3
  305. package/test/integration/spec/journey.js +320 -261
  306. package/test/integration/spec/space-meeting.js +76 -3
  307. package/test/unit/spec/annotation/index.ts +418 -0
  308. package/test/unit/spec/breakouts/breakout.ts +118 -28
  309. package/test/unit/spec/breakouts/edit-lock-error.ts +30 -0
  310. package/test/unit/spec/breakouts/events.ts +89 -0
  311. package/test/unit/spec/breakouts/index.ts +1395 -69
  312. package/test/unit/spec/breakouts/utils.js +52 -1
  313. package/test/unit/spec/common/queue.js +31 -2
  314. package/test/unit/spec/controls-options-manager/index.js +163 -0
  315. package/test/unit/spec/controls-options-manager/util.js +576 -60
  316. package/test/unit/spec/fixture/locus.js +1 -0
  317. package/test/unit/spec/interpretation/collection.ts +15 -0
  318. package/test/unit/spec/interpretation/index.ts +589 -0
  319. package/test/unit/spec/interpretation/siLanguage.ts +28 -0
  320. package/test/unit/spec/locus-info/controlsUtils.js +316 -43
  321. package/test/unit/spec/locus-info/index.js +1304 -33
  322. package/test/unit/spec/locus-info/infoUtils.js +37 -15
  323. package/test/unit/spec/locus-info/lib/SeqCmp.json +16 -0
  324. package/test/unit/spec/locus-info/mediaSharesUtils.ts +32 -0
  325. package/test/unit/spec/locus-info/parser.js +116 -35
  326. package/test/unit/spec/locus-info/selfConstant.js +27 -4
  327. package/test/unit/spec/locus-info/selfUtils.js +208 -17
  328. package/test/unit/spec/media/index.ts +104 -37
  329. package/test/unit/spec/media/properties.ts +2 -2
  330. package/test/unit/spec/meeting/in-meeting-actions.ts +83 -3
  331. package/test/unit/spec/meeting/index.js +5428 -1930
  332. package/test/unit/spec/meeting/locusMediaRequest.ts +442 -0
  333. package/test/unit/spec/meeting/muteState.js +408 -208
  334. package/test/unit/spec/meeting/request.js +483 -49
  335. package/test/unit/spec/meeting/utils.js +679 -64
  336. package/test/unit/spec/meeting-info/index.js +300 -0
  337. package/test/unit/spec/meeting-info/meetinginfov2.js +526 -5
  338. package/test/unit/spec/meeting-info/utilv2.js +21 -0
  339. package/test/unit/spec/meetings/collection.js +26 -0
  340. package/test/unit/spec/meetings/index.js +1148 -205
  341. package/test/unit/spec/meetings/utils.js +202 -2
  342. package/test/unit/spec/member/index.js +61 -6
  343. package/test/unit/spec/member/util.js +510 -34
  344. package/test/unit/spec/members/index.js +432 -1
  345. package/test/unit/spec/members/request.js +206 -27
  346. package/test/unit/spec/members/utils.js +210 -0
  347. package/test/unit/spec/metrics/index.js +1 -50
  348. package/test/unit/spec/multistream/mediaRequestManager.ts +776 -162
  349. package/test/unit/spec/multistream/receiveSlot.ts +28 -20
  350. package/test/unit/spec/multistream/receiveSlotManager.ts +32 -30
  351. package/test/unit/spec/multistream/remoteMedia.ts +30 -0
  352. package/test/unit/spec/multistream/remoteMediaGroup.ts +266 -0
  353. package/test/unit/spec/multistream/remoteMediaManager.ts +326 -0
  354. package/test/unit/spec/multistream/sendSlotManager.ts +242 -0
  355. package/test/unit/spec/reachability/index.ts +549 -9
  356. package/test/unit/spec/reachability/request.js +68 -0
  357. package/test/unit/spec/reconnection-manager/index.js +85 -9
  358. package/test/unit/spec/recording-controller/index.js +294 -218
  359. package/test/unit/spec/recording-controller/util.js +223 -96
  360. package/test/unit/spec/roap/index.ts +178 -64
  361. package/test/unit/spec/roap/request.ts +203 -85
  362. package/test/unit/spec/roap/turnDiscovery.ts +82 -36
  363. package/test/unit/spec/rtcMetrics/index.ts +93 -0
  364. package/test/unit/spec/stats-analyzer/index.js +147 -3
  365. package/test/unit/spec/webinar/collection.ts +13 -0
  366. package/test/unit/spec/webinar/index.ts +60 -0
  367. package/test/utils/integrationTestUtils.js +46 -0
  368. package/test/utils/testUtils.js +0 -52
  369. package/dist/meeting/effectsState.js +0 -262
  370. package/dist/meeting/effectsState.js.map +0 -1
  371. package/dist/metrics/config.js +0 -299
  372. package/dist/metrics/config.js.map +0 -1
  373. package/dist/types/meeting/effectsState.d.ts +0 -42
  374. package/dist/types/metrics/config.d.ts +0 -178
  375. package/src/index.js +0 -16
  376. package/src/meeting/effectsState.ts +0 -211
  377. package/src/metrics/config.ts +0 -495
  378. package/test/unit/spec/meeting/effectsState.js +0 -285
@@ -23,7 +23,7 @@ export const getAudioReceiverMqa = ({audioReceiver, statsResults, lastMqaDataSen
23
23
  }
24
24
 
25
25
  audioReceiver.common.common.direction = statsResults[mediaType].direction;
26
- audioReceiver.common.transportType = statsResults.connectionType.remote.transport[0];
26
+ audioReceiver.common.transportType = statsResults.connectionType.local.transport;
27
27
 
28
28
  // add rtpPacket info inside common as also for call analyzer
29
29
  audioReceiver.common.rtpPackets =
@@ -83,7 +83,7 @@ export const getAudioSenderMqa = ({audioSender, statsResults, lastMqaDataSent, m
83
83
  }
84
84
 
85
85
  audioSender.common.common.direction = statsResults[mediaType].direction;
86
- audioSender.common.transportType = statsResults.connectionType.local.transport[0];
86
+ audioSender.common.transportType = statsResults.connectionType.local.transport;
87
87
 
88
88
  audioSender.common.maxRemoteJitter =
89
89
  // @ts-ignore
@@ -134,9 +134,12 @@ export const getVideoReceiverMqa = ({videoReceiver, statsResults, lastMqaDataSen
134
134
  const lastPacketsReceived = lastMqaDataSent[mediaType]?.[sendrecvType].totalPacketsReceived || 0;
135
135
  const lastPacketsLost = lastMqaDataSent[mediaType]?.[sendrecvType].totalPacketsLost || 0;
136
136
  const lastBytesReceived = lastMqaDataSent[mediaType]?.[sendrecvType].totalBytesReceived || 0;
137
- const lastFramesReceived = lastMqaDataSent[mediaType]?.[sendrecvType].framesReceived || 0;
138
- const lastFramesDecoded = lastMqaDataSent[mediaType]?.[sendrecvType].framesDecoded || 0;
139
- const lastFramesDropped = lastMqaDataSent[mediaType]?.[sendrecvType].framesDropped || 0;
137
+ const lastFramesReceived =
138
+ lastMqaDataSent.resolutions[mediaType]?.[sendrecvType].framesReceived || 0;
139
+ const lastFramesDecoded =
140
+ lastMqaDataSent.resolutions[mediaType]?.[sendrecvType].framesDecoded || 0;
141
+ const lastFramesDropped =
142
+ lastMqaDataSent.resolutions[mediaType]?.[sendrecvType].framesDropped || 0;
140
143
  const lastKeyFramesDecoded = lastMqaDataSent[mediaType]?.[sendrecvType].keyFramesDecoded || 0;
141
144
  const lastPliCount = lastMqaDataSent[mediaType]?.[sendrecvType].totalPliCount || 0;
142
145
 
@@ -146,7 +149,8 @@ export const getVideoReceiverMqa = ({videoReceiver, statsResults, lastMqaDataSen
146
149
  }
147
150
 
148
151
  videoReceiver.common.common.direction = statsResults[mediaType].direction;
149
- videoReceiver.common.transportType = statsResults.connectionType.remote.transport[0];
152
+ videoReceiver.common.transportType = statsResults.connectionType.local.transport;
153
+
150
154
  // collect the packets received for the last min
151
155
  videoReceiver.common.rtpPackets =
152
156
  statsResults[mediaType][sendrecvType].totalPacketsReceived - lastPacketsReceived || 0;
@@ -189,22 +193,21 @@ export const getVideoReceiverMqa = ({videoReceiver, statsResults, lastMqaDataSen
189
193
  const totalFrameDecodedInaMin =
190
194
  statsResults.resolutions[mediaType][sendrecvType].framesDecoded - lastFramesDecoded;
191
195
 
192
- videoReceiver.streams[0].common.receivedFrameRate = totalFrameReceivedInaMin
193
- ? (totalFrameReceivedInaMin * 100) / 60
194
- : 0;
195
- videoReceiver.streams[0].common.renderedFrameRate = totalFrameDecodedInaMin
196
- ? (totalFrameDecodedInaMin * 100) / 60
197
- : 0;
196
+ videoReceiver.streams[0].common.receivedFrameRate = Math.round(
197
+ totalFrameReceivedInaMin ? totalFrameReceivedInaMin / 60 : 0
198
+ );
199
+ videoReceiver.streams[0].common.renderedFrameRate = Math.round(
200
+ totalFrameDecodedInaMin ? totalFrameDecodedInaMin / 60 : 0
201
+ );
198
202
 
199
203
  videoReceiver.streams[0].common.framesDropped =
200
204
  statsResults.resolutions[mediaType][sendrecvType].framesDropped - lastFramesDropped;
201
205
  videoReceiver.streams[0].receivedHeight =
202
- statsResults.resolutions[mediaType][sendrecvType].height;
203
- videoReceiver.streams[0].receivedWidth = statsResults.resolutions[mediaType][sendrecvType].width;
206
+ statsResults.resolutions[mediaType][sendrecvType].height || 0;
207
+ videoReceiver.streams[0].receivedWidth =
208
+ statsResults.resolutions[mediaType][sendrecvType].width || 0;
204
209
  videoReceiver.streams[0].receivedFrameSize =
205
- (statsResults.resolutions[mediaType][sendrecvType].height *
206
- statsResults.resolutions[mediaType][sendrecvType].height) /
207
- 256;
210
+ (videoReceiver.streams[0].receivedHeight * videoReceiver.streams[0].receivedWidth) / 256;
208
211
 
209
212
  videoReceiver.streams[0].receivedKeyFrames =
210
213
  statsResults[mediaType][sendrecvType].keyFramesDecoded - lastKeyFramesDecoded || 0;
@@ -220,16 +223,16 @@ export const getVideoSenderMqa = ({videoSender, statsResults, lastMqaDataSent, m
220
223
  lastMqaDataSent[mediaType]?.[sendrecvType].totalPacketsLostOnReceiver || 0;
221
224
  const lastBytesSent = lastMqaDataSent[mediaType]?.[sendrecvType].totalBytesSent || 0;
222
225
  const lastKeyFramesEncoded =
223
- lastMqaDataSent[mediaType]?.[sendrecvType].totalKeyFramesEncoded || 0;
226
+ lastMqaDataSent.resolutions[mediaType]?.[sendrecvType].totalKeyFramesEncoded || 0;
224
227
  const lastFirCount = lastMqaDataSent[mediaType]?.[sendrecvType].totalFirCount || 0;
225
- const lastFramesSent = lastMqaDataSent[mediaType]?.[sendrecvType].framesSent || 0;
228
+ const lastFramesSent = lastMqaDataSent.resolutions[mediaType]?.[sendrecvType].framesSent || 0;
226
229
  const {csi} = statsResults[mediaType];
227
230
  if (csi && !videoSender.streams[0].common.csi.includes(csi)) {
228
231
  videoSender.streams[0].common.csi.push(csi);
229
232
  }
230
233
 
231
234
  videoSender.common.common.direction = statsResults[mediaType].direction;
232
- videoSender.common.transportType = statsResults.connectionType.local.transport[0];
235
+ videoSender.common.transportType = statsResults.connectionType.local.transport;
233
236
 
234
237
  // @ts-ignore
235
238
  videoSender.common.maxRemoteJitter =
@@ -280,14 +283,13 @@ export const getVideoSenderMqa = ({videoSender, statsResults, lastMqaDataSent, m
280
283
  const totalFrameSentInaMin =
281
284
  statsResults.resolutions[mediaType][sendrecvType].framesSent - (lastFramesSent || 0);
282
285
 
283
- videoSender.streams[0].common.transmittedFrameRate = totalFrameSentInaMin
284
- ? (totalFrameSentInaMin * 100) / 60
285
- : 0;
286
+ videoSender.streams[0].common.transmittedFrameRate = Math.round(
287
+ totalFrameSentInaMin ? totalFrameSentInaMin / 60 : 0
288
+ );
286
289
  videoSender.streams[0].transmittedHeight =
287
- statsResults.resolutions[mediaType][sendrecvType].height;
288
- videoSender.streams[0].transmittedWidth = statsResults.resolutions[mediaType][sendrecvType].width;
290
+ statsResults.resolutions[mediaType][sendrecvType].height || 0;
291
+ videoSender.streams[0].transmittedWidth =
292
+ statsResults.resolutions[mediaType][sendrecvType].width || 0;
289
293
  videoSender.streams[0].transmittedFrameSize =
290
- (statsResults.resolutions[mediaType][sendrecvType].height *
291
- statsResults.resolutions[mediaType][sendrecvType].width) /
292
- 254;
294
+ (videoSender.streams[0].transmittedHeight * videoSender.streams[0].transmittedWidth) / 256;
293
295
  };
@@ -0,0 +1,31 @@
1
+ /*!
2
+ * Copyright (c) 2015-2023 Cisco Systems, Inc. See LICENSE file.
3
+ */
4
+
5
+ import {MEETINGS} from '../constants';
6
+
7
+ class WebinarCollection {
8
+ webinarInfo: any;
9
+
10
+ namespace = MEETINGS;
11
+
12
+ mainIndex = 'sessionId';
13
+
14
+ constructor() {
15
+ this.webinarInfo = {};
16
+ }
17
+
18
+ set(id, info) {
19
+ this.webinarInfo[id] = info;
20
+ }
21
+
22
+ /**
23
+ * @param {String} id
24
+ * @returns {Member}
25
+ */
26
+ get(id: string) {
27
+ return this.webinarInfo[id];
28
+ }
29
+ }
30
+
31
+ export default WebinarCollection;
@@ -0,0 +1,62 @@
1
+ /*!
2
+ * Copyright (c) 2015-2023 Cisco Systems, Inc. See LICENSE file.
3
+ */
4
+ import {WebexPlugin} from '@webex/webex-core';
5
+ import {MEETINGS} from '../constants';
6
+
7
+ import WebinarCollection from './collection';
8
+
9
+ /**
10
+ * @class Webinar
11
+ */
12
+ const Webinar = WebexPlugin.extend({
13
+ namespace: MEETINGS,
14
+ collections: {
15
+ webinar: WebinarCollection,
16
+ },
17
+
18
+ props: {
19
+ locusUrl: 'string', // appears current webinar's locus url
20
+ webcastUrl: 'string', // current webinar's webcast url
21
+ webinarAttendeesSearchingUrl: 'string', // current webinarAttendeesSearching url
22
+ canManageWebcast: 'boolean', // appears the ability to manage webcast
23
+ },
24
+
25
+ /**
26
+ * Update the current locus url of the webinar
27
+ * @param {string} locusUrl // locus url
28
+ * @returns {void}
29
+ */
30
+ locusUrlUpdate(locusUrl) {
31
+ this.set('locusUrl', locusUrl);
32
+ },
33
+
34
+ /**
35
+ * Update the current webcast url of the meeting
36
+ * @param {string} webcastUrl // webcast url
37
+ * @returns {void}
38
+ */
39
+ webcastUrlUpdate(webcastUrl) {
40
+ this.set('webcastUrl', webcastUrl);
41
+ },
42
+
43
+ /**
44
+ * Update the current webinarAttendeesSearching url of the meeting
45
+ * @param {string} webinarAttendeesSearchingUrl // webinarAttendeesSearching url
46
+ * @returns {void}
47
+ */
48
+ webinarAttendeesSearchingUrlUpdate(webinarAttendeesSearchingUrl) {
49
+ this.set('webinarAttendeesSearchingUrl', webinarAttendeesSearchingUrl);
50
+ },
51
+
52
+ /**
53
+ * Update whether self has capability to manage start/stop webcast (only host can manage it)
54
+ * @param {boolean} canManageWebcast
55
+ * @returns {void}
56
+ */
57
+ updateCanManageWebcast(canManageWebcast) {
58
+ this.set('canManageWebcast', canManageWebcast);
59
+ },
60
+ });
61
+
62
+ export default Webinar;
@@ -3,13 +3,30 @@ import 'jsdom-global/register';
3
3
  import {assert} from '@webex/test-helper-chai';
4
4
  import {skipInNode} from '@webex/test-helper-mocha';
5
5
  import BrowserDetection from '@webex/plugin-meetings/dist/common/browser-detection';
6
+ import {createCameraStream, createMicrophoneStream} from '@webex/plugin-meetings';
6
7
 
7
8
  import {MEDIA_SERVERS} from '../../utils/constants';
8
9
  import testUtils from '../../utils/testUtils';
10
+ import integrationTestUtils from '../../utils/integrationTestUtils';
9
11
  import webexTestUsers from '../../utils/webex-test-users';
10
12
 
11
13
  config();
12
14
 
15
+ const localTracks = {
16
+ alice: {
17
+ microphone: undefined,
18
+ camera: undefined,
19
+ },
20
+ bob: {
21
+ microphone: undefined,
22
+ camera: undefined,
23
+ },
24
+ chris: {
25
+ microphone: undefined,
26
+ camera: undefined,
27
+ },
28
+ };
29
+
13
30
  skipInNode(describe)('plugin-meetings', () => {
14
31
  const {isBrowser} = BrowserDetection();
15
32
 
@@ -135,6 +152,17 @@ skipInNode(describe)('plugin-meetings', () => {
135
152
  assert.exists(chris.meeting.joinedWith);
136
153
  });
137
154
 
155
+ it('users "alice", "bob", and "chris" create local tracks', async () => {
156
+ localTracks.alice.microphone = await createMicrophoneStream();
157
+ localTracks.alice.camera = await createCameraStream();
158
+
159
+ localTracks.bob.microphone = await createMicrophoneStream();
160
+ localTracks.bob.camera = await createCameraStream();
161
+
162
+ localTracks.chris.microphone = await createMicrophoneStream();
163
+ localTracks.chris.camera = await createCameraStream();
164
+ });
165
+
138
166
  it('users "alice", "bob", and "chris" add media', async () => {
139
167
  mediaReadyListener = testUtils.waitForEvents([
140
168
  {scope: alice.meeting, event: 'media:negotiated'},
@@ -142,9 +170,9 @@ skipInNode(describe)('plugin-meetings', () => {
142
170
  {scope: chris.meeting, event: 'media:negotiated'},
143
171
  ]);
144
172
 
145
- const addMediaAlice = testUtils.addMedia(alice, {expectedMediaReadyTypes: ['local']});
146
- const addMediaBob = testUtils.addMedia(bob, {expectedMediaReadyTypes: ['local']});
147
- const addMediaChris = testUtils.addMedia(chris, {expectedMediaReadyTypes: ['local']});
173
+ const addMediaAlice = integrationTestUtils.addMedia(alice, {multistream: true, microphone: localTracks.alice.microphone, camera: localTracks.alice.camera});
174
+ const addMediaBob = integrationTestUtils.addMedia(bob, {multistream: true, microphone: localTracks.bob.microphone, camera: localTracks.bob.camera});
175
+ const addMediaChris = integrationTestUtils.addMedia(chris, {multistream: true, microphone: localTracks.chris.microphone, camera: localTracks.chris.camera});
148
176
 
149
177
  await addMediaAlice;
150
178
  await addMediaBob;
@@ -171,6 +199,35 @@ skipInNode(describe)('plugin-meetings', () => {
171
199
  assert.equal(bob.meeting.mediaProperties.webrtcMediaConnection.mediaServer, MEDIA_SERVERS.HOMER);
172
200
  assert.equal(chris.meeting.mediaProperties.webrtcMediaConnection.mediaServer, MEDIA_SERVERS.HOMER);
173
201
  });
202
+
203
+ it('users "alice", "bob", and "chris" stop their local tracks', () => {
204
+ if (localTracks.alice.microphone) {
205
+ localTracks.alice.microphone.stop();
206
+ localTracks.alice.microphone = undefined;
207
+ }
208
+ if (localTracks.alice.camera) {
209
+ localTracks.alice.camera.stop();
210
+ localTracks.alice.camera = undefined;
211
+ }
212
+
213
+ if (localTracks.bob.microphone) {
214
+ localTracks.bob.microphone.stop();
215
+ localTracks.bob.microphone = undefined;
216
+ }
217
+ if (localTracks.bob.camera) {
218
+ localTracks.bob.camera.stop();
219
+ localTracks.bob.camera = undefined;
220
+ }
221
+
222
+ if (localTracks.chris.microphone) {
223
+ localTracks.chris.microphone.stop();
224
+ localTracks.chris.microphone = undefined;
225
+ }
226
+ if (localTracks.chris.camera) {
227
+ localTracks.chris.camera.stop();
228
+ localTracks.chris.camera = undefined;
229
+ }
230
+ });
174
231
  });
175
232
  }
176
233
  });