@webex/plugin-meetings 3.0.0-beta.31 → 3.0.0-beta.310

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (378) hide show
  1. package/README.md +46 -8
  2. package/dist/annotation/annotation.types.js +7 -0
  3. package/dist/annotation/annotation.types.js.map +1 -0
  4. package/dist/annotation/constants.js +49 -0
  5. package/dist/annotation/constants.js.map +1 -0
  6. package/dist/annotation/index.js +342 -0
  7. package/dist/annotation/index.js.map +1 -0
  8. package/dist/breakouts/breakout.js +94 -15
  9. package/dist/breakouts/breakout.js.map +1 -1
  10. package/dist/breakouts/edit-lock-error.js +52 -0
  11. package/dist/breakouts/edit-lock-error.js.map +1 -0
  12. package/dist/breakouts/events.js +45 -0
  13. package/dist/breakouts/events.js.map +1 -0
  14. package/dist/breakouts/index.js +709 -35
  15. package/dist/breakouts/index.js.map +1 -1
  16. package/dist/breakouts/utils.js +45 -1
  17. package/dist/breakouts/utils.js.map +1 -1
  18. package/dist/common/errors/no-meeting-info.js +51 -0
  19. package/dist/common/errors/no-meeting-info.js.map +1 -0
  20. package/dist/common/errors/reclaim-host-role-errors.js +158 -0
  21. package/dist/common/errors/reclaim-host-role-errors.js.map +1 -0
  22. package/dist/common/errors/webex-errors.js +48 -7
  23. package/dist/common/errors/webex-errors.js.map +1 -1
  24. package/dist/common/logs/logger-proxy.js +1 -1
  25. package/dist/common/logs/logger-proxy.js.map +1 -1
  26. package/dist/common/logs/request.js +5 -1
  27. package/dist/common/logs/request.js.map +1 -1
  28. package/dist/common/queue.js +24 -9
  29. package/dist/common/queue.js.map +1 -1
  30. package/dist/config.js +5 -11
  31. package/dist/config.js.map +1 -1
  32. package/dist/constants.js +233 -29
  33. package/dist/constants.js.map +1 -1
  34. package/dist/controls-options-manager/enums.js +14 -2
  35. package/dist/controls-options-manager/enums.js.map +1 -1
  36. package/dist/controls-options-manager/index.js +109 -15
  37. package/dist/controls-options-manager/index.js.map +1 -1
  38. package/dist/controls-options-manager/types.js +7 -0
  39. package/dist/controls-options-manager/types.js.map +1 -0
  40. package/dist/controls-options-manager/util.js +309 -18
  41. package/dist/controls-options-manager/util.js.map +1 -1
  42. package/dist/index.js +112 -1
  43. package/dist/index.js.map +1 -1
  44. package/dist/interpretation/collection.js +23 -0
  45. package/dist/interpretation/collection.js.map +1 -0
  46. package/dist/interpretation/index.js +366 -0
  47. package/dist/interpretation/index.js.map +1 -0
  48. package/dist/interpretation/siLanguage.js +25 -0
  49. package/dist/interpretation/siLanguage.js.map +1 -0
  50. package/dist/locus-info/controlsUtils.js +91 -2
  51. package/dist/locus-info/controlsUtils.js.map +1 -1
  52. package/dist/locus-info/index.js +383 -62
  53. package/dist/locus-info/index.js.map +1 -1
  54. package/dist/locus-info/infoUtils.js +7 -1
  55. package/dist/locus-info/infoUtils.js.map +1 -1
  56. package/dist/locus-info/mediaSharesUtils.js +57 -1
  57. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  58. package/dist/locus-info/parser.js +249 -72
  59. package/dist/locus-info/parser.js.map +1 -1
  60. package/dist/locus-info/selfUtils.js +89 -14
  61. package/dist/locus-info/selfUtils.js.map +1 -1
  62. package/dist/media/index.js +61 -116
  63. package/dist/media/index.js.map +1 -1
  64. package/dist/media/properties.js +73 -124
  65. package/dist/media/properties.js.map +1 -1
  66. package/dist/meeting/in-meeting-actions.js +82 -2
  67. package/dist/meeting/in-meeting-actions.js.map +1 -1
  68. package/dist/meeting/index.js +3777 -2929
  69. package/dist/meeting/index.js.map +1 -1
  70. package/dist/meeting/locusMediaRequest.js +292 -0
  71. package/dist/meeting/locusMediaRequest.js.map +1 -0
  72. package/dist/meeting/muteState.js +230 -124
  73. package/dist/meeting/muteState.js.map +1 -1
  74. package/dist/meeting/request.js +260 -196
  75. package/dist/meeting/request.js.map +1 -1
  76. package/dist/meeting/util.js +601 -417
  77. package/dist/meeting/util.js.map +1 -1
  78. package/dist/meeting-info/index.js +73 -7
  79. package/dist/meeting-info/index.js.map +1 -1
  80. package/dist/meeting-info/meeting-info-v2.js +192 -51
  81. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  82. package/dist/meeting-info/util.js +1 -1
  83. package/dist/meeting-info/util.js.map +1 -1
  84. package/dist/meeting-info/utilv2.js +36 -36
  85. package/dist/meeting-info/utilv2.js.map +1 -1
  86. package/dist/meetings/collection.js +39 -0
  87. package/dist/meetings/collection.js.map +1 -1
  88. package/dist/meetings/index.js +415 -115
  89. package/dist/meetings/index.js.map +1 -1
  90. package/dist/meetings/meetings.types.js +7 -0
  91. package/dist/meetings/meetings.types.js.map +1 -0
  92. package/dist/meetings/request.js +2 -0
  93. package/dist/meetings/request.js.map +1 -1
  94. package/dist/meetings/util.js +72 -6
  95. package/dist/meetings/util.js.map +1 -1
  96. package/dist/member/index.js +58 -0
  97. package/dist/member/index.js.map +1 -1
  98. package/dist/member/types.js +25 -0
  99. package/dist/member/types.js.map +1 -0
  100. package/dist/member/util.js +132 -25
  101. package/dist/member/util.js.map +1 -1
  102. package/dist/members/collection.js +10 -0
  103. package/dist/members/collection.js.map +1 -1
  104. package/dist/members/index.js +102 -6
  105. package/dist/members/index.js.map +1 -1
  106. package/dist/members/request.js +106 -38
  107. package/dist/members/request.js.map +1 -1
  108. package/dist/members/types.js +15 -0
  109. package/dist/members/types.js.map +1 -0
  110. package/dist/members/util.js +326 -232
  111. package/dist/members/util.js.map +1 -1
  112. package/dist/metrics/constants.js +13 -5
  113. package/dist/metrics/constants.js.map +1 -1
  114. package/dist/metrics/index.js +1 -468
  115. package/dist/metrics/index.js.map +1 -1
  116. package/dist/multistream/mediaRequestManager.js +238 -49
  117. package/dist/multistream/mediaRequestManager.js.map +1 -1
  118. package/dist/multistream/receiveSlot.js +29 -16
  119. package/dist/multistream/receiveSlot.js.map +1 -1
  120. package/dist/multistream/receiveSlotManager.js +39 -36
  121. package/dist/multistream/receiveSlotManager.js.map +1 -1
  122. package/dist/multistream/remoteMedia.js +44 -18
  123. package/dist/multistream/remoteMedia.js.map +1 -1
  124. package/dist/multistream/remoteMediaGroup.js +60 -3
  125. package/dist/multistream/remoteMediaGroup.js.map +1 -1
  126. package/dist/multistream/remoteMediaManager.js +209 -59
  127. package/dist/multistream/remoteMediaManager.js.map +1 -1
  128. package/dist/multistream/sendSlotManager.js +233 -0
  129. package/dist/multistream/sendSlotManager.js.map +1 -0
  130. package/dist/reachability/index.js +225 -59
  131. package/dist/reachability/index.js.map +1 -1
  132. package/dist/reachability/request.js +17 -8
  133. package/dist/reachability/request.js.map +1 -1
  134. package/dist/reconnection-manager/index.js +201 -156
  135. package/dist/reconnection-manager/index.js.map +1 -1
  136. package/dist/recording-controller/index.js +21 -2
  137. package/dist/recording-controller/index.js.map +1 -1
  138. package/dist/recording-controller/util.js +9 -8
  139. package/dist/recording-controller/util.js.map +1 -1
  140. package/dist/roap/index.js +62 -32
  141. package/dist/roap/index.js.map +1 -1
  142. package/dist/roap/request.js +112 -97
  143. package/dist/roap/request.js.map +1 -1
  144. package/dist/roap/turnDiscovery.js +95 -36
  145. package/dist/roap/turnDiscovery.js.map +1 -1
  146. package/dist/rtcMetrics/constants.js +12 -0
  147. package/dist/rtcMetrics/constants.js.map +1 -0
  148. package/dist/rtcMetrics/index.js +117 -0
  149. package/dist/rtcMetrics/index.js.map +1 -0
  150. package/dist/statsAnalyzer/index.js +86 -78
  151. package/dist/statsAnalyzer/index.js.map +1 -1
  152. package/dist/statsAnalyzer/mqaUtil.js +11 -10
  153. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  154. package/dist/types/annotation/annotation.types.d.ts +42 -0
  155. package/dist/types/annotation/constants.d.ts +31 -0
  156. package/dist/types/annotation/index.d.ts +117 -0
  157. package/dist/types/breakouts/edit-lock-error.d.ts +15 -0
  158. package/dist/types/breakouts/events.d.ts +8 -0
  159. package/dist/types/breakouts/utils.d.ts +14 -0
  160. package/dist/types/common/errors/no-meeting-info.d.ts +14 -0
  161. package/dist/types/common/errors/reclaim-host-role-errors.d.ts +60 -0
  162. package/dist/types/common/errors/webex-errors.d.ts +25 -1
  163. package/dist/types/common/logs/request.d.ts +2 -0
  164. package/dist/types/common/queue.d.ts +9 -7
  165. package/dist/types/config.d.ts +1 -7
  166. package/dist/types/constants.d.ts +194 -24
  167. package/dist/types/controls-options-manager/enums.d.ts +11 -1
  168. package/dist/types/controls-options-manager/index.d.ts +17 -1
  169. package/dist/types/controls-options-manager/types.d.ts +43 -0
  170. package/dist/types/controls-options-manager/util.d.ts +1 -7
  171. package/dist/types/index.d.ts +6 -4
  172. package/dist/types/interpretation/collection.d.ts +5 -0
  173. package/dist/types/interpretation/index.d.ts +5 -0
  174. package/dist/types/interpretation/siLanguage.d.ts +5 -0
  175. package/dist/types/locus-info/index.d.ts +57 -4
  176. package/dist/types/locus-info/parser.d.ts +67 -6
  177. package/dist/types/media/index.d.ts +2 -0
  178. package/dist/types/media/properties.d.ts +34 -48
  179. package/dist/types/meeting/in-meeting-actions.d.ts +82 -2
  180. package/dist/types/meeting/index.d.ts +463 -510
  181. package/dist/types/meeting/locusMediaRequest.d.ts +74 -0
  182. package/dist/types/meeting/muteState.d.ts +99 -23
  183. package/dist/types/meeting/request.d.ts +72 -43
  184. package/dist/types/meeting/util.d.ts +101 -1
  185. package/dist/types/meeting-info/index.d.ts +13 -1
  186. package/dist/types/meeting-info/meeting-info-v2.d.ts +31 -1
  187. package/dist/types/meetings/collection.d.ts +17 -0
  188. package/dist/types/meetings/index.d.ts +98 -20
  189. package/dist/types/meetings/meetings.types.d.ts +4 -0
  190. package/dist/types/member/index.d.ts +14 -0
  191. package/dist/types/member/types.d.ts +32 -0
  192. package/dist/types/members/collection.d.ts +5 -0
  193. package/dist/types/members/index.d.ts +35 -2
  194. package/dist/types/members/request.d.ts +73 -9
  195. package/dist/types/members/types.d.ts +25 -0
  196. package/dist/types/members/util.d.ts +214 -1
  197. package/dist/types/metrics/constants.d.ts +12 -4
  198. package/dist/types/metrics/index.d.ts +4 -119
  199. package/dist/types/multistream/mediaRequestManager.d.ts +73 -5
  200. package/dist/types/multistream/receiveSlot.d.ts +13 -11
  201. package/dist/types/multistream/receiveSlotManager.d.ts +14 -4
  202. package/dist/types/multistream/remoteMedia.d.ts +8 -29
  203. package/dist/types/multistream/remoteMediaGroup.d.ts +0 -9
  204. package/dist/types/multistream/remoteMediaManager.d.ts +46 -2
  205. package/dist/types/multistream/sendSlotManager.d.ts +61 -0
  206. package/dist/types/reachability/index.d.ts +61 -7
  207. package/dist/types/reachability/request.d.ts +7 -3
  208. package/dist/types/reconnection-manager/index.d.ts +9 -0
  209. package/dist/types/recording-controller/index.d.ts +15 -1
  210. package/dist/types/recording-controller/util.d.ts +5 -4
  211. package/dist/types/roap/index.d.ts +2 -1
  212. package/dist/types/roap/request.d.ts +15 -11
  213. package/dist/types/roap/turnDiscovery.d.ts +21 -3
  214. package/dist/types/rtcMetrics/constants.d.ts +4 -0
  215. package/dist/types/rtcMetrics/index.d.ts +47 -0
  216. package/dist/types/statsAnalyzer/index.d.ts +7 -1
  217. package/dist/types/webinar/collection.d.ts +16 -0
  218. package/dist/types/webinar/index.d.ts +5 -0
  219. package/dist/webinar/collection.js +44 -0
  220. package/dist/webinar/collection.js.map +1 -0
  221. package/dist/webinar/index.js +69 -0
  222. package/dist/webinar/index.js.map +1 -0
  223. package/package.json +23 -20
  224. package/src/annotation/annotation.types.ts +50 -0
  225. package/src/annotation/constants.ts +36 -0
  226. package/src/annotation/index.ts +328 -0
  227. package/src/breakouts/README.md +42 -12
  228. package/src/breakouts/breakout.ts +67 -9
  229. package/src/breakouts/edit-lock-error.ts +25 -0
  230. package/src/breakouts/events.ts +56 -0
  231. package/src/breakouts/index.ts +592 -20
  232. package/src/breakouts/utils.ts +42 -0
  233. package/src/common/errors/no-meeting-info.ts +24 -0
  234. package/src/common/errors/reclaim-host-role-errors.ts +134 -0
  235. package/src/common/errors/webex-errors.ts +44 -2
  236. package/src/common/logs/logger-proxy.ts +1 -1
  237. package/src/common/logs/request.ts +5 -1
  238. package/src/common/queue.ts +22 -8
  239. package/src/config.ts +4 -10
  240. package/src/constants.ts +221 -19
  241. package/src/controls-options-manager/enums.ts +12 -0
  242. package/src/controls-options-manager/index.ts +116 -21
  243. package/src/controls-options-manager/types.ts +59 -0
  244. package/src/controls-options-manager/util.ts +294 -14
  245. package/src/index.ts +40 -0
  246. package/src/interpretation/README.md +60 -0
  247. package/src/interpretation/collection.ts +19 -0
  248. package/src/interpretation/index.ts +332 -0
  249. package/src/interpretation/siLanguage.ts +18 -0
  250. package/src/locus-info/controlsUtils.ts +108 -0
  251. package/src/locus-info/index.ts +413 -59
  252. package/src/locus-info/infoUtils.ts +10 -2
  253. package/src/locus-info/mediaSharesUtils.ts +64 -0
  254. package/src/locus-info/parser.ts +258 -47
  255. package/src/locus-info/selfUtils.ts +81 -5
  256. package/src/media/index.ts +102 -122
  257. package/src/media/properties.ts +87 -110
  258. package/src/meeting/in-meeting-actions.ts +163 -3
  259. package/src/meeting/index.ts +3132 -2541
  260. package/src/meeting/locusMediaRequest.ts +313 -0
  261. package/src/meeting/muteState.ts +229 -131
  262. package/src/meeting/request.ts +177 -121
  263. package/src/meeting/util.ts +588 -394
  264. package/src/meeting-info/index.ts +81 -8
  265. package/src/meeting-info/meeting-info-v2.ts +170 -14
  266. package/src/meeting-info/util.ts +1 -1
  267. package/src/meeting-info/utilv2.ts +23 -23
  268. package/src/meetings/collection.ts +33 -0
  269. package/src/meetings/index.ts +445 -123
  270. package/src/meetings/meetings.types.ts +12 -0
  271. package/src/meetings/request.ts +2 -0
  272. package/src/meetings/util.ts +80 -11
  273. package/src/member/index.ts +58 -0
  274. package/src/member/types.ts +38 -0
  275. package/src/member/util.ts +141 -25
  276. package/src/members/collection.ts +8 -0
  277. package/src/members/index.ts +134 -8
  278. package/src/members/request.ts +97 -17
  279. package/src/members/types.ts +29 -0
  280. package/src/members/util.ts +333 -240
  281. package/src/metrics/constants.ts +12 -4
  282. package/src/metrics/index.ts +1 -490
  283. package/src/multistream/mediaRequestManager.ts +289 -79
  284. package/src/multistream/receiveSlot.ts +31 -17
  285. package/src/multistream/receiveSlotManager.ts +34 -24
  286. package/src/multistream/remoteMedia.ts +27 -2
  287. package/src/multistream/remoteMediaGroup.ts +59 -0
  288. package/src/multistream/remoteMediaManager.ts +148 -30
  289. package/src/multistream/sendSlotManager.ts +170 -0
  290. package/src/reachability/index.ts +228 -37
  291. package/src/reachability/request.ts +17 -8
  292. package/src/reconnection-manager/index.ts +83 -56
  293. package/src/recording-controller/index.ts +20 -3
  294. package/src/recording-controller/util.ts +26 -9
  295. package/src/roap/index.ts +63 -32
  296. package/src/roap/request.ts +100 -104
  297. package/src/roap/turnDiscovery.ts +48 -26
  298. package/src/rtcMetrics/constants.ts +3 -0
  299. package/src/rtcMetrics/index.ts +100 -0
  300. package/src/statsAnalyzer/index.ts +105 -91
  301. package/src/statsAnalyzer/mqaUtil.ts +13 -14
  302. package/src/webinar/collection.ts +31 -0
  303. package/src/webinar/index.ts +62 -0
  304. package/test/integration/spec/converged-space-meetings.js +60 -3
  305. package/test/integration/spec/journey.js +320 -261
  306. package/test/integration/spec/space-meeting.js +76 -3
  307. package/test/unit/spec/annotation/index.ts +418 -0
  308. package/test/unit/spec/breakouts/breakout.ts +118 -28
  309. package/test/unit/spec/breakouts/edit-lock-error.ts +30 -0
  310. package/test/unit/spec/breakouts/events.ts +89 -0
  311. package/test/unit/spec/breakouts/index.ts +1395 -69
  312. package/test/unit/spec/breakouts/utils.js +52 -1
  313. package/test/unit/spec/common/queue.js +31 -2
  314. package/test/unit/spec/controls-options-manager/index.js +163 -0
  315. package/test/unit/spec/controls-options-manager/util.js +576 -60
  316. package/test/unit/spec/fixture/locus.js +1 -0
  317. package/test/unit/spec/interpretation/collection.ts +15 -0
  318. package/test/unit/spec/interpretation/index.ts +589 -0
  319. package/test/unit/spec/interpretation/siLanguage.ts +28 -0
  320. package/test/unit/spec/locus-info/controlsUtils.js +316 -43
  321. package/test/unit/spec/locus-info/index.js +1304 -33
  322. package/test/unit/spec/locus-info/infoUtils.js +37 -15
  323. package/test/unit/spec/locus-info/lib/SeqCmp.json +16 -0
  324. package/test/unit/spec/locus-info/mediaSharesUtils.ts +32 -0
  325. package/test/unit/spec/locus-info/parser.js +116 -35
  326. package/test/unit/spec/locus-info/selfConstant.js +27 -4
  327. package/test/unit/spec/locus-info/selfUtils.js +208 -17
  328. package/test/unit/spec/media/index.ts +104 -37
  329. package/test/unit/spec/media/properties.ts +2 -2
  330. package/test/unit/spec/meeting/in-meeting-actions.ts +81 -3
  331. package/test/unit/spec/meeting/index.js +5216 -1956
  332. package/test/unit/spec/meeting/locusMediaRequest.ts +442 -0
  333. package/test/unit/spec/meeting/muteState.js +408 -208
  334. package/test/unit/spec/meeting/request.js +483 -49
  335. package/test/unit/spec/meeting/utils.js +679 -64
  336. package/test/unit/spec/meeting-info/index.js +300 -0
  337. package/test/unit/spec/meeting-info/meetinginfov2.js +526 -5
  338. package/test/unit/spec/meeting-info/utilv2.js +21 -0
  339. package/test/unit/spec/meetings/collection.js +26 -0
  340. package/test/unit/spec/meetings/index.js +1011 -205
  341. package/test/unit/spec/meetings/utils.js +202 -2
  342. package/test/unit/spec/member/index.js +61 -6
  343. package/test/unit/spec/member/util.js +510 -34
  344. package/test/unit/spec/members/index.js +432 -1
  345. package/test/unit/spec/members/request.js +206 -27
  346. package/test/unit/spec/members/utils.js +210 -0
  347. package/test/unit/spec/metrics/index.js +1 -50
  348. package/test/unit/spec/multistream/mediaRequestManager.ts +803 -162
  349. package/test/unit/spec/multistream/receiveSlot.ts +28 -20
  350. package/test/unit/spec/multistream/receiveSlotManager.ts +32 -30
  351. package/test/unit/spec/multistream/remoteMedia.ts +30 -0
  352. package/test/unit/spec/multistream/remoteMediaGroup.ts +266 -0
  353. package/test/unit/spec/multistream/remoteMediaManager.ts +326 -0
  354. package/test/unit/spec/multistream/sendSlotManager.ts +242 -0
  355. package/test/unit/spec/reachability/index.ts +549 -9
  356. package/test/unit/spec/reachability/request.js +68 -0
  357. package/test/unit/spec/reconnection-manager/index.js +85 -9
  358. package/test/unit/spec/recording-controller/index.js +294 -218
  359. package/test/unit/spec/recording-controller/util.js +223 -96
  360. package/test/unit/spec/roap/index.ts +178 -64
  361. package/test/unit/spec/roap/request.ts +203 -85
  362. package/test/unit/spec/roap/turnDiscovery.ts +82 -36
  363. package/test/unit/spec/rtcMetrics/index.ts +73 -0
  364. package/test/unit/spec/stats-analyzer/index.js +136 -2
  365. package/test/unit/spec/webinar/collection.ts +13 -0
  366. package/test/unit/spec/webinar/index.ts +60 -0
  367. package/test/utils/integrationTestUtils.js +46 -0
  368. package/test/utils/testUtils.js +0 -52
  369. package/dist/meeting/effectsState.js +0 -262
  370. package/dist/meeting/effectsState.js.map +0 -1
  371. package/dist/metrics/config.js +0 -299
  372. package/dist/metrics/config.js.map +0 -1
  373. package/dist/types/meeting/effectsState.d.ts +0 -42
  374. package/dist/types/metrics/config.d.ts +0 -178
  375. package/src/index.js +0 -16
  376. package/src/meeting/effectsState.ts +0 -211
  377. package/src/metrics/config.ts +0 -495
  378. package/test/unit/spec/meeting/effectsState.js +0 -285
