@webex/plugin-meetings 3.0.0-stream-classes.4 → 3.0.0

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 (469) hide show
  1. package/.eslintrc.js +6 -0
  2. package/README.md +12 -0
  3. package/babel.config.js +3 -0
  4. package/dist/annotation/constants.js +12 -20
  5. package/dist/annotation/constants.js.map +1 -1
  6. package/dist/annotation/index.js +25 -10
  7. package/dist/annotation/index.js.map +1 -1
  8. package/dist/breakouts/breakout.js +2 -3
  9. package/dist/breakouts/breakout.js.map +1 -1
  10. package/dist/breakouts/collection.js +1 -2
  11. package/dist/breakouts/collection.js.map +1 -1
  12. package/dist/breakouts/edit-lock-error.js +1 -2
  13. package/dist/breakouts/edit-lock-error.js.map +1 -1
  14. package/dist/breakouts/events.js +1 -2
  15. package/dist/breakouts/events.js.map +1 -1
  16. package/dist/breakouts/index.js +13 -14
  17. package/dist/breakouts/index.js.map +1 -1
  18. package/dist/breakouts/request.js +1 -2
  19. package/dist/breakouts/request.js.map +1 -1
  20. package/dist/breakouts/utils.js +3 -6
  21. package/dist/breakouts/utils.js.map +1 -1
  22. package/dist/common/browser-detection.js +2 -3
  23. package/dist/common/browser-detection.js.map +1 -1
  24. package/dist/common/collection.js +3 -4
  25. package/dist/common/collection.js.map +1 -1
  26. package/dist/common/config.js +1 -2
  27. package/dist/common/config.js.map +1 -1
  28. package/dist/common/errors/captcha-error.js +1 -2
  29. package/dist/common/errors/captcha-error.js.map +1 -1
  30. package/dist/common/errors/intent-to-join.js +1 -2
  31. package/dist/common/errors/intent-to-join.js.map +1 -1
  32. package/dist/common/errors/join-meeting.js +1 -2
  33. package/dist/common/errors/join-meeting.js.map +1 -1
  34. package/dist/common/errors/media.js +1 -2
  35. package/dist/common/errors/media.js.map +1 -1
  36. package/dist/common/errors/no-meeting-info.d.ts +14 -0
  37. package/dist/common/errors/no-meeting-info.js +50 -0
  38. package/dist/common/errors/no-meeting-info.js.map +1 -0
  39. package/dist/common/errors/parameter.js +3 -4
  40. package/dist/common/errors/parameter.js.map +1 -1
  41. package/dist/common/errors/password-error.js +1 -2
  42. package/dist/common/errors/password-error.js.map +1 -1
  43. package/dist/common/errors/permission.js +1 -2
  44. package/dist/common/errors/permission.js.map +1 -1
  45. package/dist/common/errors/reclaim-host-role-errors.d.ts +60 -0
  46. package/dist/common/errors/reclaim-host-role-errors.js +154 -0
  47. package/dist/common/errors/reclaim-host-role-errors.js.map +1 -0
  48. package/dist/common/errors/reconnection-in-progress.js +1 -2
  49. package/dist/common/errors/reconnection-in-progress.js.map +1 -1
  50. package/dist/common/errors/reconnection.js +1 -2
  51. package/dist/common/errors/reconnection.js.map +1 -1
  52. package/dist/common/errors/stats.js +1 -2
  53. package/dist/common/errors/stats.js.map +1 -1
  54. package/dist/{types/common → common}/errors/webex-errors.d.ts +13 -1
  55. package/dist/common/errors/webex-errors.js +35 -16
  56. package/dist/common/errors/webex-errors.js.map +1 -1
  57. package/dist/common/errors/webex-meetings-error.js +1 -2
  58. package/dist/common/errors/webex-meetings-error.js.map +1 -1
  59. package/dist/common/events/events-scope.js +1 -2
  60. package/dist/common/events/events-scope.js.map +1 -1
  61. package/dist/common/events/events.js +1 -2
  62. package/dist/common/events/events.js.map +1 -1
  63. package/dist/common/events/trigger-proxy.js +1 -2
  64. package/dist/common/events/trigger-proxy.js.map +1 -1
  65. package/dist/common/events/util.js +1 -2
  66. package/dist/common/events/util.js.map +1 -1
  67. package/dist/common/logs/logger-config.js +1 -2
  68. package/dist/common/logs/logger-config.js.map +1 -1
  69. package/dist/common/logs/logger-proxy.js +1 -2
  70. package/dist/common/logs/logger-proxy.js.map +1 -1
  71. package/dist/{types/common → common}/logs/request.d.ts +3 -1
  72. package/dist/common/logs/request.js +8 -5
  73. package/dist/common/logs/request.js.map +1 -1
  74. package/dist/common/queue.js +2 -4
  75. package/dist/common/queue.js.map +1 -1
  76. package/dist/{types/config.d.ts → config.d.ts} +1 -1
  77. package/dist/config.js +3 -3
  78. package/dist/config.js.map +1 -1
  79. package/dist/{types/constants.d.ts → constants.d.ts} +72 -15
  80. package/dist/constants.js +254 -371
  81. package/dist/constants.js.map +1 -1
  82. package/dist/controls-options-manager/constants.js +3 -6
  83. package/dist/controls-options-manager/constants.js.map +1 -1
  84. package/dist/controls-options-manager/enums.js +7 -10
  85. package/dist/controls-options-manager/enums.js.map +1 -1
  86. package/dist/controls-options-manager/index.js +27 -32
  87. package/dist/controls-options-manager/index.js.map +1 -1
  88. package/dist/controls-options-manager/util.js +1 -2
  89. package/dist/controls-options-manager/util.js.map +1 -1
  90. package/dist/index.js +8 -5
  91. package/dist/index.js.map +1 -1
  92. package/dist/interceptors/index.d.ts +2 -0
  93. package/dist/interceptors/index.js +15 -0
  94. package/dist/interceptors/index.js.map +1 -0
  95. package/dist/interceptors/locusRetry.d.ts +27 -0
  96. package/dist/interceptors/locusRetry.js +94 -0
  97. package/dist/interceptors/locusRetry.js.map +1 -0
  98. package/dist/interpretation/collection.js +1 -2
  99. package/dist/interpretation/collection.js.map +1 -1
  100. package/dist/interpretation/index.js +2 -3
  101. package/dist/interpretation/index.js.map +1 -1
  102. package/dist/interpretation/siLanguage.js +2 -3
  103. package/dist/interpretation/siLanguage.js.map +1 -1
  104. package/dist/locus-info/controlsUtils.js +12 -13
  105. package/dist/locus-info/controlsUtils.js.map +1 -1
  106. package/dist/locus-info/embeddedAppsUtils.js +3 -4
  107. package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
  108. package/dist/locus-info/fullState.js +1 -2
  109. package/dist/locus-info/fullState.js.map +1 -1
  110. package/dist/locus-info/hostUtils.js +1 -2
  111. package/dist/locus-info/hostUtils.js.map +1 -1
  112. package/dist/{types/locus-info → locus-info}/index.d.ts +1 -1
  113. package/dist/locus-info/index.js +63 -38
  114. package/dist/locus-info/index.js.map +1 -1
  115. package/dist/locus-info/infoUtils.js +3 -4
  116. package/dist/locus-info/infoUtils.js.map +1 -1
  117. package/dist/locus-info/mediaSharesUtils.js +16 -3
  118. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  119. package/dist/{types/locus-info → locus-info}/parser.d.ts +3 -2
  120. package/dist/locus-info/parser.js +48 -31
  121. package/dist/locus-info/parser.js.map +1 -1
  122. package/dist/locus-info/selfUtils.js +7 -6
  123. package/dist/locus-info/selfUtils.js.map +1 -1
  124. package/dist/media/index.js +15 -10
  125. package/dist/media/index.js.map +1 -1
  126. package/dist/media/properties.js +16 -7
  127. package/dist/media/properties.js.map +1 -1
  128. package/dist/media/util.js +1 -2
  129. package/dist/media/util.js.map +1 -1
  130. package/dist/mediaQualityMetrics/config.d.ts +241 -0
  131. package/dist/mediaQualityMetrics/config.js +135 -339
  132. package/dist/mediaQualityMetrics/config.js.map +1 -1
  133. package/dist/{types/meeting → meeting}/in-meeting-actions.d.ts +4 -0
  134. package/dist/meeting/in-meeting-actions.js +18 -2
  135. package/dist/meeting/in-meeting-actions.js.map +1 -1
  136. package/dist/{types/meeting → meeting}/index.d.ts +331 -44
  137. package/dist/meeting/index.js +2639 -1367
  138. package/dist/meeting/index.js.map +1 -1
  139. package/dist/{types/meeting → meeting}/locusMediaRequest.d.ts +1 -2
  140. package/dist/meeting/locusMediaRequest.js +4 -5
  141. package/dist/meeting/locusMediaRequest.js.map +1 -1
  142. package/dist/meeting/muteState.js +2 -4
  143. package/dist/meeting/muteState.js.map +1 -1
  144. package/dist/{types/meeting → meeting}/request.d.ts +4 -1
  145. package/dist/meeting/request.js +47 -32
  146. package/dist/meeting/request.js.map +1 -1
  147. package/dist/meeting/state.js +1 -2
  148. package/dist/meeting/state.js.map +1 -1
  149. package/dist/{types/meeting → meeting}/util.d.ts +26 -1
  150. package/dist/meeting/util.js +83 -10
  151. package/dist/meeting/util.js.map +1 -1
  152. package/dist/meeting/voicea-meeting.d.ts +16 -0
  153. package/dist/meeting/voicea-meeting.js +169 -0
  154. package/dist/meeting/voicea-meeting.js.map +1 -0
  155. package/dist/meeting-info/collection.js +3 -4
  156. package/dist/meeting-info/collection.js.map +1 -1
  157. package/dist/{types/meeting-info → meeting-info}/index.d.ts +7 -0
  158. package/dist/meeting-info/index.js +53 -27
  159. package/dist/meeting-info/index.js.map +1 -1
  160. package/dist/{types/meeting-info → meeting-info}/meeting-info-v2.d.ts +1 -0
  161. package/dist/meeting-info/meeting-info-v2.js +52 -33
  162. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  163. package/dist/meeting-info/request.js +1 -2
  164. package/dist/meeting-info/request.js.map +1 -1
  165. package/dist/meeting-info/util.js +8 -8
  166. package/dist/meeting-info/util.js.map +1 -1
  167. package/dist/meeting-info/utilv2.js +12 -9
  168. package/dist/meeting-info/utilv2.js.map +1 -1
  169. package/dist/{types/meetings → meetings}/collection.d.ts +9 -0
  170. package/dist/meetings/collection.js +21 -5
  171. package/dist/meetings/collection.js.map +1 -1
  172. package/dist/{types/meetings → meetings}/index.d.ts +45 -16
  173. package/dist/meetings/index.js +166 -74
  174. package/dist/meetings/index.js.map +1 -1
  175. package/dist/meetings/request.js +2 -3
  176. package/dist/meetings/request.js.map +1 -1
  177. package/dist/meetings/util.js +3 -10
  178. package/dist/meetings/util.js.map +1 -1
  179. package/dist/{types/member → member}/index.d.ts +1 -0
  180. package/dist/member/index.js +10 -3
  181. package/dist/member/index.js.map +1 -1
  182. package/dist/member/member.types.d.ts +11 -0
  183. package/dist/member/member.types.js +17 -0
  184. package/dist/member/member.types.js.map +1 -0
  185. package/dist/member/types.js +6 -8
  186. package/dist/member/types.js.map +1 -1
  187. package/dist/member/util.js +12 -2
  188. package/dist/member/util.js.map +1 -1
  189. package/dist/members/collection.js +1 -2
  190. package/dist/members/collection.js.map +1 -1
  191. package/dist/members/index.js +25 -8
  192. package/dist/members/index.js.map +1 -1
  193. package/dist/members/request.js +2 -3
  194. package/dist/members/request.js.map +1 -1
  195. package/dist/{types/members → members}/types.d.ts +1 -0
  196. package/dist/members/types.js +3 -4
  197. package/dist/members/types.js.map +1 -1
  198. package/dist/{types/members → members}/util.d.ts +6 -1
  199. package/dist/members/util.js +18 -8
  200. package/dist/members/util.js.map +1 -1
  201. package/dist/{types/metrics → metrics}/constants.d.ts +15 -0
  202. package/dist/metrics/constants.js +16 -3
  203. package/dist/metrics/constants.js.map +1 -1
  204. package/dist/metrics/index.js +3 -2
  205. package/dist/metrics/index.js.map +1 -1
  206. package/dist/multistream/mediaRequestManager.js +9 -11
  207. package/dist/multistream/mediaRequestManager.js.map +1 -1
  208. package/dist/multistream/receiveSlot.js +3 -5
  209. package/dist/multistream/receiveSlot.js.map +1 -1
  210. package/dist/multistream/receiveSlotManager.js +7 -9
  211. package/dist/multistream/receiveSlotManager.js.map +1 -1
  212. package/dist/multistream/remoteMedia.js +3 -5
  213. package/dist/multistream/remoteMedia.js.map +1 -1
  214. package/dist/multistream/remoteMediaGroup.js +7 -6
  215. package/dist/multistream/remoteMediaGroup.js.map +1 -1
  216. package/dist/{types/multistream → multistream}/remoteMediaManager.d.ts +9 -1
  217. package/dist/multistream/remoteMediaManager.js +74 -36
  218. package/dist/multistream/remoteMediaManager.js.map +1 -1
  219. package/dist/multistream/sendSlotManager.js +9 -6
  220. package/dist/multistream/sendSlotManager.js.map +1 -1
  221. package/dist/networkQualityMonitor/index.js +1 -2
  222. package/dist/networkQualityMonitor/index.js.map +1 -1
  223. package/dist/personal-meeting-room/index.js +2 -3
  224. package/dist/personal-meeting-room/index.js.map +1 -1
  225. package/dist/personal-meeting-room/request.js +2 -3
  226. package/dist/personal-meeting-room/request.js.map +1 -1
  227. package/dist/personal-meeting-room/util.js +1 -2
  228. package/dist/personal-meeting-room/util.js.map +1 -1
  229. package/dist/reachability/clusterReachability.d.ts +109 -0
  230. package/dist/reachability/clusterReachability.js +357 -0
  231. package/dist/reachability/clusterReachability.js.map +1 -0
  232. package/dist/reachability/index.d.ts +105 -0
  233. package/dist/reachability/index.js +279 -436
  234. package/dist/reachability/index.js.map +1 -1
  235. package/dist/{types/reachability → reachability}/request.d.ts +1 -1
  236. package/dist/reachability/request.js +14 -11
  237. package/dist/reachability/request.js.map +1 -1
  238. package/dist/reachability/util.d.ts +8 -0
  239. package/dist/reachability/util.js +29 -0
  240. package/dist/reachability/util.js.map +1 -0
  241. package/dist/reactions/constants.js +1 -2
  242. package/dist/reactions/constants.js.map +1 -1
  243. package/dist/reactions/reactions.js +2 -4
  244. package/dist/reactions/reactions.js.map +1 -1
  245. package/dist/reactions/reactions.type.js +6 -8
  246. package/dist/reactions/reactions.type.js.map +1 -1
  247. package/dist/{types/reconnection-manager → reconnection-manager}/index.d.ts +10 -0
  248. package/dist/reconnection-manager/index.js +129 -106
  249. package/dist/reconnection-manager/index.js.map +1 -1
  250. package/dist/recording-controller/enums.js +4 -5
  251. package/dist/recording-controller/enums.js.map +1 -1
  252. package/dist/recording-controller/index.js +43 -51
  253. package/dist/recording-controller/index.js.map +1 -1
  254. package/dist/recording-controller/util.js +1 -2
  255. package/dist/recording-controller/util.js.map +1 -1
  256. package/dist/{types/roap → roap}/index.d.ts +2 -1
  257. package/dist/roap/index.js +59 -28
  258. package/dist/roap/index.js.map +1 -1
  259. package/dist/{types/roap → roap}/request.d.ts +2 -1
  260. package/dist/roap/request.js +14 -22
  261. package/dist/roap/request.js.map +1 -1
  262. package/dist/{types/roap → roap}/turnDiscovery.d.ts +21 -4
  263. package/dist/roap/turnDiscovery.js +182 -89
  264. package/dist/roap/turnDiscovery.js.map +1 -1
  265. package/dist/rtcMetrics/constants.js +1 -2
  266. package/dist/rtcMetrics/constants.js.map +1 -1
  267. package/dist/{types/rtcMetrics → rtcMetrics}/index.d.ts +15 -1
  268. package/dist/rtcMetrics/index.js +72 -12
  269. package/dist/rtcMetrics/index.js.map +1 -1
  270. package/dist/statsAnalyzer/global.js +1 -2
  271. package/dist/statsAnalyzer/global.js.map +1 -1
  272. package/dist/{types/statsAnalyzer → statsAnalyzer}/index.d.ts +28 -11
  273. package/dist/statsAnalyzer/index.js +371 -318
  274. package/dist/statsAnalyzer/index.js.map +1 -1
  275. package/dist/statsAnalyzer/mqaUtil.d.ts +48 -0
  276. package/dist/statsAnalyzer/mqaUtil.js +295 -162
  277. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  278. package/dist/transcription/index.js +1 -2
  279. package/dist/transcription/index.js.map +1 -1
  280. package/dist/webinar/collection.d.ts +16 -0
  281. package/dist/webinar/collection.js +43 -0
  282. package/dist/webinar/collection.js.map +1 -0
  283. package/dist/webinar/index.d.ts +5 -0
  284. package/dist/webinar/index.js +68 -0
  285. package/dist/webinar/index.js.map +1 -0
  286. package/jest.config.js +3 -0
  287. package/package.json +44 -24
  288. package/process +1 -0
  289. package/src/common/errors/no-meeting-info.ts +24 -0
  290. package/src/common/errors/reclaim-host-role-errors.ts +134 -0
  291. package/src/common/errors/webex-errors.ts +19 -2
  292. package/src/common/logs/request.ts +5 -1
  293. package/src/config.ts +3 -5
  294. package/src/constants.ts +78 -8
  295. package/src/index.ts +4 -0
  296. package/src/interceptors/index.ts +3 -0
  297. package/src/interceptors/locusRetry.ts +67 -0
  298. package/src/locus-info/index.ts +52 -16
  299. package/src/locus-info/mediaSharesUtils.ts +16 -0
  300. package/src/locus-info/parser.ts +47 -21
  301. package/src/media/index.ts +8 -6
  302. package/src/media/properties.ts +17 -2
  303. package/src/mediaQualityMetrics/config.ts +103 -238
  304. package/src/meeting/in-meeting-actions.ts +8 -0
  305. package/src/meeting/index.ts +1692 -627
  306. package/src/meeting/request.ts +19 -1
  307. package/src/meeting/util.ts +102 -1
  308. package/src/meeting/voicea-meeting.ts +122 -0
  309. package/src/meeting-info/index.ts +47 -20
  310. package/src/meeting-info/meeting-info-v2.ts +32 -16
  311. package/src/meeting-info/util.ts +12 -9
  312. package/src/meeting-info/utilv2.ts +25 -15
  313. package/src/meetings/collection.ts +13 -0
  314. package/src/meetings/index.ts +112 -31
  315. package/src/meetings/util.ts +2 -8
  316. package/src/member/index.ts +9 -1
  317. package/src/member/member.types.ts +13 -0
  318. package/src/member/util.ts +14 -0
  319. package/src/members/index.ts +29 -2
  320. package/src/members/types.ts +1 -0
  321. package/src/members/util.ts +15 -1
  322. package/src/metrics/constants.ts +14 -0
  323. package/src/multistream/remoteMediaManager.ts +41 -4
  324. package/src/reachability/clusterReachability.ts +320 -0
  325. package/src/reachability/index.ts +221 -382
  326. package/src/reachability/request.ts +1 -1
  327. package/src/reachability/util.ts +24 -0
  328. package/src/reconnection-manager/index.ts +87 -83
  329. package/src/roap/index.ts +60 -24
  330. package/src/roap/request.ts +4 -17
  331. package/src/roap/turnDiscovery.ts +112 -39
  332. package/src/rtcMetrics/index.ts +71 -5
  333. package/src/statsAnalyzer/index.ts +430 -427
  334. package/src/statsAnalyzer/mqaUtil.ts +317 -168
  335. package/src/webinar/collection.ts +31 -0
  336. package/src/webinar/index.ts +62 -0
  337. package/test/integration/spec/converged-space-meetings.js +7 -7
  338. package/test/integration/spec/journey.js +88 -106
  339. package/test/integration/spec/space-meeting.js +10 -10
  340. package/test/unit/spec/breakouts/breakout.ts +2 -1
  341. package/test/unit/spec/breakouts/index.ts +7 -4
  342. package/test/unit/spec/interceptors/locusRetry.ts +131 -0
  343. package/test/unit/spec/locus-info/index.js +206 -13
  344. package/test/unit/spec/locus-info/lib/SeqCmp.json +16 -0
  345. package/test/unit/spec/locus-info/mediaSharesUtils.ts +10 -0
  346. package/test/unit/spec/locus-info/parser.js +54 -13
  347. package/test/unit/spec/locus-info/selfUtils.js +1 -1
  348. package/test/unit/spec/media/index.ts +25 -4
  349. package/test/unit/spec/media/properties.ts +2 -2
  350. package/test/unit/spec/meeting/in-meeting-actions.ts +4 -0
  351. package/test/unit/spec/meeting/index.js +4354 -1285
  352. package/test/unit/spec/meeting/request.js +63 -12
  353. package/test/unit/spec/meeting/utils.js +145 -10
  354. package/test/unit/spec/meeting/voicea-meeting.ts +266 -0
  355. package/test/unit/spec/meeting-info/index.js +180 -61
  356. package/test/unit/spec/meeting-info/meetinginfov2.js +216 -68
  357. package/test/unit/spec/meetings/collection.js +12 -0
  358. package/test/unit/spec/meetings/index.js +676 -195
  359. package/test/unit/spec/meetings/utils.js +35 -12
  360. package/test/unit/spec/member/index.js +8 -7
  361. package/test/unit/spec/member/util.js +32 -0
  362. package/test/unit/spec/members/index.js +130 -17
  363. package/test/unit/spec/members/utils.js +26 -0
  364. package/test/unit/spec/metrics/index.js +1 -2
  365. package/test/unit/spec/multistream/mediaRequestManager.ts +1 -0
  366. package/test/unit/spec/multistream/remoteMediaManager.ts +10 -2
  367. package/test/unit/spec/reachability/clusterReachability.ts +279 -0
  368. package/test/unit/spec/reachability/index.ts +505 -135
  369. package/test/unit/spec/reachability/util.ts +40 -0
  370. package/test/unit/spec/reconnection-manager/index.js +74 -17
  371. package/test/unit/spec/recording-controller/index.js +0 -1
  372. package/test/unit/spec/roap/index.ts +181 -61
  373. package/test/unit/spec/roap/request.ts +27 -3
  374. package/test/unit/spec/roap/turnDiscovery.ts +363 -102
  375. package/test/unit/spec/rtcMetrics/index.ts +57 -3
  376. package/test/unit/spec/stats-analyzer/index.js +1225 -12
  377. package/test/unit/spec/webinar/collection.ts +13 -0
  378. package/test/unit/spec/webinar/index.ts +60 -0
  379. package/test/utils/integrationTestUtils.js +4 -4
  380. package/test/utils/webex-test-users.js +12 -4
  381. package/dist/types/mediaQualityMetrics/config.d.ts +0 -365
  382. package/dist/types/reachability/index.d.ts +0 -158
  383. package/dist/types/statsAnalyzer/mqaUtil.d.ts +0 -24
  384. /package/dist/{types/annotation → annotation}/annotation.types.d.ts +0 -0
  385. /package/dist/{types/annotation → annotation}/constants.d.ts +0 -0
  386. /package/dist/{types/annotation → annotation}/index.d.ts +0 -0
  387. /package/dist/{types/breakouts → breakouts}/breakout.d.ts +0 -0
  388. /package/dist/{types/breakouts → breakouts}/collection.d.ts +0 -0
  389. /package/dist/{types/breakouts → breakouts}/edit-lock-error.d.ts +0 -0
  390. /package/dist/{types/breakouts → breakouts}/events.d.ts +0 -0
  391. /package/dist/{types/breakouts → breakouts}/index.d.ts +0 -0
  392. /package/dist/{types/breakouts → breakouts}/request.d.ts +0 -0
  393. /package/dist/{types/breakouts → breakouts}/utils.d.ts +0 -0
  394. /package/dist/{types/common → common}/browser-detection.d.ts +0 -0
  395. /package/dist/{types/common → common}/collection.d.ts +0 -0
  396. /package/dist/{types/common → common}/config.d.ts +0 -0
  397. /package/dist/{types/common → common}/errors/captcha-error.d.ts +0 -0
  398. /package/dist/{types/common → common}/errors/intent-to-join.d.ts +0 -0
  399. /package/dist/{types/common → common}/errors/join-meeting.d.ts +0 -0
  400. /package/dist/{types/common → common}/errors/media.d.ts +0 -0
  401. /package/dist/{types/common → common}/errors/parameter.d.ts +0 -0
  402. /package/dist/{types/common → common}/errors/password-error.d.ts +0 -0
  403. /package/dist/{types/common → common}/errors/permission.d.ts +0 -0
  404. /package/dist/{types/common → common}/errors/reconnection-in-progress.d.ts +0 -0
  405. /package/dist/{types/common → common}/errors/reconnection.d.ts +0 -0
  406. /package/dist/{types/common → common}/errors/stats.d.ts +0 -0
  407. /package/dist/{types/common → common}/errors/webex-meetings-error.d.ts +0 -0
  408. /package/dist/{types/common → common}/events/events-scope.d.ts +0 -0
  409. /package/dist/{types/common → common}/events/events.d.ts +0 -0
  410. /package/dist/{types/common → common}/events/trigger-proxy.d.ts +0 -0
  411. /package/dist/{types/common → common}/events/util.d.ts +0 -0
  412. /package/dist/{types/common → common}/logs/logger-config.d.ts +0 -0
  413. /package/dist/{types/common → common}/logs/logger-proxy.d.ts +0 -0
  414. /package/dist/{types/common → common}/queue.d.ts +0 -0
  415. /package/dist/{types/controls-options-manager → controls-options-manager}/constants.d.ts +0 -0
  416. /package/dist/{types/controls-options-manager → controls-options-manager}/enums.d.ts +0 -0
  417. /package/dist/{types/controls-options-manager → controls-options-manager}/index.d.ts +0 -0
  418. /package/dist/{types/controls-options-manager → controls-options-manager}/types.d.ts +0 -0
  419. /package/dist/{types/controls-options-manager → controls-options-manager}/util.d.ts +0 -0
  420. /package/dist/{types/index.d.ts → index.d.ts} +0 -0
  421. /package/dist/{types/interpretation → interpretation}/collection.d.ts +0 -0
  422. /package/dist/{types/interpretation → interpretation}/index.d.ts +0 -0
  423. /package/dist/{types/interpretation → interpretation}/siLanguage.d.ts +0 -0
  424. /package/dist/{types/locus-info → locus-info}/controlsUtils.d.ts +0 -0
  425. /package/dist/{types/locus-info → locus-info}/embeddedAppsUtils.d.ts +0 -0
  426. /package/dist/{types/locus-info → locus-info}/fullState.d.ts +0 -0
  427. /package/dist/{types/locus-info → locus-info}/hostUtils.d.ts +0 -0
  428. /package/dist/{types/locus-info → locus-info}/infoUtils.d.ts +0 -0
  429. /package/dist/{types/locus-info → locus-info}/mediaSharesUtils.d.ts +0 -0
  430. /package/dist/{types/locus-info → locus-info}/selfUtils.d.ts +0 -0
  431. /package/dist/{types/media → media}/index.d.ts +0 -0
  432. /package/dist/{types/media → media}/properties.d.ts +0 -0
  433. /package/dist/{types/media → media}/util.d.ts +0 -0
  434. /package/dist/{types/meeting → meeting}/muteState.d.ts +0 -0
  435. /package/dist/{types/meeting → meeting}/request.type.d.ts +0 -0
  436. /package/dist/{types/meeting → meeting}/state.d.ts +0 -0
  437. /package/dist/{types/meeting-info → meeting-info}/collection.d.ts +0 -0
  438. /package/dist/{types/meeting-info → meeting-info}/request.d.ts +0 -0
  439. /package/dist/{types/meeting-info → meeting-info}/util.d.ts +0 -0
  440. /package/dist/{types/meeting-info → meeting-info}/utilv2.d.ts +0 -0
  441. /package/dist/{types/meetings → meetings}/meetings.types.d.ts +0 -0
  442. /package/dist/{types/meetings → meetings}/request.d.ts +0 -0
  443. /package/dist/{types/meetings → meetings}/util.d.ts +0 -0
  444. /package/dist/{types/member → member}/types.d.ts +0 -0
  445. /package/dist/{types/member → member}/util.d.ts +0 -0
  446. /package/dist/{types/members → members}/collection.d.ts +0 -0
  447. /package/dist/{types/members → members}/index.d.ts +0 -0
  448. /package/dist/{types/members → members}/request.d.ts +0 -0
  449. /package/dist/{types/metrics → metrics}/index.d.ts +0 -0
  450. /package/dist/{types/multistream → multistream}/mediaRequestManager.d.ts +0 -0
  451. /package/dist/{types/multistream → multistream}/receiveSlot.d.ts +0 -0
  452. /package/dist/{types/multistream → multistream}/receiveSlotManager.d.ts +0 -0
  453. /package/dist/{types/multistream → multistream}/remoteMedia.d.ts +0 -0
  454. /package/dist/{types/multistream → multistream}/remoteMediaGroup.d.ts +0 -0
  455. /package/dist/{types/multistream → multistream}/sendSlotManager.d.ts +0 -0
  456. /package/dist/{types/networkQualityMonitor → networkQualityMonitor}/index.d.ts +0 -0
  457. /package/dist/{types/personal-meeting-room → personal-meeting-room}/index.d.ts +0 -0
  458. /package/dist/{types/personal-meeting-room → personal-meeting-room}/request.d.ts +0 -0
  459. /package/dist/{types/personal-meeting-room → personal-meeting-room}/util.d.ts +0 -0
  460. /package/dist/{types/reactions → reactions}/constants.d.ts +0 -0
  461. /package/dist/{types/reactions → reactions}/reactions.d.ts +0 -0
  462. /package/dist/{types/reactions → reactions}/reactions.type.d.ts +0 -0
  463. /package/dist/{types/recording-controller → recording-controller}/enums.d.ts +0 -0
  464. /package/dist/{types/recording-controller → recording-controller}/index.d.ts +0 -0
  465. /package/dist/{types/recording-controller → recording-controller}/util.d.ts +0 -0
  466. /package/dist/{types/rtcMetrics → rtcMetrics}/constants.d.ts +0 -0
  467. /package/dist/{types/statsAnalyzer → statsAnalyzer}/global.d.ts +0 -0
  468. /package/dist/{types/transcription → transcription}/index.d.ts +0 -0
  469. /package/test/unit/spec/locus-info/{selfConstant.js → lib/selfConstant.js} +0 -0
