@webex/plugin-meetings 3.0.0-beta.30 → 3.0.0-beta.301

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 +3767 -2924
  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 +256 -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 +22 -0
  87. package/dist/meetings/collection.js.map +1 -1
  88. package/dist/meetings/index.js +402 -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 +84 -73
  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 +188 -21
  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 +460 -508
  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 +8 -0
  188. package/dist/types/meetings/index.d.ts +90 -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 +216 -18
  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 +3112 -2527
  260. package/src/meeting/locusMediaRequest.ts +313 -0
  261. package/src/meeting/muteState.ts +229 -131
  262. package/src/meeting/request.ts +172 -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 +20 -0
  269. package/src/meetings/index.ts +434 -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 +103 -87
  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 +5146 -1933
  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 +440 -45
  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 +14 -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 +112 -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,7 +262,7 @@ 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
268
  newMqa.intervalMetadata.peripherals = [];
@@ -377,7 +367,6 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
377
367
  _this5.mediaConnection = null;
378
368
  });
379
369
  }
380
- this.mediaConnection = null;
381
370
  return _promise.default.resolve();
382
371
  }
383
372
 
@@ -467,6 +456,13 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
467
456
  value: function filterAndParseGetStatsResults(statsItem, type, isSender) {
468
457
  var _this6 = this;
469
458
  var types = _constants.DEFAULT_GET_STATS_FILTER.types;
459
+
460
+ // get the successful candidate pair before parsing stats.
461
+ statsItem.report.forEach(function (report) {
462
+ if (report.type === 'candidate-pair' && report.state === 'succeeded') {
463
+ _this6.successfulCandidatePair = report;
464
+ }
465
+ });
470
466
  statsItem.report.forEach(function (result) {
471
467
  if (types.includes(result.type)) {
472
468
  _this6.parseGetStatsResult(result, type, isSender);
@@ -476,6 +472,8 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
476
472
  this.statsResults[type].direction = statsItem.currentDirection;
477
473
  this.statsResults[type].trackLabel = statsItem.localTrackLabel;
478
474
  this.statsResults[type].csi = statsItem.csi;
475
+ // reset the successful candidate pair.
476
+ this.successfulCandidatePair = {};
479
477
  }
480
478
  }
481
479
 
@@ -528,28 +526,32 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
528
526
  return (0, _keys.default)(_this7.statsResults).filter(function (key) {
529
527
  return key.startsWith(keyPrefix);
530
528
  }).reduce(function (prev, cur) {
531
- return prev + (_this7.statsResults[cur].recv[value] || 0);
529
+ var _this7$statsResults$c;
530
+ return prev + (((_this7$statsResults$c = _this7.statsResults[cur]) === null || _this7$statsResults$c === void 0 ? void 0 : _this7$statsResults$c.recv[value]) || 0);
532
531
  }, 0);
533
532
  };
534
533
  var getPreviousStatsTotals = function getPreviousStatsTotals(keyPrefix, value) {
535
534
  return (0, _keys.default)(_this7.statsResults).filter(function (key) {
536
535
  return key.startsWith(keyPrefix);
537
536
  }).reduce(function (prev, cur) {
538
- return prev + (_this7.lastStatsResults[cur].recv[value] || 0);
537
+ var _this7$lastStatsResul;
538
+ return prev + (((_this7$lastStatsResul = _this7.lastStatsResults[cur]) === null || _this7$lastStatsResul === void 0 ? void 0 : _this7$lastStatsResul.recv[value]) || 0);
539
539
  }, 0);
540
540
  };
541
541
  var getCurrentResolutionsStatsTotals = function getCurrentResolutionsStatsTotals(keyPrefix, value) {
542
542
  return (0, _keys.default)(_this7.statsResults).filter(function (key) {
543
543
  return key.startsWith(keyPrefix);
544
544
  }).reduce(function (prev, cur) {
545
- return prev + (_this7.statsResults.resolutions[cur].recv[value] || 0);
545
+ var _this7$statsResults$r;
546
+ return prev + (((_this7$statsResults$r = _this7.statsResults.resolutions[cur]) === null || _this7$statsResults$r === void 0 ? void 0 : _this7$statsResults$r.recv[value]) || 0);
546
547
  }, 0);
547
548
  };
548
549
  var getPreviousResolutionsStatsTotals = function getPreviousResolutionsStatsTotals(keyPrefix, value) {
549
550
  return (0, _keys.default)(_this7.statsResults).filter(function (key) {
550
551
  return key.startsWith(keyPrefix);
551
552
  }).reduce(function (prev, cur) {
552
- return prev + (_this7.lastStatsResults.resolutions[cur].recv[value] || 0);
553
+ var _this7$lastStatsResul2;
554
+ return prev + (((_this7$lastStatsResul2 = _this7.lastStatsResults.resolutions[cur]) === null || _this7$lastStatsResul2 === void 0 ? void 0 : _this7$lastStatsResul2.recv[value]) || 0);
553
555
  }, 0);
554
556
  };
555
557
  if (this.meetingMediaStatus.expected.sendAudio && this.lastStatsResults['audio-send']) {
@@ -558,10 +560,10 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
558
560
  var currentStats = this.statsResults['audio-send'].send;
559
561
  var previousStats = this.lastStatsResults['audio-send'].send;
560
562
  if (currentStats.totalPacketsSent === previousStats.totalPacketsSent || currentStats.totalPacketsSent === 0) {
561
- _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No audio RTP packets sent");
563
+ _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No audio RTP packets sent", currentStats.totalPacketsSent);
562
564
  } else {
563
565
  if (currentStats.totalAudioEnergy === previousStats.totalAudioEnergy || currentStats.totalAudioEnergy === 0) {
564
- _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No audio Energy present");
566
+ _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No audio Energy present", currentStats.totalAudioEnergy);
565
567
  }
566
568
  if (currentStats.audioLevel === 0) {
567
569
  _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> audio level is 0 for the user");
@@ -576,9 +578,9 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
576
578
  var currentSamplesReceived = getCurrentStatsTotals('audio-recv', 'totalSamplesReceived');
577
579
  var previousSamplesReceived = getPreviousStatsTotals('audio-recv', 'totalSamplesReceived');
578
580
  if (currentPacketsReceived === previousPacketsReceived || currentPacketsReceived === 0) {
579
- _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No audio RTP packets received");
581
+ _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No audio RTP packets received", currentPacketsReceived);
580
582
  } else if (currentSamplesReceived === previousSamplesReceived || currentSamplesReceived === 0) {
581
- _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No audio samples received");
583
+ _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No audio samples received", currentSamplesReceived);
582
584
  }
583
585
  this.emitStartStopEvents('audio', previousPacketsReceived, currentPacketsReceived, false);
584
586
  }
@@ -587,13 +589,13 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
587
589
  var _currentStats = this.statsResults['video-send'].send;
588
590
  var _previousStats = this.lastStatsResults['video-send'].send;
589
591
  if (_currentStats.totalPacketsSent === _previousStats.totalPacketsSent || _currentStats.totalPacketsSent === 0) {
590
- _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No video RTP packets sent");
592
+ _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No video RTP packets sent", _currentStats.totalPacketsSent);
591
593
  } else {
592
594
  if (_currentStats.framesEncoded === _previousStats.framesEncoded || _currentStats.framesEncoded === 0) {
593
- _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No video Frames Encoded");
595
+ _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No video Frames Encoded", _currentStats.framesEncoded);
594
596
  }
595
597
  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");
598
+ _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No video Frames sent", this.statsResults.resolutions['video-send'].send.framesSent);
597
599
  }
598
600
  }
599
601
  this.emitStartStopEvents('video', _previousStats.framesSent, _currentStats.framesSent, true);
@@ -609,16 +611,16 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
609
611
  var currentFramesDropped = getCurrentResolutionsStatsTotals('video-recv', 'framesDropped');
610
612
  var previousFramesDropped = getPreviousResolutionsStatsTotals('video-recv', 'framesDropped');
611
613
  if (_currentPacketsReceived === _previousPacketsReceived || _currentPacketsReceived === 0) {
612
- _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No video RTP packets received");
614
+ _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No video RTP packets received", _currentPacketsReceived);
613
615
  } else {
614
616
  if (currentFramesReceived === previousFramesReceived || currentFramesReceived === 0) {
615
- _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No video frames received");
617
+ _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No video frames received", currentFramesReceived);
616
618
  }
617
619
  if (currentFramesDecoded === previousFramesDecoded || currentFramesDecoded === 0) {
618
- _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No video frames decoded");
620
+ _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No video frames decoded", currentFramesDecoded);
619
621
  }
620
622
  if (currentFramesDropped - previousFramesDropped > 10) {
621
- _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> video frames are getting dropped");
623
+ _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> video frames are getting dropped", currentFramesDropped - previousFramesDropped);
622
624
  }
623
625
  }
624
626
  this.emitStartStopEvents('video', previousFramesDecoded, currentFramesDecoded, false);
@@ -629,13 +631,13 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
629
631
  var _currentStats2 = this.statsResults['video-share-send'].send;
630
632
  var _previousStats2 = this.lastStatsResults['video-share-send'].send;
631
633
  if (_currentStats2.totalPacketsSent === _previousStats2.totalPacketsSent || _currentStats2.totalPacketsSent === 0) {
632
- _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No share RTP packets sent");
634
+ _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No share RTP packets sent", _currentStats2.totalPacketsSent);
633
635
  } else {
634
636
  if (_currentStats2.framesEncoded === _previousStats2.framesEncoded || _currentStats2.framesEncoded === 0) {
635
- _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No share frames getting encoded");
637
+ _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No share frames getting encoded", _currentStats2.framesEncoded);
636
638
  }
637
639
  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");
640
+ _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No share frames sent", this.statsResults.resolutions['video-share-send'].send.framesSent);
639
641
  }
640
642
  }
641
643
  }