@@ -0,0 +1,117 @@
1
+ "use strict";
2
+
3
+ var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
4
+ var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
5
+ _Object$defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
10
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));
11
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
12
+ var _constants = _interopRequireDefault(require("./constants"));
13
+ /**
14
+ * Rtc Metrics
15
+ */
16
+ var RtcMetrics = /*#__PURE__*/function () {
17
+ /**
18
+ * Array of MetricData items to be sent to the metrics service.
19
+ */
20
+
21
+ /**
22
+ * Initialize the interval.
23
+ *
24
+ * @param {object} webex - The main `webex` object.
25
+ * @param {string} meetingId - The meeting id.
26
+ * @param {string} correlationId - The correlation id.
27
+ */
28
+ function RtcMetrics(webex, meetingId, correlationId) {
29
+ (0, _classCallCheck2.default)(this, RtcMetrics);
30
+ (0, _defineProperty2.default)(this, "metricsQueue", []);
31
+ (0, _defineProperty2.default)(this, "intervalId", void 0);
32
+ (0, _defineProperty2.default)(this, "webex", void 0);
33
+ (0, _defineProperty2.default)(this, "meetingId", void 0);
34
+ (0, _defineProperty2.default)(this, "correlationId", void 0);
35
+ // `window` is used to prevent typescript from returning a NodeJS.Timer.
36
+ this.intervalId = window.setInterval(this.sendMetricsInQueue.bind(this), 30 * 1000);
37
+ this.meetingId = meetingId;
38
+ this.webex = webex;
39
+ this.correlationId = correlationId;
40
+ // Send the first set of metrics at 5 seconds in the case of a user leaving the call shortly after joining.
41
+ setTimeout(this.sendMetricsInQueue.bind(this), 5 * 1000);
42
+ }
43
+
44
+ /**
45
+ * Check to see if the metrics queue has any items.
46
+ *
47
+ * @returns {void}
48
+ */
49
+ (0, _createClass2.default)(RtcMetrics, [{
50
+ key: "sendMetricsInQueue",
51
+ value: function sendMetricsInQueue() {
52
+ if (this.metricsQueue.length) {
53
+ this.sendMetrics();
54
+ this.metricsQueue = [];
55
+ }
56
+ }
57
+
58
+ /**
59
+ * Add metrics items to the metrics queue.
60
+ *
61
+ * @param {object} data - An object with a payload array of metrics items.
62
+ *
63
+ * @returns {void}
64
+ */
65
+ }, {
66
+ key: "addMetrics",
67
+ value: function addMetrics(data) {
68
+ if (data.payload.length) {
69
+ this.metricsQueue.push(data);
70
+ }
71
+ }
72
+
73
+ /**
74
+ * Clear the metrics interval.
75
+ *
76
+ * @returns {void}
77
+ */
78
+ }, {
79
+ key: "closeMetrics",
80
+ value: function closeMetrics() {
81
+ this.sendMetricsInQueue();
82
+ clearInterval(this.intervalId);
83
+ }
84
+
85
+ /**
86
+ * Send metrics to the metrics service.
87
+ *
88
+ * @returns {void}
89
+ */
90
+ }, {
91
+ key: "sendMetrics",
92
+ value: function sendMetrics() {
93
+ this.webex.request({
94
+ method: 'POST',
95
+ service: 'unifiedTelemetry',
96
+ resource: 'metric/v2',
97
+ headers: {
98
+ type: 'webrtcMedia',
99
+ appId: _constants.default.APP_ID
100
+ },
101
+ body: {
102
+ metrics: [{
103
+ type: 'webrtc',
104
+ version: '1.0.1',
105
+ userId: this.webex.internal.device.userId,
106
+ meetingId: this.meetingId,
107
+ correlationId: this.correlationId,
108
+ data: this.metricsQueue
109
+ }]
110
+ }
111
+ });
112
+ }
113
+ }]);
114
+ return RtcMetrics;
115
+ }();
116
+ exports.default = RtcMetrics;
117
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["RtcMetrics","webex","meetingId","correlationId","intervalId","window","setInterval","sendMetricsInQueue","bind","setTimeout","metricsQueue","length","sendMetrics","data","payload","push","clearInterval","request","method","service","resource","headers","type","appId","RTC_METRICS","APP_ID","body","metrics","version","userId","internal","device"],"sources":["index.ts"],"sourcesContent":["import RTC_METRICS from './constants';\n\n/**\n * Rtc Metrics\n */\nexport default class RtcMetrics {\n /**\n * Array of MetricData items to be sent to the metrics service.\n */\n metricsQueue = [];\n\n intervalId: number;\n\n webex: any;\n\n meetingId: string;\n\n correlationId: string;\n\n /**\n * Initialize the interval.\n *\n * @param {object} webex - The main `webex` object.\n * @param {string} meetingId - The meeting id.\n * @param {string} correlationId - The correlation id.\n */\n constructor(webex, meetingId, correlationId) {\n // `window` is used to prevent typescript from returning a NodeJS.Timer.\n this.intervalId = window.setInterval(this.sendMetricsInQueue.bind(this), 30 * 1000);\n this.meetingId = meetingId;\n this.webex = webex;\n this.correlationId = correlationId;\n // Send the first set of metrics at 5 seconds in the case of a user leaving the call shortly after joining.\n setTimeout(this.sendMetricsInQueue.bind(this), 5 * 1000);\n }\n\n /**\n * Check to see if the metrics queue has any items.\n *\n * @returns {void}\n */\n public sendMetricsInQueue() {\n if (this.metricsQueue.length) {\n this.sendMetrics();\n this.metricsQueue = [];\n }\n }\n\n /**\n * Add metrics items to the metrics queue.\n *\n * @param {object} data - An object with a payload array of metrics items.\n *\n * @returns {void}\n */\n addMetrics(data) {\n if (data.payload.length) {\n this.metricsQueue.push(data);\n }\n }\n\n /**\n * Clear the metrics interval.\n *\n * @returns {void}\n */\n closeMetrics() {\n this.sendMetricsInQueue();\n clearInterval(this.intervalId);\n }\n\n /**\n * Send metrics to the metrics service.\n *\n * @returns {void}\n */\n private sendMetrics() {\n this.webex.request({\n method: 'POST',\n service: 'unifiedTelemetry',\n resource: 'metric/v2',\n headers: {\n type: 'webrtcMedia',\n appId: RTC_METRICS.APP_ID,\n },\n body: {\n metrics: [\n {\n type: 'webrtc',\n version: '1.0.1',\n userId: this.webex.internal.device.userId,\n meetingId: this.meetingId,\n correlationId: this.correlationId,\n data: this.metricsQueue,\n },\n ],\n },\n });\n }\n}\n"],"mappings":";;;;;;;;;;;AAAA;AAEA;AACA;AACA;AAFA,IAGqBA,UAAU;EAC7B;AACF;AACA;;EAWE;AACF;AACA;AACA;AACA;AACA;AACA;EACE,oBAAYC,KAAK,EAAEC,SAAS,EAAEC,aAAa,EAAE;IAAA;IAAA,oDAjB9B,EAAE;IAAA;IAAA;IAAA;IAAA;IAkBf;IACA,IAAI,CAACC,UAAU,GAAGC,MAAM,CAACC,WAAW,CAAC,IAAI,CAACC,kBAAkB,CAACC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC;IACnF,IAAI,CAACN,SAAS,GAAGA,SAAS;IAC1B,IAAI,CAACD,KAAK,GAAGA,KAAK;IAClB,IAAI,CAACE,aAAa,GAAGA,aAAa;IAClC;IACAM,UAAU,CAAC,IAAI,CAACF,kBAAkB,CAACC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;EAC1D;;EAEA;AACF;AACA;AACA;AACA;EAJE;IAAA;IAAA,OAKA,8BAA4B;MAC1B,IAAI,IAAI,CAACE,YAAY,CAACC,MAAM,EAAE;QAC5B,IAAI,CAACC,WAAW,EAAE;QAClB,IAAI,CAACF,YAAY,GAAG,EAAE;MACxB;IACF;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAA;IAAA,OAOA,oBAAWG,IAAI,EAAE;MACf,IAAIA,IAAI,CAACC,OAAO,CAACH,MAAM,EAAE;QACvB,IAAI,CAACD,YAAY,CAACK,IAAI,CAACF,IAAI,CAAC;MAC9B;IACF;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAA;IAAA,OAKA,wBAAe;MACb,IAAI,CAACN,kBAAkB,EAAE;MACzBS,aAAa,CAAC,IAAI,CAACZ,UAAU,CAAC;IAChC;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAA;IAAA,OAKA,uBAAsB;MACpB,IAAI,CAACH,KAAK,CAACgB,OAAO,CAAC;QACjBC,MAAM,EAAE,MAAM;QACdC,OAAO,EAAE,kBAAkB;QAC3BC,QAAQ,EAAE,WAAW;QACrBC,OAAO,EAAE;UACPC,IAAI,EAAE,aAAa;UACnBC,KAAK,EAAEC,kBAAW,CAACC;QACrB,CAAC;QACDC,IAAI,EAAE;UACJC,OAAO,EAAE,CACP;YACEL,IAAI,EAAE,QAAQ;YACdM,OAAO,EAAE,OAAO;YAChBC,MAAM,EAAE,IAAI,CAAC5B,KAAK,CAAC6B,QAAQ,CAACC,MAAM,CAACF,MAAM;YACzC3B,SAAS,EAAE,IAAI,CAACA,SAAS;YACzBC,aAAa,EAAE,IAAI,CAACA,aAAa;YACjCU,IAAI,EAAE,IAAI,CAACH;UACb,CAAC;QAEL;MACF,CAAC,CAAC;IACJ;EAAC;EAAA;AAAA;AAAA"}
@@ -49,7 +49,6 @@ var emptyReceiver = {
49
49
  meanRtpJitter: [],
50
50
  meanRoundTripTime: []
51
51
  };
