@webex/plugin-meetings 3.0.0-beta.1 → 3.0.0-beta.104
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.
- package/UPGRADING.md +9 -9
- package/browsers.js +19 -24
- package/dist/annotation/annotation.types.js +7 -0
- package/dist/annotation/annotation.types.js.map +1 -0
- package/dist/annotation/constants.js +48 -0
- package/dist/annotation/constants.js.map +1 -0
- package/dist/annotation/index.js +357 -0
- package/dist/annotation/index.js.map +1 -0
- package/dist/breakouts/breakout.js +176 -0
- package/dist/breakouts/breakout.js.map +1 -0
- package/dist/breakouts/collection.js +23 -0
- package/dist/breakouts/collection.js.map +1 -0
- package/dist/breakouts/edit-lock-error.js +52 -0
- package/dist/breakouts/edit-lock-error.js.map +1 -0
- package/dist/breakouts/events.js +43 -0
- package/dist/breakouts/events.js.map +1 -0
- package/dist/breakouts/index.js +919 -0
- package/dist/breakouts/index.js.map +1 -0
- package/dist/breakouts/request.js +78 -0
- package/dist/breakouts/request.js.map +1 -0
- package/dist/breakouts/utils.js +67 -0
- package/dist/breakouts/utils.js.map +1 -0
- package/dist/common/browser-detection.js +1 -20
- package/dist/common/browser-detection.js.map +1 -1
- package/dist/common/collection.js +5 -20
- package/dist/common/collection.js.map +1 -1
- package/dist/common/config.js +0 -7
- package/dist/common/config.js.map +1 -1
- package/dist/common/errors/captcha-error.js +10 -24
- package/dist/common/errors/captcha-error.js.map +1 -1
- package/dist/common/errors/intent-to-join.js +11 -24
- package/dist/common/errors/intent-to-join.js.map +1 -1
- package/dist/common/errors/join-meeting.js +12 -25
- package/dist/common/errors/join-meeting.js.map +1 -1
- package/dist/common/errors/media.js +10 -24
- package/dist/common/errors/media.js.map +1 -1
- package/dist/common/errors/parameter.js +5 -33
- package/dist/common/errors/parameter.js.map +1 -1
- package/dist/common/errors/password-error.js +10 -24
- package/dist/common/errors/password-error.js.map +1 -1
- package/dist/common/errors/permission.js +9 -23
- package/dist/common/errors/permission.js.map +1 -1
- package/dist/common/errors/reconnection-in-progress.js +0 -17
- package/dist/common/errors/reconnection-in-progress.js.map +1 -1
- package/dist/common/errors/reconnection.js +10 -24
- package/dist/common/errors/reconnection.js.map +1 -1
- package/dist/common/errors/stats.js +10 -24
- package/dist/common/errors/stats.js.map +1 -1
- package/dist/common/errors/webex-errors.js +10 -69
- package/dist/common/errors/webex-errors.js.map +1 -1
- package/dist/common/errors/webex-meetings-error.js +5 -25
- package/dist/common/errors/webex-meetings-error.js.map +1 -1
- package/dist/common/events/events-scope.js +0 -22
- package/dist/common/events/events-scope.js.map +1 -1
- package/dist/common/events/events.js +0 -23
- package/dist/common/events/events.js.map +1 -1
- package/dist/common/events/trigger-proxy.js +0 -12
- package/dist/common/events/trigger-proxy.js.map +1 -1
- package/dist/common/events/util.js +0 -15
- package/dist/common/events/util.js.map +1 -1
- package/dist/common/logs/logger-config.js +0 -4
- package/dist/common/logs/logger-config.js.map +1 -1
- package/dist/common/logs/logger-proxy.js +1 -8
- package/dist/common/logs/logger-proxy.js.map +1 -1
- package/dist/common/logs/request.js +37 -60
- package/dist/common/logs/request.js.map +1 -1
- package/dist/common/queue.js +4 -14
- package/dist/common/queue.js.map +1 -1
- package/dist/config.js +7 -6
- package/dist/config.js.map +1 -1
- package/dist/constants.js +184 -122
- package/dist/constants.js.map +1 -1
- package/dist/controls-options-manager/constants.js +14 -0
- package/dist/controls-options-manager/constants.js.map +1 -0
- package/dist/controls-options-manager/enums.js +25 -0
- package/dist/controls-options-manager/enums.js.map +1 -0
- package/dist/controls-options-manager/index.js +297 -0
- package/dist/controls-options-manager/index.js.map +1 -0
- package/dist/controls-options-manager/types.js +7 -0
- package/dist/controls-options-manager/types.js.map +1 -0
- package/dist/controls-options-manager/util.js +250 -0
- package/dist/controls-options-manager/util.js.map +1 -0
- package/dist/index.js +72 -17
- package/dist/index.js.map +1 -1
- package/dist/locus-info/controlsUtils.js +56 -29
- package/dist/locus-info/controlsUtils.js.map +1 -1
- package/dist/locus-info/embeddedAppsUtils.js +3 -26
- package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
- package/dist/locus-info/fullState.js +0 -15
- package/dist/locus-info/fullState.js.map +1 -1
- package/dist/locus-info/hostUtils.js +4 -12
- package/dist/locus-info/hostUtils.js.map +1 -1
- package/dist/locus-info/index.js +362 -208
- package/dist/locus-info/index.js.map +1 -1
- package/dist/locus-info/infoUtils.js +3 -37
- package/dist/locus-info/infoUtils.js.map +1 -1
- package/dist/locus-info/mediaSharesUtils.js +12 -38
- package/dist/locus-info/mediaSharesUtils.js.map +1 -1
- package/dist/locus-info/parser.js +92 -118
- package/dist/locus-info/parser.js.map +1 -1
- package/dist/locus-info/selfUtils.js +99 -91
- package/dist/locus-info/selfUtils.js.map +1 -1
- package/dist/media/index.js +113 -337
- package/dist/media/index.js.map +1 -1
- package/dist/media/properties.js +96 -135
- package/dist/media/properties.js.map +1 -1
- package/dist/media/util.js +1 -35
- package/dist/media/util.js.map +1 -1
- package/dist/mediaQualityMetrics/config.js +505 -495
- package/dist/mediaQualityMetrics/config.js.map +1 -1
- package/dist/meeting/in-meeting-actions.js +59 -14
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/meeting/index.js +2909 -2398
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/muteState.js +257 -112
- package/dist/meeting/muteState.js.map +1 -1
- package/dist/meeting/request.js +330 -264
- package/dist/meeting/request.js.map +1 -1
- package/dist/meeting/request.type.js +7 -0
- package/dist/meeting/request.type.js.map +1 -0
- package/dist/meeting/state.js +21 -31
- package/dist/meeting/state.js.map +1 -1
- package/dist/meeting/util.js +63 -261
- package/dist/meeting/util.js.map +1 -1
- package/dist/meeting-info/collection.js +6 -25
- package/dist/meeting-info/collection.js.map +1 -1
- package/dist/meeting-info/index.js +14 -32
- package/dist/meeting-info/index.js.map +1 -1
- package/dist/meeting-info/meeting-info-v2.js +273 -280
- package/dist/meeting-info/meeting-info-v2.js.map +1 -1
- package/dist/meeting-info/request.js +3 -15
- package/dist/meeting-info/request.js.map +1 -1
- package/dist/meeting-info/util.js +98 -183
- package/dist/meeting-info/util.js.map +1 -1
- package/dist/meeting-info/utilv2.js +155 -232
- package/dist/meeting-info/utilv2.js.map +1 -1
- package/dist/meetings/collection.js +26 -19
- package/dist/meetings/collection.js.map +1 -1
- package/dist/meetings/index.js +741 -548
- package/dist/meetings/index.js.map +1 -1
- package/dist/meetings/request.js +26 -41
- package/dist/meetings/request.js.map +1 -1
- package/dist/meetings/util.js +194 -149
- package/dist/meetings/util.js.map +1 -1
- package/dist/member/index.js +100 -85
- package/dist/member/index.js.map +1 -1
- package/dist/member/types.js +15 -0
- package/dist/member/types.js.map +1 -0
- package/dist/member/util.js +90 -68
- package/dist/member/util.js.map +1 -1
- package/dist/members/collection.js +13 -12
- package/dist/members/collection.js.map +1 -1
- package/dist/members/index.js +227 -188
- package/dist/members/index.js.map +1 -1
- package/dist/members/request.js +54 -39
- package/dist/members/request.js.map +1 -1
- package/dist/members/types.js +15 -0
- package/dist/members/types.js.map +1 -0
- package/dist/members/util.js +107 -44
- package/dist/members/util.js.map +1 -1
- package/dist/metrics/config.js +5 -14
- package/dist/metrics/config.js.map +1 -1
- package/dist/metrics/constants.js +3 -7
- package/dist/metrics/constants.js.map +1 -1
- package/dist/metrics/index.js +67 -159
- package/dist/metrics/index.js.map +1 -1
- package/dist/multistream/mediaRequestManager.js +250 -0
- package/dist/multistream/mediaRequestManager.js.map +1 -0
- package/dist/multistream/receiveSlot.js +202 -0
- package/dist/multistream/receiveSlot.js.map +1 -0
- package/dist/multistream/receiveSlotManager.js +176 -0
- package/dist/multistream/receiveSlotManager.js.map +1 -0
- package/dist/multistream/remoteMedia.js +270 -0
- package/dist/multistream/remoteMedia.js.map +1 -0
- package/dist/multistream/remoteMediaGroup.js +209 -0
- package/dist/multistream/remoteMediaGroup.js.map +1 -0
- package/dist/multistream/remoteMediaManager.js +1137 -0
- package/dist/multistream/remoteMediaManager.js.map +1 -0
- package/dist/networkQualityMonitor/index.js +40 -59
- package/dist/networkQualityMonitor/index.js.map +1 -1
- package/dist/personal-meeting-room/index.js +21 -45
- package/dist/personal-meeting-room/index.js.map +1 -1
- package/dist/personal-meeting-room/request.js +1 -31
- package/dist/personal-meeting-room/request.js.map +1 -1
- package/dist/personal-meeting-room/util.js +0 -13
- package/dist/personal-meeting-room/util.js.map +1 -1
- package/dist/reachability/index.js +192 -191
- package/dist/reachability/index.js.map +1 -1
- package/dist/reachability/request.js +15 -23
- package/dist/reachability/request.js.map +1 -1
- package/dist/reactions/constants.js +13 -0
- package/dist/reactions/constants.js.map +1 -0
- package/dist/reactions/reactions.js +109 -0
- package/dist/reactions/reactions.js.map +1 -0
- package/dist/reactions/reactions.type.js +36 -0
- package/dist/reactions/reactions.type.js.map +1 -0
- package/dist/reconnection-manager/index.js +386 -527
- package/dist/reconnection-manager/index.js.map +1 -1
- package/dist/recording-controller/enums.js +17 -0
- package/dist/recording-controller/enums.js.map +1 -0
- package/dist/recording-controller/index.js +343 -0
- package/dist/recording-controller/index.js.map +1 -0
- package/dist/recording-controller/util.js +63 -0
- package/dist/recording-controller/util.js.map +1 -0
- package/dist/roap/index.js +84 -286
- package/dist/roap/index.js.map +1 -1
- package/dist/roap/request.js +138 -238
- package/dist/roap/request.js.map +1 -1
- package/dist/roap/turnDiscovery.js +164 -102
- package/dist/roap/turnDiscovery.js.map +1 -1
- package/dist/statsAnalyzer/global.js +1 -93
- package/dist/statsAnalyzer/global.js.map +1 -1
- package/dist/statsAnalyzer/index.js +399 -470
- package/dist/statsAnalyzer/index.js.map +1 -1
- package/dist/statsAnalyzer/mqaUtil.js +143 -87
- package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
- package/dist/transcription/index.js +22 -47
- package/dist/transcription/index.js.map +1 -1
- package/dist/types/annotation/annotation.types.d.ts +34 -0
- package/dist/types/annotation/constants.d.ts +31 -0
- package/dist/types/annotation/index.d.ts +124 -0
- package/dist/types/breakouts/breakout.d.ts +8 -0
- package/dist/types/breakouts/collection.d.ts +5 -0
- package/dist/types/breakouts/edit-lock-error.d.ts +15 -0
- package/dist/types/breakouts/events.d.ts +2 -0
- package/dist/types/breakouts/index.d.ts +5 -0
- package/dist/types/breakouts/request.d.ts +22 -0
- package/dist/types/breakouts/utils.d.ts +15 -0
- package/dist/types/common/browser-detection.d.ts +9 -0
- package/dist/types/common/collection.d.ts +48 -0
- package/dist/types/common/config.d.ts +2 -0
- package/dist/types/common/errors/captcha-error.d.ts +15 -0
- package/dist/types/common/errors/intent-to-join.d.ts +16 -0
- package/dist/types/common/errors/join-meeting.d.ts +17 -0
- package/dist/types/common/errors/media.d.ts +15 -0
- package/dist/types/common/errors/parameter.d.ts +15 -0
- package/dist/types/common/errors/password-error.d.ts +15 -0
- package/dist/types/common/errors/permission.d.ts +14 -0
- package/dist/types/common/errors/reconnection-in-progress.d.ts +9 -0
- package/dist/types/common/errors/reconnection.d.ts +15 -0
- package/dist/types/common/errors/stats.d.ts +15 -0
- package/dist/types/common/errors/webex-errors.d.ts +69 -0
- package/dist/types/common/errors/webex-meetings-error.d.ts +20 -0
- package/dist/types/common/events/events-scope.d.ts +17 -0
- package/dist/types/common/events/events.d.ts +12 -0
- package/dist/types/common/events/trigger-proxy.d.ts +2 -0
- package/dist/types/common/events/util.d.ts +2 -0
- package/dist/types/common/logs/logger-config.d.ts +2 -0
- package/dist/types/common/logs/logger-proxy.d.ts +2 -0
- package/dist/types/common/logs/request.d.ts +34 -0
- package/dist/types/common/queue.d.ts +32 -0
- package/dist/types/config.d.ts +78 -0
- package/dist/types/constants.d.ts +968 -0
- package/dist/types/controls-options-manager/constants.d.ts +4 -0
- package/dist/types/controls-options-manager/enums.d.ts +13 -0
- package/dist/types/controls-options-manager/index.d.ts +136 -0
- package/dist/types/controls-options-manager/types.d.ts +37 -0
- package/dist/types/controls-options-manager/util.d.ts +1 -0
- package/dist/types/index.d.ts +7 -0
- package/dist/types/locus-info/controlsUtils.d.ts +2 -0
- package/dist/types/locus-info/embeddedAppsUtils.d.ts +2 -0
- package/dist/types/locus-info/fullState.d.ts +2 -0
- package/dist/types/locus-info/hostUtils.d.ts +2 -0
- package/dist/types/locus-info/index.d.ts +315 -0
- package/dist/types/locus-info/infoUtils.d.ts +2 -0
- package/dist/types/locus-info/mediaSharesUtils.d.ts +2 -0
- package/dist/types/locus-info/parser.d.ts +212 -0
- package/dist/types/locus-info/selfUtils.d.ts +2 -0
- package/dist/types/media/index.d.ts +34 -0
- package/dist/types/media/properties.d.ts +108 -0
- package/dist/types/media/util.d.ts +2 -0
- package/dist/types/mediaQualityMetrics/config.d.ts +365 -0
- package/dist/types/meeting/in-meeting-actions.d.ts +129 -0
- package/dist/types/meeting/index.d.ts +1748 -0
- package/dist/types/meeting/muteState.d.ts +185 -0
- package/dist/types/meeting/request.d.ts +275 -0
- package/dist/types/meeting/request.type.d.ts +11 -0
- package/dist/types/meeting/state.d.ts +9 -0
- package/dist/types/meeting/util.d.ts +2 -0
- package/dist/types/meeting-info/collection.d.ts +20 -0
- package/dist/types/meeting-info/index.d.ts +57 -0
- package/dist/types/meeting-info/meeting-info-v2.d.ts +112 -0
- package/dist/types/meeting-info/request.d.ts +22 -0
- package/dist/types/meeting-info/util.d.ts +2 -0
- package/dist/types/meeting-info/utilv2.d.ts +2 -0
- package/dist/types/meetings/collection.d.ts +31 -0
- package/dist/types/meetings/index.d.ts +345 -0
- package/dist/types/meetings/request.d.ts +27 -0
- package/dist/types/meetings/util.d.ts +18 -0
- package/dist/types/member/index.d.ts +156 -0
- package/dist/types/member/types.d.ts +21 -0
- package/dist/types/member/util.d.ts +2 -0
- package/dist/types/members/collection.d.ts +29 -0
- package/dist/types/members/index.d.ts +353 -0
- package/dist/types/members/request.d.ts +69 -0
- package/dist/types/members/types.d.ts +24 -0
- package/dist/types/members/util.d.ts +2 -0
- package/dist/types/metrics/config.d.ts +172 -0
- package/dist/types/metrics/constants.d.ts +54 -0
- package/dist/types/metrics/index.d.ts +152 -0
- package/dist/types/multistream/mediaRequestManager.d.ts +101 -0
- package/dist/types/multistream/receiveSlot.d.ts +68 -0
- package/dist/types/multistream/receiveSlotManager.d.ts +56 -0
- package/dist/types/multistream/remoteMedia.d.ts +72 -0
- package/dist/types/multistream/remoteMediaGroup.d.ts +47 -0
- package/dist/types/multistream/remoteMediaManager.d.ts +263 -0
- package/dist/types/networkQualityMonitor/index.d.ts +70 -0
- package/dist/types/personal-meeting-room/index.d.ts +47 -0
- package/dist/types/personal-meeting-room/request.d.ts +14 -0
- package/dist/types/personal-meeting-room/util.d.ts +2 -0
- package/dist/types/reachability/index.d.ts +152 -0
- package/dist/types/reachability/request.d.ts +37 -0
- package/dist/types/reactions/constants.d.ts +3 -0
- package/dist/types/reactions/reactions.d.ts +4 -0
- package/dist/types/reactions/reactions.type.d.ts +52 -0
- package/dist/types/reconnection-manager/index.d.ts +126 -0
- package/dist/types/recording-controller/enums.d.ts +7 -0
- package/dist/types/recording-controller/index.d.ts +193 -0
- package/dist/types/recording-controller/util.d.ts +13 -0
- package/dist/types/roap/index.d.ts +77 -0
- package/dist/types/roap/request.d.ts +38 -0
- package/dist/types/roap/turnDiscovery.d.ts +88 -0
- package/dist/types/statsAnalyzer/global.d.ts +36 -0
- package/dist/types/statsAnalyzer/index.d.ts +200 -0
- package/dist/types/statsAnalyzer/mqaUtil.d.ts +24 -0
- package/dist/types/transcription/index.d.ts +64 -0
- package/internal-README.md +7 -6
- package/package.json +29 -21
- package/src/annotation/annotation.types.ts +41 -0
- package/src/annotation/constants.ts +36 -0
- package/src/annotation/index.ts +339 -0
- package/src/breakouts/README.md +219 -0
- package/src/breakouts/breakout.ts +141 -0
- package/src/breakouts/collection.ts +19 -0
- package/src/breakouts/edit-lock-error.ts +25 -0
- package/src/breakouts/events.ts +37 -0
- package/src/breakouts/index.ts +823 -0
- package/src/breakouts/request.ts +55 -0
- package/src/breakouts/utils.ts +57 -0
- package/src/common/{browser-detection.js → browser-detection.ts} +9 -6
- package/src/common/collection.ts +9 -7
- package/src/common/{config.js → config.ts} +1 -1
- package/src/common/errors/{captcha-error.js → captcha-error.ts} +11 -7
- package/src/common/errors/{intent-to-join.js → intent-to-join.ts} +12 -7
- package/src/common/errors/{join-meeting.js → join-meeting.ts} +17 -8
- package/src/common/errors/{media.js → media.ts} +11 -7
- package/src/common/errors/parameter.ts +11 -7
- package/src/common/errors/{password-error.js → password-error.ts} +11 -7
- package/src/common/errors/{permission.js → permission.ts} +10 -6
- package/src/common/errors/{reconnection.js → reconnection.ts} +11 -7
- package/src/common/errors/{stats.js → stats.ts} +11 -7
- package/src/common/errors/{webex-errors.js → webex-errors.ts} +8 -25
- package/src/common/errors/{webex-meetings-error.js → webex-meetings-error.ts} +4 -2
- package/src/common/events/{events-scope.js → events-scope.ts} +6 -2
- package/src/common/events/{events.js → events.ts} +5 -1
- package/src/common/events/{trigger-proxy.js → trigger-proxy.ts} +9 -5
- package/src/common/events/{util.js → util.ts} +2 -3
- package/src/common/logs/{logger-config.js → logger-config.ts} +1 -2
- package/src/common/logs/logger-proxy.ts +44 -0
- package/src/common/logs/{request.js → request.ts} +22 -9
- package/src/common/queue.ts +1 -2
- package/src/{config.js → config.ts} +18 -12
- package/src/constants.ts +256 -183
- package/src/controls-options-manager/constants.ts +5 -0
- package/src/controls-options-manager/enums.ts +16 -0
- package/src/controls-options-manager/index.ts +278 -0
- package/src/controls-options-manager/types.ts +49 -0
- package/src/controls-options-manager/util.ts +229 -0
- package/src/index.ts +33 -0
- package/src/locus-info/controlsUtils.ts +169 -0
- package/src/locus-info/{embeddedAppsUtils.js → embeddedAppsUtils.ts} +5 -6
- package/src/locus-info/{fullState.js → fullState.ts} +16 -12
- package/src/locus-info/{hostUtils.js → hostUtils.ts} +9 -8
- package/src/locus-info/{index.js → index.ts} +331 -80
- package/src/locus-info/{infoUtils.js → infoUtils.ts} +19 -8
- package/src/locus-info/{mediaSharesUtils.js → mediaSharesUtils.ts} +17 -17
- package/src/locus-info/{parser.js → parser.ts} +67 -79
- package/src/locus-info/{selfUtils.js → selfUtils.ts} +196 -67
- package/src/media/index.ts +488 -0
- package/src/media/{properties.js → properties.ts} +67 -54
- package/src/media/util.ts +16 -0
- package/src/mediaQualityMetrics/config.ts +384 -0
- package/src/meeting/in-meeting-actions.ts +123 -3
- package/src/meeting/{index.js → index.ts} +3334 -1775
- package/src/meeting/muteState.ts +526 -0
- package/src/meeting/{request.js → request.ts} +350 -142
- package/src/meeting/request.type.ts +13 -0
- package/src/meeting/{state.js → state.ts} +50 -35
- package/src/meeting/{util.js → util.ts} +126 -159
- package/src/meeting-info/{collection.js → collection.ts} +6 -2
- package/src/meeting-info/{index.js → index.ts} +42 -36
- package/src/meeting-info/meeting-info-v2.ts +345 -0
- package/src/meeting-info/{request.js → request.ts} +14 -4
- package/src/meeting-info/{util.js → util.ts} +60 -51
- package/src/meeting-info/{utilv2.js → utilv2.ts} +76 -60
- package/src/meetings/{collection.js → collection.ts} +26 -3
- package/src/meetings/index.ts +1394 -0
- package/src/meetings/{request.js → request.ts} +34 -25
- package/src/meetings/util.ts +288 -0
- package/src/member/{index.js → index.ts} +124 -56
- package/src/member/types.ts +24 -0
- package/src/member/{util.js → util.ts} +105 -25
- package/src/members/{collection.js → collection.ts} +10 -2
- package/src/members/{index.js → index.ts} +359 -139
- package/src/members/request.ts +215 -0
- package/src/members/types.ts +28 -0
- package/src/members/{util.js → util.ts} +145 -54
- package/src/metrics/{config.js → config.ts} +256 -92
- package/src/metrics/{constants.js → constants.ts} +1 -6
- package/src/metrics/{index.js → index.ts} +116 -97
- package/src/multistream/mediaRequestManager.ts +324 -0
- package/src/multistream/receiveSlot.ts +184 -0
- package/src/multistream/receiveSlotManager.ts +166 -0
- package/src/multistream/remoteMedia.ts +254 -0
- package/src/multistream/remoteMediaGroup.ts +225 -0
- package/src/multistream/remoteMediaManager.ts +1075 -0
- package/src/networkQualityMonitor/{index.js → index.ts} +41 -29
- package/src/personal-meeting-room/{index.js → index.ts} +28 -19
- package/src/personal-meeting-room/{request.js → request.ts} +13 -4
- package/src/personal-meeting-room/{util.js → util.ts} +4 -4
- package/src/reachability/{index.js → index.ts} +157 -94
- package/src/reachability/request.ts +46 -35
- package/src/reactions/constants.ts +4 -0
- package/src/reactions/reactions.ts +104 -0
- package/src/reactions/reactions.type.ts +62 -0
- package/src/reconnection-manager/{index.js → index.ts} +261 -163
- package/src/recording-controller/enums.ts +8 -0
- package/src/recording-controller/index.ts +315 -0
- package/src/recording-controller/util.ts +58 -0
- package/src/roap/index.ts +241 -0
- package/src/roap/request.ts +172 -0
- package/src/roap/turnDiscovery.ts +127 -53
- package/src/statsAnalyzer/global.ts +37 -0
- package/src/statsAnalyzer/index.ts +1273 -0
- package/src/statsAnalyzer/mqaUtil.ts +291 -0
- package/src/transcription/{index.js → index.ts} +46 -39
- package/test/integration/spec/converged-space-meetings.js +177 -0
- package/test/integration/spec/journey.js +666 -464
- package/test/integration/spec/space-meeting.js +321 -206
- package/test/integration/spec/transcription.js +7 -8
- package/test/unit/spec/annotation/index.ts +435 -0
- package/test/unit/spec/breakouts/breakout.ts +184 -0
- package/test/unit/spec/breakouts/collection.ts +15 -0
- package/test/unit/spec/breakouts/edit-lock-error.ts +30 -0
- package/test/unit/spec/breakouts/events.ts +77 -0
- package/test/unit/spec/breakouts/index.ts +1504 -0
- package/test/unit/spec/breakouts/request.ts +104 -0
- package/test/unit/spec/breakouts/utils.js +72 -0
- package/test/unit/spec/common/browser-detection.js +9 -28
- package/test/unit/spec/controls-options-manager/index.js +287 -0
- package/test/unit/spec/controls-options-manager/util.js +403 -0
- package/test/unit/spec/fixture/locus.js +92 -90
- package/test/unit/spec/locus-info/controlsUtils.js +177 -32
- package/test/unit/spec/locus-info/embeddedAppsUtils.js +8 -6
- package/test/unit/spec/locus-info/index.js +493 -3
- package/test/unit/spec/locus-info/infoUtils.js +41 -32
- package/test/unit/spec/locus-info/lib/BasicSeqCmp.json +88 -430
- package/test/unit/spec/locus-info/lib/SeqCmp.json +513 -685
- package/test/unit/spec/locus-info/parser.js +3 -9
- package/test/unit/spec/locus-info/selfConstant.js +110 -103
- package/test/unit/spec/locus-info/selfUtils.js +236 -12
- package/test/unit/spec/media/index.ts +303 -0
- package/test/unit/spec/media/properties.ts +73 -82
- package/test/unit/spec/meeting/in-meeting-actions.ts +58 -3
- package/test/unit/spec/meeting/index.js +3127 -975
- package/test/unit/spec/meeting/muteState.js +375 -70
- package/test/unit/spec/meeting/request.js +217 -43
- package/test/unit/spec/meeting/utils.js +205 -163
- package/test/unit/spec/meeting-info/meetinginfov2.js +268 -74
- package/test/unit/spec/meeting-info/request.js +7 -9
- package/test/unit/spec/meeting-info/util.js +11 -12
- package/test/unit/spec/meeting-info/utilv2.js +131 -74
- package/test/unit/spec/meetings/collection.js +15 -1
- package/test/unit/spec/meetings/index.js +1052 -333
- package/test/unit/spec/meetings/utils.js +163 -14
- package/test/unit/spec/member/index.js +24 -1
- package/test/unit/spec/member/util.js +359 -32
- package/test/unit/spec/members/index.js +547 -37
- package/test/unit/spec/members/request.js +76 -20
- package/test/unit/spec/members/utils.js +191 -4
- package/test/unit/spec/metrics/index.js +46 -20
- package/test/unit/spec/multistream/mediaRequestManager.ts +1060 -0
- package/test/unit/spec/multistream/receiveSlot.ts +163 -0
- package/test/unit/spec/multistream/receiveSlotManager.ts +203 -0
- package/test/unit/spec/multistream/remoteMedia.ts +255 -0
- package/test/unit/spec/multistream/remoteMediaGroup.ts +396 -0
- package/test/unit/spec/multistream/remoteMediaManager.ts +1793 -0
- package/test/unit/spec/networkQualityMonitor/index.js +24 -18
- package/test/unit/spec/personal-meeting-room/personal-meeting-room.js +2 -7
- package/test/unit/spec/reachability/index.ts +176 -27
- package/test/unit/spec/reachability/request.js +66 -0
- package/test/unit/spec/reconnection-manager/index.js +106 -9
- package/test/unit/spec/recording-controller/index.js +231 -0
- package/test/unit/spec/recording-controller/util.js +102 -0
- package/test/unit/spec/roap/index.ts +78 -45
- package/test/unit/spec/roap/request.ts +217 -0
- package/test/unit/spec/roap/turnDiscovery.ts +93 -49
- package/test/unit/spec/stats-analyzer/index.js +118 -65
- package/test/utils/cmr.js +44 -42
- package/test/utils/constants.js +9 -0
- package/test/utils/integrationTestUtils.js +64 -0
- package/test/utils/testUtils.js +63 -99
- package/test/utils/webex-config.js +22 -18
- package/test/utils/webex-test-users.js +57 -50
- package/tsconfig.json +6 -0
- package/dist/meeting/effectsState.js +0 -327
- package/dist/meeting/effectsState.js.map +0 -1
- package/dist/peer-connection-manager/index.js +0 -794
- package/dist/peer-connection-manager/index.js.map +0 -1
- package/dist/peer-connection-manager/util.js +0 -124
- package/dist/peer-connection-manager/util.js.map +0 -1
- package/dist/roap/collection.js +0 -73
- package/dist/roap/collection.js.map +0 -1
- package/dist/roap/handler.js +0 -337
- package/dist/roap/handler.js.map +0 -1
- package/dist/roap/state.js +0 -164
- package/dist/roap/state.js.map +0 -1
- package/dist/roap/util.js +0 -102
- package/dist/roap/util.js.map +0 -1
- package/src/common/logs/logger-proxy.js +0 -33
- package/src/index.js +0 -15
- package/src/locus-info/controlsUtils.js +0 -102
- package/src/media/index.js +0 -593
- package/src/media/util.js +0 -38
- package/src/mediaQualityMetrics/config.js +0 -382
- package/src/meeting/effectsState.js +0 -205
- package/src/meeting/muteState.js +0 -318
- package/src/meeting-info/meeting-info-v2.js +0 -255
- package/src/meetings/index.js +0 -986
- package/src/meetings/util.js +0 -176
- package/src/members/request.js +0 -131
- package/src/peer-connection-manager/index.js +0 -723
- package/src/peer-connection-manager/util.ts +0 -117
- package/src/roap/collection.js +0 -63
- package/src/roap/handler.js +0 -252
- package/src/roap/index.js +0 -380
- package/src/roap/request.js +0 -198
- package/src/roap/state.js +0 -149
- package/src/roap/util.js +0 -93
- package/src/statsAnalyzer/global.js +0 -131
- package/src/statsAnalyzer/index.js +0 -1020
- package/src/statsAnalyzer/mqaUtil.js +0 -173
- package/test/unit/spec/meeting/effectsState.js +0 -293
- package/test/unit/spec/peerconnection-manager/index.js +0 -188
- package/test/unit/spec/peerconnection-manager/utils.js +0 -48
- package/test/unit/spec/peerconnection-manager/utils.test-fixtures.ts +0 -389
- package/test/unit/spec/roap/util.js +0 -30
- /package/src/common/errors/{reconnection-in-progress.js → reconnection-in-progress.ts} +0 -0
|
@@ -1,53 +1,32 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _Reflect$construct = require("@babel/runtime-corejs2/core-js/reflect/construct");
|
|
4
|
-
|
|
5
4
|
var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
|
|
6
|
-
|
|
7
5
|
var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
|
|
8
|
-
|
|
9
6
|
_Object$defineProperty(exports, "__esModule", {
|
|
10
7
|
value: true
|
|
11
8
|
});
|
|
12
|
-
|
|
13
9
|
exports.StatsAnalyzer = exports.EVENTS = void 0;
|
|
14
|
-
|
|
10
|
+
var _keys = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/keys"));
|
|
15
11
|
var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/promise"));
|
|
16
|
-
|
|
17
12
|
var _stringify = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/json/stringify"));
|
|
18
|
-
|
|
19
13
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
|
|
20
|
-
|
|
21
14
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));
|
|
22
|
-
|
|
23
15
|
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/assertThisInitialized"));
|
|
24
|
-
|
|
25
16
|
var _inherits2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/inherits"));
|
|
26
|
-
|
|
27
17
|
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/possibleConstructorReturn"));
|
|
28
|
-
|
|
29
18
|
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/getPrototypeOf"));
|
|
30
|
-
|
|
31
19
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
|
|
32
|
-
|
|
33
20
|
var _cloneDeep2 = _interopRequireDefault(require("lodash/cloneDeep"));
|
|
34
|
-
|
|
21
|
+
var _internalMediaCore = require("@webex/internal-media-core");
|
|
35
22
|
var _eventsScope = _interopRequireDefault(require("../common/events/events-scope"));
|
|
36
|
-
|
|
37
23
|
var _constants = require("../constants");
|
|
38
|
-
|
|
39
|
-
var _config = _interopRequireDefault(require("../mediaQualityMetrics/config"));
|
|
40
|
-
|
|
24
|
+
var _config = require("../mediaQualityMetrics/config");
|
|
41
25
|
var _loggerProxy = _interopRequireDefault(require("../common/logs/logger-proxy"));
|
|
42
|
-
|
|
43
26
|
var _global = _interopRequireDefault(require("./global"));
|
|
44
|
-
|
|
45
27
|
var _mqaUtil = require("./mqaUtil");
|
|
46
|
-
|
|
47
28
|
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = _Reflect$construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
|
|
48
|
-
|
|
49
29
|
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !_Reflect$construct) return false; if (_Reflect$construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(_Reflect$construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
50
|
-
|
|
51
30
|
var EVENTS = {
|
|
52
31
|
MEDIA_QUALITY: 'MEDIA_QUALITY',
|
|
53
32
|
LOCAL_MEDIA_STARTED: 'LOCAL_MEDIA_STARTED',
|
|
@@ -55,6 +34,21 @@ var EVENTS = {
|
|
|
55
34
|
REMOTE_MEDIA_STARTED: 'REMOTE_MEDIA_STARTED',
|
|
56
35
|
REMOTE_MEDIA_STOPPED: 'REMOTE_MEDIA_STOPPED'
|
|
57
36
|
};
|
|
37
|
+
exports.EVENTS = EVENTS;
|
|
38
|
+
var emptySender = {
|
|
39
|
+
trackLabel: '',
|
|
40
|
+
maxPacketLossRatio: 0,
|
|
41
|
+
availableBandwidth: 0,
|
|
42
|
+
bytesSent: 0,
|
|
43
|
+
meanRemoteJitter: [],
|
|
44
|
+
meanRoundTripTime: []
|
|
45
|
+
};
|
|
46
|
+
var emptyReceiver = {
|
|
47
|
+
availableBandwidth: 0,
|
|
48
|
+
bytesReceived: 0,
|
|
49
|
+
meanRtpJitter: [],
|
|
50
|
+
meanRoundTripTime: []
|
|
51
|
+
};
|
|
58
52
|
/**
|
|
59
53
|
* Stats Analyzer class that will emit events based on detected quality
|
|
60
54
|
*
|
|
@@ -62,54 +56,66 @@ var EVENTS = {
|
|
|
62
56
|
* @class StatsAnalyzer
|
|
63
57
|
* @extends {EventsScope}
|
|
64
58
|
*/
|
|
65
|
-
|
|
66
|
-
exports.EVENTS = EVENTS;
|
|
67
|
-
|
|
68
59
|
var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
69
60
|
(0, _inherits2.default)(StatsAnalyzer, _EventsScope);
|
|
70
|
-
|
|
71
61
|
var _super = _createSuper(StatsAnalyzer);
|
|
72
|
-
|
|
73
62
|
/**
|
|
74
63
|
* Creates a new instance of StatsAnalyzer
|
|
75
64
|
* @constructor
|
|
76
65
|
* @public
|
|
77
66
|
* @param {Object} config SDK Configuration Object
|
|
67
|
+
* @param {Function} receiveSlotCallback Callback used to access receive slots.
|
|
78
68
|
* @param {Object} networkQualityMonitor class for assessing network characteristics (jitter, packetLoss, latency)
|
|
79
69
|
* @param {Object} statsResults Default properties for stats
|
|
80
70
|
*/
|
|
81
71
|
function StatsAnalyzer(config) {
|
|
82
72
|
var _this;
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
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;
|
|
86
78
|
(0, _classCallCheck2.default)(this, StatsAnalyzer);
|
|
87
79
|
_this = _super.call(this);
|
|
80
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "config", void 0);
|
|
81
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "correlationId", void 0);
|
|
82
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "lastEmittedStartStopEvent", void 0);
|
|
83
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "lastMqaDataSent", void 0);
|
|
84
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "lastStatsResults", void 0);
|
|
85
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "meetingMediaStatus", void 0);
|
|
86
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "mqaInterval", void 0);
|
|
87
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "mqaSentCount", void 0);
|
|
88
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "networkQualityMonitor", void 0);
|
|
89
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "mediaConnection", void 0);
|
|
90
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "statsInterval", void 0);
|
|
91
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "statsResults", void 0);
|
|
92
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "statsStarted", void 0);
|
|
93
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "receiveSlotCallback", void 0);
|
|
88
94
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "emitStartStopEvents", function (mediaType, previousValue, currentValue, isLocal) {
|
|
89
95
|
if (mediaType !== 'audio' && mediaType !== 'video' && mediaType !== 'share') {
|
|
90
96
|
throw new Error("Unsupported mediaType: ".concat(mediaType));
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
if (previousValue === undefined) previousValue = 0; // eslint-disable-next-line no-param-reassign
|
|
97
|
+
}
|
|
95
98
|
|
|
99
|
+
// eslint-disable-next-line no-param-reassign
|
|
100
|
+
if (previousValue === undefined) previousValue = 0;
|
|
101
|
+
// eslint-disable-next-line no-param-reassign
|
|
96
102
|
if (currentValue === undefined) currentValue = 0;
|
|
103
|
+
if (!_this.lastEmittedStartStopEvent[mediaType]) {
|
|
104
|
+
_this.lastEmittedStartStopEvent[mediaType] = {};
|
|
105
|
+
}
|
|
97
106
|
var lastEmittedEvent = isLocal ? _this.lastEmittedStartStopEvent[mediaType].local : _this.lastEmittedStartStopEvent[mediaType].remote;
|
|
98
107
|
var newEvent;
|
|
99
|
-
|
|
100
108
|
if (currentValue - previousValue > 0) {
|
|
101
109
|
newEvent = isLocal ? EVENTS.LOCAL_MEDIA_STARTED : EVENTS.REMOTE_MEDIA_STARTED;
|
|
102
110
|
} else if (currentValue === previousValue && currentValue > 0) {
|
|
103
111
|
newEvent = isLocal ? EVENTS.LOCAL_MEDIA_STOPPED : EVENTS.REMOTE_MEDIA_STOPPED;
|
|
104
112
|
}
|
|
105
|
-
|
|
106
113
|
if (newEvent && lastEmittedEvent !== newEvent) {
|
|
107
114
|
if (isLocal) {
|
|
108
115
|
_this.lastEmittedStartStopEvent[mediaType].local = newEvent;
|
|
109
116
|
} else {
|
|
110
117
|
_this.lastEmittedStartStopEvent[mediaType].remote = newEvent;
|
|
111
118
|
}
|
|
112
|
-
|
|
113
119
|
_this.emit({
|
|
114
120
|
file: 'statsAnalyzer/index',
|
|
115
121
|
function: 'compareLastStatsResult'
|
|
@@ -122,7 +128,6 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
122
128
|
if (!result || !result.id) {
|
|
123
129
|
return;
|
|
124
130
|
}
|
|
125
|
-
|
|
126
131
|
var RemoteCandidateType = {};
|
|
127
132
|
var RemoteTransport = {};
|
|
128
133
|
var RemoteIpAddress = {};
|
|
@@ -130,31 +135,24 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
130
135
|
if (!result.id) return;
|
|
131
136
|
var sendRecvType = isSender ? _constants.STATS.SEND_DIRECTION : _constants.STATS.RECEIVE_DIRECTION;
|
|
132
137
|
var ipType = isRemote ? _constants.STATS.REMOTE : _constants.STATS.LOCAL;
|
|
133
|
-
|
|
134
138
|
if (!RemoteCandidateType[result.id]) {
|
|
135
139
|
RemoteCandidateType[result.id] = [];
|
|
136
140
|
}
|
|
137
|
-
|
|
138
141
|
if (!RemoteTransport[result.id]) {
|
|
139
142
|
RemoteTransport[result.id] = [];
|
|
140
143
|
}
|
|
141
|
-
|
|
142
144
|
if (!RemoteIpAddress[result.id]) {
|
|
143
145
|
RemoteIpAddress[result.id] = [];
|
|
144
146
|
}
|
|
145
|
-
|
|
146
147
|
if (!RemoteNetworkType[result.id]) {
|
|
147
148
|
RemoteNetworkType[result.id] = [];
|
|
148
149
|
}
|
|
149
|
-
|
|
150
150
|
if (result.candidateType && RemoteCandidateType[result.id].indexOf(result.candidateType) === -1) {
|
|
151
151
|
RemoteCandidateType[result.id].push(result.candidateType);
|
|
152
152
|
}
|
|
153
|
-
|
|
154
153
|
if (result.protocol && RemoteTransport[result.id].indexOf(result.protocol) === -1) {
|
|
155
154
|
RemoteTransport[result.id].push(result.protocol.toUpperCase());
|
|
156
155
|
}
|
|
157
|
-
|
|
158
156
|
if (result.ip && RemoteIpAddress[result.id].indexOf("".concat(result.ip, ":").concat(result.portNumber)) === -1) {
|
|
159
157
|
RemoteIpAddress[result.id].push("".concat(result.ip)); // TODO: Add ports
|
|
160
158
|
}
|
|
@@ -162,7 +160,6 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
162
160
|
if (result.networkType && RemoteNetworkType[result.id].indexOf(result.networkType) === -1) {
|
|
163
161
|
RemoteNetworkType[result.id].push(result.networkType);
|
|
164
162
|
}
|
|
165
|
-
|
|
166
163
|
_this.statsResults.internal.candidates[result.id] = {
|
|
167
164
|
candidateType: RemoteCandidateType[result.id],
|
|
168
165
|
ipAddress: RemoteIpAddress[result.id],
|
|
@@ -187,138 +184,34 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
187
184
|
_this.networkQualityMonitor = networkQualityMonitor;
|
|
188
185
|
_this.correlationId = config.correlationId;
|
|
189
186
|
_this.mqaSentCount = -1;
|
|
190
|
-
_this.lastMqaDataSent = {
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
send: {},
|
|
194
|
-
recv: {}
|
|
195
|
-
},
|
|
196
|
-
audio: {
|
|
197
|
-
send: {},
|
|
198
|
-
recv: {}
|
|
199
|
-
},
|
|
200
|
-
share: {
|
|
201
|
-
send: {},
|
|
202
|
-
recv: {}
|
|
203
|
-
}
|
|
204
|
-
},
|
|
205
|
-
video: {
|
|
206
|
-
send: {},
|
|
207
|
-
recv: {}
|
|
208
|
-
},
|
|
209
|
-
audio: {
|
|
210
|
-
send: {},
|
|
211
|
-
recv: {}
|
|
212
|
-
},
|
|
213
|
-
share: {
|
|
214
|
-
send: {},
|
|
215
|
-
recv: {}
|
|
216
|
-
}
|
|
217
|
-
};
|
|
218
|
-
_this.localMQEStats = {
|
|
219
|
-
audio: {
|
|
220
|
-
RX: {
|
|
221
|
-
packetsLost: [],
|
|
222
|
-
jitter: [],
|
|
223
|
-
latency: [],
|
|
224
|
-
bitRate: []
|
|
225
|
-
},
|
|
226
|
-
TX: {
|
|
227
|
-
packetsLost: [],
|
|
228
|
-
jitter: [],
|
|
229
|
-
latency: [],
|
|
230
|
-
bitRate: []
|
|
231
|
-
}
|
|
232
|
-
},
|
|
233
|
-
video: {
|
|
234
|
-
RX: {
|
|
235
|
-
packetsLost: [],
|
|
236
|
-
jitter: [],
|
|
237
|
-
latency: [],
|
|
238
|
-
bitRate: [],
|
|
239
|
-
frameRate: [],
|
|
240
|
-
resolutionWidth: [],
|
|
241
|
-
resolutionHeight: [],
|
|
242
|
-
requestedKeyFrame: [],
|
|
243
|
-
receivedKeyFrame: []
|
|
244
|
-
},
|
|
245
|
-
TX: {
|
|
246
|
-
packetsLost: [],
|
|
247
|
-
jitter: [],
|
|
248
|
-
latency: [],
|
|
249
|
-
bitRate: [],
|
|
250
|
-
frameRate: [],
|
|
251
|
-
resolutionWidth: [],
|
|
252
|
-
resolutionHeight: [],
|
|
253
|
-
requestedKeyFrame: [],
|
|
254
|
-
receivedKeyFrame: []
|
|
255
|
-
}
|
|
256
|
-
}
|
|
257
|
-
};
|
|
258
|
-
_this.lastEmittedStartStopEvent = {
|
|
259
|
-
audio: {
|
|
260
|
-
local: undefined,
|
|
261
|
-
remote: undefined
|
|
262
|
-
},
|
|
263
|
-
video: {
|
|
264
|
-
local: undefined,
|
|
265
|
-
remote: undefined
|
|
266
|
-
},
|
|
267
|
-
share: {
|
|
268
|
-
local: undefined,
|
|
269
|
-
remote: undefined
|
|
270
|
-
}
|
|
271
|
-
};
|
|
187
|
+
_this.lastMqaDataSent = {};
|
|
188
|
+
_this.lastEmittedStartStopEvent = {};
|
|
189
|
+
_this.receiveSlotCallback = receiveSlotCallback;
|
|
272
190
|
return _this;
|
|
273
191
|
}
|
|
274
192
|
|
|
193
|
+
/**
|
|
194
|
+
* Resets cumulative stats arrays.
|
|
195
|
+
*
|
|
196
|
+
* @public
|
|
197
|
+
* @memberof StatsAnalyzer
|
|
198
|
+
* @returns {void}
|
|
199
|
+
*/
|
|
275
200
|
(0, _createClass2.default)(StatsAnalyzer, [{
|
|
276
|
-
key: "populateResults",
|
|
277
|
-
value: function populateResults(lastMqa) {
|
|
278
|
-
// Audio
|
|
279
|
-
this.localMQEStats.audio.RX.packetsLost.push(lastMqa.audioReceive[0].common.mediaHopByHopLost);
|
|
280
|
-
this.localMQEStats.audio.RX.jitter.push(lastMqa.audioReceive[0].streams[0].common.rtpJitter);
|
|
281
|
-
this.localMQEStats.audio.RX.latency.push(lastMqa.audioReceive[0].common.roundTripTime);
|
|
282
|
-
this.localMQEStats.audio.RX.bitRate.push(lastMqa.audioReceive[0].streams[0].common.receivedBitrate);
|
|
283
|
-
this.localMQEStats.audio.TX.packetsLost.push(lastMqa.audioTransmit[0].common.remoteLossRate);
|
|
284
|
-
this.localMQEStats.audio.TX.jitter.push(lastMqa.audioTransmit[0].common.remoteJitter);
|
|
285
|
-
this.localMQEStats.audio.TX.latency.push(lastMqa.audioTransmit[0].common.roundTripTime);
|
|
286
|
-
this.localMQEStats.audio.TX.bitRate.push(lastMqa.audioTransmit[0].streams[0].common.transmittedBitrate); // Video
|
|
287
|
-
|
|
288
|
-
this.localMQEStats.video.RX.packetsLost.push(lastMqa.videoReceive[0].common.mediaHopByHopLost);
|
|
289
|
-
this.localMQEStats.video.RX.jitter.push(lastMqa.videoReceive[0].streams[0].common.rtpJitter);
|
|
290
|
-
this.localMQEStats.video.RX.latency.push(lastMqa.videoReceive[0].streams[0].common.roundTripTime);
|
|
291
|
-
this.localMQEStats.video.RX.bitRate.push(lastMqa.videoReceive[0].streams[0].common.receivedBitrate);
|
|
292
|
-
this.localMQEStats.video.RX.frameRate.push(lastMqa.videoReceive[0].streams[0].common.receivedFrameRate);
|
|
293
|
-
this.localMQEStats.video.RX.resolutionWidth.push(lastMqa.videoReceive[0].streams[0].receivedWidth);
|
|
294
|
-
this.localMQEStats.video.RX.resolutionHeight.push(lastMqa.videoReceive[0].streams[0].receivedHeight);
|
|
295
|
-
this.localMQEStats.video.RX.requestedKeyFrame.push();
|
|
296
|
-
this.localMQEStats.video.RX.receivedKeyFrame.push();
|
|
297
|
-
this.localMQEStats.video.TX.packetsLost.push(lastMqa.videoTransmit[0].common.remoteLossRate);
|
|
298
|
-
this.localMQEStats.video.TX.jitter.push(lastMqa.videoTransmit[0].common.remoteJitter);
|
|
299
|
-
this.localMQEStats.video.TX.latency.push(lastMqa.videoTransmit[0].common.roundTripTime);
|
|
300
|
-
this.localMQEStats.video.TX.bitRate.push(lastMqa.videoTransmit[0].streams[0].common.transmittedBitrate);
|
|
301
|
-
this.localMQEStats.video.TX.frameRate.push(lastMqa.videoTransmit[0].streams[0].common.transmittedFrameRate);
|
|
302
|
-
this.localMQEStats.video.TX.resolutionWidth.push(lastMqa.videoTransmit[0].streams[0].transmittedWidth);
|
|
303
|
-
this.localMQEStats.video.TX.resolutionHeight.push(lastMqa.videoTransmit[0].streams[0].transmittedHeight);
|
|
304
|
-
this.localMQEStats.video.TX.requestedKeyFrame.push(lastMqa.videoTransmit[0].streams[0].requestedKeyFrames);
|
|
305
|
-
this.localMQEStats.video.TX.receivedKeyFrame.push();
|
|
306
|
-
}
|
|
307
|
-
}, {
|
|
308
201
|
key: "resetStatsResults",
|
|
309
202
|
value: function resetStatsResults() {
|
|
310
|
-
|
|
311
|
-
this.statsResults.
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
this.statsResults.share.send.meanRoundTripTime = [];
|
|
203
|
+
var _this2 = this;
|
|
204
|
+
(0, _keys.default)(this.statsResults).forEach(function (mediaType) {
|
|
205
|
+
if (mediaType.includes('recv')) {
|
|
206
|
+
_this2.statsResults[mediaType].recv.meanRtpJitter = [];
|
|
207
|
+
}
|
|
208
|
+
if (mediaType.includes('send')) {
|
|
209
|
+
_this2.statsResults[mediaType].send.meanRemoteJitter = [];
|
|
210
|
+
_this2.statsResults[mediaType].send.meanRoundTripTime = [];
|
|
211
|
+
}
|
|
212
|
+
});
|
|
321
213
|
}
|
|
214
|
+
|
|
322
215
|
/**
|
|
323
216
|
* sets mediaStatus status for analyzing metrics
|
|
324
217
|
*
|
|
@@ -327,144 +220,142 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
327
220
|
* @memberof StatsAnalyzer
|
|
328
221
|
* @returns {void}
|
|
329
222
|
*/
|
|
330
|
-
|
|
331
223
|
}, {
|
|
332
224
|
key: "updateMediaStatus",
|
|
333
225
|
value: function updateMediaStatus(status) {
|
|
334
226
|
this.meetingMediaStatus = status;
|
|
335
227
|
}
|
|
228
|
+
|
|
336
229
|
/**
|
|
337
|
-
* captures MQA data from
|
|
230
|
+
* captures MQA data from media connection
|
|
338
231
|
*
|
|
339
232
|
* @public
|
|
340
233
|
* @memberof StatsAnalyzer
|
|
341
234
|
* @returns {void}
|
|
342
235
|
*/
|
|
343
|
-
|
|
344
236
|
}, {
|
|
345
237
|
key: "sendMqaData",
|
|
346
238
|
value: function sendMqaData() {
|
|
347
|
-
var
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
239
|
+
var _this3 = this;
|
|
240
|
+
var newMqa = (0, _cloneDeep2.default)(_config.emptyMqaInterval);
|
|
241
|
+
(0, _keys.default)(this.statsResults).forEach(function (mediaType) {
|
|
242
|
+
if (mediaType.includes('audio-send') || mediaType.includes('audio-share-send')) {
|
|
243
|
+
var audioSender = (0, _cloneDeep2.default)(_config.emptyAudioTransmit);
|
|
244
|
+
(0, _mqaUtil.getAudioSenderMqa)({
|
|
245
|
+
audioSender: audioSender,
|
|
246
|
+
statsResults: _this3.statsResults,
|
|
247
|
+
lastMqaDataSent: _this3.lastMqaDataSent,
|
|
248
|
+
mediaType: mediaType
|
|
249
|
+
});
|
|
250
|
+
newMqa.audioTransmit.push(audioSender);
|
|
251
|
+
} else if (mediaType.includes('audio-recv') || mediaType.includes('audio-share-recv')) {
|
|
252
|
+
var audioReceiver = (0, _cloneDeep2.default)(_config.emptyAudioReceive);
|
|
253
|
+
(0, _mqaUtil.getAudioReceiverMqa)({
|
|
254
|
+
audioReceiver: audioReceiver,
|
|
255
|
+
statsResults: _this3.statsResults,
|
|
256
|
+
lastMqaDataSent: _this3.lastMqaDataSent,
|
|
257
|
+
mediaType: mediaType
|
|
258
|
+
});
|
|
259
|
+
newMqa.audioReceive.push(audioReceiver);
|
|
260
|
+
} else if (mediaType.includes('video-send') || mediaType.includes('video-share-send')) {
|
|
261
|
+
var videoSender = (0, _cloneDeep2.default)(_config.emptyVideoTransmit);
|
|
262
|
+
(0, _mqaUtil.getVideoSenderMqa)({
|
|
263
|
+
videoSender: videoSender,
|
|
264
|
+
statsResults: _this3.statsResults,
|
|
265
|
+
lastMqaDataSent: _this3.lastMqaDataSent,
|
|
266
|
+
mediaType: mediaType
|
|
267
|
+
});
|
|
268
|
+
newMqa.videoTransmit.push(videoSender);
|
|
269
|
+
} else if (mediaType.includes('video-recv') || mediaType.includes('video-share-recv')) {
|
|
270
|
+
var videoReceiver = (0, _cloneDeep2.default)(_config.emptyVideoReceive);
|
|
271
|
+
(0, _mqaUtil.getVideoReceiverMqa)({
|
|
272
|
+
videoReceiver: videoReceiver,
|
|
273
|
+
statsResults: _this3.statsResults,
|
|
274
|
+
lastMqaDataSent: _this3.lastMqaDataSent,
|
|
275
|
+
mediaType: mediaType
|
|
276
|
+
});
|
|
277
|
+
newMqa.videoReceive.push(videoReceiver);
|
|
278
|
+
}
|
|
387
279
|
});
|
|
388
|
-
|
|
280
|
+
newMqa.intervalMetadata.peerReflexiveIP = this.statsResults.connectionType.local.ipAddress[0];
|
|
389
281
|
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
282
|
+
// Adding peripheral information
|
|
283
|
+
newMqa.intervalMetadata.peripherals = [];
|
|
284
|
+
newMqa.intervalMetadata.peripherals.push({
|
|
393
285
|
information: _constants._UNKNOWN_,
|
|
394
286
|
name: _constants.MEDIA_DEVICES.SPEAKER
|
|
395
287
|
});
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
288
|
+
if (this.statsResults['audio-send']) {
|
|
289
|
+
var _this$statsResults$au;
|
|
290
|
+
newMqa.intervalMetadata.peripherals.push({
|
|
291
|
+
information: (_this$statsResults$au = this.statsResults['audio-send']) === null || _this$statsResults$au === void 0 ? void 0 : _this$statsResults$au.trackLabel,
|
|
292
|
+
name: _constants.MEDIA_DEVICES.MICROPHONE
|
|
293
|
+
});
|
|
294
|
+
}
|
|
295
|
+
if (this.statsResults['video-send']) {
|
|
296
|
+
var _this$statsResults$vi;
|
|
297
|
+
newMqa.intervalMetadata.peripherals.push({
|
|
298
|
+
information: (_this$statsResults$vi = this.statsResults['video-send']) === null || _this$statsResults$vi === void 0 ? void 0 : _this$statsResults$vi.trackLabel,
|
|
299
|
+
name: _constants.MEDIA_DEVICES.CAMERA
|
|
300
|
+
});
|
|
301
|
+
}
|
|
302
|
+
newMqa.networkType = this.statsResults.connectionType.local.networkType;
|
|
408
303
|
this.mqaSentCount += 1;
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
this.lastMqaDataSent = (0, _cloneDeep2.default)(this.statsResults);
|
|
412
|
-
this.populateResults(_config.default.intervals[0]);
|
|
304
|
+
newMqa.intervalNumber = this.mqaSentCount;
|
|
413
305
|
this.resetStatsResults();
|
|
414
306
|
this.emit({
|
|
415
307
|
file: 'statsAnalyzer',
|
|
416
308
|
function: 'sendMqaData'
|
|
417
309
|
}, EVENTS.MEDIA_QUALITY, {
|
|
418
|
-
data:
|
|
419
|
-
|
|
310
|
+
data: newMqa,
|
|
311
|
+
// @ts-ignore
|
|
312
|
+
networkType: newMqa.networkType
|
|
420
313
|
});
|
|
421
314
|
}
|
|
315
|
+
|
|
422
316
|
/**
|
|
423
|
-
* updated the
|
|
317
|
+
* updated the media connection when changed
|
|
424
318
|
*
|
|
425
319
|
* @private
|
|
426
|
-
* @memberof
|
|
427
|
-
* @param {
|
|
320
|
+
* @memberof StatsAnalyzer
|
|
321
|
+
* @param {RoapMediaConnection} mediaConnection
|
|
428
322
|
* @returns {void}
|
|
429
323
|
*/
|
|
430
|
-
|
|
431
324
|
}, {
|
|
432
|
-
key: "
|
|
433
|
-
value: function
|
|
434
|
-
this.
|
|
325
|
+
key: "updateMediaConnection",
|
|
326
|
+
value: function updateMediaConnection(mediaConnection) {
|
|
327
|
+
this.mediaConnection = mediaConnection;
|
|
435
328
|
}
|
|
329
|
+
|
|
436
330
|
/**
|
|
437
331
|
* Starts the stats analyzer on interval
|
|
438
332
|
*
|
|
439
333
|
* @public
|
|
440
334
|
* @memberof StatsAnalyzer
|
|
441
|
-
* @param {
|
|
335
|
+
* @param {RoapMediaConnection} mediaConnection
|
|
442
336
|
* @returns {Promise}
|
|
443
337
|
*/
|
|
444
|
-
|
|
445
338
|
}, {
|
|
446
339
|
key: "startAnalyzer",
|
|
447
|
-
value: function startAnalyzer(
|
|
448
|
-
var
|
|
449
|
-
|
|
340
|
+
value: function startAnalyzer(mediaConnection) {
|
|
341
|
+
var _this4 = this;
|
|
450
342
|
if (!this.statsStarted) {
|
|
451
343
|
this.statsStarted = true;
|
|
452
|
-
this.
|
|
344
|
+
this.mediaConnection = mediaConnection;
|
|
453
345
|
return this.getStatsAndParse().then(function () {
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
},
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
_this2.sendMqaData();
|
|
346
|
+
_this4.statsInterval = setInterval(function () {
|
|
347
|
+
_this4.getStatsAndParse();
|
|
348
|
+
}, _this4.config.analyzerInterval);
|
|
349
|
+
// Trigger initial fetch
|
|
350
|
+
_this4.sendMqaData();
|
|
351
|
+
_this4.mqaInterval = setInterval(function () {
|
|
352
|
+
_this4.sendMqaData();
|
|
462
353
|
}, _constants.MQA_INTEVAL);
|
|
463
354
|
});
|
|
464
355
|
}
|
|
465
|
-
|
|
466
356
|
return _promise.default.resolve();
|
|
467
357
|
}
|
|
358
|
+
|
|
468
359
|
/**
|
|
469
360
|
* Cleans up the analyzer when done
|
|
470
361
|
*
|
|
@@ -472,35 +363,29 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
472
363
|
* @memberof StatsAnalyzer
|
|
473
364
|
* @returns {void}
|
|
474
365
|
*/
|
|
475
|
-
|
|
476
366
|
}, {
|
|
477
367
|
key: "stopAnalyzer",
|
|
478
368
|
value: function stopAnalyzer() {
|
|
479
|
-
var
|
|
480
|
-
|
|
369
|
+
var _this5 = this;
|
|
481
370
|
var sendOneLastMqa = this.mqaInterval && this.statsInterval;
|
|
482
|
-
|
|
483
371
|
if (this.statsInterval) {
|
|
484
372
|
clearInterval(this.statsInterval);
|
|
485
373
|
this.statsInterval = undefined;
|
|
486
374
|
}
|
|
487
|
-
|
|
488
375
|
if (this.mqaInterval) {
|
|
489
376
|
clearInterval(this.mqaInterval);
|
|
490
377
|
this.mqaInterval = undefined;
|
|
491
378
|
}
|
|
492
|
-
|
|
493
379
|
if (sendOneLastMqa) {
|
|
494
380
|
return this.getStatsAndParse().then(function () {
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
_this3.peerConnection = null;
|
|
381
|
+
_this5.sendMqaData();
|
|
382
|
+
_this5.mediaConnection = null;
|
|
498
383
|
});
|
|
499
384
|
}
|
|
500
|
-
|
|
501
|
-
this.peerConnection = null;
|
|
385
|
+
this.mediaConnection = null;
|
|
502
386
|
return _promise.default.resolve();
|
|
503
387
|
}
|
|
388
|
+
|
|
504
389
|
/**
|
|
505
390
|
* Parse a single result of get stats
|
|
506
391
|
*
|
|
@@ -511,7 +396,6 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
511
396
|
* @returns {void}
|
|
512
397
|
* @memberof StatsAnalyzer
|
|
513
398
|
*/
|
|
514
|
-
|
|
515
399
|
}, {
|
|
516
400
|
key: "parseGetStatsResult",
|
|
517
401
|
value: function parseGetStatsResult(getStatsResult, type, isSender) {
|
|
@@ -519,81 +403,105 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
519
403
|
return;
|
|
520
404
|
}
|
|
521
405
|
|
|
406
|
+
// Generate empty stats results
|
|
407
|
+
if (!this.statsResults[type]) {
|
|
408
|
+
this.statsResults[type] = {};
|
|
409
|
+
}
|
|
410
|
+
if (isSender && !this.statsResults[type].send) {
|
|
411
|
+
this.statsResults[type].send = (0, _cloneDeep2.default)(emptySender);
|
|
412
|
+
} else if (!isSender && !this.statsResults[type].recv) {
|
|
413
|
+
this.statsResults[type].recv = (0, _cloneDeep2.default)(emptyReceiver);
|
|
414
|
+
}
|
|
415
|
+
if (!this.statsResults.resolutions[type]) {
|
|
416
|
+
this.statsResults.resolutions[type] = {};
|
|
417
|
+
}
|
|
418
|
+
if (isSender && !this.statsResults.resolutions[type].send) {
|
|
419
|
+
this.statsResults.resolutions[type].send = (0, _cloneDeep2.default)(emptySender);
|
|
420
|
+
} else if (!isSender && !this.statsResults.resolutions[type].recv) {
|
|
421
|
+
this.statsResults.resolutions[type].recv = (0, _cloneDeep2.default)(emptyReceiver);
|
|
422
|
+
}
|
|
423
|
+
if (!this.statsResults.internal[type]) {
|
|
424
|
+
this.statsResults.internal[type] = {};
|
|
425
|
+
}
|
|
426
|
+
if (isSender && !this.statsResults.internal[type].send) {
|
|
427
|
+
this.statsResults.internal[type].send = (0, _cloneDeep2.default)(emptySender);
|
|
428
|
+
} else if (!isSender && !this.statsResults.internal[type].recv) {
|
|
429
|
+
this.statsResults.internal[type].recv = (0, _cloneDeep2.default)(emptyReceiver);
|
|
430
|
+
}
|
|
522
431
|
switch (getStatsResult.type) {
|
|
523
432
|
case 'outbound-rtp':
|
|
524
433
|
this.processOutboundRTPResult(getStatsResult, type);
|
|
525
434
|
break;
|
|
526
|
-
|
|
527
435
|
case 'inbound-rtp':
|
|
528
436
|
this.processInboundRTPResult(getStatsResult, type);
|
|
529
437
|
break;
|
|
530
|
-
|
|
531
438
|
case 'track':
|
|
532
439
|
this.processTrackResult(getStatsResult, type);
|
|
533
440
|
break;
|
|
534
|
-
|
|
535
441
|
case 'remote-inbound-rtp':
|
|
536
442
|
case 'remote-outbound-rtp':
|
|
443
|
+
// @ts-ignore
|
|
537
444
|
this.compareSentAndReceived(getStatsResult, type, isSender);
|
|
538
445
|
break;
|
|
539
|
-
|
|
540
446
|
case 'remotecandidate':
|
|
541
447
|
case 'remote-candidate':
|
|
542
448
|
this.parseCandidate(getStatsResult, type, isSender, true);
|
|
543
449
|
break;
|
|
544
|
-
|
|
545
450
|
case 'local-candidate':
|
|
546
451
|
this.parseCandidate(getStatsResult, type, isSender, false);
|
|
547
452
|
break;
|
|
548
|
-
|
|
549
453
|
case 'media-source':
|
|
454
|
+
// @ts-ignore
|
|
550
455
|
this.parseAudioSource(getStatsResult, type);
|
|
551
456
|
break;
|
|
552
|
-
|
|
553
457
|
default:
|
|
554
458
|
break;
|
|
555
459
|
}
|
|
556
460
|
}
|
|
461
|
+
|
|
557
462
|
/**
|
|
558
463
|
* Filters the get stats results for types
|
|
559
464
|
* @private
|
|
560
|
-
* @param {Array}
|
|
465
|
+
* @param {Array} statsItem
|
|
561
466
|
* @param {String} type
|
|
562
467
|
* @param {boolean} isSender
|
|
563
468
|
* @returns {void}
|
|
564
469
|
*/
|
|
565
|
-
|
|
566
470
|
}, {
|
|
567
471
|
key: "filterAndParseGetStatsResults",
|
|
568
|
-
value: function filterAndParseGetStatsResults(
|
|
569
|
-
var
|
|
570
|
-
|
|
472
|
+
value: function filterAndParseGetStatsResults(statsItem, type, isSender) {
|
|
473
|
+
var _this6 = this;
|
|
571
474
|
var types = _constants.DEFAULT_GET_STATS_FILTER.types;
|
|
572
|
-
|
|
475
|
+
statsItem.report.forEach(function (result) {
|
|
573
476
|
if (types.includes(result.type)) {
|
|
574
|
-
|
|
477
|
+
_this6.parseGetStatsResult(result, type, isSender);
|
|
575
478
|
}
|
|
576
479
|
});
|
|
480
|
+
if (this.statsResults[type]) {
|
|
481
|
+
this.statsResults[type].direction = statsItem.currentDirection;
|
|
482
|
+
this.statsResults[type].trackLabel = statsItem.localTrackLabel;
|
|
483
|
+
this.statsResults[type].csi = statsItem.csi;
|
|
484
|
+
}
|
|
577
485
|
}
|
|
486
|
+
|
|
578
487
|
/**
|
|
579
488
|
* parse the audio
|
|
580
489
|
* @param {String} result
|
|
581
490
|
* @param {boolean} type
|
|
582
491
|
* @returns {void}
|
|
583
492
|
*/
|
|
584
|
-
|
|
585
493
|
}, {
|
|
586
494
|
key: "parseAudioSource",
|
|
587
495
|
value: function parseAudioSource(result, type) {
|
|
588
496
|
if (!result) {
|
|
589
497
|
return;
|
|
590
498
|
}
|
|
591
|
-
|
|
592
|
-
if (type === _constants.STATS.AUDIO_CORRELATE) {
|
|
499
|
+
if (type.includes('audio-send')) {
|
|
593
500
|
this.statsResults[type].send.audioLevel = result.audioLevel;
|
|
594
501
|
this.statsResults[type].send.totalAudioEnergy = result.totalAudioEnergy;
|
|
595
502
|
}
|
|
596
503
|
}
|
|
504
|
+
|
|
597
505
|
/**
|
|
598
506
|
* emits started/stopped events for local/remote media by checking
|
|
599
507
|
* if given values are increasing or not. The previousValue, currentValue
|
|
@@ -608,7 +516,6 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
608
516
|
* @memberof StatsAnalyzer
|
|
609
517
|
* @returns {void}
|
|
610
518
|
*/
|
|
611
|
-
|
|
612
519
|
}, {
|
|
613
520
|
key: "compareLastStatsResult",
|
|
614
521
|
value:
|
|
@@ -620,136 +527,159 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
620
527
|
* @returns {void}
|
|
621
528
|
*/
|
|
622
529
|
function compareLastStatsResult() {
|
|
530
|
+
var _this7 = this;
|
|
623
531
|
if (this.lastStatsResults !== null && this.meetingMediaStatus) {
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
532
|
+
var getCurrentStatsTotals = function getCurrentStatsTotals(keyPrefix, value) {
|
|
533
|
+
return (0, _keys.default)(_this7.statsResults).filter(function (key) {
|
|
534
|
+
return key.startsWith(keyPrefix);
|
|
535
|
+
}).reduce(function (prev, cur) {
|
|
536
|
+
var _this7$statsResults$c;
|
|
537
|
+
return prev + (((_this7$statsResults$c = _this7.statsResults[cur]) === null || _this7$statsResults$c === void 0 ? void 0 : _this7$statsResults$c.recv[value]) || 0);
|
|
538
|
+
}, 0);
|
|
539
|
+
};
|
|
540
|
+
var getPreviousStatsTotals = function getPreviousStatsTotals(keyPrefix, value) {
|
|
541
|
+
return (0, _keys.default)(_this7.statsResults).filter(function (key) {
|
|
542
|
+
return key.startsWith(keyPrefix);
|
|
543
|
+
}).reduce(function (prev, cur) {
|
|
544
|
+
var _this7$lastStatsResul;
|
|
545
|
+
return prev + (((_this7$lastStatsResul = _this7.lastStatsResults[cur]) === null || _this7$lastStatsResul === void 0 ? void 0 : _this7$lastStatsResul.recv[value]) || 0);
|
|
546
|
+
}, 0);
|
|
547
|
+
};
|
|
548
|
+
var getCurrentResolutionsStatsTotals = function getCurrentResolutionsStatsTotals(keyPrefix, value) {
|
|
549
|
+
return (0, _keys.default)(_this7.statsResults).filter(function (key) {
|
|
550
|
+
return key.startsWith(keyPrefix);
|
|
551
|
+
}).reduce(function (prev, cur) {
|
|
552
|
+
var _this7$statsResults$r;
|
|
553
|
+
return prev + (((_this7$statsResults$r = _this7.statsResults.resolutions[cur]) === null || _this7$statsResults$r === void 0 ? void 0 : _this7$statsResults$r.recv[value]) || 0);
|
|
554
|
+
}, 0);
|
|
555
|
+
};
|
|
556
|
+
var getPreviousResolutionsStatsTotals = function getPreviousResolutionsStatsTotals(keyPrefix, value) {
|
|
557
|
+
return (0, _keys.default)(_this7.statsResults).filter(function (key) {
|
|
558
|
+
return key.startsWith(keyPrefix);
|
|
559
|
+
}).reduce(function (prev, cur) {
|
|
560
|
+
var _this7$lastStatsResul2;
|
|
561
|
+
return prev + (((_this7$lastStatsResul2 = _this7.lastStatsResults.resolutions[cur]) === null || _this7$lastStatsResul2 === void 0 ? void 0 : _this7$lastStatsResul2.recv[value]) || 0);
|
|
562
|
+
}, 0);
|
|
563
|
+
};
|
|
564
|
+
if (this.meetingMediaStatus.expected.sendAudio && this.lastStatsResults['audio-send']) {
|
|
565
|
+
// compare audio stats sent
|
|
566
|
+
// NOTE: relies on there being only one sender.
|
|
567
|
+
var currentStats = this.statsResults['audio-send'].send;
|
|
568
|
+
var previousStats = this.lastStatsResults['audio-send'].send;
|
|
633
569
|
if (currentStats.totalPacketsSent === previousStats.totalPacketsSent || currentStats.totalPacketsSent === 0) {
|
|
634
|
-
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No
|
|
570
|
+
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No audio RTP packets sent", currentStats.totalPacketsSent);
|
|
635
571
|
} else {
|
|
636
572
|
if (currentStats.totalAudioEnergy === previousStats.totalAudioEnergy || currentStats.totalAudioEnergy === 0) {
|
|
637
|
-
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No
|
|
573
|
+
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No audio Energy present", currentStats.totalAudioEnergy);
|
|
638
574
|
}
|
|
639
|
-
|
|
640
575
|
if (currentStats.audioLevel === 0) {
|
|
641
|
-
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult -->
|
|
576
|
+
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> audio level is 0 for the user");
|
|
642
577
|
}
|
|
643
578
|
}
|
|
644
|
-
|
|
645
|
-
this.emitStartStopEvents(mediaType, previousStats.totalPacketsSent, currentStats.totalPacketsSent, true);
|
|
579
|
+
this.emitStartStopEvents('audio', previousStats.totalPacketsSent, currentStats.totalPacketsSent, true);
|
|
646
580
|
}
|
|
647
|
-
|
|
648
581
|
if (this.meetingMediaStatus.expected.receiveAudio) {
|
|
649
582
|
// compare audio stats received
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
583
|
+
var currentPacketsReceived = getCurrentStatsTotals('audio-recv', 'totalPacketsReceived');
|
|
584
|
+
var previousPacketsReceived = getPreviousStatsTotals('audio-recv', 'totalPacketsReceived');
|
|
585
|
+
var currentSamplesReceived = getCurrentStatsTotals('audio-recv', 'totalSamplesReceived');
|
|
586
|
+
var previousSamplesReceived = getPreviousStatsTotals('audio-recv', 'totalSamplesReceived');
|
|
587
|
+
if (currentPacketsReceived === previousPacketsReceived || currentPacketsReceived === 0) {
|
|
588
|
+
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No audio RTP packets received", currentPacketsReceived);
|
|
589
|
+
} else if (currentSamplesReceived === previousSamplesReceived || currentSamplesReceived === 0) {
|
|
590
|
+
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No audio samples received", currentSamplesReceived);
|
|
657
591
|
}
|
|
658
|
-
|
|
659
|
-
this.emitStartStopEvents(mediaType, previousStats.totalPacketsReceived, currentStats.totalPacketsReceived, false);
|
|
592
|
+
this.emitStartStopEvents('audio', previousPacketsReceived, currentPacketsReceived, false);
|
|
660
593
|
}
|
|
661
|
-
|
|
662
|
-
mediaType = _constants.STATS.VIDEO_CORRELATE;
|
|
663
|
-
|
|
664
|
-
if (this.meetingMediaStatus.expected.sendVideo) {
|
|
594
|
+
if (this.meetingMediaStatus.expected.sendVideo && this.lastStatsResults['video-send']) {
|
|
665
595
|
// compare video stats sent
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No ".concat(mediaType, " RTP packets sent"));
|
|
596
|
+
var _currentStats = this.statsResults['video-send'].send;
|
|
597
|
+
var _previousStats = this.lastStatsResults['video-send'].send;
|
|
598
|
+
if (_currentStats.totalPacketsSent === _previousStats.totalPacketsSent || _currentStats.totalPacketsSent === 0) {
|
|
599
|
+
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No video RTP packets sent", _currentStats.totalPacketsSent);
|
|
671
600
|
} else {
|
|
672
|
-
if (
|
|
673
|
-
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No
|
|
601
|
+
if (_currentStats.framesEncoded === _previousStats.framesEncoded || _currentStats.framesEncoded === 0) {
|
|
602
|
+
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No video Frames Encoded", _currentStats.framesEncoded);
|
|
674
603
|
}
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No ".concat(mediaType, " Frames sent"));
|
|
604
|
+
if (this.statsResults.resolutions['video-send'].send.framesSent === this.lastStatsResults.resolutions['video-send'].send.framesSent || this.statsResults.resolutions['video-send'].send.framesSent === 0) {
|
|
605
|
+
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No video Frames sent", this.statsResults.resolutions['video-send'].send.framesSent);
|
|
678
606
|
}
|
|
679
607
|
}
|
|
680
|
-
|
|
681
|
-
this.emitStartStopEvents(mediaType, previousStats.framesSent, currentStats.framesSent, true);
|
|
608
|
+
this.emitStartStopEvents('video', _previousStats.framesSent, _currentStats.framesSent, true);
|
|
682
609
|
}
|
|
683
|
-
|
|
684
610
|
if (this.meetingMediaStatus.expected.receiveVideo) {
|
|
685
|
-
// compare video stats
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
611
|
+
// compare video stats received
|
|
612
|
+
var _currentPacketsReceived = getCurrentStatsTotals('video-recv', 'totalPacketsReceived');
|
|
613
|
+
var _previousPacketsReceived = getPreviousStatsTotals('video-recv', 'totalPacketsReceived');
|
|
614
|
+
var currentFramesReceived = getCurrentResolutionsStatsTotals('video-recv', 'framesReceived');
|
|
615
|
+
var previousFramesReceived = getPreviousResolutionsStatsTotals('video-recv', 'framesReceived');
|
|
616
|
+
var currentFramesDecoded = getCurrentStatsTotals('video-recv', 'framesDecoded');
|
|
617
|
+
var previousFramesDecoded = getPreviousStatsTotals('video-recv', 'framesDecoded');
|
|
618
|
+
var currentFramesDropped = getCurrentResolutionsStatsTotals('video-recv', 'framesDropped');
|
|
619
|
+
var previousFramesDropped = getPreviousResolutionsStatsTotals('video-recv', 'framesDropped');
|
|
620
|
+
if (_currentPacketsReceived === _previousPacketsReceived || _currentPacketsReceived === 0) {
|
|
621
|
+
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No video RTP packets received", _currentPacketsReceived);
|
|
691
622
|
} else {
|
|
692
|
-
if (
|
|
693
|
-
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No
|
|
623
|
+
if (currentFramesReceived === previousFramesReceived || currentFramesReceived === 0) {
|
|
624
|
+
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No video frames received", currentFramesReceived);
|
|
694
625
|
}
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No ".concat(mediaType, " frames decoded"));
|
|
626
|
+
if (currentFramesDecoded === previousFramesDecoded || currentFramesDecoded === 0) {
|
|
627
|
+
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No video frames decoded", currentFramesDecoded);
|
|
698
628
|
}
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> ".concat(mediaType, " frames are getting dropped"));
|
|
629
|
+
if (currentFramesDropped - previousFramesDropped > 10) {
|
|
630
|
+
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> video frames are getting dropped", currentFramesDropped - previousFramesDropped);
|
|
702
631
|
}
|
|
703
632
|
}
|
|
704
|
-
|
|
705
|
-
this.emitStartStopEvents(mediaType, previousStats.framesDecoded, currentStats.framesDecoded, false);
|
|
633
|
+
this.emitStartStopEvents('video', previousFramesDecoded, currentFramesDecoded, false);
|
|
706
634
|
}
|
|
707
|
-
|
|
708
|
-
mediaType = _constants.STATS.SHARE_CORRELATE;
|
|
709
|
-
|
|
710
|
-
if (this.meetingMediaStatus.expected.sendShare) {
|
|
635
|
+
if (this.meetingMediaStatus.expected.sendShare && this.lastStatsResults['video-share-send']) {
|
|
711
636
|
// compare share stats sent
|
|
712
|
-
currentStats = this.statsResults[mediaType].send;
|
|
713
|
-
previousStats = this.lastStatsResults[mediaType].send;
|
|
714
637
|
|
|
715
|
-
|
|
716
|
-
|
|
638
|
+
var _currentStats2 = this.statsResults['video-share-send'].send;
|
|
639
|
+
var _previousStats2 = this.lastStatsResults['video-share-send'].send;
|
|
640
|
+
if (_currentStats2.totalPacketsSent === _previousStats2.totalPacketsSent || _currentStats2.totalPacketsSent === 0) {
|
|
641
|
+
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No share RTP packets sent", _currentStats2.totalPacketsSent);
|
|
717
642
|
} else {
|
|
718
|
-
if (
|
|
719
|
-
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No
|
|
643
|
+
if (_currentStats2.framesEncoded === _previousStats2.framesEncoded || _currentStats2.framesEncoded === 0) {
|
|
644
|
+
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No share frames getting encoded", _currentStats2.framesEncoded);
|
|
720
645
|
}
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No ".concat(mediaType, " frames sent"));
|
|
646
|
+
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) {
|
|
647
|
+
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No share frames sent", this.statsResults.resolutions['video-share-send'].send.framesSent);
|
|
724
648
|
}
|
|
725
|
-
}
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
649
|
+
}
|
|
650
|
+
}
|
|
651
|
+
if (this.meetingMediaStatus.expected.sendShare) {
|
|
652
|
+
// TODO:need to check receive share value
|
|
653
|
+
// compare share stats received
|
|
654
|
+
var _currentPacketsReceived2 = getCurrentStatsTotals('video-share-recv', 'totalPacketsReceived');
|
|
655
|
+
var _previousPacketsReceived2 = getPreviousStatsTotals('video-share-recv', 'totalPacketsReceived');
|
|
656
|
+
var _currentFramesReceived = getCurrentResolutionsStatsTotals('video-share-recv', 'framesReceived');
|
|
657
|
+
var _previousFramesReceived = getPreviousResolutionsStatsTotals('video-share-recv', 'framesReceived');
|
|
658
|
+
var _currentFramesDecoded = getCurrentStatsTotals('video-share-recv', 'framesDecoded');
|
|
659
|
+
var _previousFramesDecoded = getPreviousStatsTotals('video-share-recv', 'framesDecoded');
|
|
660
|
+
var _currentFramesDropped = getCurrentResolutionsStatsTotals('video-share-recv', 'framesDropped');
|
|
661
|
+
var _previousFramesDropped = getPreviousResolutionsStatsTotals('video-share-recv', 'framesDropped');
|
|
662
|
+
if (_currentPacketsReceived2 === _previousPacketsReceived2 || _currentPacketsReceived2 === 0) {
|
|
663
|
+
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No share RTP packets received", _currentPacketsReceived2);
|
|
734
664
|
} else {
|
|
735
|
-
if (
|
|
736
|
-
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No
|
|
665
|
+
if (_currentFramesReceived === _previousFramesReceived || _currentFramesReceived === 0) {
|
|
666
|
+
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No share frames received", _currentFramesReceived);
|
|
737
667
|
}
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No ".concat(mediaType, " frames decoded"));
|
|
668
|
+
if (_currentFramesDecoded === _previousFramesDecoded || _currentFramesDecoded === 0) {
|
|
669
|
+
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No share frames decoded", _currentFramesDecoded);
|
|
741
670
|
}
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> ".concat(mediaType, " frames are getting dropped"));
|
|
671
|
+
if (_currentFramesDropped - _previousFramesDropped > 10) {
|
|
672
|
+
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> share frames are getting dropped", _currentFramesDropped - _previousFramesDropped);
|
|
745
673
|
}
|
|
746
|
-
}
|
|
674
|
+
}
|
|
675
|
+
|
|
676
|
+
// we are not calling emitStartStopEvents() for sending or receiving share because sharing is often started and stopped
|
|
747
677
|
// in meetings and this.meetingMediaStatus.expected values can be out of sync with the actual packet flow
|
|
748
678
|
// so we would send "sharing stopped" events incorrectly
|
|
749
|
-
|
|
750
679
|
}
|
|
751
680
|
}
|
|
752
681
|
}
|
|
682
|
+
|
|
753
683
|
/**
|
|
754
684
|
* Does a `getStats` on all the transceivers and parses the results
|
|
755
685
|
*
|
|
@@ -757,79 +687,92 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
757
687
|
* @memberof StatsAnalyzer
|
|
758
688
|
* @returns {Promise}
|
|
759
689
|
*/
|
|
760
|
-
|
|
761
690
|
}, {
|
|
762
691
|
key: "getStatsAndParse",
|
|
763
692
|
value: function getStatsAndParse() {
|
|
764
|
-
var
|
|
765
|
-
|
|
766
|
-
if (!this.peerConnection) {
|
|
693
|
+
var _this8 = this;
|
|
694
|
+
if (!this.mediaConnection) {
|
|
767
695
|
return _promise.default.resolve();
|
|
768
696
|
}
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
_loggerProxy.default.logger.trace('StatsAnalyzer:index#getStatsAndParse --> PeerConnection is in failed state');
|
|
772
|
-
|
|
697
|
+
if (this.mediaConnection && this.mediaConnection.getConnectionState() === _internalMediaCore.ConnectionState.Failed) {
|
|
698
|
+
_loggerProxy.default.logger.trace('StatsAnalyzer:index#getStatsAndParse --> media connection is in failed state');
|
|
773
699
|
return _promise.default.resolve();
|
|
774
700
|
}
|
|
775
|
-
|
|
776
701
|
_loggerProxy.default.logger.trace('StatsAnalyzer:index#getStatsAndParse --> Collecting Stats');
|
|
702
|
+
return this.mediaConnection.getTransceiverStats().then(function (transceiverStats) {
|
|
703
|
+
transceiverStats.video.receivers.forEach(function (receiver, i) {
|
|
704
|
+
return _this8.filterAndParseGetStatsResults(receiver, "video-recv-".concat(i), false);
|
|
705
|
+
});
|
|
706
|
+
transceiverStats.audio.receivers.forEach(function (receiver, i) {
|
|
707
|
+
return _this8.filterAndParseGetStatsResults(receiver, "audio-recv-".concat(i), false);
|
|
708
|
+
});
|
|
709
|
+
transceiverStats.screenShareVideo.receivers.forEach(function (receiver, i) {
|
|
710
|
+
return _this8.filterAndParseGetStatsResults(receiver, "video-share-recv-".concat(i), false);
|
|
711
|
+
});
|
|
712
|
+
transceiverStats.screenShareAudio.receivers.forEach(function (receiver, i) {
|
|
713
|
+
return _this8.filterAndParseGetStatsResults(receiver, "audio-share-recv-".concat(i), false);
|
|
714
|
+
});
|
|
715
|
+
transceiverStats.video.senders.forEach(function (sender, i) {
|
|
716
|
+
if (i > 0) {
|
|
717
|
+
throw new Error('Stats Analyzer does not support multiple senders.');
|
|
718
|
+
}
|
|
719
|
+
_this8.filterAndParseGetStatsResults(sender, 'video-send', true);
|
|
720
|
+
});
|
|
721
|
+
transceiverStats.audio.senders.forEach(function (sender, i) {
|
|
722
|
+
if (i > 0) {
|
|
723
|
+
throw new Error('Stats Analyzer does not support multiple senders.');
|
|
724
|
+
}
|
|
725
|
+
_this8.filterAndParseGetStatsResults(sender, 'audio-send', true);
|
|
726
|
+
});
|
|
727
|
+
transceiverStats.screenShareVideo.senders.forEach(function (sender, i) {
|
|
728
|
+
if (i > 0) {
|
|
729
|
+
throw new Error('Stats Analyzer does not support multiple senders.');
|
|
730
|
+
}
|
|
731
|
+
_this8.filterAndParseGetStatsResults(sender, 'video-share-send', true);
|
|
732
|
+
});
|
|
733
|
+
transceiverStats.screenShareAudio.senders.forEach(function (sender, i) {
|
|
734
|
+
if (i > 0) {
|
|
735
|
+
throw new Error('Stats Analyzer does not support multiple senders.');
|
|
736
|
+
}
|
|
737
|
+
_this8.filterAndParseGetStatsResults(sender, 'audio-share-send', true);
|
|
738
|
+
});
|
|
739
|
+
_this8.compareLastStatsResult();
|
|
777
740
|
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
_this5.filterAndParseGetStatsResults(res, _constants.STATS.VIDEO_CORRELATE, false);
|
|
782
|
-
}), this.peerConnection.audioTransceiver.sender.getStats().then(function (res) {
|
|
783
|
-
_this5.filterAndParseGetStatsResults(res, _constants.STATS.AUDIO_CORRELATE, true);
|
|
784
|
-
}), this.peerConnection.audioTransceiver.receiver.getStats().then(function (res) {
|
|
785
|
-
_this5.filterAndParseGetStatsResults(res, _constants.STATS.AUDIO_CORRELATE, false);
|
|
786
|
-
}), // TODO: add checks for screen share
|
|
787
|
-
this.peerConnection.shareTransceiver.sender.getStats().then(function (res) {
|
|
788
|
-
_this5.filterAndParseGetStatsResults(res, _constants.STATS.SHARE_CORRELATE, true);
|
|
789
|
-
}), this.peerConnection.shareTransceiver.receiver.getStats().then(function (res) {
|
|
790
|
-
_this5.filterAndParseGetStatsResults(res, _constants.STATS.SHARE_CORRELATE, false);
|
|
791
|
-
})]).then(function () {
|
|
792
|
-
_this5.statsResults[_constants.STATS.AUDIO_CORRELATE].direction = _this5.peerConnection.audioTransceiver.currentDirection;
|
|
793
|
-
_this5.statsResults[_constants.STATS.VIDEO_CORRELATE].direction = _this5.peerConnection.videoTransceiver.currentDirection;
|
|
794
|
-
_this5.statsResults[_constants.STATS.SHARE_CORRELATE].direction = _this5.peerConnection.shareTransceiver.currentDirection; // Process Stats results every 5 seconds
|
|
795
|
-
|
|
796
|
-
_this5.compareLastStatsResult(); // Save the last results to compare with the current
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
_this5.lastStatsResults = JSON.parse((0, _stringify.default)(_this5.statsResults));
|
|
800
|
-
|
|
741
|
+
// Save the last results to compare with the current
|
|
742
|
+
// DO Deep copy, for some reason it takes the reference all the time rather then old value set
|
|
743
|
+
_this8.lastStatsResults = JSON.parse((0, _stringify.default)(_this8.statsResults));
|
|
801
744
|
_loggerProxy.default.logger.trace('StatsAnalyzer:index#getStatsAndParse --> Finished Collecting Stats');
|
|
802
745
|
});
|
|
803
746
|
}
|
|
747
|
+
|
|
804
748
|
/**
|
|
805
749
|
* Processes OutboundRTP stats result and stores
|
|
806
750
|
* @private
|
|
807
751
|
* @param {*} result
|
|
808
|
-
* @param {*}
|
|
752
|
+
* @param {*} mediaType
|
|
809
753
|
* @returns {void}
|
|
810
754
|
*/
|
|
811
|
-
|
|
812
755
|
}, {
|
|
813
756
|
key: "processOutboundRTPResult",
|
|
814
|
-
value: function processOutboundRTPResult(result,
|
|
815
|
-
var mediaType = type || _constants.STATS.AUDIO_CORRELATE;
|
|
757
|
+
value: function processOutboundRTPResult(result, mediaType) {
|
|
816
758
|
var sendrecvType = _constants.STATS.SEND_DIRECTION;
|
|
817
|
-
|
|
818
759
|
if (result.bytesSent) {
|
|
819
760
|
var kilobytes = 0;
|
|
820
|
-
|
|
761
|
+
if (result.frameWidth && result.frameHeight) {
|
|
762
|
+
this.statsResults.resolutions[mediaType][sendrecvType].width = result.frameWidth;
|
|
763
|
+
this.statsResults.resolutions[mediaType][sendrecvType].height = result.frameHeight;
|
|
764
|
+
this.statsResults.resolutions[mediaType][sendrecvType].framesSent = result.framesSent;
|
|
765
|
+
this.statsResults.resolutions[mediaType][sendrecvType].hugeFramesSent = result.hugeFramesSent;
|
|
766
|
+
}
|
|
821
767
|
if (!this.statsResults.internal[mediaType][sendrecvType].prevBytesSent) {
|
|
822
768
|
this.statsResults.internal[mediaType][sendrecvType].prevBytesSent = result.bytesSent;
|
|
823
769
|
}
|
|
824
|
-
|
|
825
770
|
if (!this.statsResults.internal[mediaType][sendrecvType].framesEncoded) {
|
|
826
771
|
this.statsResults.internal[mediaType][sendrecvType].framesEncoded = result.framesEncoded;
|
|
827
772
|
}
|
|
828
|
-
|
|
829
773
|
if (!this.statsResults.internal[mediaType][sendrecvType].keyFramesEncoded) {
|
|
830
774
|
this.statsResults.internal[mediaType][sendrecvType].keyFramesEncoded = result.keyFramesEncoded;
|
|
831
775
|
}
|
|
832
|
-
|
|
833
776
|
var bytes = result.bytesSent - this.statsResults.internal[mediaType][sendrecvType].prevBytesSent;
|
|
834
777
|
this.statsResults.internal[mediaType][sendrecvType].prevBytesSent = result.bytesSent;
|
|
835
778
|
kilobytes = bytes / 1024;
|
|
@@ -838,13 +781,13 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
838
781
|
this.statsResults[mediaType][sendrecvType].framesEncoded = result.framesEncoded - this.statsResults.internal[mediaType][sendrecvType].framesEncoded;
|
|
839
782
|
this.statsResults[mediaType][sendrecvType].keyFramesEncoded = result.keyFramesEncoded - this.statsResults.internal[mediaType][sendrecvType].keyFramesEncoded;
|
|
840
783
|
this.statsResults.internal[mediaType].outboundRtpId = result.id;
|
|
841
|
-
|
|
842
784
|
if (!this.statsResults.internal[mediaType][sendrecvType].packetsSent) {
|
|
843
785
|
this.statsResults.internal[mediaType][sendrecvType].packetsSent = result.packetsSent;
|
|
844
786
|
}
|
|
845
|
-
|
|
846
787
|
this.statsResults[mediaType][sendrecvType].packetsSent = result.packetsSent - this.statsResults.internal[mediaType][sendrecvType].packetsSent;
|
|
847
|
-
this.statsResults.internal[mediaType][sendrecvType].packetsSent = result.packetsSent;
|
|
788
|
+
this.statsResults.internal[mediaType][sendrecvType].packetsSent = result.packetsSent;
|
|
789
|
+
|
|
790
|
+
// Data saved to send MQA metrics
|
|
848
791
|
|
|
849
792
|
this.statsResults[mediaType][sendrecvType].totalKeyFramesEncoded = result.keyFramesEncoded;
|
|
850
793
|
this.statsResults[mediaType][sendrecvType].totalNackCount = result.nackCount;
|
|
@@ -862,43 +805,42 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
862
805
|
this.statsResults[mediaType][sendrecvType].retransmittedBytesSent = result.retransmittedBytesSent;
|
|
863
806
|
}
|
|
864
807
|
}
|
|
808
|
+
|
|
865
809
|
/**
|
|
866
810
|
* Processes InboundRTP stats result and stores
|
|
867
811
|
* @private
|
|
868
812
|
* @param {*} result
|
|
869
|
-
* @param {*}
|
|
813
|
+
* @param {*} mediaType
|
|
870
814
|
* @returns {void}
|
|
871
815
|
*/
|
|
872
|
-
|
|
873
816
|
}, {
|
|
874
817
|
key: "processInboundRTPResult",
|
|
875
|
-
value: function processInboundRTPResult(result,
|
|
876
|
-
var mediaType = type || _constants.STATS.AUDIO_CORRELATE;
|
|
818
|
+
value: function processInboundRTPResult(result, mediaType) {
|
|
877
819
|
var sendrecvType = _constants.STATS.RECEIVE_DIRECTION;
|
|
878
|
-
|
|
879
820
|
if (result.bytesReceived) {
|
|
880
821
|
var kilobytes = 0;
|
|
881
|
-
|
|
822
|
+
var receiveSlot = this.receiveSlotCallback(result.ssrc);
|
|
823
|
+
var idAndCsi = receiveSlot ? "id: \"".concat(receiveSlot.id || '', "\"").concat(receiveSlot.csi ? " and csi: ".concat(receiveSlot.csi) : '') : '';
|
|
824
|
+
if (result.frameWidth && result.frameHeight) {
|
|
825
|
+
this.statsResults.resolutions[mediaType][sendrecvType].width = result.frameWidth;
|
|
826
|
+
this.statsResults.resolutions[mediaType][sendrecvType].height = result.frameHeight;
|
|
827
|
+
this.statsResults.resolutions[mediaType][sendrecvType].framesReceived = result.framesReceived;
|
|
828
|
+
}
|
|
882
829
|
if (!this.statsResults.internal[mediaType][sendrecvType].prevBytesReceived) {
|
|
883
830
|
this.statsResults.internal[mediaType][sendrecvType].prevBytesReceived = result.bytesReceived;
|
|
884
831
|
}
|
|
885
|
-
|
|
886
832
|
if (!this.statsResults.internal[mediaType][sendrecvType].pliCount) {
|
|
887
833
|
this.statsResults.internal[mediaType][sendrecvType].pliCount = result.pliCount;
|
|
888
834
|
}
|
|
889
|
-
|
|
890
835
|
if (!this.statsResults.internal[mediaType][sendrecvType].packetsLost) {
|
|
891
836
|
this.statsResults.internal[mediaType][sendrecvType].packetsLost = result.packetsLost;
|
|
892
837
|
}
|
|
893
|
-
|
|
894
838
|
if (!this.statsResults.internal[mediaType][sendrecvType].totalPacketsReceived) {
|
|
895
839
|
this.statsResults.internal[mediaType][sendrecvType].totalPacketsReceived = result.packetsReceived;
|
|
896
840
|
}
|
|
897
|
-
|
|
898
841
|
if (!this.statsResults.internal[mediaType][sendrecvType].lastPacketReceivedTimestamp) {
|
|
899
842
|
this.statsResults.internal[mediaType][sendrecvType].lastPacketReceivedTimestamp = result.lastPacketReceivedTimestamp;
|
|
900
843
|
}
|
|
901
|
-
|
|
902
844
|
var bytes = result.bytesReceived - this.statsResults.internal[mediaType][sendrecvType].prevBytesReceived;
|
|
903
845
|
this.statsResults.internal[mediaType][sendrecvType].prevBytesReceived = result.bytesReceived;
|
|
904
846
|
kilobytes = bytes / 1024;
|
|
@@ -906,34 +848,33 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
906
848
|
this.statsResults[mediaType].bytesReceived = kilobytes.toFixed(1);
|
|
907
849
|
this.statsResults[mediaType][sendrecvType].pliCount = result.pliCount - this.statsResults.internal[mediaType][sendrecvType].pliCount;
|
|
908
850
|
this.statsResults[mediaType][sendrecvType].currentPacketsLost = result.packetsLost - this.statsResults.internal[mediaType][sendrecvType].packetsLost;
|
|
909
|
-
|
|
910
851
|
if (this.statsResults[mediaType][sendrecvType].currentPacketsLost < 0) {
|
|
911
852
|
this.statsResults[mediaType][sendrecvType].currentPacketsLost = 0;
|
|
912
853
|
}
|
|
913
|
-
|
|
914
854
|
this.statsResults[mediaType][sendrecvType].packetsReceived = result.packetsReceived - this.statsResults.internal[mediaType][sendrecvType].totalPacketsReceived;
|
|
915
855
|
this.statsResults.internal[mediaType][sendrecvType].totalPacketsReceived = result.packetsReceived;
|
|
916
|
-
|
|
917
856
|
if (this.statsResults[mediaType][sendrecvType].packetsReceived === 0) {
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
857
|
+
if (receiveSlot) {
|
|
858
|
+
_loggerProxy.default.logger.info("StatsAnalyzer:index#processInboundRTPResult --> No packets received for receive slot ".concat(idAndCsi), this.statsResults[mediaType][sendrecvType].packetsReceived);
|
|
859
|
+
}
|
|
860
|
+
}
|
|
921
861
|
|
|
862
|
+
// Check the over all packet Lost ratio
|
|
922
863
|
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;
|
|
923
|
-
|
|
924
864
|
if (this.statsResults[mediaType][sendrecvType].currentPacketLossRatio > 3) {
|
|
925
|
-
_loggerProxy.default.logger.info(
|
|
926
|
-
}
|
|
865
|
+
_loggerProxy.default.logger.info("StatsAnalyzer:index#processInboundRTPResult --> Packets getting lost from the receiver with slot ".concat(idAndCsi), this.statsResults[mediaType][sendrecvType].currentPacketLossRatio);
|
|
866
|
+
}
|
|
927
867
|
|
|
868
|
+
// TODO: check the packet loss value is negative values here
|
|
928
869
|
|
|
929
870
|
if (result.packetsLost) {
|
|
930
871
|
this.statsResults[mediaType][sendrecvType].totalPacketsLost = result.packetsLost > 0 ? result.packetsLost : -result.packetsLost;
|
|
931
872
|
} else {
|
|
932
873
|
this.statsResults[mediaType][sendrecvType].totalPacketsLost = 0;
|
|
933
874
|
}
|
|
875
|
+
this.statsResults[mediaType][sendrecvType].lastPacketReceivedTimestamp = result.lastPacketReceivedTimestamp;
|
|
934
876
|
|
|
935
|
-
|
|
936
|
-
|
|
877
|
+
// From Thin
|
|
937
878
|
this.statsResults[mediaType][sendrecvType].totalNackCount = result.nackCount;
|
|
938
879
|
this.statsResults[mediaType][sendrecvType].totalPliCount = result.pliCount;
|
|
939
880
|
this.statsResults[mediaType][sendrecvType].framesDecoded = result.framesDecoded;
|
|
@@ -944,7 +885,9 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
944
885
|
this.statsResults[mediaType][sendrecvType].fecPacketsReceived = result.fecPacketsReceived;
|
|
945
886
|
this.statsResults[mediaType][sendrecvType].totalBytesReceived = result.bytesReceived;
|
|
946
887
|
this.statsResults[mediaType][sendrecvType].headerBytesReceived = result.headerBytesReceived;
|
|
947
|
-
this.statsResults[mediaType][sendrecvType].meanRtpJitter.push(result.jitter);
|
|
888
|
+
this.statsResults[mediaType][sendrecvType].meanRtpJitter.push(result.jitter);
|
|
889
|
+
|
|
890
|
+
// Audio stats
|
|
948
891
|
|
|
949
892
|
this.statsResults[mediaType][sendrecvType].audioLevel = result.audioLevel;
|
|
950
893
|
this.statsResults[mediaType][sendrecvType].totalAudioEnergy = result.totalAudioEnergy;
|
|
@@ -953,6 +896,7 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
953
896
|
this.statsResults[mediaType][sendrecvType].concealedSamples = result.concealedSamples || 0;
|
|
954
897
|
}
|
|
955
898
|
}
|
|
899
|
+
|
|
956
900
|
/**
|
|
957
901
|
* Processes remote and local candidate result and stores
|
|
958
902
|
* @private
|
|
@@ -963,7 +907,6 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
963
907
|
*
|
|
964
908
|
* @returns {void}
|
|
965
909
|
*/
|
|
966
|
-
|
|
967
910
|
}, {
|
|
968
911
|
key: "processTrackResult",
|
|
969
912
|
value:
|
|
@@ -980,33 +923,24 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
980
923
|
if (!result || result.type !== 'track') {
|
|
981
924
|
return;
|
|
982
925
|
}
|
|
983
|
-
|
|
984
|
-
if (result.type !== 'track') return;
|
|
985
926
|
var sendrecvType = result.remoteSource === true ? _constants.STATS.RECEIVE_DIRECTION : _constants.STATS.SEND_DIRECTION;
|
|
986
|
-
|
|
987
|
-
if (result.frameWidth && result.frameHeight) {
|
|
988
|
-
this.statsResults.resolutions[mediaType][sendrecvType].width = result.frameWidth;
|
|
989
|
-
this.statsResults.resolutions[mediaType][sendrecvType].height = result.frameHeight;
|
|
990
|
-
this.statsResults.resolutions[mediaType][sendrecvType].framesSent = result.framesSent;
|
|
991
|
-
this.statsResults.resolutions[mediaType][sendrecvType].hugeFramesSent = result.hugeFramesSent;
|
|
992
|
-
}
|
|
993
|
-
|
|
994
927
|
if (sendrecvType === _constants.STATS.RECEIVE_DIRECTION) {
|
|
995
928
|
this.statsResults.resolutions[mediaType][sendrecvType].framesReceived = result.framesReceived;
|
|
996
929
|
this.statsResults.resolutions[mediaType][sendrecvType].framesDecoded = result.framesDecoded;
|
|
997
930
|
this.statsResults.resolutions[mediaType][sendrecvType].framesDropped = result.framesDropped;
|
|
998
931
|
}
|
|
999
|
-
|
|
1000
|
-
if (result.trackIdentifier && mediaType !== _constants.STATS.AUDIO_CORRELATE) {
|
|
932
|
+
if (result.trackIdentifier && !mediaType.includes('audio')) {
|
|
1001
933
|
this.statsResults.resolutions[mediaType][sendrecvType].trackIdentifier = result.trackIdentifier;
|
|
1002
934
|
var jitterBufferDelay = result && result.jitterBufferDelay;
|
|
1003
935
|
var jitterBufferEmittedCount = result && result.jitterBufferEmittedCount;
|
|
1004
|
-
this.statsResults.resolutions[mediaType][sendrecvType].avgJitterDelay = jitterBufferEmittedCount && +jitterBufferDelay / +jitterBufferEmittedCount;
|
|
936
|
+
this.statsResults.resolutions[mediaType][sendrecvType].avgJitterDelay = jitterBufferEmittedCount && +jitterBufferDelay / +jitterBufferEmittedCount;
|
|
1005
937
|
|
|
938
|
+
// Used to calculate the jitter
|
|
1006
939
|
this.statsResults.resolutions[mediaType][sendrecvType].jitterBufferDelay = result.jitterBufferDelay;
|
|
1007
940
|
this.statsResults.resolutions[mediaType][sendrecvType].jitterBufferEmittedCount = result.jitterBufferEmittedCount;
|
|
1008
941
|
}
|
|
1009
942
|
}
|
|
943
|
+
|
|
1010
944
|
/**
|
|
1011
945
|
*
|
|
1012
946
|
* @private
|
|
@@ -1015,20 +949,17 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
1015
949
|
* @returns {void}
|
|
1016
950
|
* @memberof StatsAnalyzer
|
|
1017
951
|
*/
|
|
1018
|
-
|
|
1019
952
|
}, {
|
|
1020
953
|
key: "compareSentAndReceived",
|
|
1021
954
|
value: function compareSentAndReceived(result, type) {
|
|
1022
|
-
|
|
955
|
+
// Don't compare on transceivers without a sender.
|
|
956
|
+
if (!type || !this.statsResults.internal[type].send) {
|
|
1023
957
|
return;
|
|
1024
958
|
}
|
|
1025
|
-
|
|
1026
959
|
var mediaType = type;
|
|
1027
|
-
|
|
1028
960
|
if (!this.statsResults.internal[mediaType].send.totalPacketsLostOnReceiver) {
|
|
1029
961
|
this.statsResults.internal[mediaType].send.totalPacketsLostOnReceiver = result.packetsLost;
|
|
1030
962
|
}
|
|
1031
|
-
|
|
1032
963
|
var currentPacketLoss = result.packetsLost - this.statsResults.internal[mediaType].send.totalPacketsLostOnReceiver;
|
|
1033
964
|
this.statsResults.internal[mediaType].send.totalPacketsLostOnReceiver = result.packetsLost;
|
|
1034
965
|
this.statsResults[mediaType].send.packetsLostOnReceiver = currentPacketLoss;
|
|
@@ -1037,15 +968,14 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
1037
968
|
this.statsResults[mediaType].send.meanRoundTripTime.push(result.roundTripTime);
|
|
1038
969
|
this.statsResults[mediaType].send.timestamp = result.timestamp;
|
|
1039
970
|
this.statsResults[mediaType].send.ssrc = result.ssrc;
|
|
1040
|
-
this.statsResults[mediaType].send.reportsReceived = result.reportsReceived;
|
|
971
|
+
this.statsResults[mediaType].send.reportsReceived = result.reportsReceived;
|
|
1041
972
|
|
|
973
|
+
// Total packloss ratio on this video section of the call
|
|
1042
974
|
this.statsResults[mediaType].send.overAllPacketLossRatio = this.statsResults[mediaType].send.totalPacketsLostOnReceiver > 0 ? this.statsResults[mediaType].send.totalPacketsLostOnReceiver / this.statsResults[mediaType].send.totalPacketsSent : 0;
|
|
1043
975
|
this.statsResults[mediaType].send.currentPacketLossRatio = this.statsResults[mediaType].send.packetsLostOnReceiver > 0 ? this.statsResults[mediaType].send.packetsLostOnReceiver * 100 / (this.statsResults[mediaType].send.packetsSent + this.statsResults[mediaType].send.packetsLostOnReceiver) : 0;
|
|
1044
|
-
|
|
1045
976
|
if (this.statsResults[mediaType].send.maxPacketLossRatio < this.statsResults[mediaType].send.currentPacketLossRatio) {
|
|
1046
977
|
this.statsResults[mediaType].send.maxPacketLossRatio = this.statsResults[mediaType].send.currentPacketLossRatio;
|
|
1047
978
|
}
|
|
1048
|
-
|
|
1049
979
|
if (result.type === 'remote-inbound-rtp') {
|
|
1050
980
|
this.networkQualityMonitor.determineUplinkNetworkQuality({
|
|
1051
981
|
mediaType: mediaType,
|
|
@@ -1057,6 +987,5 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
1057
987
|
}]);
|
|
1058
988
|
return StatsAnalyzer;
|
|
1059
989
|
}(_eventsScope.default);
|
|
1060
|
-
|
|
1061
990
|
exports.StatsAnalyzer = StatsAnalyzer;
|
|
1062
991
|
//# sourceMappingURL=index.js.map
|