@@ -651,16 +653,16 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
651
653
  var _currentFramesDropped = getCurrentResolutionsStatsTotals('video-share-recv', 'framesDropped');
652
654
  var _previousFramesDropped = getPreviousResolutionsStatsTotals('video-share-recv', 'framesDropped');
653
655
  if (_currentPacketsReceived2 === _previousPacketsReceived2 || _currentPacketsReceived2 === 0) {
654
- _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No share RTP packets received");
656
+ _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No share RTP packets received", _currentPacketsReceived2);
655
657
  } else {
656
658
  if (_currentFramesReceived === _previousFramesReceived || _currentFramesReceived === 0) {
657
- _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No share frames received");
659
+ _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No share frames received", _currentFramesReceived);
658
660
  }
659
661
  if (_currentFramesDecoded === _previousFramesDecoded || _currentFramesDecoded === 0) {
660
- _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No share frames decoded");
662
+ _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No share frames decoded", _currentFramesDecoded);
661
663
  }
662
664
  if (_currentFramesDropped - _previousFramesDropped > 10) {
663
- _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> share frames are getting dropped");
665
+ _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> share frames are getting dropped", _currentFramesDropped - _previousFramesDropped);
664
666
  }
665
667
  }
666
668
 
@@ -749,6 +751,12 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
749
751
  var sendrecvType = _constants.STATS.SEND_DIRECTION;
