@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
|
@@ -7,6 +7,7 @@ import {ConnectionState} from '@webex/internal-media-core';
|
|
|
7
7
|
import {StatsAnalyzer, EVENTS} from '../../../../src/statsAnalyzer';
|
|
8
8
|
import NetworkQualityMonitor from '../../../../src/networkQualityMonitor';
|
|
9
9
|
import testUtils from '../../../utils/testUtils';
|
|
10
|
+
import {MEDIA_DEVICES, _UNKNOWN_} from '@webex/plugin-meetings/src/constants';
|
|
10
11
|
|
|
11
12
|
const {assert} = chai;
|
|
12
13
|
|
|
@@ -53,7 +54,12 @@ describe('plugin-meetings', () => {
|
|
|
53
54
|
beforeEach(() => {
|
|
54
55
|
const networkQualityMonitor = new NetworkQualityMonitor(initialConfig);
|
|
55
56
|
|
|
56
|
-
statsAnalyzer = new StatsAnalyzer(
|
|
57
|
+
statsAnalyzer = new StatsAnalyzer(
|
|
58
|
+
initialConfig,
|
|
59
|
+
() => ({}),
|
|
60
|
+
networkQualityMonitor,
|
|
61
|
+
defaultStats
|
|
62
|
+
);
|
|
57
63
|
|
|
58
64
|
sandBoxSpy = sandbox.spy(
|
|
59
65
|
statsAnalyzer.networkQualityMonitor,
|
|
@@ -84,6 +90,7 @@ describe('plugin-meetings', () => {
|
|
|
84
90
|
let pc;
|
|
85
91
|
let networkQualityMonitor;
|
|
86
92
|
let statsAnalyzer;
|
|
93
|
+
let mqeData;
|
|
87
94
|
|
|
88
95
|
let receivedEventsData = {
|
|
89
96
|
local: {},
|
|
@@ -113,12 +120,28 @@ describe('plugin-meetings', () => {
|
|
|
113
120
|
audio: {
|
|
114
121
|
senders: [
|
|
115
122
|
{
|
|
123
|
+
localTrackLabel: 'fake-microphone',
|
|
116
124
|
report: [
|
|
117
125
|
{
|
|
118
126
|
type: 'outbound-rtp',
|
|
119
127
|
packetsSent: 0,
|
|
120
128
|
bytesSent: 1,
|
|
121
129
|
},
|
|
130
|
+
{
|
|
131
|
+
type: 'candidate-pair',
|
|
132
|
+
state: 'succeeded',
|
|
133
|
+
localCandidateId: 'fake-candidate-id'
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
type: 'candidate-pair',
|
|
137
|
+
state: 'failed',
|
|
138
|
+
localCandidateId: 'bad-candidate-id'
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
type: 'local-candidate',
|
|
142
|
+
id: 'fake-candidate-id',
|
|
143
|
+
protocol: 'tcp'
|
|
144
|
+
},
|
|
122
145
|
],
|
|
123
146
|
},
|
|
124
147
|
],
|
|
@@ -130,6 +153,21 @@ describe('plugin-meetings', () => {
|
|
|
130
153
|
packetsReceived: 0,
|
|
131
154
|
bytesReceived: 1,
|
|
132
155
|
},
|
|
156
|
+
{
|
|
157
|
+
type: 'candidate-pair',
|
|
158
|
+
state: 'succeeded',
|
|
159
|
+
localCandidateId: 'fake-candidate-id'
|
|
160
|
+
},
|
|
161
|
+
{
|
|
162
|
+
type: 'candidate-pair',
|
|
163
|
+
state: 'failed',
|
|
164
|
+
localCandidateId: 'bad-candidate-id'
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
type: 'local-candidate',
|
|
168
|
+
id: 'fake-candidate-id',
|
|
169
|
+
protocol: 'tcp'
|
|
170
|
+
},
|
|
133
171
|
],
|
|
134
172
|
},
|
|
135
173
|
],
|
|
@@ -137,12 +175,28 @@ describe('plugin-meetings', () => {
|
|
|
137
175
|
video: {
|
|
138
176
|
senders: [
|
|
139
177
|
{
|
|
178
|
+
localTrackLabel: 'fake-camera',
|
|
140
179
|
report: [
|
|
141
180
|
{
|
|
142
181
|
type: 'outbound-rtp',
|
|
143
182
|
framesSent: 0,
|
|
144
183
|
bytesSent: 1,
|
|
145
184
|
},
|
|
185
|
+
{
|
|
186
|
+
type: 'candidate-pair',
|
|
187
|
+
state: 'succeeded',
|
|
188
|
+
localCandidateId: 'fake-candidate-id'
|
|
189
|
+
},
|
|
190
|
+
{
|
|
191
|
+
type: 'candidate-pair',
|
|
192
|
+
state: 'failed',
|
|
193
|
+
localCandidateId: 'bad-candidate-id'
|
|
194
|
+
},
|
|
195
|
+
{
|
|
196
|
+
type: 'local-candidate',
|
|
197
|
+
id: 'fake-candidate-id',
|
|
198
|
+
protocol: 'tcp'
|
|
199
|
+
},
|
|
146
200
|
],
|
|
147
201
|
},
|
|
148
202
|
],
|
|
@@ -153,6 +207,24 @@ describe('plugin-meetings', () => {
|
|
|
153
207
|
type: 'inbound-rtp',
|
|
154
208
|
framesDecoded: 0,
|
|
155
209
|
bytesReceived: 1,
|
|
210
|
+
frameHeight: 720,
|
|
211
|
+
frameWidth: 1280,
|
|
212
|
+
framesReceived: 1,
|
|
213
|
+
},
|
|
214
|
+
{
|
|
215
|
+
type: 'candidate-pair',
|
|
216
|
+
state: 'succeeded',
|
|
217
|
+
localCandidateId: 'fake-candidate-id'
|
|
218
|
+
},
|
|
219
|
+
{
|
|
220
|
+
type: 'candidate-pair',
|
|
221
|
+
state: 'failed',
|
|
222
|
+
localCandidateId: 'bad-candidate-id'
|
|
223
|
+
},
|
|
224
|
+
{
|
|
225
|
+
type: 'local-candidate',
|
|
226
|
+
id: 'fake-candidate-id',
|
|
227
|
+
protocol: 'tcp'
|
|
156
228
|
},
|
|
157
229
|
],
|
|
158
230
|
},
|
|
@@ -184,7 +256,7 @@ describe('plugin-meetings', () => {
|
|
|
184
256
|
|
|
185
257
|
networkQualityMonitor = new NetworkQualityMonitor(initialConfig);
|
|
186
258
|
|
|
187
|
-
statsAnalyzer = new StatsAnalyzer(initialConfig, networkQualityMonitor);
|
|
259
|
+
statsAnalyzer = new StatsAnalyzer(initialConfig, () => ({}), networkQualityMonitor);
|
|
188
260
|
|
|
189
261
|
statsAnalyzer.on(EVENTS.LOCAL_MEDIA_STARTED, (data) => {
|
|
190
262
|
receivedEventsData.local.started = data;
|
|
@@ -198,6 +270,9 @@ describe('plugin-meetings', () => {
|
|
|
198
270
|
statsAnalyzer.on(EVENTS.REMOTE_MEDIA_STOPPED, (data) => {
|
|
199
271
|
receivedEventsData.remote.stopped = data;
|
|
200
272
|
});
|
|
273
|
+
statsAnalyzer.on(EVENTS.MEDIA_QUALITY, ({data}) => {
|
|
274
|
+
mqeData = data;
|
|
275
|
+
});
|
|
201
276
|
});
|
|
202
277
|
|
|
203
278
|
afterEach(() => {
|
|
@@ -224,6 +299,12 @@ describe('plugin-meetings', () => {
|
|
|
224
299
|
assert.deepEqual(receivedEventsData.remote.stopped, expected.remote?.stopped);
|
|
225
300
|
};
|
|
226
301
|
|
|
302
|
+
const checkMqeData = () => {
|
|
303
|
+
assert.strictEqual(mqeData.videoReceive[0].streams[0].receivedFrameSize, 3600);
|
|
304
|
+
assert.strictEqual(mqeData.videoReceive[0].streams[0].receivedHeight, 720);
|
|
305
|
+
assert.strictEqual(mqeData.videoReceive[0].streams[0].receivedWidth, 1280);
|
|
306
|
+
};
|
|
307
|
+
|
|
227
308
|
it('emits LOCAL_MEDIA_STARTED and LOCAL_MEDIA_STOPPED events for audio', async () => {
|
|
228
309
|
await startStatsAnalyzer({expected: {sendAudio: true}});
|
|
229
310
|
|
|
@@ -303,6 +384,59 @@ describe('plugin-meetings', () => {
|
|
|
303
384
|
|
|
304
385
|
checkReceivedEvent({expected: {remote: {stopped: {type: 'video'}}}});
|
|
305
386
|
});
|
|
387
|
+
|
|
388
|
+
it('emits the correct MEDIA_QUALITY events', async () => {
|
|
389
|
+
await startStatsAnalyzer({expected: {receiveVideo: true}});
|
|
390
|
+
|
|
391
|
+
await progressTime();
|
|
392
|
+
|
|
393
|
+
// Check that the mqe data has been emitted and is correctly computed.
|
|
394
|
+
checkMqeData();
|
|
395
|
+
});
|
|
396
|
+
|
|
397
|
+
it('emits the correct transportType in MEDIA_QUALITY events', async () => {
|
|
398
|
+
await startStatsAnalyzer({expected: {receiveVideo: true}});
|
|
399
|
+
|
|
400
|
+
await progressTime();
|
|
401
|
+
|
|
402
|
+
assert.strictEqual(mqeData.audioTransmit[0].common.transportType, 'TCP');
|
|
403
|
+
assert.strictEqual(mqeData.videoReceive[0].common.transportType, 'TCP');
|
|
404
|
+
});
|
|
405
|
+
|
|
406
|
+
it('emits the correct transportType in MEDIA_QUALITY events when using a TURN server', async () => {
|
|
407
|
+
fakeStats.audio.senders[0].report[3].relayProtocol = 'tls';
|
|
408
|
+
fakeStats.video.senders[0].report[3].relayProtocol = 'tls';
|
|
409
|
+
fakeStats.audio.receivers[0].report[3].relayProtocol = 'tls';
|
|
410
|
+
fakeStats.video.receivers[0].report[3].relayProtocol = 'tls';
|
|
411
|
+
|
|
412
|
+
await startStatsAnalyzer({expected: {receiveVideo: true}});
|
|
413
|
+
|
|
414
|
+
await progressTime();
|
|
415
|
+
|
|
416
|
+
assert.strictEqual(mqeData.audioTransmit[0].common.transportType, 'TLS');
|
|
417
|
+
assert.strictEqual(mqeData.videoReceive[0].common.transportType, 'TLS');
|
|
418
|
+
});
|
|
419
|
+
|
|
420
|
+
it('emits the correct peripherals in MEDIA_QUALITY events', async () => {
|
|
421
|
+
await startStatsAnalyzer({expected: {receiveVideo: true}});
|
|
422
|
+
|
|
423
|
+
await progressTime();
|
|
424
|
+
|
|
425
|
+
assert.strictEqual(mqeData.intervalMetadata.peripherals.find((val) => val.name === MEDIA_DEVICES.MICROPHONE).information, 'fake-microphone');
|
|
426
|
+
assert.strictEqual(mqeData.intervalMetadata.peripherals.find((val) => val.name === MEDIA_DEVICES.CAMERA).information, 'fake-camera');
|
|
427
|
+
});
|
|
428
|
+
|
|
429
|
+
it('emits the correct peripherals in MEDIA_QUALITY events when localTrackLabel is undefined', async () => {
|
|
430
|
+
fakeStats.audio.senders[0].localTrackLabel = undefined;
|
|
431
|
+
fakeStats.video.senders[0].localTrackLabel = undefined;
|
|
432
|
+
|
|
433
|
+
await startStatsAnalyzer({expected: {receiveVideo: true}});
|
|
434
|
+
|
|
435
|
+
await progressTime();
|
|
436
|
+
|
|
437
|
+
assert.strictEqual(mqeData.intervalMetadata.peripherals.find((val) => val.name === MEDIA_DEVICES.MICROPHONE).information, _UNKNOWN_);
|
|
438
|
+
assert.strictEqual(mqeData.intervalMetadata.peripherals.find((val) => val.name === MEDIA_DEVICES.CAMERA).information, _UNKNOWN_);
|
|
439
|
+
});
|
|
306
440
|
});
|
|
307
441
|
});
|
|
308
442
|
});
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import {assert} from '@webex/test-helper-chai';
|
|
2
|
+
import WebinarCollection from '@webex/plugin-meetings/src/webinar/collection';
|
|
3
|
+
|
|
4
|
+
describe('plugin-meetings', () => {
|
|
5
|
+
describe('WebinarCollection', () => {
|
|
6
|
+
it('the webinar collection is as expected', () => {
|
|
7
|
+
const collection = new WebinarCollection();
|
|
8
|
+
|
|
9
|
+
assert.equal(collection.namespace, 'Meetings');
|
|
10
|
+
assert.equal(collection.mainIndex, 'sessionId');
|
|
11
|
+
});
|
|
12
|
+
});
|
|
13
|
+
});
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import {assert, expect} from '@webex/test-helper-chai';
|
|
2
|
+
import LoggerProxy from '@webex/plugin-meetings/src/common/logs/logger-proxy';
|
|
3
|
+
import Webinar from '@webex/plugin-meetings/src/webinar';
|
|
4
|
+
import MockWebex from '@webex/test-helper-mock-webex';
|
|
5
|
+
import sinon from 'sinon';
|
|
6
|
+
|
|
7
|
+
describe('plugin-meetings', () => {
|
|
8
|
+
describe('Webinar', () => {
|
|
9
|
+
|
|
10
|
+
let webex;
|
|
11
|
+
let webinar;
|
|
12
|
+
|
|
13
|
+
beforeEach(() => {
|
|
14
|
+
// @ts-ignore
|
|
15
|
+
webex = new MockWebex({});
|
|
16
|
+
webex.internal.mercury.on = sinon.stub();
|
|
17
|
+
webinar = new Webinar({}, {parent: webex});
|
|
18
|
+
webinar.locusUrl = 'locusUrl';
|
|
19
|
+
webex.request = sinon.stub().returns(Promise.resolve('REQUEST_RETURN_VALUE'));
|
|
20
|
+
webex.meetings = {};
|
|
21
|
+
webex.meetings.getMeetingByType = sinon.stub();
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
describe('#locusUrlUpdate', () => {
|
|
25
|
+
it('sets the locus url', () => {
|
|
26
|
+
webinar.locusUrlUpdate('newUrl');
|
|
27
|
+
|
|
28
|
+
assert.equal(webinar.locusUrl, 'newUrl');
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
describe('#webcastUrlUpdate', () => {
|
|
33
|
+
it('sets the webcast url', () => {
|
|
34
|
+
webinar.webcastUrlUpdate('newUrl');
|
|
35
|
+
|
|
36
|
+
assert.equal(webinar.webcastUrl, 'newUrl');
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
describe('#webinarAttendeesSearchingUrlUpdate', () => {
|
|
41
|
+
it('sets the webinarAttendeesSearching url', () => {
|
|
42
|
+
webinar.webinarAttendeesSearchingUrlUpdate('newUrl');
|
|
43
|
+
|
|
44
|
+
assert.equal(webinar.webinarAttendeesSearchingUrl, 'newUrl');
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
describe('#updateCanManageWebcast', () => {
|
|
49
|
+
it('update canManageWebcast', () => {
|
|
50
|
+
webinar.updateCanManageWebcast(true);
|
|
51
|
+
|
|
52
|
+
assert.equal(webinar.canManageWebcast, true);
|
|
53
|
+
|
|
54
|
+
webinar.updateCanManageWebcast(false);
|
|
55
|
+
|
|
56
|
+
assert.equal(webinar.canManageWebcast, false);
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
})
|
|
60
|
+
})
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import {assert} from '@webex/test-helper-chai';
|
|
2
|
+
import {Defer} from '@webex/common';
|
|
3
|
+
|
|
4
|
+
const addMedia = async (user, options = {}) => {
|
|
5
|
+
|
|
6
|
+
const {microphone, camera} = options;
|
|
7
|
+
|
|
8
|
+
if (options.multistream) {
|
|
9
|
+
await user.meeting.addMedia({localStreams: {microphone, camera}});
|
|
10
|
+
} else {
|
|
11
|
+
const mediaReadyPromises = Array.isArray(options.expectedMediaReadyTypes)
|
|
12
|
+
? options.expectedMediaReadyTypes.reduce((output, expectedMediaReadyType) => {
|
|
13
|
+
if (typeof expectedMediaReadyType !== 'string') {
|
|
14
|
+
return output;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
output[expectedMediaReadyType] = new Defer();
|
|
18
|
+
|
|
19
|
+
return output;
|
|
20
|
+
}, {})
|
|
21
|
+
: {remoteAudio: new Defer(), remoteVideo: new Defer()};
|
|
22
|
+
|
|
23
|
+
const mediaReady = (media) => {
|
|
24
|
+
if (!media) {
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
if (mediaReadyPromises[media.type]) {
|
|
28
|
+
mediaReadyPromises[media.type].resolve();
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
user.meeting.on('media:ready', mediaReady);
|
|
33
|
+
|
|
34
|
+
await user.meeting.addMedia({localStreams: {microphone, camera}});
|
|
35
|
+
await Promise.all(Object.values(mediaReadyPromises).map((defer) => defer.promise));
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
assert.exists(user.meeting.mediaProperties.audioStream, 'audioStream not present');
|
|
40
|
+
assert.exists(user.meeting.mediaProperties.videoStream, 'videoStream not present');
|
|
41
|
+
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
export default {
|
|
45
|
+
addMedia
|
|
46
|
+
};
|
package/test/utils/testUtils.js
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
import {assert} from '@webex/test-helper-chai';
|
|
2
|
-
import {Defer} from '@webex/common';
|
|
3
1
|
|
|
4
2
|
const max = 30000;
|
|
5
3
|
const waitForSpy = (spy, event) => {
|
|
@@ -195,56 +193,7 @@ const delayedTest = (callback, timeout) =>
|
|
|
195
193
|
}, timeout);
|
|
196
194
|
});
|
|
197
195
|
|
|
198
|
-
const addMedia = (user, options = {}) => {
|
|
199
|
-
const mediaReadyPromises = Array.isArray(options.expectedMediaReadyTypes)
|
|
200
|
-
? options.expectedMediaReadyTypes.reduce((output, expectedMediaReadyType) => {
|
|
201
|
-
if (typeof expectedMediaReadyType !== 'string') {
|
|
202
|
-
return output;
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
output[expectedMediaReadyType] = new Defer();
|
|
206
|
-
|
|
207
|
-
return output;
|
|
208
|
-
}, {})
|
|
209
|
-
: {local: new Defer(), remoteAudio: new Defer(), remoteVideo: new Defer()};
|
|
210
|
-
|
|
211
|
-
const mediaReady = (media) => {
|
|
212
|
-
if (!media) {
|
|
213
|
-
return;
|
|
214
|
-
}
|
|
215
|
-
if (mediaReadyPromises[media.type]) {
|
|
216
|
-
mediaReadyPromises[media.type].resolve();
|
|
217
|
-
}
|
|
218
|
-
};
|
|
219
196
|
|
|
220
|
-
user.meeting.on('media:ready', mediaReady);
|
|
221
|
-
|
|
222
|
-
return user.meeting
|
|
223
|
-
.getMediaStreams({
|
|
224
|
-
sendAudio: true,
|
|
225
|
-
sendVideo: true,
|
|
226
|
-
sendShare: false,
|
|
227
|
-
})
|
|
228
|
-
.then(([localStream, localShare]) =>
|
|
229
|
-
user.meeting.addMedia({
|
|
230
|
-
mediaSettings: {
|
|
231
|
-
sendAudio: true,
|
|
232
|
-
sendVideo: true,
|
|
233
|
-
sendShare: false,
|
|
234
|
-
receiveShare: true,
|
|
235
|
-
receiveAudio: true,
|
|
236
|
-
receiveVideo: true,
|
|
237
|
-
},
|
|
238
|
-
localShare,
|
|
239
|
-
localStream,
|
|
240
|
-
})
|
|
241
|
-
)
|
|
242
|
-
.then(() => Promise.all(Object.values(mediaReadyPromises).map((defer) => defer.promise)))
|
|
243
|
-
.then(() => {
|
|
244
|
-
assert.exists(user.meeting.mediaProperties.audioTrack, 'audioTrack not present');
|
|
245
|
-
assert.exists(user.meeting.mediaProperties.videoTrack, 'videoTrack not present');
|
|
246
|
-
});
|
|
247
|
-
};
|
|
248
197
|
|
|
249
198
|
const waitUntil = (waitTime) =>
|
|
250
199
|
new Promise((resolve) => {
|
|
@@ -286,7 +235,6 @@ export default {
|
|
|
286
235
|
waitForEvents,
|
|
287
236
|
checkParticipantUpdatedStatus,
|
|
288
237
|
delayedPromise,
|
|
289
|
-
addMedia,
|
|
290
238
|
waitUntil,
|
|
291
239
|
delayedTest,
|
|
292
240
|
flushPromises,
|
|
@@ -1,262 +0,0 @@
|
|
|
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 _regenerator = _interopRequireDefault(require("@babel/runtime-corejs2/regenerator"));
|
|
10
|
-
var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/promise"));
|
|
11
|
-
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/asyncToGenerator"));
|
|
12
|
-
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
|
|
13
|
-
var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));
|
|
14
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
|
|
15
|
-
var _internalMediaCore = require("@webex/internal-media-core");
|
|
16
|
-
var _constants = _interopRequireDefault(require("../metrics/constants"));
|
|
17
|
-
var _metrics = _interopRequireDefault(require("../metrics"));
|
|
18
|
-
var _util = _interopRequireDefault(require("../media/util"));
|
|
19
|
-
var _loggerProxy = _interopRequireDefault(require("../common/logs/logger-proxy"));
|
|
20
|
-
var _constants2 = require("../constants");
|
|
21
|
-
/* eslint-disable no-param-reassign */
|
|
22
|
-
|
|
23
|
-
var createEffectsState = function createEffectsState(type) {
|
|
24
|
-
_loggerProxy.default.logger.info("Meeting:effectState#createEffectsState --> creating effectsState for effect ".concat(type));
|
|
25
|
-
return new EffectsState(type);
|
|
26
|
-
};
|
|
27
|
-
|
|
28
|
-
/* The purpose of this class is to manage the effects state(for eg., BNR).
|
|
29
|
-
*/
|
|
30
|
-
var EffectsState = /*#__PURE__*/function () {
|
|
31
|
-
function EffectsState(type) {
|
|
32
|
-
(0, _classCallCheck2.default)(this, EffectsState);
|
|
33
|
-
(0, _defineProperty2.default)(this, "effectType", void 0);
|
|
34
|
-
(0, _defineProperty2.default)(this, "pendingPromiseReject", void 0);
|
|
35
|
-
(0, _defineProperty2.default)(this, "pendingPromiseResolve", void 0);
|
|
36
|
-
(0, _defineProperty2.default)(this, "state", void 0);
|
|
37
|
-
this.effectType = type;
|
|
38
|
-
this.state = {
|
|
39
|
-
bnr: {
|
|
40
|
-
enabled: _constants2.BNR_STATUS.NOT_ENABLED
|
|
41
|
-
},
|
|
42
|
-
callToWebrtcBNRInProgress: false
|
|
43
|
-
};
|
|
44
|
-
// these 2 hold the resolve, reject methods for the promise we returned to the client in last handleClientRequest() call
|
|
45
|
-
this.pendingPromiseResolve = null;
|
|
46
|
-
this.pendingPromiseReject = null;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
/**
|
|
50
|
-
* @memberof EffectsState
|
|
51
|
-
* @param {Boolean} [isEnable] true for enableBNR, false for disableBNR request
|
|
52
|
-
* @param {Object} [meeting] the meeting object
|
|
53
|
-
* @returns {Promise}
|
|
54
|
-
*/
|
|
55
|
-
(0, _createClass2.default)(EffectsState, [{
|
|
56
|
-
key: "handleClientRequest",
|
|
57
|
-
value: function () {
|
|
58
|
-
var _handleClientRequest = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(isEnable, meeting) {
|
|
59
|
-
var _this = this;
|
|
60
|
-
return _regenerator.default.wrap(function _callee$(_context) {
|
|
61
|
-
while (1) switch (_context.prev = _context.next) {
|
|
62
|
-
case 0:
|
|
63
|
-
return _context.abrupt("return", new _promise.default(function (resolve, reject) {
|
|
64
|
-
if (_this.pendingPromiseResolve) {
|
|
65
|
-
// resolve the last promise we returned to the client as the client has issued a new request that has superseded the previous one
|
|
66
|
-
_this.pendingPromiseResolve();
|
|
67
|
-
}
|
|
68
|
-
_this.pendingPromiseResolve = resolve;
|
|
69
|
-
_this.pendingPromiseReject = reject;
|
|
70
|
-
if (isEnable) _this.enableBNR(meeting);else _this.disableBNR(meeting);
|
|
71
|
-
}));
|
|
72
|
-
case 1:
|
|
73
|
-
case "end":
|
|
74
|
-
return _context.stop();
|
|
75
|
-
}
|
|
76
|
-
}, _callee);
|
|
77
|
-
}));
|
|
78
|
-
function handleClientRequest(_x, _x2) {
|
|
79
|
-
return _handleClientRequest.apply(this, arguments);
|
|
80
|
-
}
|
|
81
|
-
return handleClientRequest;
|
|
82
|
-
}()
|
|
83
|
-
/**
|
|
84
|
-
* Internal API to return status of BNR
|
|
85
|
-
* @memberof EffectsState
|
|
86
|
-
* @returns {Boolean}
|
|
87
|
-
* @public
|
|
88
|
-
* @memberof Meeting
|
|
89
|
-
*/
|
|
90
|
-
}, {
|
|
91
|
-
key: "isBnrEnabled",
|
|
92
|
-
value: function isBnrEnabled() {
|
|
93
|
-
return this.state.bnr.enabled === _constants2.BNR_STATUS.ENABLED;
|
|
94
|
-
}
|
|
95
|
-
}, {
|
|
96
|
-
key: "resolvePromise",
|
|
97
|
-
value: function resolvePromise() {
|
|
98
|
-
if (this.pendingPromiseResolve) {
|
|
99
|
-
this.pendingPromiseResolve(true);
|
|
100
|
-
}
|
|
101
|
-
this.pendingPromiseResolve = null;
|
|
102
|
-
this.pendingPromiseReject = null;
|
|
103
|
-
}
|
|
104
|
-
}, {
|
|
105
|
-
key: "rejectPromise",
|
|
106
|
-
value: function rejectPromise(e) {
|
|
107
|
-
if (this.pendingPromiseReject) {
|
|
108
|
-
this.pendingPromiseReject(e);
|
|
109
|
-
}
|
|
110
|
-
this.pendingPromiseResolve = null;
|
|
111
|
-
this.pendingPromiseReject = null;
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
/**
|
|
115
|
-
* enableBNR API
|
|
116
|
-
* @param {Object} meeting the meeting object
|
|
117
|
-
* @returns {Promise<Boolean>}
|
|
118
|
-
* @public
|
|
119
|
-
* @memberof EffectsState
|
|
120
|
-
*/
|
|
121
|
-
}, {
|
|
122
|
-
key: "enableBNR",
|
|
123
|
-
value: function () {
|
|
124
|
-
var _enableBNR = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(meeting) {
|
|
125
|
-
var bnr, audioStream;
|
|
126
|
-
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
127
|
-
while (1) switch (_context2.prev = _context2.next) {
|
|
128
|
-
case 0:
|
|
129
|
-
_loggerProxy.default.logger.info('Meeting:effectState#enableBNR. Enable BNR called');
|
|
130
|
-
if (!this.isBnrEnabled()) {
|
|
131
|
-
_context2.next = 4;
|
|
132
|
-
break;
|
|
133
|
-
}
|
|
134
|
-
_loggerProxy.default.logger.warn('Meeting:index#enableBNR. BNR is already enabled');
|
|
135
|
-
return _context2.abrupt("return", this.resolvePromise());
|
|
136
|
-
case 4:
|
|
137
|
-
if (!this.state.callToWebrtcBNRInProgress) {
|
|
138
|
-
_context2.next = 7;
|
|
139
|
-
break;
|
|
140
|
-
}
|
|
141
|
-
_loggerProxy.default.logger.warn('Meeting:effectState#enableBNR. Call to WebRTC in progress, we need to wait for it to complete');
|
|
142
|
-
return _context2.abrupt("return", this.resolvePromise());
|
|
143
|
-
case 7:
|
|
144
|
-
bnr = this.state.bnr;
|
|
145
|
-
_context2.prev = 8;
|
|
146
|
-
bnr.enabled = _constants2.BNR_STATUS.SHOULD_ENABLE;
|
|
147
|
-
this.state.callToWebrtcBNRInProgress = true;
|
|
148
|
-
audioStream = _util.default.createMediaStream([meeting.mediaProperties.audioTrack]);
|
|
149
|
-
_loggerProxy.default.logger.info('Meeting:effectState#enableBNR. MediaStream created from meeting & sent to updateAudio');
|
|
150
|
-
_context2.next = 15;
|
|
151
|
-
return meeting.updateAudio({
|
|
152
|
-
sendAudio: true,
|
|
153
|
-
receiveAudio: meeting.mediaProperties.mediaDirection.receiveAudio,
|
|
154
|
-
stream: audioStream
|
|
155
|
-
});
|
|
156
|
-
case 15:
|
|
157
|
-
_loggerProxy.default.logger.info('Meeting:effectState#enableBNR. Updated meeting audio with bnr enabled track');
|
|
158
|
-
bnr.enabled = _constants2.BNR_STATUS.ENABLED;
|
|
159
|
-
this.state.callToWebrtcBNRInProgress = false;
|
|
160
|
-
_metrics.default.sendBehavioralMetric(_constants.default.ENABLE_BNR_SUCCESS);
|
|
161
|
-
_context2.next = 29;
|
|
162
|
-
break;
|
|
163
|
-
case 21:
|
|
164
|
-
_context2.prev = 21;
|
|
165
|
-
_context2.t0 = _context2["catch"](8);
|
|
166
|
-
bnr.enabled = _constants2.BNR_STATUS.NOT_ENABLED;
|
|
167
|
-
this.state.callToWebrtcBNRInProgress = false;
|
|
168
|
-
_loggerProxy.default.logger.error('Meeting:index#enableBNR.', _context2.t0);
|
|
169
|
-
_metrics.default.sendBehavioralMetric(_constants.default.ENABLE_BNR_FAILURE, {
|
|
170
|
-
reason: _context2.t0.message,
|
|
171
|
-
stack: _context2.t0.stack
|
|
172
|
-
});
|
|
173
|
-
this.rejectPromise(_context2.t0);
|
|
174
|
-
throw _context2.t0;
|
|
175
|
-
case 29:
|
|
176
|
-
return _context2.abrupt("return", this.resolvePromise());
|
|
177
|
-
case 30:
|
|
178
|
-
case "end":
|
|
179
|
-
return _context2.stop();
|
|
180
|
-
}
|
|
181
|
-
}, _callee2, this, [[8, 21]]);
|
|
182
|
-
}));
|
|
183
|
-
function enableBNR(_x3) {
|
|
184
|
-
return _enableBNR.apply(this, arguments);
|
|
185
|
-
}
|
|
186
|
-
return enableBNR;
|
|
187
|
-
}()
|
|
188
|
-
/**
|
|
189
|
-
* disableBNR API
|
|
190
|
-
* @param {Object} meeting the meeting object
|
|
191
|
-
* @returns {Promise<Boolean>}
|
|
192
|
-
* @public
|
|
193
|
-
* @memberof EffectsState
|
|
194
|
-
*/
|
|
195
|
-
}, {
|
|
196
|
-
key: "disableBNR",
|
|
197
|
-
value: function () {
|
|
198
|
-
var _disableBNR = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(meeting) {
|
|
199
|
-
var bnr, audioTrack, audioStream;
|
|
200
|
-
return _regenerator.default.wrap(function _callee3$(_context3) {
|
|
201
|
-
while (1) switch (_context3.prev = _context3.next) {
|
|
202
|
-
case 0:
|
|
203
|
-
_loggerProxy.default.logger.info('Meeting:effectState#disableBNR. Disable BNR called');
|
|
204
|
-
bnr = this.state.bnr;
|
|
205
|
-
_context3.prev = 2;
|
|
206
|
-
if (!this.state.callToWebrtcBNRInProgress) {
|
|
207
|
-
_context3.next = 6;
|
|
208
|
-
break;
|
|
209
|
-
}
|
|
210
|
-
_loggerProxy.default.logger.info('Meeting:effectState#disableBNR. Call to WebRTC in progress, we need to wait for it to complete');
|
|
211
|
-
return _context3.abrupt("return", this.resolvePromise());
|
|
212
|
-
case 6:
|
|
213
|
-
bnr.enabled = _constants2.BNR_STATUS.SHOULD_DISABLE;
|
|
214
|
-
this.state.callToWebrtcBNRInProgress = true;
|
|
215
|
-
|
|
216
|
-
// @ts-ignore - disableBNR does not expect an argument
|
|
217
|
-
audioTrack = _internalMediaCore.Media.Effects.BNR.disableBNR(meeting.mediaProperties.audioTrack);
|
|
218
|
-
audioStream = _util.default.createMediaStream([audioTrack]);
|
|
219
|
-
_loggerProxy.default.logger.info('Meeting:effectState#disableBNR. Raw media track obtained from WebRTC & sent to updateAudio');
|
|
220
|
-
_context3.next = 13;
|
|
221
|
-
return meeting.updateAudio({
|
|
222
|
-
sendAudio: true,
|
|
223
|
-
receiveAudio: meeting.mediaProperties.mediaDirection.receiveAudio,
|
|
224
|
-
stream: audioStream
|
|
225
|
-
});
|
|
226
|
-
case 13:
|
|
227
|
-
bnr.enabled = _constants2.BNR_STATUS.NOT_ENABLED;
|
|
228
|
-
this.state.callToWebrtcBNRInProgress = false;
|
|
229
|
-
_metrics.default.sendBehavioralMetric(_constants.default.DISABLE_BNR_SUCCESS);
|
|
230
|
-
_context3.next = 26;
|
|
231
|
-
break;
|
|
232
|
-
case 18:
|
|
233
|
-
_context3.prev = 18;
|
|
234
|
-
_context3.t0 = _context3["catch"](2);
|
|
235
|
-
bnr.enabled = _constants2.BNR_STATUS.ENABLED;
|
|
236
|
-
this.state.callToWebrtcBNRInProgress = false;
|
|
237
|
-
_loggerProxy.default.logger.error("Meeting:index#disableBNR. ".concat(_context3.t0));
|
|
238
|
-
_metrics.default.sendBehavioralMetric(_constants.default.DISABLE_BNR_FAILURE, {
|
|
239
|
-
reason: _context3.t0.message,
|
|
240
|
-
stack: _context3.t0.stack
|
|
241
|
-
});
|
|
242
|
-
this.rejectPromise(_context3.t0);
|
|
243
|
-
throw _context3.t0;
|
|
244
|
-
case 26:
|
|
245
|
-
return _context3.abrupt("return", this.resolvePromise());
|
|
246
|
-
case 27:
|
|
247
|
-
case "end":
|
|
248
|
-
return _context3.stop();
|
|
249
|
-
}
|
|
250
|
-
}, _callee3, this, [[2, 18]]);
|
|
251
|
-
}));
|
|
252
|
-
function disableBNR(_x4) {
|
|
253
|
-
return _disableBNR.apply(this, arguments);
|
|
254
|
-
}
|
|
255
|
-
return disableBNR;
|
|
256
|
-
}()
|
|
257
|
-
}]);
|
|
258
|
-
return EffectsState;
|
|
259
|
-
}();
|
|
260
|
-
var _default = createEffectsState;
|
|
261
|
-
exports.default = _default;
|
|
262
|
-
//# sourceMappingURL=effectsState.js.map
|