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

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