52
-
53
52
  /**
54
53
  * Stats Analyzer class that will emit events based on detected quality
55
54
  *
@@ -65,13 +64,17 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
65
64
  * @constructor
66
65
  * @public
67
66
  * @param {Object} config SDK Configuration Object
67
+ * @param {Function} receiveSlotCallback Callback used to access receive slots.
68
68
  * @param {Object} networkQualityMonitor class for assessing network characteristics (jitter, packetLoss, latency)
69
69
  * @param {Object} statsResults Default properties for stats
70
70
  */
71
71
  function StatsAnalyzer(config) {
72
72
  var _this;
73
- var networkQualityMonitor = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
74
- var statsResults = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _global.default;
73
+ var receiveSlotCallback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () {
74
+ return undefined;
75
+ };
76
+ var networkQualityMonitor = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
77
+ var statsResults = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : _global.default;
75
78
  (0, _classCallCheck2.default)(this, StatsAnalyzer);
76
79
  _this = _super.call(this);
77
80
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "config", void 0);
@@ -87,6 +90,8 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
87
90
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "statsInterval", void 0);
88
91
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "statsResults", void 0);
89
92
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "statsStarted", void 0);
93
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "successfulCandidatePair", void 0);
94
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "receiveSlotCallback", void 0);
90
95
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "emitStartStopEvents", function (mediaType, previousValue, currentValue, isLocal) {
91
96
  if (mediaType !== 'audio' && mediaType !== 'video' && mediaType !== 'share') {
92
97
  throw new Error("Unsupported mediaType: ".concat(mediaType));
@@ -121,56 +126,39 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
121
126
  }
122
127
  });
