@webex/plugin-meetings 2.60.0-next.1 → 2.60.0-next.10
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/dist/annotation/annotation.types.d.ts +42 -0
- package/dist/annotation/constants.d.ts +31 -0
- package/dist/annotation/index.d.ts +117 -0
- package/dist/breakouts/breakout.d.ts +8 -0
- package/dist/breakouts/breakout.js +1 -1
- package/dist/breakouts/collection.d.ts +5 -0
- package/dist/breakouts/edit-lock-error.d.ts +15 -0
- package/dist/breakouts/events.d.ts +8 -0
- package/dist/breakouts/index.d.ts +5 -0
- package/dist/breakouts/index.js +1 -1
- package/dist/breakouts/request.d.ts +22 -0
- package/dist/breakouts/utils.d.ts +15 -0
- package/dist/common/browser-detection.d.ts +9 -0
- package/dist/common/collection.d.ts +48 -0
- package/dist/common/config.d.ts +2 -0
- package/dist/common/errors/captcha-error.d.ts +15 -0
- package/dist/common/errors/intent-to-join.d.ts +16 -0
- package/dist/common/errors/join-meeting.d.ts +17 -0
- package/dist/common/errors/media.d.ts +15 -0
- package/dist/common/errors/no-meeting-info.d.ts +14 -0
- package/dist/common/errors/parameter.d.ts +15 -0
- package/dist/common/errors/password-error.d.ts +15 -0
- package/dist/common/errors/permission.d.ts +14 -0
- package/dist/common/errors/reclaim-host-role-errors.d.ts +60 -0
- package/dist/common/errors/reconnection-in-progress.d.ts +9 -0
- package/dist/common/errors/reconnection.d.ts +15 -0
- package/dist/common/errors/stats.d.ts +15 -0
- package/dist/common/errors/webex-errors.d.ts +93 -0
- package/dist/common/errors/webex-meetings-error.d.ts +20 -0
- package/dist/common/events/events-scope.d.ts +17 -0
- package/dist/common/events/events.d.ts +12 -0
- package/dist/common/events/trigger-proxy.d.ts +2 -0
- package/dist/common/events/util.d.ts +2 -0
- package/dist/common/logs/logger-config.d.ts +2 -0
- package/dist/common/logs/logger-proxy.d.ts +2 -0
- package/dist/common/logs/request.d.ts +36 -0
- package/dist/common/queue.d.ts +34 -0
- package/dist/config.d.ts +71 -0
- package/dist/constants.d.ts +1072 -0
- package/dist/constants.js +1 -1
- package/dist/constants.js.map +1 -1
- package/dist/controls-options-manager/constants.d.ts +4 -0
- package/dist/controls-options-manager/enums.d.ts +15 -0
- package/dist/controls-options-manager/enums.js +2 -1
- package/dist/controls-options-manager/enums.js.map +1 -1
- package/dist/controls-options-manager/index.d.ts +136 -0
- package/dist/controls-options-manager/types.d.ts +43 -0
- package/dist/controls-options-manager/util.d.ts +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/interpretation/collection.d.ts +5 -0
- package/dist/interpretation/index.d.ts +5 -0
- package/dist/interpretation/index.js +1 -1
- package/dist/interpretation/siLanguage.d.ts +5 -0
- package/dist/interpretation/siLanguage.js +1 -1
- package/dist/locus-info/controlsUtils.d.ts +2 -0
- package/dist/locus-info/embeddedAppsUtils.d.ts +2 -0
- package/dist/locus-info/fullState.d.ts +2 -0
- package/dist/locus-info/hostUtils.d.ts +2 -0
- package/dist/locus-info/index.d.ts +322 -0
- package/dist/locus-info/infoUtils.d.ts +2 -0
- package/dist/locus-info/mediaSharesUtils.d.ts +2 -0
- package/dist/locus-info/parser.d.ts +272 -0
- package/dist/locus-info/parser.js +5 -5
- package/dist/locus-info/parser.js.map +1 -1
- package/dist/locus-info/selfUtils.d.ts +2 -0
- package/dist/media/index.d.ts +34 -0
- package/dist/media/index.js +6 -5
- package/dist/media/index.js.map +1 -1
- package/dist/media/properties.d.ts +93 -0
- package/dist/media/util.d.ts +2 -0
- package/dist/mediaQualityMetrics/config.d.ts +237 -0
- package/dist/mediaQualityMetrics/config.js +1 -202
- package/dist/mediaQualityMetrics/config.js.map +1 -1
- package/dist/meeting/in-meeting-actions.d.ts +167 -0
- package/dist/meeting/in-meeting-actions.js +4 -0
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/meeting/index.d.ts +1719 -0
- package/dist/meeting/index.js +288 -155
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/locusMediaRequest.d.ts +74 -0
- package/dist/meeting/muteState.d.ts +184 -0
- package/dist/meeting/request.d.ts +290 -0
- package/dist/meeting/request.type.d.ts +11 -0
- package/dist/meeting/state.d.ts +9 -0
- package/dist/meeting/util.d.ts +103 -0
- package/dist/meeting-info/collection.d.ts +20 -0
- package/dist/meeting-info/index.d.ts +69 -0
- package/dist/meeting-info/meeting-info-v2.d.ts +123 -0
- package/dist/meeting-info/meeting-info-v2.js +3 -0
- package/dist/meeting-info/meeting-info-v2.js.map +1 -1
- package/dist/meeting-info/request.d.ts +22 -0
- package/dist/meeting-info/util.d.ts +2 -0
- package/dist/meeting-info/utilv2.d.ts +2 -0
- package/dist/meeting-info/utilv2.js +14 -29
- package/dist/meeting-info/utilv2.js.map +1 -1
- package/dist/meetings/collection.d.ts +40 -0
- package/dist/meetings/collection.js +17 -0
- package/dist/meetings/collection.js.map +1 -1
- package/dist/meetings/index.d.ts +378 -0
- package/dist/meetings/index.js +30 -9
- package/dist/meetings/index.js.map +1 -1
- package/dist/meetings/meetings.types.d.ts +4 -0
- package/dist/meetings/request.d.ts +27 -0
- package/dist/meetings/util.d.ts +18 -0
- package/dist/member/index.d.ts +160 -0
- package/dist/member/member.types.d.ts +11 -0
- package/dist/member/types.d.ts +32 -0
- package/dist/member/util.d.ts +2 -0
- package/dist/members/collection.d.ts +29 -0
- package/dist/members/index.d.ts +353 -0
- package/dist/members/request.d.ts +114 -0
- package/dist/members/types.d.ts +25 -0
- package/dist/members/util.d.ts +215 -0
- package/dist/metrics/constants.d.ts +68 -0
- package/dist/metrics/constants.js +3 -0
- package/dist/metrics/constants.js.map +1 -1
- package/dist/metrics/index.d.ts +45 -0
- package/dist/multistream/mediaRequestManager.d.ts +118 -0
- package/dist/multistream/receiveSlot.d.ts +68 -0
- package/dist/multistream/receiveSlotManager.d.ts +56 -0
- package/dist/multistream/remoteMedia.d.ts +72 -0
- package/dist/multistream/remoteMediaGroup.d.ts +47 -0
- package/dist/multistream/remoteMediaManager.d.ts +285 -0
- package/dist/multistream/sendSlotManager.d.ts +61 -0
- package/dist/networkQualityMonitor/index.d.ts +70 -0
- package/dist/personal-meeting-room/index.d.ts +47 -0
- package/dist/personal-meeting-room/request.d.ts +14 -0
- package/dist/personal-meeting-room/util.d.ts +2 -0
- package/dist/reachability/index.d.ts +194 -0
- package/dist/reachability/request.d.ts +39 -0
- package/dist/reactions/constants.d.ts +3 -0
- package/dist/reactions/reactions.d.ts +4 -0
- package/dist/reactions/reactions.type.d.ts +52 -0
- package/dist/reconnection-manager/index.d.ts +136 -0
- package/dist/reconnection-manager/index.js +27 -28
- package/dist/reconnection-manager/index.js.map +1 -1
- package/dist/recording-controller/enums.d.ts +7 -0
- package/dist/recording-controller/index.d.ts +207 -0
- package/dist/recording-controller/util.d.ts +14 -0
- package/dist/roap/index.d.ts +78 -0
- package/dist/roap/request.d.ts +41 -0
- package/dist/roap/turnDiscovery.d.ts +92 -0
- package/dist/rtcMetrics/constants.d.ts +4 -0
- package/dist/rtcMetrics/index.d.ts +54 -0
- package/dist/rtcMetrics/index.js +25 -0
- package/dist/rtcMetrics/index.js.map +1 -1
- package/dist/statsAnalyzer/global.d.ts +36 -0
- package/dist/statsAnalyzer/index.d.ts +191 -0
- package/dist/statsAnalyzer/index.js +53 -146
- package/dist/statsAnalyzer/index.js.map +1 -1
- package/dist/statsAnalyzer/mqaUtil.d.ts +24 -0
- package/dist/statsAnalyzer/mqaUtil.js +11 -12
- package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
- package/dist/transcription/index.d.ts +64 -0
- package/dist/webinar/collection.d.ts +16 -0
- package/dist/webinar/index.d.ts +5 -0
- package/dist/webinar/index.js +1 -1
- package/package.json +26 -27
- package/src/constants.ts +10 -4
- package/src/controls-options-manager/enums.ts +2 -0
- package/src/locus-info/parser.ts +6 -6
- package/src/media/index.ts +5 -5
- package/src/mediaQualityMetrics/config.ts +0 -135
- package/src/meeting/in-meeting-actions.ts +8 -0
- package/src/meeting/index.ts +263 -125
- package/src/meeting-info/meeting-info-v2.ts +4 -0
- package/src/meeting-info/utilv2.ts +6 -19
- package/src/meetings/collection.ts +13 -0
- package/src/meetings/index.ts +28 -10
- package/src/metrics/constants.ts +3 -0
- package/src/reconnection-manager/index.ts +63 -68
- package/src/rtcMetrics/index.ts +24 -0
- package/src/statsAnalyzer/index.ts +68 -216
- package/src/statsAnalyzer/mqaUtil.ts +17 -22
- package/test/unit/spec/media/index.ts +20 -4
- package/test/unit/spec/meeting/in-meeting-actions.ts +4 -0
- package/test/unit/spec/meeting/index.js +1376 -189
- package/test/unit/spec/meeting/muteState.js +2 -1
- package/test/unit/spec/meeting-info/meetinginfov2.js +28 -0
- package/test/unit/spec/meetings/collection.js +12 -0
- package/test/unit/spec/meetings/index.js +382 -118
- package/test/unit/spec/member/util.js +0 -31
- package/test/unit/spec/reconnection-manager/index.js +42 -12
- package/test/unit/spec/rtcMetrics/index.ts +20 -0
- package/test/unit/spec/stats-analyzer/index.js +12 -2
|
@@ -548,34 +548,3 @@ describe('extractMediaStatus', () => {
|
|
|
548
548
|
assert.deepEqual(mediaStatus, {audio: 'RECVONLY', video: 'SENDRECV'});
|
|
549
549
|
});
|
|
550
550
|
});
|
|
551
|
-
|
|
552
|
-
describe('extractMediaStatus', () => {
|
|
553
|
-
it('throws error when there is no participant', () => {
|
|
554
|
-
assert.throws(() => {
|
|
555
|
-
MemberUtil.extractMediaStatus()
|
|
556
|
-
}, 'Media status could not be extracted, participant is undefined.');
|
|
557
|
-
});
|
|
558
|
-
|
|
559
|
-
it('returns undefined media status when participant audio/video status is not present', () => {
|
|
560
|
-
const participant = {
|
|
561
|
-
status: {}
|
|
562
|
-
};
|
|
563
|
-
|
|
564
|
-
const mediaStatus = MemberUtil.extractMediaStatus(participant)
|
|
565
|
-
|
|
566
|
-
assert.deepEqual(mediaStatus, {audio: undefined, video: undefined});
|
|
567
|
-
});
|
|
568
|
-
|
|
569
|
-
it('returns correct media status when participant audio/video status is present', () => {
|
|
570
|
-
const participant = {
|
|
571
|
-
status: {
|
|
572
|
-
audioStatus: 'RECVONLY',
|
|
573
|
-
videoStatus: 'SENDRECV'
|
|
574
|
-
}
|
|
575
|
-
};
|
|
576
|
-
|
|
577
|
-
const mediaStatus = MemberUtil.extractMediaStatus(participant)
|
|
578
|
-
|
|
579
|
-
assert.deepEqual(mediaStatus, {audio: 'RECVONLY', video: 'SENDRECV'});
|
|
580
|
-
});
|
|
581
|
-
});
|
|
@@ -3,6 +3,7 @@ import chai from 'chai';
|
|
|
3
3
|
import chaiAsPromised from 'chai-as-promised';
|
|
4
4
|
import sinon from 'sinon';
|
|
5
5
|
import ReconnectionManager from '@webex/plugin-meetings/src/reconnection-manager';
|
|
6
|
+
import { RECONNECTION } from '../../../../src/constants';
|
|
6
7
|
|
|
7
8
|
const {assert} = chai;
|
|
8
9
|
|
|
@@ -114,16 +115,6 @@ describe('plugin-meetings', () => {
|
|
|
114
115
|
meetingId: rm.meeting.id,
|
|
115
116
|
},
|
|
116
117
|
});
|
|
117
|
-
|
|
118
|
-
assert.calledWith(fakeMeeting.webex.internal.newMetrics.submitClientEvent, {
|
|
119
|
-
name: 'client.media.recovered',
|
|
120
|
-
payload: {
|
|
121
|
-
recoveredBy: 'new',
|
|
122
|
-
},
|
|
123
|
-
options: {
|
|
124
|
-
meetingId: rm.meeting.id,
|
|
125
|
-
},
|
|
126
|
-
});
|
|
127
118
|
});
|
|
128
119
|
|
|
129
120
|
it('does not clear previous requests and re-request media for non-multistream meetings', async () => {
|
|
@@ -187,9 +178,10 @@ describe('plugin-meetings', () => {
|
|
|
187
178
|
*/
|
|
188
179
|
describe('ReconnectionManager', () => {
|
|
189
180
|
let reconnectionManager;
|
|
181
|
+
let fakeMeeting;
|
|
190
182
|
|
|
191
183
|
beforeEach(() => {
|
|
192
|
-
|
|
184
|
+
fakeMeeting = {
|
|
193
185
|
config: {
|
|
194
186
|
reconnection: {
|
|
195
187
|
enabled: true,
|
|
@@ -204,7 +196,9 @@ describe('plugin-meetings', () => {
|
|
|
204
196
|
},
|
|
205
197
|
},
|
|
206
198
|
},
|
|
207
|
-
}
|
|
199
|
+
};
|
|
200
|
+
|
|
201
|
+
reconnectionManager = new ReconnectionManager(fakeMeeting);
|
|
208
202
|
});
|
|
209
203
|
|
|
210
204
|
describe('iceReconnected()', () => {
|
|
@@ -310,5 +304,41 @@ describe('plugin-meetings', () => {
|
|
|
310
304
|
});
|
|
311
305
|
});
|
|
312
306
|
});
|
|
307
|
+
|
|
308
|
+
describe('setStatus()', () => {
|
|
309
|
+
beforeEach(() => {
|
|
310
|
+
reconnectionManager.status = RECONNECTION.STATE.DEFAULT_STATUS;
|
|
311
|
+
});
|
|
312
|
+
|
|
313
|
+
it('should correctly change status to in progress', () => {
|
|
314
|
+
reconnectionManager.setStatus(RECONNECTION.STATE.IN_PROGRESS);
|
|
315
|
+
|
|
316
|
+
assert.equal(reconnectionManager.status, RECONNECTION.STATE.IN_PROGRESS);
|
|
317
|
+
});
|
|
318
|
+
|
|
319
|
+
it('should correctly change status to complete', () => {
|
|
320
|
+
reconnectionManager.setStatus(RECONNECTION.STATE.COMPLETE);
|
|
321
|
+
|
|
322
|
+
assert.equal(reconnectionManager.status, RECONNECTION.STATE.COMPLETE);
|
|
323
|
+
});
|
|
324
|
+
|
|
325
|
+
it('should correctly change status to failure', () => {
|
|
326
|
+
reconnectionManager.setStatus(RECONNECTION.STATE.FAILURE);
|
|
327
|
+
|
|
328
|
+
assert.equal(reconnectionManager.status, RECONNECTION.STATE.FAILURE);
|
|
329
|
+
});
|
|
330
|
+
});
|
|
331
|
+
|
|
332
|
+
describe('cleanUp()', () => {
|
|
333
|
+
it('should call reset and keep reference to meeting object', () => {
|
|
334
|
+
const resetSpy = sinon.spy(reconnectionManager, 'reset');
|
|
335
|
+
assert.equal(reconnectionManager.meeting, fakeMeeting);
|
|
336
|
+
|
|
337
|
+
reconnectionManager.cleanUp();
|
|
338
|
+
|
|
339
|
+
assert.equal(reconnectionManager.meeting, fakeMeeting);
|
|
340
|
+
assert.calledOnce(reconnectionManager.reset);
|
|
341
|
+
});
|
|
342
|
+
});
|
|
313
343
|
});
|
|
314
344
|
});
|
|
@@ -6,15 +6,26 @@ import RTC_METRICS from '../../../../src/rtcMetrics/constants';
|
|
|
6
6
|
|
|
7
7
|
const FAKE_METRICS_ITEM = {payload: ['fake-metrics']};
|
|
8
8
|
|
|
9
|
+
const STATS_WITH_IP = '{\"id\":\"RTCIceCandidate_/kQs0ZNU\",\"type\":\"remote-candidate\",\"transportId\":\"RTCTransport_0_1\",\"isRemote\":true,\"ip\":\"11.22.111.255\",\"address\":\"11.22.111.255\",\"port\":5004,\"protocol\":\"udp\",\"candidateType\":\"host\",\"priority\":2130706431}';
|
|
10
|
+
const STATS_WITH_IP_RESULT = '{\"id\":\"RTCIceCandidate_/kQs0ZNU\",\"type\":\"remote-candidate\",\"transportId\":\"RTCTransport_0_1\",\"isRemote\":true,\"ip\":\"11.22.111.240\",\"address\":\"11.22.111.240\",\"port\":5004,\"protocol\":\"udp\",\"candidateType\":\"host\",\"priority\":2130706431}';
|
|
11
|
+
|
|
9
12
|
describe('RtcMetrics', () => {
|
|
10
13
|
let metrics: RtcMetrics;
|
|
11
14
|
let webex: MockWebex;
|
|
12
15
|
let clock;
|
|
16
|
+
let anonymizeIpSpy;
|
|
17
|
+
|
|
18
|
+
const sandbox = sinon.createSandbox();
|
|
13
19
|
|
|
14
20
|
beforeEach(() => {
|
|
15
21
|
clock = sinon.useFakeTimers();
|
|
16
22
|
webex = new MockWebex();
|
|
17
23
|
metrics = new RtcMetrics(webex, 'mock-meeting-id', 'mock-correlation-id');
|
|
24
|
+
anonymizeIpSpy = sandbox.spy(metrics, 'anonymizeIp');
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
afterEach(() => {
|
|
28
|
+
sandbox.restore();
|
|
18
29
|
});
|
|
19
30
|
|
|
20
31
|
it('sendMetrics should send a webex request', () => {
|
|
@@ -70,4 +81,13 @@ describe('RtcMetrics', () => {
|
|
|
70
81
|
|
|
71
82
|
assert.callCount(webex.request, 1);
|
|
72
83
|
});
|
|
84
|
+
|
|
85
|
+
it('should anonymize IP addresses', () => {
|
|
86
|
+
assert.strictEqual(metrics.anonymizeIp(STATS_WITH_IP), STATS_WITH_IP_RESULT);
|
|
87
|
+
});
|
|
88
|
+
|
|
89
|
+
it('should call anonymizeIp', () => {
|
|
90
|
+
metrics.addMetrics({ name: 'stats-report', payload: [STATS_WITH_IP] });
|
|
91
|
+
assert.calledOnce(anonymizeIpSpy);
|
|
92
|
+
})
|
|
73
93
|
});
|
|
@@ -179,7 +179,7 @@ describe('plugin-meetings', () => {
|
|
|
179
179
|
report: [
|
|
180
180
|
{
|
|
181
181
|
type: 'outbound-rtp',
|
|
182
|
-
framesSent:
|
|
182
|
+
framesSent: 1500,
|
|
183
183
|
bytesSent: 1,
|
|
184
184
|
},
|
|
185
185
|
{
|
|
@@ -209,7 +209,7 @@ describe('plugin-meetings', () => {
|
|
|
209
209
|
bytesReceived: 1,
|
|
210
210
|
frameHeight: 720,
|
|
211
211
|
frameWidth: 1280,
|
|
212
|
-
framesReceived:
|
|
212
|
+
framesReceived: 1500,
|
|
213
213
|
},
|
|
214
214
|
{
|
|
215
215
|
type: 'candidate-pair',
|
|
@@ -437,6 +437,16 @@ describe('plugin-meetings', () => {
|
|
|
437
437
|
assert.strictEqual(mqeData.intervalMetadata.peripherals.find((val) => val.name === MEDIA_DEVICES.MICROPHONE).information, _UNKNOWN_);
|
|
438
438
|
assert.strictEqual(mqeData.intervalMetadata.peripherals.find((val) => val.name === MEDIA_DEVICES.CAMERA).information, _UNKNOWN_);
|
|
439
439
|
});
|
|
440
|
+
|
|
441
|
+
it('emits the correct frameRate', async () => {
|
|
442
|
+
await startStatsAnalyzer({expected: {receiveVideo: true}});
|
|
443
|
+
|
|
444
|
+
await progressTime();
|
|
445
|
+
assert.strictEqual(mqeData.videoReceive[0].streams[0].common.receivedFrameRate, 25);
|
|
446
|
+
fakeStats.video.receivers[0].framesReceived = 3000;
|
|
447
|
+
await progressTime();
|
|
448
|
+
assert.strictEqual(mqeData.videoReceive[0].streams[0].common.receivedFrameRate, 25);
|
|
449
|
+
});
|
|
440
450
|
});
|
|
441
451
|
});
|
|
442
452
|
});
|