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