123
128
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "parseCandidate", function (result, type, isSender, isRemote) {
129
+ var _this$successfulCandi;
124
130
  if (!result || !result.id) {
125
131
  return;
126
132
  }
127
- var RemoteCandidateType = {};
128
- var RemoteTransport = {};
129
- var RemoteIpAddress = {};
130
- var RemoteNetworkType = {};
131
- if (!result.id) return;
132
- var sendRecvType = isSender ? _constants.STATS.SEND_DIRECTION : _constants.STATS.RECEIVE_DIRECTION;
133
- var ipType = isRemote ? _constants.STATS.REMOTE : _constants.STATS.LOCAL;
134
- if (!RemoteCandidateType[result.id]) {
135
- RemoteCandidateType[result.id] = [];
136
- }
137
- if (!RemoteTransport[result.id]) {
138
- RemoteTransport[result.id] = [];
139
- }
140
- if (!RemoteIpAddress[result.id]) {
141
- RemoteIpAddress[result.id] = [];
142
- }
143
- if (!RemoteNetworkType[result.id]) {
144
- RemoteNetworkType[result.id] = [];
145
- }
146
- if (result.candidateType && RemoteCandidateType[result.id].indexOf(result.candidateType) === -1) {
147
- RemoteCandidateType[result.id].push(result.candidateType);
148
- }
149
- if (result.protocol && RemoteTransport[result.id].indexOf(result.protocol) === -1) {
150
- RemoteTransport[result.id].push(result.protocol.toUpperCase());
151
- }
152
- if (result.ip && RemoteIpAddress[result.id].indexOf("".concat(result.ip, ":").concat(result.portNumber)) === -1) {
153
- RemoteIpAddress[result.id].push("".concat(result.ip)); // TODO: Add ports
154
- }
155
133
 
156
- if (result.networkType && RemoteNetworkType[result.id].indexOf(result.networkType) === -1) {
157
- RemoteNetworkType[result.id].push(result.networkType);
134
+ // We only care about the successful local candidate
135
+ if (((_this$successfulCandi = _this.successfulCandidatePair) === null || _this$successfulCandi === void 0 ? void 0 : _this$successfulCandi.localCandidateId) !== result.id) {
136
+ return;
158
137
  }
138
+ var transport;
139
+ if (result.relayProtocol) {
140
+ transport = result.relayProtocol.toUpperCase();
141
+ } else if (result.protocol) {
142
+ transport = result.protocol.toUpperCase();
143
+ }
144
+ var sendRecvType = isSender ? _constants.STATS.SEND_DIRECTION : _constants.STATS.RECEIVE_DIRECTION;
145
+ var ipType = isRemote ? _constants.STATS.REMOTE : _constants.STATS.LOCAL;
159
146
  _this.statsResults.internal.candidates[result.id] = {
160
- candidateType: RemoteCandidateType[result.id],
161
- ipAddress: RemoteIpAddress[result.id],
147
+ candidateType: result.candidateType,
148
+ ipAddress: result.ip,
149
+ // TODO: add ports
162
150
  portNumber: result.port,
163
- networkType: RemoteNetworkType[result.id],
151
+ networkType: result.networkType,
164
152
  priority: result.priority,
165
- transport: RemoteTransport[result.id],
153
+ transport: transport,
166
154
  timestamp: result.time,
167
155
  id: result.id,
168
156
  type: result.type
169
157
  };
170
- _this.statsResults.connectionType[ipType].candidateType = RemoteCandidateType[result.id];
171
- _this.statsResults.connectionType[ipType].ipAddress = RemoteIpAddress[result.id];
172
- _this.statsResults.connectionType[ipType].networkType = RemoteNetworkType[result.id][0] === _constants.NETWORK_TYPE.VPN ? _constants.NETWORK_TYPE.UNKNOWN : RemoteNetworkType[result.id][0];
173
- _this.statsResults.connectionType[ipType].transport = RemoteTransport[result.id];
158
+ _this.statsResults.connectionType[ipType].candidateType = result.candidateType;
159
+ _this.statsResults.connectionType[ipType].ipAddress = result.ipAddress;
160
+ _this.statsResults.connectionType[ipType].networkType = result.networkType === _constants.NETWORK_TYPE.VPN ? _constants.NETWORK_TYPE.UNKNOWN : result.networkType;
161
+ _this.statsResults.connectionType[ipType].transport = transport;
174
162
  _this.statsResults[type][sendRecvType].totalRoundTripTime = result.totalRoundTripTime;
175
163
  });