750
752
  if (result.bytesSent) {
751
753
  var kilobytes = 0;
754
+ if (result.frameWidth && result.frameHeight) {
755
+ this.statsResults.resolutions[mediaType][sendrecvType].width = result.frameWidth;
756
+ this.statsResults.resolutions[mediaType][sendrecvType].height = result.frameHeight;
757
+ this.statsResults.resolutions[mediaType][sendrecvType].framesSent = result.framesSent;
758
+ this.statsResults.resolutions[mediaType][sendrecvType].hugeFramesSent = result.hugeFramesSent;
759
+ }
752
760
  if (!this.statsResults.internal[mediaType][sendrecvType].prevBytesSent) {
753
761
  this.statsResults.internal[mediaType][sendrecvType].prevBytesSent = result.bytesSent;
754
762
  }
@@ -804,6 +812,13 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
804
812
  var sendrecvType = _constants.STATS.RECEIVE_DIRECTION;
805
813
  if (result.bytesReceived) {
806
814
  var kilobytes = 0;
815
+ var receiveSlot = this.receiveSlotCallback(result.ssrc);
816
+ var idAndCsi = receiveSlot ? "id: \"".concat(receiveSlot.id || '', "\"").concat(receiveSlot.csi ? " and csi: ".concat(receiveSlot.csi) : '') : '';
817
+ if (result.frameWidth && result.frameHeight) {
818
+ this.statsResults.resolutions[mediaType][sendrecvType].width = result.frameWidth;
819
+ this.statsResults.resolutions[mediaType][sendrecvType].height = result.frameHeight;
820
+ this.statsResults.resolutions[mediaType][sendrecvType].framesReceived = result.framesReceived;
821
+ }
807
822
  if (!this.statsResults.internal[mediaType][sendrecvType].prevBytesReceived) {
808
823
  this.statsResults.internal[mediaType][sendrecvType].prevBytesReceived = result.bytesReceived;
809
824
  }
@@ -832,13 +847,15 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
832
847
  this.statsResults[mediaType][sendrecvType].packetsReceived = result.packetsReceived - this.statsResults.internal[mediaType][sendrecvType].totalPacketsReceived;
833
848
  this.statsResults.internal[mediaType][sendrecvType].totalPacketsReceived = result.packetsReceived;
834
849
  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);
850
+ if (receiveSlot) {
851
+ _loggerProxy.default.logger.info("StatsAnalyzer:index#processInboundRTPResult --> No packets received for receive slot ".concat(idAndCsi), this.statsResults[mediaType][sendrecvType].packetsReceived);
852
+ }
836
853
  }
837
854
 
838
855
  // Check the over all packet Lost ratio
839
856
  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
857
  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);
858
+ _loggerProxy.default.logger.info("StatsAnalyzer:index#processInboundRTPResult --> Packets getting lost from the receiver with slot ".concat(idAndCsi), this.statsResults[mediaType][sendrecvType].currentPacketLossRatio);
842
859
  }
843
860
 
844
861
  // TODO: check the packet loss value is negative values here
@@ -900,12 +917,6 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
900
917
  return;
901
918
  }
902
919
  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
920
  if (sendrecvType === _constants.STATS.RECEIVE_DIRECTION) {
910
921
  this.statsResults.resolutions[mediaType][sendrecvType].framesReceived = result.framesReceived;
911
922
  this.statsResults.resolutions[mediaType][sendrecvType].framesDecoded = result.framesDecoded;