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

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