176
164
  _this.statsStarted = false;
@@ -182,6 +170,8 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
182
170
  _this.mqaSentCount = -1;
183
171
  _this.lastMqaDataSent = {};
184
172
  _this.lastEmittedStartStopEvent = {};
173
+ _this.receiveSlotCallback = receiveSlotCallback;
174
+ _this.successfulCandidatePair = {};
185
175
  return _this;
186
176
  }
187
177
 
@@ -272,25 +262,22 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
272
262
  newMqa.videoReceive.push(videoReceiver);
273
263
  }
274
264
  });
275
- newMqa.intervalMetadata.peerReflexiveIP = this.statsResults.connectionType.local.ipAddress[0];
265
+ newMqa.intervalMetadata.peerReflexiveIP = this.statsResults.connectionType.local.ipAddress;
276
266
 
277
267
  // Adding peripheral information
278
- newMqa.intervalMetadata.peripherals = [];
279
268
  newMqa.intervalMetadata.peripherals.push({
280
269
  information: _constants._UNKNOWN_,
281
270
  name: _constants.MEDIA_DEVICES.SPEAKER
282
271
  });
283
272
  if (this.statsResults['audio-send']) {
284
- var _this$statsResults$au;
285
273
  newMqa.intervalMetadata.peripherals.push({
286
- information: (_this$statsResults$au = this.statsResults['audio-send']) === null || _this$statsResults$au === void 0 ? void 0 : _this$statsResults$au.trackLabel,
274
+ information: this.statsResults['audio-send'].trackLabel || _constants._UNKNOWN_,
287
275
  name: _constants.MEDIA_DEVICES.MICROPHONE
288
276
  });
289
277
  }