@@ -4,11 +4,82 @@ import {mean, max} from 'lodash';
4
4
 
5
5
  import {STATS} from '../constants';
6
6
 
7
- export const getAudioReceiverMqa = ({audioReceiver, statsResults, lastMqaDataSent, mediaType}) => {
7
+ /**
8
+ * Get the totals of a certain value from a certain media type.
9
+ *
10
+ * @param {object} stats - The large stats object.
11
+ * @param {string} sendrecvType - "send" or "recv".
12
+ * @param {string} baseMediaType - audio or video _and_ share or non-share.
13
+ * @param {string} value - The value we want to get the totals of.
14
+ * @returns {number}
15
+ */
16
+ const getTotalValueFromBaseType = (
17
+ stats: object,
18
+ sendrecvType: string,
19
+ baseMediaType: string,
20
+ value: string
21
+ ): number =>
22
+ Object.keys(stats)
23
+ .filter((mt) => mt.includes(baseMediaType))
24
+ .reduce((acc, mt) => acc + (stats[mt]?.[sendrecvType]?.[value] || 0), 0);
25
+
26
+ export const getAudioReceiverMqa = ({
27
+ audioReceiver,
28
+ statsResults,
29
+ lastMqaDataSent,
30
+ baseMediaType,
31
+ }) => {
32
+ const sendrecvType = STATS.RECEIVE_DIRECTION;
33
+
34
+ const getLastTotalValue = (value: string) =>
35
+ getTotalValueFromBaseType(lastMqaDataSent, sendrecvType, baseMediaType, value);
36
+ const getTotalValue = (value: string) =>
37
+ getTotalValueFromBaseType(statsResults, sendrecvType, baseMediaType, value);
38
+
39
+ const lastPacketsReceived = getLastTotalValue('totalPacketsReceived');
40
+ const lastPacketsLost = getLastTotalValue('totalPacketsLost');
41
+ const lastBytesReceived = getLastTotalValue('totalBytesReceived');
42
+ const lastFecPacketsReceived = getLastTotalValue('fecPacketsReceived');
43
+ const lastFecPacketsDiscarded = getLastTotalValue('fecPacketsDiscarded');
44
+
45
+ const totalPacketsReceived = getTotalValue('totalPacketsReceived');
46
+ const packetsLost = getTotalValue('totalPacketsLost');
47
+ const totalBytesReceived = getTotalValue('totalBytesReceived');
48
+ const totalFecPacketsReceived = getTotalValue('fecPacketsReceived');
49
+ const totalFecPacketsDiscarded = getTotalValue('fecPacketsDiscarded');
50
+
51
+ audioReceiver.common.common.direction =
52
+ statsResults[Object.keys(statsResults).find((mediaType) => mediaType.includes(baseMediaType))]
53
+ ?.direction || 'inactive';
54
+ audioReceiver.common.common.isMain = !baseMediaType.includes('-share');
55
+ audioReceiver.common.transportType = statsResults.connectionType.local.transport;
56
+
57
+ // add rtpPacket info inside common as also for call analyzer
58
+ audioReceiver.common.rtpPackets = totalPacketsReceived - lastPacketsReceived;
59
+
60
+ // Hop by hop are numbers and not percentage so we compare on what we sent the last min
61
+ // collect the packets received for the last min
62
+ const totalPacketsLost = packetsLost - lastPacketsLost;
63
+ audioReceiver.common.mediaHopByHopLost = totalPacketsLost;
64
+ audioReceiver.common.rtpHopByHopLost = totalPacketsLost;
65
+
66
+ const fecRecovered =
67
+ totalFecPacketsReceived -
68
+ lastFecPacketsReceived -
69
+ (totalFecPacketsDiscarded - lastFecPacketsDiscarded);
70
+ audioReceiver.common.fecPackets = fecRecovered;
71
+
72
+ audioReceiver.common.rtpBitrate = ((totalBytesReceived - lastBytesReceived) * 8) / 60 || 0;
73
+ };
74
+
75
+ export const getAudioReceiverStreamMqa = ({
76
+ audioReceiverStream,
77
+ statsResults,
78
+ lastMqaDataSent,
79
+ mediaType,
80
+ }) => {
8
81
  const sendrecvType = STATS.RECEIVE_DIRECTION;
9
82
 
10
- const lastPacketsReceived = lastMqaDataSent[mediaType]?.[sendrecvType].totalPacketsReceived || 0;
11
- const lastPacketsLost = lastMqaDataSent[mediaType]?.[sendrecvType].totalPacketsLost || 0;
12
83
  const lastPacketsDecoded = lastMqaDataSent[mediaType]?.[sendrecvType].totalSamplesDecoded || 0;
13
84
  const lastSamplesReceived = lastMqaDataSent[mediaType]?.[sendrecvType].totalSamplesReceived || 0;
14
85
  const lastConcealedSamples = lastMqaDataSent[mediaType]?.[sendrecvType].concealedSamples || 0;
@@ -16,32 +87,23 @@ export const getAudioReceiverMqa = ({audioReceiver, statsResults, lastMqaDataSen
16
87
  const lastFecPacketsReceived = lastMqaDataSent[mediaType]?.[sendrecvType].fecPacketsReceived || 0;
17
88
  const lastFecPacketsDiscarded =
18
89
  lastMqaDataSent[mediaType]?.[sendrecvType].fecPacketsDiscarded || 0;
90
+ const lastPacketsReceived = lastMqaDataSent[mediaType]?.[sendrecvType].totalPacketsReceived || 0;
91
+ const lastPacketsLost = lastMqaDataSent[mediaType]?.[sendrecvType].totalPacketsLost || 0;
19
92
 
20
93
  const {csi} = statsResults[mediaType];
21
- if (csi && !audioReceiver.streams[0].common.csi.includes(csi)) {
22
- audioReceiver.streams[0].common.csi.push(csi);
94
+ if (csi && !audioReceiverStream.common.csi.includes(csi)) {
95
+ audioReceiverStream.common.csi.push(csi);
23
96
  }
24
97
 
25
- audioReceiver.common.common.direction = statsResults[mediaType].direction;
26
- audioReceiver.common.transportType = statsResults.connectionType.remote.transport[0];
27
-
28
- // add rtpPacket info inside common as also for call analyzer
29
- audioReceiver.common.rtpPackets =
98
+ audioReceiverStream.common.rtpPackets =
30
99
  statsResults[mediaType][sendrecvType].totalPacketsReceived - lastPacketsReceived || 0;
31
- // Hop by hop are numbers and not percentage so we compare on what we sent the last min
32
- // collect the packets received for the last min
33
- audioReceiver.streams[0].common.rtpPackets = audioReceiver.common.rtpPackets;
34
- audioReceiver.common.mediaHopByHopLost =
35
- statsResults[mediaType][sendrecvType].totalPacketsLost - lastPacketsLost || 0;
36
- audioReceiver.common.rtpHopByHopLost =
37
- statsResults[mediaType][sendrecvType].totalPacketsLost - lastPacketsLost || 0;
38
100
 
39
- audioReceiver.streams[0].common.maxRtpJitter =
101
+ audioReceiverStream.common.maxRtpJitter =
40
102
  // @ts-ignore
41
103
  max(statsResults[mediaType][sendrecvType].meanRtpJitter) * 1000 || 0;
42
- audioReceiver.streams[0].common.meanRtpJitter =
104
+ audioReceiverStream.common.meanRtpJitter =
43
105
  mean(statsResults[mediaType][sendrecvType].meanRtpJitter) * 1000 || 0;
44
- audioReceiver.streams[0].common.rtpJitter = audioReceiver.streams[0].common.maxRtpJitter;
106
+ audioReceiverStream.common.rtpJitter = audioReceiverStream.common.maxRtpJitter;
45
107
 
46
108
  // Fec packets do come in as part of the FEC only for audio
47
109
  const fecRecovered =
@@ -49,86 +111,171 @@ export const getAudioReceiverMqa = ({audioReceiver, statsResults, lastMqaDataSen
49
111
  lastFecPacketsReceived -
50
112
  (statsResults[mediaType][sendrecvType].fecPacketsDiscarded - lastFecPacketsDiscarded);
51
113
 
52
- audioReceiver.streams[0].common.rtpEndToEndLost =
114
+ audioReceiverStream.common.rtpEndToEndLost =
53
115
  statsResults[mediaType][sendrecvType].totalPacketsLost - lastPacketsLost - fecRecovered || 0;
54
116
 
55
- audioReceiver.streams[0].common.framesDropped =
117
+ audioReceiverStream.common.framesDropped =
56
118
  statsResults[mediaType][sendrecvType].totalSamplesDecoded - lastPacketsDecoded || 0;
57
- audioReceiver.streams[0].common.renderedFrameRate =
58
- (audioReceiver.streams[0].common.framesDropped * 100) / 60 || 0;
119
+ audioReceiverStream.common.renderedFrameRate =
120
+ (audioReceiverStream.common.framesDropped * 100) / 60 || 0;
59
121
 
60
- audioReceiver.streams[0].common.framesReceived =
122
+ audioReceiverStream.common.framesReceived =
61
123
  statsResults[mediaType][sendrecvType].totalSamplesReceived - lastSamplesReceived || 0;
62
- audioReceiver.streams[0].common.concealedFrames =
124
+ audioReceiverStream.common.concealedFrames =
63
125
  statsResults[mediaType][sendrecvType].concealedSamples - lastConcealedSamples || 0;
64
- audioReceiver.streams[0].common.receivedBitrate =
126
+ audioReceiverStream.common.receivedBitrate =
65
127
  ((statsResults[mediaType][sendrecvType].totalBytesReceived - lastBytesReceived) * 8) / 60 || 0;
66
-
67
- audioReceiver.common.rtpBitrate = audioReceiver.streams[0].common.receivedBitrate;
68
128
  };
69
129
 
70
- export const getAudioSenderMqa = ({audioSender, statsResults, lastMqaDataSent, mediaType}) => {
130
+ export const getAudioSenderMqa = ({audioSender, statsResults, lastMqaDataSent, baseMediaType}) => {
71
131
  const sendrecvType = STATS.SEND_DIRECTION;
72
132
 
73
- const lastPacketsSent = lastMqaDataSent[mediaType]?.[sendrecvType].totalPacketsSent || 0;
74
- const lastPacketsLost =
75
- lastMqaDataSent[mediaType]?.[sendrecvType].totalPacketsLostOnReceiver || 0;
76
- const lastBytesSent = lastMqaDataSent[mediaType]?.[sendrecvType].totalBytesSent || 0;
77
- const lastFramesEncoded = lastMqaDataSent[mediaType]?.[sendrecvType].totalKeyFramesEncoded || 0;
78
- const lastFirCount = lastMqaDataSent[mediaType]?.[sendrecvType].totalFirCount || 0;
133
+ const getLastTotalValue = (value: string) =>
134
+ getTotalValueFromBaseType(lastMqaDataSent, sendrecvType, baseMediaType, value);
135
+ const getTotalValue = (value: string) =>
136
+ getTotalValueFromBaseType(statsResults, sendrecvType, baseMediaType, value);
79
137
 
80
- const {csi} = statsResults[mediaType];
81
- if (csi && !audioSender.streams[0].common.csi.includes(csi)) {
82
- audioSender.streams[0].common.csi.push(csi);
83
- }
138
+ const lastPacketsSent = getLastTotalValue('totalPacketsSent');
139
+ const lastPacketsLostTotal = getLastTotalValue('totalPacketsLostOnReceiver');
84
140
 
85
- audioSender.common.common.direction = statsResults[mediaType].direction;
86
- audioSender.common.transportType = statsResults.connectionType.local.transport[0];
141
+ const totalPacketsLostOnReceiver = getTotalValue('totalPacketsLostOnReceiver');
142
+ const totalPacketsSent = getTotalValue('totalPacketsSent');
87
143
 
88
- audioSender.common.maxRemoteJitter =
89
- // @ts-ignore
90
- max(statsResults[mediaType][sendrecvType].meanRemoteJitter) * 1000 || 0;
91
- audioSender.common.meanRemoteJitter =
92
- mean(statsResults[mediaType][sendrecvType].meanRemoteJitter) * 1000 || 0;
144
+ const meanRemoteJitter = Object.keys(statsResults)
145
+ .filter((mt) => mt.includes(baseMediaType))
146
+ .reduce((acc, mt) => acc.concat(statsResults[mt][sendrecvType].meanRemoteJitter), []);
147
+ const meanRoundTripTime = Object.keys(statsResults)
148
+ .filter((mt) => mt.includes(baseMediaType))
149
+ .reduce((acc, mt) => acc.concat(statsResults[mt][sendrecvType].meanRoundTripTime), []);
93
150
 
94
- audioSender.common.rtpPackets =
95
- statsResults[mediaType][sendrecvType].totalPacketsSent - lastPacketsSent || 0;
96
- audioSender.streams[0].common.rtpPackets = audioSender.common.rtpPackets;
151
+ audioSender.common.common.direction =
152
+ statsResults[Object.keys(statsResults).find((mediaType) => mediaType.includes(baseMediaType))]
153
+ ?.direction || 'inactive';
154
+ audioSender.common.common.isMain = !baseMediaType.includes('-share');
155
+ audioSender.common.transportType = statsResults.connectionType.local.transport;
156
+
157
+ audioSender.common.maxRemoteJitter = max(meanRemoteJitter) * 1000 || 0;
158
+ audioSender.common.meanRemoteJitter = mean(meanRemoteJitter) * 1000 || 0;
159
+
160
+ audioSender.common.rtpPackets = totalPacketsSent - lastPacketsSent || 0;
161
+ // audioSender.streams[0].common.rtpPackets = audioSender.common.rtpPackets;
97
162
  // From candidate-pair
98
- audioSender.common.availableBitrate =
99
- statsResults[mediaType][sendrecvType].availableOutgoingBitrate || 0;
163
+ audioSender.common.availableBitrate = getTotalValueFromBaseType(
164
+ statsResults,
165
+ sendrecvType,
166
+ baseMediaType,
167
+ 'availableOutgoingBitrate'
168
+ );
100
169
  // Calculate based on how much packets lost of received compated to how to the client sent
101
170
 
102
- const totalpacketsLostForaMin =
103
- statsResults[mediaType][sendrecvType].totalPacketsLostOnReceiver - lastPacketsLost;
104
-
171
+ const totalPacketsLostForaMin = totalPacketsLostOnReceiver - lastPacketsLostTotal;
105
172
  audioSender.common.remoteLossRate =
106
- totalpacketsLostForaMin > 0
107
- ? (totalpacketsLostForaMin * 100) / audioSender.common.rtpPackets
108
- : 0; // This is the packets sent with in last min || 0;
173
+ totalPacketsSent - lastPacketsSent > 0
174
+ ? (totalPacketsLostForaMin * 100) / (totalPacketsSent - lastPacketsSent)
175
+ : 0; // This is the packets sent with in last min
109
176
 
110
- audioSender.common.maxRoundTripTime =
111
- // @ts-ignore
112
- max(statsResults[mediaType][sendrecvType].meanRoundTripTime) * 1000 || 0;
113
- audioSender.common.meanRoundTripTime =
114
- mean(statsResults[mediaType][sendrecvType].meanRoundTripTime) * 1000 || 0;
177
+ audioSender.common.maxRoundTripTime = max(meanRoundTripTime) * 1000 || 0;
178
+ audioSender.common.meanRoundTripTime = mean(meanRoundTripTime) * 1000 || 0;
115
179
  audioSender.common.roundTripTime = audioSender.common.maxRoundTripTime;
116
180
 
117
181
  // Calculate the outgoing bitrate
118
- const totalBytesSentInaMin = statsResults[mediaType][sendrecvType].totalBytesSent - lastBytesSent;
182
+ const totalBytesSentInaMin =
183
+ getTotalValueFromBaseType(statsResults, sendrecvType, baseMediaType, 'totalBytesSent') -
184
+ getTotalValueFromBaseType(lastMqaDataSent, sendrecvType, baseMediaType, 'totalBytesSent');
185
+
186
+ audioSender.common.rtpBitrate = totalBytesSentInaMin ? (totalBytesSentInaMin * 8) / 60 : 0;
187
+ };
188
+
189
+ export const getAudioSenderStreamMqa = ({
190
+ audioSenderStream,
191
+ statsResults,
192
+ lastMqaDataSent,
193
+ mediaType,
194
+ }) => {
195
+ const sendrecvType = STATS.SEND_DIRECTION;
196
+
197
+ const lastBytesSent = lastMqaDataSent[mediaType]?.[sendrecvType].totalBytesSent || 0;
198
+ const lastFramesEncoded = lastMqaDataSent[mediaType]?.[sendrecvType].totalKeyFramesEncoded || 0;
199
+ const lastFirCount = lastMqaDataSent[mediaType]?.[sendrecvType].totalFirCount || 0;
200
+ const lastPacketsSent = lastMqaDataSent[mediaType]?.[sendrecvType].totalPacketsSent || 0;
201
+
202
+ const {csi} = statsResults[mediaType];
203
+ if (csi && !audioSenderStream.common.csi.includes(csi)) {
204
+ audioSenderStream.common.csi.push(csi);
205
+ }
206
+
207
+ audioSenderStream.common.rtpPackets =
208
+ statsResults[mediaType][sendrecvType].totalPacketsSent - lastPacketsSent || 0;
119
209
 
120
- audioSender.streams[0].common.transmittedBitrate = totalBytesSentInaMin
210
+ const totalBytesSentInaMin = statsResults[mediaType][sendrecvType].totalBytesSent - lastBytesSent;
211
+ audioSenderStream.common.transmittedBitrate = totalBytesSentInaMin
121
212
  ? (totalBytesSentInaMin * 8) / 60
122
213
  : 0;
123
- audioSender.common.rtpBitrate = audioSender.streams[0].common.transmittedBitrate;
124
214
 
125
- audioSender.streams[0].transmittedKeyFrames =
215
+ audioSenderStream.transmittedKeyFrames =
126
216
  statsResults[mediaType][sendrecvType].totalKeyFramesEncoded - lastFramesEncoded || 0;
127
- audioSender.streams[0].requestedKeyFrames =
217
+ audioSenderStream.requestedKeyFrames =
128
218
  statsResults[mediaType][sendrecvType].totalFirCount - lastFirCount || 0;
129
219
  };
130
220
 
131
- export const getVideoReceiverMqa = ({videoReceiver, statsResults, lastMqaDataSent, mediaType}) => {
221
+ export const getVideoReceiverMqa = ({
222
+ videoReceiver,
223
+ statsResults,
224
+ lastMqaDataSent,
225
+ baseMediaType,
226
+ }) => {
227
+ const sendrecvType = STATS.RECEIVE_DIRECTION;
228
+
229
+ const getLastTotalValue = (value: string) =>
230
+ getTotalValueFromBaseType(lastMqaDataSent, sendrecvType, baseMediaType, value);
231
+ const getTotalValue = (value: string) =>
232
+ getTotalValueFromBaseType(statsResults, sendrecvType, baseMediaType, value);
233
+
234
+ const lastPacketsReceived = getLastTotalValue('totalPacketsReceived');
235
+ const lastPacketsLost = getLastTotalValue('totalPacketsLost');
236
+ const lastBytesReceived = getLastTotalValue('totalBytesReceived');
237
+
238
+ const packetsLost = getTotalValue('totalPacketsLost');
239
+ const totalPacketsReceived = getTotalValue('totalPacketsReceived');
240
+ const totalBytesReceived = getTotalValue('totalBytesReceived');
241
+
242
+ const meanRemoteJitter = Object.keys(statsResults)
243
+ .filter((mt) => mt.includes(baseMediaType))
244
+ .reduce((acc, mt) => acc.concat(statsResults[mt][sendrecvType].meanRemoteJitter), []);
245
+
246
+ videoReceiver.common.common.direction =
247
+ statsResults[Object.keys(statsResults).find((mediaType) => mediaType.includes(baseMediaType))]
248
+ ?.direction || 'inactive';
249
+ videoReceiver.common.common.isMain = !baseMediaType.includes('-share');
250
+ videoReceiver.common.transportType = statsResults.connectionType.local.transport;
251
+
252
+ // collect the packets received for the last min
253
+ videoReceiver.common.rtpPackets = totalPacketsReceived - lastPacketsReceived || 0;
254
+
255
+ // Hop by hop are numbers and not percentage so we compare on what we sent the last min
256
+ // this is including packet lost
257
+ const totalPacketsLost = packetsLost - lastPacketsLost;
258
+ videoReceiver.common.mediaHopByHopLost = totalPacketsLost;
259
+ videoReceiver.common.rtpHopByHopLost = totalPacketsLost;
260
+
261
+ // calculate this values
262
+ videoReceiver.common.maxRemoteJitter = max(meanRemoteJitter) * 1000 || 0;
263
+ videoReceiver.common.meanRemoteJitter = mean(meanRemoteJitter) * 1000 || 0;
264
+
265
+ // Calculate the outgoing bitrate
266
+ const totalBytesReceivedInaMin = totalBytesReceived - lastBytesReceived;
267
+
268
+ videoReceiver.common.rtpBitrate = totalBytesReceivedInaMin
269
+ ? (totalBytesReceivedInaMin * 8) / 60
270
+ : 0;
271
+ };
272
+
273
+ export const getVideoReceiverStreamMqa = ({
274
+ videoReceiverStream,
275
+ statsResults,
276
+ lastMqaDataSent,
277
+ mediaType,
278
+ }) => {
132
279
  const sendrecvType = STATS.RECEIVE_DIRECTION;
133
280
 
134
281
  const lastPacketsReceived = lastMqaDataSent[mediaType]?.[sendrecvType].totalPacketsReceived || 0;
@@ -141,151 +288,153 @@ export const getVideoReceiverMqa = ({videoReceiver, statsResults, lastMqaDataSen
141
288
  const lastPliCount = lastMqaDataSent[mediaType]?.[sendrecvType].totalPliCount || 0;
142
289
 
143
290
  const {csi} = statsResults[mediaType];
144
- if (csi && !videoReceiver.streams[0].common.csi.includes(csi)) {
145
- videoReceiver.streams[0].common.csi.push(csi);
291
+ if (csi && !videoReceiverStream.common.csi.includes(csi)) {
292
+ videoReceiverStream.common.csi.push(csi);
146
293
  }
147
294
 
148
- videoReceiver.common.common.direction = statsResults[mediaType].direction;
149
- videoReceiver.common.transportType = statsResults.connectionType.remote.transport[0];
150
- // collect the packets received for the last min
151
- videoReceiver.common.rtpPackets =
295
+ videoReceiverStream.common.rtpPackets =
152
296
  statsResults[mediaType][sendrecvType].totalPacketsReceived - lastPacketsReceived || 0;
153
- videoReceiver.streams[0].common.rtpPackets = videoReceiver.common.rtpPackets;
154
297
 
155
298
  const totalPacketLoss =
156
299
  statsResults[mediaType][sendrecvType].totalPacketsLost - lastPacketsLost || 0;
157
300
 
158
- // Hope by hop are numbers and not percentage so we compare on what we sent the last min
159
- // this is including packet lost
160
- videoReceiver.common.mediaHopByHopLost = totalPacketLoss;
161
- videoReceiver.common.rtpHopByHopLost = totalPacketLoss;
162
-
163
301
  // End to end packetloss is after recovery
164
- videoReceiver.streams[0].common.rtpEndToEndLost = totalPacketLoss;
302
+ videoReceiverStream.common.rtpEndToEndLost = totalPacketLoss;
165
303
 
166
- // calculate this values
167
-
168
- videoReceiver.common.maxRemoteJitter =
304
+ videoReceiverStream.common.rtpJitter =
169
305
  // @ts-ignore
170
306
  max(statsResults[mediaType][sendrecvType].meanRemoteJitter) * 1000 || 0;
171
- videoReceiver.common.meanRemoteJitter =
172
- mean(statsResults[mediaType][sendrecvType].meanRemoteJitter) * 1000 || 0;
173
307
 
174
- videoReceiver.streams[0].common.rtpJitter = videoReceiver.common.maxRemoteJitter;
175
- // videoReceiver.streams[0].common.rtpJitter = (statsResults.resolutions[mediaType][sendrecvType].jitterBufferDelay - lastMqaDataSent.resolutions[mediaType]?.[sendrecvType].jitterBufferDelay) / (statsResults.resolutions[mediaType][sendrecvType].jitterBufferEmittedCount - lastMqaDataSent.resolutions[mediaType]?.[sendrecvType].jitterBufferEmittedCount) * 1000 || 0;
176
-
177
- // Calculate the outgoing bitrate
178
308
  const totalBytesReceivedInaMin =
179
309
  statsResults[mediaType][sendrecvType].totalBytesReceived - lastBytesReceived;
180
-
181
- videoReceiver.streams[0].common.receivedBitrate = totalBytesReceivedInaMin
310
+ videoReceiverStream.common.receivedBitrate = totalBytesReceivedInaMin
182
311
  ? (totalBytesReceivedInaMin * 8) / 60
183
312
  : 0;
184
- videoReceiver.common.rtpBitrate = videoReceiver.streams[0].common.receivedBitrate;
185
313
 
186
- // From tracks //TODO: calculate a proper one
187
314
  const totalFrameReceivedInaMin =
188
- statsResults.resolutions[mediaType][sendrecvType].framesReceived - lastFramesReceived;
315
+ statsResults[mediaType][sendrecvType].framesReceived - lastFramesReceived;
189
316
  const totalFrameDecodedInaMin =
190
- statsResults.resolutions[mediaType][sendrecvType].framesDecoded - lastFramesDecoded;
191
-
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;
198
-
199
- videoReceiver.streams[0].common.framesDropped =
200
- statsResults.resolutions[mediaType][sendrecvType].framesDropped - lastFramesDropped;
201
- videoReceiver.streams[0].receivedHeight =
202
- statsResults.resolutions[mediaType][sendrecvType].height || 0;
203
- videoReceiver.streams[0].receivedWidth =
204
- statsResults.resolutions[mediaType][sendrecvType].width || 0;
205
- videoReceiver.streams[0].receivedFrameSize =
206
- (videoReceiver.streams[0].receivedHeight * videoReceiver.streams[0].receivedWidth) / 256;
207
-
208
- videoReceiver.streams[0].receivedKeyFrames =
317
+ statsResults[mediaType][sendrecvType].framesDecoded - lastFramesDecoded;
318
+
319
+ videoReceiverStream.common.receivedFrameRate = Math.round(
320
+ totalFrameReceivedInaMin ? totalFrameReceivedInaMin / 60 : 0
321
+ );
322
+ videoReceiverStream.common.renderedFrameRate = Math.round(
323
+ totalFrameDecodedInaMin ? totalFrameDecodedInaMin / 60 : 0
324
+ );
325
+
326
+ videoReceiverStream.common.framesDropped =
327
+ statsResults[mediaType][sendrecvType].framesDropped - lastFramesDropped || 0;
328
+ videoReceiverStream.receivedHeight = statsResults[mediaType][sendrecvType].height || 0;
329
+ videoReceiverStream.receivedWidth = statsResults[mediaType][sendrecvType].width || 0;
330
+ videoReceiverStream.receivedFrameSize =
331
+ (videoReceiverStream.receivedHeight * videoReceiverStream.receivedWidth) / 256;
332
+
333
+ videoReceiverStream.receivedKeyFrames =
209
334
  statsResults[mediaType][sendrecvType].keyFramesDecoded - lastKeyFramesDecoded || 0;
210
- videoReceiver.streams[0].requestedKeyFrames =
335
+ videoReceiverStream.requestedKeyFrames =
211
336
  statsResults[mediaType][sendrecvType].totalPliCount - lastPliCount || 0;
212
337
  };
213
338
 
214
- export const getVideoSenderMqa = ({videoSender, statsResults, lastMqaDataSent, mediaType}) => {
339
+ export const getVideoSenderMqa = ({videoSender, statsResults, lastMqaDataSent, baseMediaType}) => {
215
340
  const sendrecvType = STATS.SEND_DIRECTION;
216
341
 
217
- const lastPacketsSent = lastMqaDataSent[mediaType]?.[sendrecvType].totalPacketsSent || 0;
218
- const lastPacketsLost =
219
- lastMqaDataSent[mediaType]?.[sendrecvType].totalPacketsLostOnReceiver || 0;
220
- const lastBytesSent = lastMqaDataSent[mediaType]?.[sendrecvType].totalBytesSent || 0;
221
- const lastKeyFramesEncoded =
222
- lastMqaDataSent[mediaType]?.[sendrecvType].totalKeyFramesEncoded || 0;
223
- const lastFirCount = lastMqaDataSent[mediaType]?.[sendrecvType].totalFirCount || 0;
224
- const lastFramesSent = lastMqaDataSent[mediaType]?.[sendrecvType].framesSent || 0;
225
- const {csi} = statsResults[mediaType];
226
- if (csi && !videoSender.streams[0].common.csi.includes(csi)) {
227
- videoSender.streams[0].common.csi.push(csi);
228
- }
229
-
230
- videoSender.common.common.direction = statsResults[mediaType].direction;
231
- videoSender.common.transportType = statsResults.connectionType.local.transport[0];
342
+ const getLastTotalValue = (value: string) =>
343
+ getTotalValueFromBaseType(lastMqaDataSent, sendrecvType, baseMediaType, value);
344
+ const getTotalValue = (value: string) =>
345
+ getTotalValueFromBaseType(statsResults, sendrecvType, baseMediaType, value);
346
+
347
+ const lastPacketsSent = getLastTotalValue('totalPacketsSent');
348
+ const lastBytesSent = getLastTotalValue('totalBytesSent');
349
+ const lastPacketsLostTotal = getLastTotalValue('totalPacketsLostOnReceiver');
350
+
351
+ const totalPacketsLostOnReceiver = getTotalValue('totalPacketsLostOnReceiver');
352
+ const totalPacketsSent = getTotalValue('totalPacketsSent');
353
+ const totalBytesSent = getTotalValue('totalBytesSent');
354
+ const availableOutgoingBitrate = getTotalValue('availableOutgoingBitrate');
355
+
356
+ videoSender.common.common.direction =
357
+ statsResults[Object.keys(statsResults).find((mediaType) => mediaType.includes(baseMediaType))]
358
+ ?.direction || 'inactive';
359
+ videoSender.common.common.isMain = !baseMediaType.includes('-share');
360
+ videoSender.common.transportType = statsResults.connectionType.local.transport;
361
+
362
+ const meanRemoteJitter = Object.keys(statsResults)
363
+ .filter((mt) => mt.includes(baseMediaType))
364
+ .reduce((acc, mt) => acc.concat(statsResults[mt][sendrecvType].meanRemoteJitter), []);
365
+ const meanRoundTripTime = Object.keys(statsResults)
366
+ .filter((mt) => mt.includes(baseMediaType))
367
+ .reduce((acc, mt) => acc.concat(statsResults[mt][sendrecvType].meanRoundTripTime), []);
232
368
 
233
369
  // @ts-ignore
234
- videoSender.common.maxRemoteJitter =
235
- // @ts-ignore
236
- max(statsResults[mediaType][sendrecvType].meanRemoteJitter) * 1000 || 0;
237
- videoSender.common.meanRemoteJitter =
238
- mean(statsResults[mediaType][sendrecvType].meanRemoteJitter) * 1000 || 0;
370
+ videoSender.common.maxRemoteJitter = max(meanRemoteJitter) * 1000 || 0;
371
+ videoSender.common.meanRemoteJitter = mean(meanRemoteJitter) * 1000 || 0;
239
372
 
240
- videoSender.common.rtpPackets =
241
- statsResults[mediaType][sendrecvType].totalPacketsSent - lastPacketsSent || 0;
242
- videoSender.common.availableBitrate =
243
- statsResults[mediaType][sendrecvType].availableOutgoingBitrate || 0;
244
- // Calculate based on how much packets lost of received compated to how to the client sent
373
+ videoSender.common.rtpPackets = totalPacketsSent - lastPacketsSent;
374
+ videoSender.common.availableBitrate = availableOutgoingBitrate;
245
375
 
246
- const totalpacketsLostForaMin =
247
- statsResults[mediaType][sendrecvType].totalPacketsLostOnReceiver - lastPacketsLost;
376
+ // Calculate based on how much packets lost of received compated to how to the client sent
377
+ const totalPacketsLostForaMin = totalPacketsLostOnReceiver - lastPacketsLostTotal;
248
378
 
249
379
  videoSender.common.remoteLossRate =
250
- totalpacketsLostForaMin > 0
251
- ? (totalpacketsLostForaMin * 100) / (videoSender.common.rtpPackets + totalpacketsLostForaMin)
380
+ totalPacketsSent - lastPacketsSent > 0
381
+ ? (totalPacketsLostForaMin * 100) / (totalPacketsSent - lastPacketsSent)
252
382
  : 0; // This is the packets sent with in last min || 0;
253
383
 
254
- videoSender.common.maxRoundTripTime =
255
- // @ts-ignore
256
- max(statsResults[mediaType][sendrecvType].meanRoundTripTime) * 1000 || 0;
257
- videoSender.common.meanRoundTripTime =
258
- mean(statsResults[mediaType][sendrecvType].meanRoundTripTime) * 1000 || 0;
384
+ videoSender.common.maxRoundTripTime = max(meanRoundTripTime) * 1000 || 0;
385
+ videoSender.common.meanRoundTripTime = mean(meanRoundTripTime) * 1000 || 0;
259
386
  videoSender.common.roundTripTime = videoSender.common.maxRoundTripTime;
260
387
 
261
- videoSender.streams[0].common.rtpPackets =
388
+ // Calculate the outgoing bitrate
389
+ const totalBytesSentInaMin = totalBytesSent - lastBytesSent;
390
+
391
+ videoSender.common.rtpBitrate = totalBytesSentInaMin ? (totalBytesSentInaMin * 8) / 60 : 0;
392
+ };
393
+
394
+ export const getVideoSenderStreamMqa = ({
395
+ videoSenderStream,
396
+ statsResults,
397
+ lastMqaDataSent,
398
+ mediaType,
399
+ }) => {
400
+ const sendrecvType = STATS.SEND_DIRECTION;
401
+
402
+ const lastPacketsSent = lastMqaDataSent[mediaType]?.[sendrecvType].totalPacketsSent || 0;
403
+ const lastBytesSent = lastMqaDataSent[mediaType]?.[sendrecvType].totalBytesSent || 0;
404
+ const lastKeyFramesEncoded =
405
+ lastMqaDataSent[mediaType]?.[sendrecvType].totalKeyFramesEncoded || 0;
406
+ const lastFirCount = lastMqaDataSent[mediaType]?.[sendrecvType].totalFirCount || 0;
407
+ const lastFramesSent = lastMqaDataSent[mediaType]?.[sendrecvType].framesSent || 0;
408
+
409
+ const {csi} = statsResults[mediaType];
410
+ if (csi && !videoSenderStream.common.csi.includes(csi)) {
411
+ videoSenderStream.common.csi.push(csi);
412
+ }
413
+
414
+ videoSenderStream.common.rtpPackets =
262
415
  statsResults[mediaType][sendrecvType].totalPacketsSent - lastPacketsSent || 0;
263
416
 
264
417
  // Calculate the outgoing bitrate
265
418
  const totalBytesSentInaMin = statsResults[mediaType][sendrecvType].totalBytesSent - lastBytesSent;
266
419
 
267
- videoSender.streams[0].common.transmittedBitrate = totalBytesSentInaMin
420
+ videoSenderStream.common.transmittedBitrate = totalBytesSentInaMin
268
421
  ? (totalBytesSentInaMin * 8) / 60
269
422
  : 0;
270
423
 
271
- videoSender.common.rtpBitrate = videoSender.streams[0].common.transmittedBitrate;
272
-
273
- videoSender.streams[0].transmittedKeyFrames =
424
+ videoSenderStream.transmittedKeyFrames =
274
425
  statsResults[mediaType][sendrecvType].totalKeyFramesEncoded - lastKeyFramesEncoded || 0;
275
- videoSender.streams[0].requestedKeyFrames =
426
+ videoSenderStream.requestedKeyFrames =
276
427
  statsResults[mediaType][sendrecvType].totalFirCount - lastFirCount || 0;
277
428
 
278
429
  // From tracks //TODO: calculate a proper one
279
430
  const totalFrameSentInaMin =
280
- statsResults.resolutions[mediaType][sendrecvType].framesSent - (lastFramesSent || 0);
281
-
282
- videoSender.streams[0].common.transmittedFrameRate = totalFrameSentInaMin
283
- ? (totalFrameSentInaMin * 100) / 60
284
- : 0;
285
- videoSender.streams[0].transmittedHeight =
286
- statsResults.resolutions[mediaType][sendrecvType].height || 0;
287
- videoSender.streams[0].transmittedWidth =
288
- statsResults.resolutions[mediaType][sendrecvType].width || 0;
289
- videoSender.streams[0].transmittedFrameSize =
290
- (videoSender.streams[0].transmittedHeight * videoSender.streams[0].transmittedWidth) / 256;
431
+ statsResults[mediaType][sendrecvType].framesSent - (lastFramesSent || 0);
432
+
433
+ videoSenderStream.common.transmittedFrameRate = Math.round(
434
+ totalFrameSentInaMin ? totalFrameSentInaMin / 60 : 0
435
+ );
436
+ videoSenderStream.transmittedHeight = statsResults[mediaType][sendrecvType].height || 0;
437
+ videoSenderStream.transmittedWidth = statsResults[mediaType][sendrecvType].width || 0;
438
+ videoSenderStream.transmittedFrameSize =
439
+ (videoSenderStream.transmittedHeight * videoSenderStream.transmittedWidth) / 256;
291
440
  };
@@ -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;