290
278
  if (this.statsResults['video-send']) {
291
- var _this$statsResults$vi;
292
279
  newMqa.intervalMetadata.peripherals.push({
293
- information: (_this$statsResults$vi = this.statsResults['video-send']) === null || _this$statsResults$vi === void 0 ? void 0 : _this$statsResults$vi.trackLabel,
280
+ information: this.statsResults['video-send'].trackLabel || _constants._UNKNOWN_,
294
281
  name: _constants.MEDIA_DEVICES.CAMERA
295
282
  });
296
283
  }
@@ -377,7 +364,6 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
377
364
  _this5.mediaConnection = null;
378
365
  });
379
366
  }
380
- this.mediaConnection = null;
381
367
  return _promise.default.resolve();
382
368
  }
383
369
 
@@ -467,6 +453,13 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
467
453
  value: function filterAndParseGetStatsResults(statsItem, type, isSender) {
468
454
  var _this6 = this;
469
455
  var types = _constants.DEFAULT_GET_STATS_FILTER.types;
456
+
457
+ // get the successful candidate pair before parsing stats.
458
+ statsItem.report.forEach(function (report) {
459
+ if (report.type === 'candidate-pair' && report.state === 'succeeded') {
460
+ _this6.successfulCandidatePair = report;
461
+ }
462
+ });
470
463
  statsItem.report.forEach(function (result) {
471
464
  if (types.includes(result.type)) {
472
465
  _this6.parseGetStatsResult(result, type, isSender);
@@ -476,6 +469,8 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
476
469
  this.statsResults[type].direction = statsItem.currentDirection;
477
470
  this.statsResults[type].trackLabel = statsItem.localTrackLabel;
478
471
  this.statsResults[type].csi = statsItem.csi;
472
+ // reset the successful candidate pair.
473
+ this.successfulCandidatePair = {};
479
474
  }
480
475
  }
481
476
 
@@ -528,28 +523,32 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
528
523
  return (0, _keys.default)(_this7.statsResults).filter(function (key) {
529
524
  return key.startsWith(keyPrefix);
530
525
  }).reduce(function (prev, cur) {
531
- return prev + (_this7.statsResults[cur].recv[value] || 0);
526
+ var _this7$statsResults$c;
527
+ return prev + (((_this7$statsResults$c = _this7.statsResults[cur]) === null || _this7$statsResults$c === void 0 ? void 0 : _this7$statsResults$c.recv[value]) || 0);
532
528
  }, 0);
533
529
  };
534
530
  var getPreviousStatsTotals = function getPreviousStatsTotals(keyPrefix, value) {
535
531
  return (0, _keys.default)(_this7.statsResults).filter(function (key) {
536
532
  return key.startsWith(keyPrefix);
537
533
  }).reduce(function (prev, cur) {
538
- return prev + (_this7.lastStatsResults[cur].recv[value] || 0);
534
+ var _this7$lastStatsResul;
535
+ return prev + (((_this7$lastStatsResul = _this7.lastStatsResults[cur]) === null || _this7$lastStatsResul === void 0 ? void 0 : _this7$lastStatsResul.recv[value]) || 0);
539
536
  }, 0);
540
537
  };
541
538
  var getCurrentResolutionsStatsTotals = function getCurrentResolutionsStatsTotals(keyPrefix, value) {
542
539
  return (0, _keys.default)(_this7.statsResults).filter(function (key) {
543
540
  return key.startsWith(keyPrefix);
544
541
  }).reduce(function (prev, cur) {
545
- return prev + (_this7.statsResults.resolutions[cur].recv[value] || 0);
542
+ var _this7$statsResults$r;
543
+ return prev + (((_this7$statsResults$r = _this7.statsResults.resolutions[cur]) === null || _this7$statsResults$r === void 0 ? void 0 : _this7$statsResults$r.recv[value]) || 0);
546
544
  }, 0);
547
545
  };
548
546
  var getPreviousResolutionsStatsTotals = function getPreviousResolutionsStatsTotals(keyPrefix, value) {
549
547
  return (0, _keys.default)(_this7.statsResults).filter(function (key) {
550
548
  return key.startsWith(keyPrefix);
551
549
  }).reduce(function (prev, cur) {
552
- return prev + (_this7.lastStatsResults.resolutions[cur].recv[value] || 0);
550
+ var _this7$lastStatsResul2;
551
+ return prev + (((_this7$lastStatsResul2 = _this7.lastStatsResults.resolutions[cur]) === null || _this7$lastStatsResul2 === void 0 ? void 0 : _this7$lastStatsResul2.recv[value]) || 0);
553
552
  }, 0);
554
553
  };
555
554
  if (this.meetingMediaStatus.expected.sendAudio && this.lastStatsResults['audio-send']) {
@@ -558,10 +557,10 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
558
557
  var currentStats = this.statsResults['audio-send'].send;
559
558
  var previousStats = this.lastStatsResults['audio-send'].send;
560
559
  if (currentStats.totalPacketsSent === previousStats.totalPacketsSent || currentStats.totalPacketsSent === 0) {
561
- _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No audio RTP packets sent");
560
+ _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No audio RTP packets sent", currentStats.totalPacketsSent);
562
561
  } else {
563
562
  if (currentStats.totalAudioEnergy === previousStats.totalAudioEnergy || currentStats.totalAudioEnergy === 0) {
564
- _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No audio Energy present");
563
+ _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No audio Energy present", currentStats.totalAudioEnergy);
565
564
  }
566
565
  if (currentStats.audioLevel === 0) {
567
566
  _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> audio level is 0 for the user");
@@ -576,9 +575,9 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
576
575
  var currentSamplesReceived = getCurrentStatsTotals('audio-recv', 'totalSamplesReceived');
577
576
  var previousSamplesReceived = getPreviousStatsTotals('audio-recv', 'totalSamplesReceived');
578
577
  if (currentPacketsReceived === previousPacketsReceived || currentPacketsReceived === 0) {
579
- _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No audio RTP packets received");
578
+ _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No audio RTP packets received", currentPacketsReceived);
580
579
  } else if (currentSamplesReceived === previousSamplesReceived || currentSamplesReceived === 0) {
581
- _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No audio samples received");
580
+ _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No audio samples received", currentSamplesReceived);
582
581
  }
583
582
  this.emitStartStopEvents('audio', previousPacketsReceived, currentPacketsReceived, false);
584
583
  }
@@ -587,13 +586,13 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
587
586
  var _currentStats = this.statsResults['video-send'].send;
588
587
  var _previousStats = this.lastStatsResults['video-send'].send;
589
588
  if (_currentStats.totalPacketsSent === _previousStats.totalPacketsSent || _currentStats.totalPacketsSent === 0) {
590
- _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No video RTP packets sent");
589
+ _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No video RTP packets sent", _currentStats.totalPacketsSent);
591
590
  } else {
592
591
  if (_currentStats.framesEncoded === _previousStats.framesEncoded || _currentStats.framesEncoded === 0) {
593
- _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No video Frames Encoded");
592
+ _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No video Frames Encoded", _currentStats.framesEncoded);
594
593
  }
595
594
  if (this.statsResults.resolutions['video-send'].send.framesSent === this.lastStatsResults.resolutions['video-send'].send.framesSent || this.statsResults.resolutions['video-send'].send.framesSent === 0) {
596
- _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No video Frames sent");
595
+ _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No video Frames sent", this.statsResults.resolutions['video-send'].send.framesSent);
597
596
  }
598
597
  }
599
598
  this.emitStartStopEvents('video', _previousStats.framesSent, _currentStats.framesSent, true);
@@ -609,16 +608,16 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
609
608
  var currentFramesDropped = getCurrentResolutionsStatsTotals('video-recv', 'framesDropped');
610
609
  var previousFramesDropped = getPreviousResolutionsStatsTotals('video-recv', 'framesDropped');
611
610
  if (_currentPacketsReceived === _previousPacketsReceived || _currentPacketsReceived === 0) {
612
- _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No video RTP packets received");
611
+ _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No video RTP packets received", _currentPacketsReceived);
613
612
  } else {
614
613
  if (currentFramesReceived === previousFramesReceived || currentFramesReceived === 0) {
615
- _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No video frames received");
614
+ _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No video frames received", currentFramesReceived);
616
615
  }
617
616
  if (currentFramesDecoded === previousFramesDecoded || currentFramesDecoded === 0) {
618
- _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No video frames decoded");
617
+ _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No video frames decoded", currentFramesDecoded);
619
618
  }
620
619
  if (currentFramesDropped - previousFramesDropped > 10) {
621
- _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> video frames are getting dropped");
620
+ _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> video frames are getting dropped", currentFramesDropped - previousFramesDropped);
622
621
  }
623
622
  }
624
623
  this.emitStartStopEvents('video', previousFramesDecoded, currentFramesDecoded, false);
@@ -629,13 +628,13 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
629
628
  var _currentStats2 = this.statsResults['video-share-send'].send;
630
629
  var _previousStats2 = this.lastStatsResults['video-share-send'].send;
631
630
  if (_currentStats2.totalPacketsSent === _previousStats2.totalPacketsSent || _currentStats2.totalPacketsSent === 0) {
632
- _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No share RTP packets sent");
631
+ _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No share RTP packets sent", _currentStats2.totalPacketsSent);
633
632
  } else {
634
633
  if (_currentStats2.framesEncoded === _previousStats2.framesEncoded || _currentStats2.framesEncoded === 0) {
635
- _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No share frames getting encoded");
634
+ _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No share frames getting encoded", _currentStats2.framesEncoded);
636
635
  }
637
636
  if (this.statsResults.resolutions['video-share-send'].send.framesSent === this.lastStatsResults.resolutions['video-share-send'].send.framesSent || this.statsResults.resolutions['video-share-send'].send.framesSent === 0) {
638
- _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No share frames sent");
637
+ _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No share frames sent", this.statsResults.resolutions['video-share-send'].send.framesSent);
639
638
  }
640
639
  }
641
640
  }
@@ -651,16 +650,16 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
651
650
  var _currentFramesDropped = getCurrentResolutionsStatsTotals('video-share-recv', 'framesDropped');
652
651
  var _previousFramesDropped = getPreviousResolutionsStatsTotals('video-share-recv', 'framesDropped');
653
652
  if (_currentPacketsReceived2 === _previousPacketsReceived2 || _currentPacketsReceived2 === 0) {
654
- _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No share RTP packets received");
653
+ _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No share RTP packets received", _currentPacketsReceived2);
655
654
  } else {
656
655
  if (_currentFramesReceived === _previousFramesReceived || _currentFramesReceived === 0) {
657
- _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No share frames received");
656
+ _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No share frames received", _currentFramesReceived);
658
657
  }
659
658
  if (_currentFramesDecoded === _previousFramesDecoded || _currentFramesDecoded === 0) {
660
- _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No share frames decoded");
659
+ _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No share frames decoded", _currentFramesDecoded);
661
660
  }
662
661
  if (_currentFramesDropped - _previousFramesDropped > 10) {
663
- _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> share frames are getting dropped");
662
+ _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> share frames are getting dropped", _currentFramesDropped - _previousFramesDropped);
664
663
  }
665
664
  }
666
665
 
@@ -749,6 +748,12 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
749
748
  var sendrecvType = _constants.STATS.SEND_DIRECTION;
750
749
  if (result.bytesSent) {
751
750
  var kilobytes = 0;
751
+ if (result.frameWidth && result.frameHeight) {
752
+ this.statsResults.resolutions[mediaType][sendrecvType].width = result.frameWidth;
753
+ this.statsResults.resolutions[mediaType][sendrecvType].height = result.frameHeight;
754
+ this.statsResults.resolutions[mediaType][sendrecvType].framesSent = result.framesSent;
755
+ this.statsResults.resolutions[mediaType][sendrecvType].hugeFramesSent = result.hugeFramesSent;
756
+ }
752
757
  if (!this.statsResults.internal[mediaType][sendrecvType].prevBytesSent) {
753
758
  this.statsResults.internal[mediaType][sendrecvType].prevBytesSent = result.bytesSent;
754
759
  }
@@ -804,6 +809,13 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
804
809
  var sendrecvType = _constants.STATS.RECEIVE_DIRECTION;
805
810
  if (result.bytesReceived) {
806
811
  var kilobytes = 0;
812
+ var receiveSlot = this.receiveSlotCallback(result.ssrc);
813
+ var idAndCsi = receiveSlot ? "id: \"".concat(receiveSlot.id || '', "\"").concat(receiveSlot.csi ? " and csi: ".concat(receiveSlot.csi) : '') : '';
814
+ if (result.frameWidth && result.frameHeight) {
815
+ this.statsResults.resolutions[mediaType][sendrecvType].width = result.frameWidth;
816
+ this.statsResults.resolutions[mediaType][sendrecvType].height = result.frameHeight;
817
+ this.statsResults.resolutions[mediaType][sendrecvType].framesReceived = result.framesReceived;
818
+ }
807
819
  if (!this.statsResults.internal[mediaType][sendrecvType].prevBytesReceived) {
808
820
  this.statsResults.internal[mediaType][sendrecvType].prevBytesReceived = result.bytesReceived;
809
821
  }
@@ -832,13 +844,15 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
832
844
  this.statsResults[mediaType][sendrecvType].packetsReceived = result.packetsReceived - this.statsResults.internal[mediaType][sendrecvType].totalPacketsReceived;
833
845
  this.statsResults.internal[mediaType][sendrecvType].totalPacketsReceived = result.packetsReceived;
834
846
  if (this.statsResults[mediaType][sendrecvType].packetsReceived === 0) {
835
- _loggerProxy.default.logger.info("StatsAnalyzer:index#processInboundRTPResult --> No packets received for ".concat(mediaType, " "), this.statsResults[mediaType][sendrecvType].packetsReceived);
847
+ if (receiveSlot) {
848
+ _loggerProxy.default.logger.info("StatsAnalyzer:index#processInboundRTPResult --> No packets received for receive slot ".concat(idAndCsi), this.statsResults[mediaType][sendrecvType].packetsReceived);
849
+ }
836
850
  }
837
851
 
838
852
  // Check the over all packet Lost ratio
839
853
  this.statsResults[mediaType][sendrecvType].currentPacketLossRatio = this.statsResults[mediaType][sendrecvType].currentPacketsLost > 0 ? this.statsResults[mediaType][sendrecvType].currentPacketsLost / (this.statsResults[mediaType][sendrecvType].packetsReceived + this.statsResults[mediaType][sendrecvType].currentPacketsLost) : 0;
840
854
  if (this.statsResults[mediaType][sendrecvType].currentPacketLossRatio > 3) {
841
- _loggerProxy.default.logger.info('StatsAnalyzer:index#processInboundRTPResult --> Packets getting lost from the receiver ', this.statsResults[mediaType][sendrecvType].currentPacketLossRatio);
855
+ _loggerProxy.default.logger.info("StatsAnalyzer:index#processInboundRTPResult --> Packets getting lost from the receiver with slot ".concat(idAndCsi), this.statsResults[mediaType][sendrecvType].currentPacketLossRatio);
842
856
  }
843
857
 
844
858
  // TODO: check the packet loss value is negative values here
@@ -900,12 +914,6 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
900
914
  return;
901
915
  }
902
916
  var sendrecvType = result.remoteSource === true ? _constants.STATS.RECEIVE_DIRECTION : _constants.STATS.SEND_DIRECTION;
903
- if (result.frameWidth && result.frameHeight) {
904
- this.statsResults.resolutions[mediaType][sendrecvType].width = result.frameWidth;
905
- this.statsResults.resolutions[mediaType][sendrecvType].height = result.frameHeight;
906
- this.statsResults.resolutions[mediaType][sendrecvType].framesSent = result.framesSent;
907
- this.statsResults.resolutions[mediaType][sendrecvType].hugeFramesSent = result.hugeFramesSent;
908
- }
909
917
  if (sendrecvType === _constants.STATS.RECEIVE_DIRECTION) {
910
918
  this.statsResults.resolutions[mediaType][sendrecvType].framesReceived = result.framesReceived;
911
919
  this.statsResults.resolutions[mediaType][sendrecvType].framesDecoded = result.framesDecoded;