@webex/plugin-meetings 3.5.0 → 3.6.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/breakouts/breakout.js +1 -1
- package/dist/breakouts/index.js +1 -1
- package/dist/common/errors/webinar-registration-error.js +50 -0
- package/dist/common/errors/webinar-registration-error.js.map +1 -0
- package/dist/config.js +4 -1
- package/dist/config.js.map +1 -1
- package/dist/constants.js +8 -0
- package/dist/constants.js.map +1 -1
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -1
- package/dist/interpretation/index.js +1 -1
- package/dist/interpretation/siLanguage.js +1 -1
- package/dist/locus-info/parser.js +5 -1
- package/dist/locus-info/parser.js.map +1 -1
- package/dist/media/index.js +3 -1
- package/dist/media/index.js.map +1 -1
- package/dist/meeting/in-meeting-actions.js +3 -1
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/meeting/index.js +185 -103
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/muteState.js +5 -2
- package/dist/meeting/muteState.js.map +1 -1
- package/dist/meeting/util.js +8 -10
- package/dist/meeting/util.js.map +1 -1
- package/dist/meeting-info/meeting-info-v2.js +68 -17
- package/dist/meeting-info/meeting-info-v2.js.map +1 -1
- package/dist/meetings/index.js +102 -27
- package/dist/meetings/index.js.map +1 -1
- package/dist/metrics/constants.js +2 -1
- package/dist/metrics/constants.js.map +1 -1
- package/dist/multistream/remoteMedia.js +4 -0
- package/dist/multistream/remoteMedia.js.map +1 -1
- package/dist/roap/request.js +1 -1
- package/dist/roap/request.js.map +1 -1
- package/dist/types/common/errors/webinar-registration-error.d.ts +14 -0
- package/dist/types/config.d.ts +2 -0
- package/dist/types/constants.d.ts +8 -1
- package/dist/types/index.d.ts +2 -1
- package/dist/types/meeting/in-meeting-actions.d.ts +2 -0
- package/dist/types/meeting/index.d.ts +11 -0
- package/dist/types/meeting/muteState.d.ts +2 -1
- package/dist/types/meeting-info/meeting-info-v2.d.ts +23 -0
- package/dist/types/meetings/index.d.ts +43 -2
- package/dist/types/metrics/constants.d.ts +1 -0
- package/dist/types/multistream/remoteMedia.d.ts +1 -0
- package/dist/webinar/index.js +1 -1
- package/package.json +22 -22
- package/src/common/errors/webinar-registration-error.ts +27 -0
- package/src/config.ts +3 -0
- package/src/constants.ts +7 -0
- package/src/index.ts +2 -0
- package/src/locus-info/parser.ts +8 -1
- package/src/media/index.ts +4 -1
- package/src/meeting/in-meeting-actions.ts +3 -0
- package/src/meeting/index.ts +82 -13
- package/src/meeting/muteState.ts +6 -2
- package/src/meeting/util.ts +27 -31
- package/src/meeting-info/meeting-info-v2.ts +51 -0
- package/src/meetings/index.ts +129 -38
- package/src/metrics/constants.ts +1 -0
- package/src/multistream/remoteMedia.ts +5 -0
- package/src/roap/request.ts +3 -1
- package/test/unit/spec/locus-info/index.js +29 -0
- package/test/unit/spec/media/index.ts +4 -0
- package/test/unit/spec/meeting/in-meeting-actions.ts +2 -0
- package/test/unit/spec/meeting/index.js +118 -18
- package/test/unit/spec/meeting/muteState.js +8 -4
- package/test/unit/spec/meeting/utils.js +50 -85
- package/test/unit/spec/meeting-info/meetinginfov2.js +37 -0
- package/test/unit/spec/meetings/index.js +128 -13
- package/test/unit/spec/multistream/remoteMedia.ts +16 -2
- package/dist/networkQualityMonitor/index.js +0 -227
- package/dist/networkQualityMonitor/index.js.map +0 -1
- package/dist/rtcMetrics/constants.js +0 -11
- package/dist/rtcMetrics/constants.js.map +0 -1
- package/dist/rtcMetrics/index.js +0 -197
- package/dist/rtcMetrics/index.js.map +0 -1
- package/dist/types/networkQualityMonitor/index.d.ts +0 -70
- package/dist/types/rtcMetrics/constants.d.ts +0 -4
- package/dist/types/rtcMetrics/index.d.ts +0 -71
- package/src/rtcMetrics/constants.ts +0 -3
- package/src/rtcMetrics/index.ts +0 -186
- package/test/unit/spec/rtcMetrics/index.ts +0 -154
|
@@ -8,6 +8,7 @@ import {Crypto} from '@peculiar/webcrypto';
|
|
|
8
8
|
global.crypto = new Crypto();
|
|
9
9
|
|
|
10
10
|
import Device from '@webex/internal-plugin-device';
|
|
11
|
+
import {CatalogDetails} from '@webex/internal-plugin-device';
|
|
11
12
|
import Mercury from '@webex/internal-plugin-mercury';
|
|
12
13
|
import {assert} from '@webex/test-helper-chai';
|
|
13
14
|
import MockWebex from '@webex/test-helper-mock-webex';
|
|
@@ -128,6 +129,11 @@ describe('plugin-meetings', () => {
|
|
|
128
129
|
|
|
129
130
|
Object.assign(webex, {
|
|
130
131
|
logger,
|
|
132
|
+
people: {
|
|
133
|
+
_getMe: sinon.stub().resolves({
|
|
134
|
+
type: 'validuser',
|
|
135
|
+
}),
|
|
136
|
+
}
|
|
131
137
|
});
|
|
132
138
|
|
|
133
139
|
startReachabilityStub = sinon.stub(webex.meetings, 'startReachability').resolves();
|
|
@@ -196,6 +202,43 @@ describe('plugin-meetings', () => {
|
|
|
196
202
|
assert.calledOnce(MeetingsUtil.checkH264Support);
|
|
197
203
|
});
|
|
198
204
|
|
|
205
|
+
describe('#getBasicMeetingInformation', () => {
|
|
206
|
+
beforeEach(() => {
|
|
207
|
+
sinon.stub(MeetingUtil, 'cleanUp');
|
|
208
|
+
});
|
|
209
|
+
|
|
210
|
+
it('returns correct meeting information', async () => {
|
|
211
|
+
const meeting = await webex.meetings.createMeeting('test', 'test');
|
|
212
|
+
|
|
213
|
+
const meetingIds = {
|
|
214
|
+
meetingId: meeting.id,
|
|
215
|
+
correlationId: meeting.correlationId,
|
|
216
|
+
};
|
|
217
|
+
|
|
218
|
+
// before meeting is destroyed - it should return information from the meetingCollection
|
|
219
|
+
assert.equal(
|
|
220
|
+
webex.meetings.getBasicMeetingInformation(meetingIds.meetingId).id,
|
|
221
|
+
meetingIds.meetingId
|
|
222
|
+
);
|
|
223
|
+
assert.equal(
|
|
224
|
+
webex.meetings.getBasicMeetingInformation(meetingIds.meetingId).correlationId,
|
|
225
|
+
meetingIds.correlationId
|
|
226
|
+
);
|
|
227
|
+
|
|
228
|
+
webex.meetings.destroy(meeting, test1);
|
|
229
|
+
|
|
230
|
+
// and it should still return the information after the meeting is destroyed
|
|
231
|
+
assert.equal(
|
|
232
|
+
webex.meetings.getBasicMeetingInformation(meetingIds.meetingId).id,
|
|
233
|
+
meetingIds.meetingId
|
|
234
|
+
);
|
|
235
|
+
assert.equal(
|
|
236
|
+
webex.meetings.getBasicMeetingInformation(meetingIds.meetingId).correlationId,
|
|
237
|
+
meetingIds.correlationId
|
|
238
|
+
);
|
|
239
|
+
});
|
|
240
|
+
});
|
|
241
|
+
|
|
199
242
|
describe('#startReachability', () => {
|
|
200
243
|
let gatherReachabilitySpy;
|
|
201
244
|
let fakeResult = {id: 'fake-result'};
|
|
@@ -302,6 +345,22 @@ describe('plugin-meetings', () => {
|
|
|
302
345
|
});
|
|
303
346
|
});
|
|
304
347
|
|
|
348
|
+
describe('#_toggleIpv6BackendNativeSupport', () => {
|
|
349
|
+
it('should have _toggleIpv6BackendNativeSupport', () => {
|
|
350
|
+
assert.equal(typeof webex.meetings._toggleIpv6BackendNativeSupport, 'function');
|
|
351
|
+
});
|
|
352
|
+
|
|
353
|
+
describe('success', () => {
|
|
354
|
+
it('should update meetings config accordingly', () => {
|
|
355
|
+
webex.meetings._toggleIpv6BackendNativeSupport(true);
|
|
356
|
+
assert.equal(webex.meetings.config.backendIpv6NativeSupport, true);
|
|
357
|
+
|
|
358
|
+
webex.meetings._toggleIpv6BackendNativeSupport(false);
|
|
359
|
+
assert.equal(webex.meetings.config.backendIpv6NativeSupport, false);
|
|
360
|
+
});
|
|
361
|
+
});
|
|
362
|
+
});
|
|
363
|
+
|
|
305
364
|
describe('Public API Contracts', () => {
|
|
306
365
|
describe('#register', () => {
|
|
307
366
|
it('emits an event and resolves when register succeeds', async () => {
|
|
@@ -346,12 +405,21 @@ describe('plugin-meetings', () => {
|
|
|
346
405
|
webex.canAuthorize = true;
|
|
347
406
|
webex.meetings.registered = false;
|
|
348
407
|
await webex.meetings.register();
|
|
349
|
-
assert.
|
|
408
|
+
assert.calledOnceWithExactly(webex.internal.device.register, undefined);
|
|
350
409
|
assert.called(webex.internal.services.getMeetingPreferences);
|
|
351
410
|
assert.called(webex.internal.services.fetchClientRegionInfo);
|
|
352
411
|
assert.called(webex.internal.mercury.connect);
|
|
353
412
|
assert.isTrue(webex.meetings.registered);
|
|
354
413
|
});
|
|
414
|
+
|
|
415
|
+
it('passes on the device registration options', async () => {
|
|
416
|
+
webex.canAuthorize = true;
|
|
417
|
+
webex.meetings.registered = false;
|
|
418
|
+
await webex.meetings.register({includeDetails: CatalogDetails.features});
|
|
419
|
+
assert.calledOnceWithExactly(webex.internal.device.register, {
|
|
420
|
+
includeDetails: CatalogDetails.features,
|
|
421
|
+
});
|
|
422
|
+
});
|
|
355
423
|
});
|
|
356
424
|
|
|
357
425
|
describe('#unregister', () => {
|
|
@@ -753,14 +821,16 @@ describe('plugin-meetings', () => {
|
|
|
753
821
|
|
|
754
822
|
const FAKE_USE_RANDOM_DELAY = true;
|
|
755
823
|
const correlationId = 'my-correlationId';
|
|
824
|
+
const sessionCorrelationId = 'my-session-correlationId';
|
|
756
825
|
const callStateForMetrics = {
|
|
826
|
+
sessionCorrelationId: 'my-session-correlationId2',
|
|
757
827
|
correlationId: 'my-correlationId2',
|
|
758
828
|
joinTrigger: 'my-join-trigger',
|
|
759
829
|
loginType: 'my-login-type',
|
|
760
830
|
};
|
|
761
831
|
|
|
762
|
-
it('should call
|
|
763
|
-
const fakeMeeting = {
|
|
832
|
+
it('should call updateCallStateForMetrics on any pre-existing meeting', async () => {
|
|
833
|
+
const fakeMeeting = {updateCallStateForMetrics: sinon.mock()};
|
|
764
834
|
webex.meetings.meetingCollection.getByKey = sinon.stub().returns(fakeMeeting);
|
|
765
835
|
await webex.meetings.create(
|
|
766
836
|
test1,
|
|
@@ -769,11 +839,15 @@ describe('plugin-meetings', () => {
|
|
|
769
839
|
{},
|
|
770
840
|
correlationId,
|
|
771
841
|
true,
|
|
772
|
-
callStateForMetrics
|
|
842
|
+
callStateForMetrics,
|
|
843
|
+
undefined,
|
|
844
|
+
undefined,
|
|
845
|
+
sessionCorrelationId
|
|
773
846
|
);
|
|
774
|
-
assert.calledOnceWithExactly(fakeMeeting.
|
|
847
|
+
assert.calledOnceWithExactly(fakeMeeting.updateCallStateForMetrics, {
|
|
775
848
|
...callStateForMetrics,
|
|
776
849
|
correlationId,
|
|
850
|
+
sessionCorrelationId,
|
|
777
851
|
});
|
|
778
852
|
});
|
|
779
853
|
|
|
@@ -814,13 +888,14 @@ describe('plugin-meetings', () => {
|
|
|
814
888
|
undefined,
|
|
815
889
|
meetingInfo,
|
|
816
890
|
'meetingLookupURL',
|
|
891
|
+
sessionCorrelationId,
|
|
817
892
|
],
|
|
818
893
|
[
|
|
819
894
|
test1,
|
|
820
895
|
test2,
|
|
821
896
|
FAKE_USE_RANDOM_DELAY,
|
|
822
897
|
{},
|
|
823
|
-
{correlationId},
|
|
898
|
+
{correlationId, sessionCorrelationId},
|
|
824
899
|
true,
|
|
825
900
|
meetingInfo,
|
|
826
901
|
'meetingLookupURL',
|
|
@@ -1719,6 +1794,7 @@ describe('plugin-meetings', () => {
|
|
|
1719
1794
|
const expectedMeetingData = {
|
|
1720
1795
|
correlationId: 'my-correlationId',
|
|
1721
1796
|
callStateForMetrics: {
|
|
1797
|
+
sessionCorrelationId: '',
|
|
1722
1798
|
correlationId: 'my-correlationId',
|
|
1723
1799
|
joinTrigger: 'my-join-trigger',
|
|
1724
1800
|
loginType: 'my-login-type',
|
|
@@ -1812,7 +1888,10 @@ describe('plugin-meetings', () => {
|
|
|
1812
1888
|
});
|
|
1813
1889
|
|
|
1814
1890
|
it('creates the meeting avoiding meeting info fetch by passing type as DESTINATION_TYPE.ONE_ON_ONE_CALL', async () => {
|
|
1815
|
-
const meeting = await webex.meetings.createMeeting(
|
|
1891
|
+
const meeting = await webex.meetings.createMeeting(
|
|
1892
|
+
'test destination',
|
|
1893
|
+
DESTINATION_TYPE.ONE_ON_ONE_CALL
|
|
1894
|
+
);
|
|
1816
1895
|
|
|
1817
1896
|
assert.instanceOf(
|
|
1818
1897
|
meeting,
|
|
@@ -1822,7 +1901,6 @@ describe('plugin-meetings', () => {
|
|
|
1822
1901
|
|
|
1823
1902
|
assert.notCalled(webex.meetings.meetingInfo.fetchMeetingInfo);
|
|
1824
1903
|
});
|
|
1825
|
-
|
|
1826
1904
|
});
|
|
1827
1905
|
|
|
1828
1906
|
describe('rejected MeetingInfo.#fetchMeetingInfo - does not log for known Error types', () => {
|
|
@@ -1896,17 +1974,23 @@ describe('plugin-meetings', () => {
|
|
|
1896
1974
|
assert.exists(webex.meetings.destroy);
|
|
1897
1975
|
});
|
|
1898
1976
|
describe('correctly established meeting', () => {
|
|
1977
|
+
let deleteSpy;
|
|
1899
1978
|
beforeEach(() => {
|
|
1900
|
-
|
|
1979
|
+
deleteSpy = sinon.spy(webex.meetings.meetingCollection, 'delete');
|
|
1901
1980
|
});
|
|
1902
1981
|
|
|
1903
|
-
it('tests the destroy removal from the collection', async () => {
|
|
1982
|
+
it('tests the destroy removal from the collection and storing basic info in deletedMeetings', async () => {
|
|
1904
1983
|
const meeting = await webex.meetings.createMeeting('test', 'test');
|
|
1905
1984
|
|
|
1985
|
+
const meetingIds = {
|
|
1986
|
+
meetingId: meeting.id,
|
|
1987
|
+
correlationId: meeting.correlationId,
|
|
1988
|
+
};
|
|
1989
|
+
|
|
1906
1990
|
webex.meetings.destroy(meeting, test1);
|
|
1907
1991
|
|
|
1908
|
-
assert.calledOnce(
|
|
1909
|
-
assert.calledWith(
|
|
1992
|
+
assert.calledOnce(deleteSpy);
|
|
1993
|
+
assert.calledWith(deleteSpy, meeting.id);
|
|
1910
1994
|
assert.calledWith(
|
|
1911
1995
|
TriggerProxy.trigger,
|
|
1912
1996
|
sinon.match.instanceOf(Meetings),
|
|
@@ -1920,6 +2004,23 @@ describe('plugin-meetings', () => {
|
|
|
1920
2004
|
reason: test1,
|
|
1921
2005
|
}
|
|
1922
2006
|
);
|
|
2007
|
+
|
|
2008
|
+
// check that the meeting is stored in deletedMeetings and removed from meetingCollection
|
|
2009
|
+
assert.equal(webex.meetings.deletedMeetings.get(meeting.id).id, meetingIds.meetingId);
|
|
2010
|
+
assert.equal(
|
|
2011
|
+
webex.meetings.deletedMeetings.get(meeting.id).correlationId,
|
|
2012
|
+
meetingIds.correlationId
|
|
2013
|
+
);
|
|
2014
|
+
|
|
2015
|
+
assert.equal(webex.meetings.meetingCollection.get(meeting.id), undefined);
|
|
2016
|
+
|
|
2017
|
+
// and that getBasicMeetingInformation() still returns the meeting info
|
|
2018
|
+
const deletedMeetingInfo = webex.meetings.getBasicMeetingInformation(
|
|
2019
|
+
meetingIds.meetingId
|
|
2020
|
+
);
|
|
2021
|
+
|
|
2022
|
+
assert.equal(deletedMeetingInfo.id, meetingIds.meetingId);
|
|
2023
|
+
assert.equal(deletedMeetingInfo.correlationId, meetingIds.correlationId);
|
|
1923
2024
|
});
|
|
1924
2025
|
});
|
|
1925
2026
|
|
|
@@ -1976,7 +2077,7 @@ describe('plugin-meetings', () => {
|
|
|
1976
2077
|
]);
|
|
1977
2078
|
});
|
|
1978
2079
|
|
|
1979
|
-
const setup = ({user} = {}) => {
|
|
2080
|
+
const setup = ({me = { type: 'validuser'}, user} = {}) => {
|
|
1980
2081
|
loggerProxySpy = sinon.spy(LoggerProxy.logger, 'error');
|
|
1981
2082
|
assert.deepEqual(webex.internal.services._getCatalog().getAllowedDomains(), []);
|
|
1982
2083
|
|
|
@@ -1989,8 +2090,22 @@ describe('plugin-meetings', () => {
|
|
|
1989
2090
|
Object.assign(webex.internal.services, {
|
|
1990
2091
|
getMeetingPreferences: sinon.stub().returns(Promise.resolve({})),
|
|
1991
2092
|
});
|
|
2093
|
+
|
|
2094
|
+
Object.assign(webex.people, {
|
|
2095
|
+
_getMe: sinon.stub().returns(Promise.resolve(me)),
|
|
2096
|
+
});
|
|
1992
2097
|
};
|
|
1993
2098
|
|
|
2099
|
+
it('should not call request.getMeetingPreferences if user is a guest', async () => {
|
|
2100
|
+
setup({me: {type: 'appuser'}});
|
|
2101
|
+
|
|
2102
|
+
await webex.meetings.fetchUserPreferredWebexSite();
|
|
2103
|
+
|
|
2104
|
+
assert.equal(webex.meetings.preferredWebexSite, '');
|
|
2105
|
+
assert.deepEqual(webex.internal.services._getCatalog().getAllowedDomains(), []);
|
|
2106
|
+
assert.notCalled(webex.internal.services.getMeetingPreferences);
|
|
2107
|
+
});
|
|
2108
|
+
|
|
1994
2109
|
it('should not fail if UserPreferred info is not fetched ', async () => {
|
|
1995
2110
|
setup();
|
|
1996
2111
|
|
|
@@ -7,7 +7,7 @@ import {RemoteMedia, RemoteMediaEvents} from '@webex/plugin-meetings/src/multist
|
|
|
7
7
|
import {ReceiveSlotEvents} from '@webex/plugin-meetings/src/multistream/receiveSlot';
|
|
8
8
|
import sinon from 'sinon';
|
|
9
9
|
import {assert} from '@webex/test-helper-chai';
|
|
10
|
-
import {
|
|
10
|
+
import {forEach} from 'lodash';
|
|
11
11
|
|
|
12
12
|
describe('RemoteMedia', () => {
|
|
13
13
|
let remoteMedia;
|
|
@@ -227,12 +227,26 @@ describe('RemoteMedia', () => {
|
|
|
227
227
|
});
|
|
228
228
|
|
|
229
229
|
describe('setSizeHint()', () => {
|
|
230
|
-
|
|
231
230
|
it('works if the receive slot is undefined', () => {
|
|
232
231
|
remoteMedia.receiveSlot = undefined;
|
|
233
232
|
remoteMedia.setSizeHint(100, 100);
|
|
234
233
|
});
|
|
235
234
|
|
|
235
|
+
forEach(
|
|
236
|
+
[
|
|
237
|
+
{width: 0, height: 0},
|
|
238
|
+
{width: 135, height: 0},
|
|
239
|
+
{width: 0, height: 240},
|
|
240
|
+
],
|
|
241
|
+
({width, height}) => {
|
|
242
|
+
it(`skip updating the max fs when applied ${width}:${height}`, () => {
|
|
243
|
+
remoteMedia.setSizeHint(width, height);
|
|
244
|
+
|
|
245
|
+
assert.notCalled(fakeReceiveSlot.setMaxFs);
|
|
246
|
+
});
|
|
247
|
+
}
|
|
248
|
+
);
|
|
249
|
+
|
|
236
250
|
forEach(
|
|
237
251
|
[
|
|
238
252
|
{height: 134, fs: 60},
|
|
@@ -1,227 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _Reflect$construct = require("@babel/runtime-corejs2/core-js/reflect/construct");
|
|
4
|
-
var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
|
|
5
|
-
var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
|
|
6
|
-
_Object$defineProperty(exports, "__esModule", {
|
|
7
|
-
value: true
|
|
8
|
-
});
|
|
9
|
-
exports.default = void 0;
|
|
10
|
-
var _freeze = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/freeze"));
|
|
11
|
-
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
|
|
12
|
-
var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));
|
|
13
|
-
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/assertThisInitialized"));
|
|
14
|
-
var _inherits2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/inherits"));
|
|
15
|
-
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/possibleConstructorReturn"));
|
|
16
|
-
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/getPrototypeOf"));
|
|
17
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
|
|
18
|
-
var _eventsScope = _interopRequireDefault(require("../common/events/events-scope"));
|
|
19
|
-
var _constants = require("../constants");
|
|
20
|
-
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = _Reflect$construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
|
|
21
|
-
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !_Reflect$construct) return false; if (_Reflect$construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(_Reflect$construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
22
|
-
/**
|
|
23
|
-
* Meeting - network quality event
|
|
24
|
-
* Emitted on each interval of retrieving stats Analyzer data
|
|
25
|
-
* @event network:quality
|
|
26
|
-
* @type {Object}
|
|
27
|
-
* @property {string} mediaType {video|audio}
|
|
28
|
-
* @property {number} networkQualityScore - value determined in determineUplinkNetworkQuality
|
|
29
|
-
* @memberof NetworkQualityMonitor
|
|
30
|
-
*/
|
|
31
|
-
/**
|
|
32
|
-
* NetworkQualityMonitor class that will emit events based on detected quality
|
|
33
|
-
*
|
|
34
|
-
* @class NetworkQualityMonitor
|
|
35
|
-
* @extends {EventsScope}
|
|
36
|
-
*/
|
|
37
|
-
var NetworkQualityMonitor = exports.default = /*#__PURE__*/function (_EventsScope) {
|
|
38
|
-
(0, _inherits2.default)(NetworkQualityMonitor, _EventsScope);
|
|
39
|
-
var _super = _createSuper(NetworkQualityMonitor);
|
|
40
|
-
/**
|
|
41
|
-
* Creates a new instance of NetworkQualityMonitor
|
|
42
|
-
* @constructor
|
|
43
|
-
* @public
|
|
44
|
-
* @param {Object} config
|
|
45
|
-
* @property {Object} indicatorTypes - network properties used to evaluate network quality used as constants
|
|
46
|
-
* @property {Object} frequencyTypes - frequency properties used as constants {uplink|send} {downlink|receive}
|
|
47
|
-
* @property {number} networkQualityScore - 0|1 1 is acceptable 0 is bad/unknown
|
|
48
|
-
* @property {Object} networkQualityStatus - hash object based on indicatorTypes and frequencyTypes
|
|
49
|
-
* @property {string} mediaType - audio|video
|
|
50
|
-
*/
|
|
51
|
-
function NetworkQualityMonitor(config) {
|
|
52
|
-
var _this;
|
|
53
|
-
(0, _classCallCheck2.default)(this, NetworkQualityMonitor);
|
|
54
|
-
_this = _super.call(this);
|
|
55
|
-
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "config", void 0);
|
|
56
|
-
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "frequencyTypes", void 0);
|
|
57
|
-
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "indicatorTypes", void 0);
|
|
58
|
-
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "mediaType", void 0);
|
|
59
|
-
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "networkQualityScore", void 0);
|
|
60
|
-
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "networkQualityStatus", void 0);
|
|
61
|
-
_this.config = config;
|
|
62
|
-
_this.indicatorTypes = (0, _freeze.default)({
|
|
63
|
-
PACKETLOSS: 'packetLoss',
|
|
64
|
-
LATENCY: 'latency',
|
|
65
|
-
JITTER: 'jitter'
|
|
66
|
-
});
|
|
67
|
-
_this.frequencyTypes = (0, _freeze.default)({
|
|
68
|
-
UPLINK: 'uplink',
|
|
69
|
-
DOWNLINK: 'downlink'
|
|
70
|
-
});
|
|
71
|
-
_this.networkQualityScore = 1;
|
|
72
|
-
_this.networkQualityStatus = (0, _defineProperty2.default)({}, _this.frequencyTypes.UPLINK, {});
|
|
73
|
-
_this.mediaType = null;
|
|
74
|
-
return _this;
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
/**
|
|
78
|
-
* emits NETWORK_QUALITY event on meeting with payload of media type and uplinkNetworkQuality score
|
|
79
|
-
*
|
|
80
|
-
* @memberof NetworkQualityMonitor
|
|
81
|
-
* @returns {void}
|
|
82
|
-
*/
|
|
83
|
-
(0, _createClass2.default)(NetworkQualityMonitor, [{
|
|
84
|
-
key: "emitNetworkQuality",
|
|
85
|
-
value: function emitNetworkQuality() {
|
|
86
|
-
this.emit({
|
|
87
|
-
file: 'networkQualityMonitor',
|
|
88
|
-
function: 'emitNetworkQuality'
|
|
89
|
-
}, _constants.EVENT_TRIGGERS.NETWORK_QUALITY, {
|
|
90
|
-
mediaType: this.mediaType,
|
|
91
|
-
networkQualityScore: this.networkQualityScore
|
|
92
|
-
});
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
/**
|
|
96
|
-
* invokes emitNetworkQuality method resets values back to default
|
|
97
|
-
* @returns {void}
|
|
98
|
-
* @memberof NetworkQualityMonitor
|
|
99
|
-
*/
|
|
100
|
-
}, {
|
|
101
|
-
key: "updateNetworkQualityStatus",
|
|
102
|
-
value: function updateNetworkQualityStatus() {
|
|
103
|
-
this.emitNetworkQuality();
|
|
104
|
-
|
|
105
|
-
// reset values
|
|
106
|
-
this.networkQualityScore = 1;
|
|
107
|
-
this.mediaType = null;
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
/**
|
|
111
|
-
* filter data to determine uplink network quality, invoked on same interval as stats analyzer remote-inbout-rtp
|
|
112
|
-
* @param {Object} configObj
|
|
113
|
-
* @param {string} configObj.mediaType {audio|video}
|
|
114
|
-
* @param {RTCStats} configObj.remoteRtpResults RTC stats remote obj
|
|
115
|
-
* @param {Object} configObj.statsAnalyzerCurrentStats statsResults
|
|
116
|
-
* @returns {void}
|
|
117
|
-
* @public
|
|
118
|
-
* @memberof NetworkQualityMonitor
|
|
119
|
-
*/
|
|
120
|
-
}, {
|
|
121
|
-
key: "determineUplinkNetworkQuality",
|
|
122
|
-
value: function determineUplinkNetworkQuality(_ref) {
|
|
123
|
-
var _this2 = this;
|
|
124
|
-
var mediaType = _ref.mediaType,
|
|
125
|
-
remoteRtpResults = _ref.remoteRtpResults,
|
|
126
|
-
statsAnalyzerCurrentStats = _ref.statsAnalyzerCurrentStats;
|
|
127
|
-
var roundTripTimeInMilliseconds = remoteRtpResults.roundTripTime * 1000;
|
|
128
|
-
var jitterInMilliseconds = remoteRtpResults.jitter * 1000;
|
|
129
|
-
var currentPacketLossRatio = statsAnalyzerCurrentStats[mediaType].send.currentPacketLossRatio;
|
|
130
|
-
this.mediaType = mediaType;
|
|
131
|
-
var _this$indicatorTypes = this.indicatorTypes,
|
|
132
|
-
JITTER = _this$indicatorTypes.JITTER,
|
|
133
|
-
PACKETLOSS = _this$indicatorTypes.PACKETLOSS,
|
|
134
|
-
LATENCY = _this$indicatorTypes.LATENCY;
|
|
135
|
-
var UPLINK = this.frequencyTypes.UPLINK;
|
|
136
|
-
|
|
137
|
-
/**
|
|
138
|
-
* determines if packetLoss ratio is over threshold set in config
|
|
139
|
-
* sets networkQualityScore to 0 if over threshold
|
|
140
|
-
* @returns {boolean}
|
|
141
|
-
*/
|
|
142
|
-
var determinePacketLoss = function determinePacketLoss() {
|
|
143
|
-
if (currentPacketLossRatio > _this2.config.videoPacketLossRatioThreshold) {
|
|
144
|
-
_this2.networkQualityScore = 0;
|
|
145
|
-
return false;
|
|
146
|
-
}
|
|
147
|
-
return true;
|
|
148
|
-
};
|
|
149
|
-
|
|
150
|
-
/**
|
|
151
|
-
* determines if round trip time value is over threshold set in config
|
|
152
|
-
* sets networkQualityScore to 0 if over threshold
|
|
153
|
-
* @returns {boolean}
|
|
154
|
-
*/
|
|
155
|
-
var determineLatency = function determineLatency() {
|
|
156
|
-
if (roundTripTimeInMilliseconds > _this2.config.rttThreshold) {
|
|
157
|
-
_this2.networkQualityScore = 0;
|
|
158
|
-
return false;
|
|
159
|
-
}
|
|
160
|
-
return true;
|
|
161
|
-
};
|
|
162
|
-
|
|
163
|
-
/**
|
|
164
|
-
* determines if jitter value is over threshold in config
|
|
165
|
-
* sets networkQualityScore to 0 if over threshold
|
|
166
|
-
* @returns {boolean}
|
|
167
|
-
*/
|
|
168
|
-
var deterMineJitter = function deterMineJitter() {
|
|
169
|
-
if (jitterInMilliseconds > _this2.config.jitterThreshold) {
|
|
170
|
-
_this2.networkQualityScore = 0;
|
|
171
|
-
return false;
|
|
172
|
-
}
|
|
173
|
-
return true;
|
|
174
|
-
};
|
|
175
|
-
|
|
176
|
-
/**
|
|
177
|
-
* returns null if val is specifically undefined
|
|
178
|
-
* @param {(number|undefined)} value
|
|
179
|
-
* @returns {(number|null)}
|
|
180
|
-
*/
|
|
181
|
-
var determineIfUndefined = function determineIfUndefined(value) {
|
|
182
|
-
return typeof value === 'undefined' ? null : value;
|
|
183
|
-
};
|
|
184
|
-
if (!this.networkQualityStatus[UPLINK][mediaType]) {
|
|
185
|
-
this.networkQualityStatus[UPLINK][mediaType] = {};
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
/**
|
|
189
|
-
* Values for some browsers specifically Safari will be undefined we explicitly set to null
|
|
190
|
-
* https://bugs.webkit.org/show_bug.cgi?id=206645
|
|
191
|
-
* https://bugs.webkit.org/show_bug.cgi?id=212668
|
|
192
|
-
*/
|
|
193
|
-
// PACKET LOSS
|
|
194
|
-
this.networkQualityStatus[UPLINK][mediaType][PACKETLOSS] = {
|
|
195
|
-
acceptable: determinePacketLoss(),
|
|
196
|
-
value: determineIfUndefined(currentPacketLossRatio)
|
|
197
|
-
};
|
|
198
|
-
|
|
199
|
-
// LATENCY measured in Round trip time
|
|
200
|
-
this.networkQualityStatus[UPLINK][mediaType][LATENCY] = {
|
|
201
|
-
acceptable: determineLatency(),
|
|
202
|
-
value: determineIfUndefined(remoteRtpResults.roundTripTime)
|
|
203
|
-
};
|
|
204
|
-
|
|
205
|
-
// JITTER
|
|
206
|
-
this.networkQualityStatus[UPLINK][mediaType][JITTER] = {
|
|
207
|
-
acceptable: deterMineJitter(),
|
|
208
|
-
value: determineIfUndefined(remoteRtpResults.jitter)
|
|
209
|
-
};
|
|
210
|
-
this.updateNetworkQualityStatus();
|
|
211
|
-
}
|
|
212
|
-
|
|
213
|
-
/**
|
|
214
|
-
* Get the current status of network quaility object - networkQualityStatus
|
|
215
|
-
* @returns {Object}
|
|
216
|
-
* @public
|
|
217
|
-
*/
|
|
218
|
-
}, {
|
|
219
|
-
key: "networkQualityStats",
|
|
220
|
-
get: function get() {
|
|
221
|
-
var UPLINK = this.frequencyTypes.UPLINK;
|
|
222
|
-
return this.networkQualityStatus[UPLINK];
|
|
223
|
-
}
|
|
224
|
-
}]);
|
|
225
|
-
return NetworkQualityMonitor;
|
|
226
|
-
}(_eventsScope.default);
|
|
227
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["_eventsScope","_interopRequireDefault","require","_constants","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","default","result","NewTarget","constructor","_Reflect$construct","arguments","apply","_possibleConstructorReturn2","Reflect","sham","Proxy","Boolean","prototype","valueOf","call","e","NetworkQualityMonitor","exports","_EventsScope","_inherits2","_super","config","_this","_classCallCheck2","_defineProperty2","_assertThisInitialized2","indicatorTypes","_freeze","PACKETLOSS","LATENCY","JITTER","frequencyTypes","UPLINK","DOWNLINK","networkQualityScore","networkQualityStatus","mediaType","_createClass2","key","value","emitNetworkQuality","emit","file","function","EVENT_TRIGGERS","NETWORK_QUALITY","updateNetworkQualityStatus","determineUplinkNetworkQuality","_ref","_this2","remoteRtpResults","statsAnalyzerCurrentStats","roundTripTimeInMilliseconds","roundTripTime","jitterInMilliseconds","jitter","currentPacketLossRatio","send","_this$indicatorTypes","determinePacketLoss","videoPacketLossRatioThreshold","determineLatency","rttThreshold","deterMineJitter","jitterThreshold","determineIfUndefined","acceptable","get","EventsScope"],"sources":["index.ts"],"sourcesContent":["import EventsScope from '../common/events/events-scope';\nimport {EVENT_TRIGGERS} from '../constants';\n\n/**\n * Meeting - network quality event\n * Emitted on each interval of retrieving stats Analyzer data\n * @event network:quality\n * @type {Object}\n * @property {string} mediaType {video|audio}\n * @property {number} networkQualityScore - value determined in determineUplinkNetworkQuality\n * @memberof NetworkQualityMonitor\n */\n/**\n * NetworkQualityMonitor class that will emit events based on detected quality\n *\n * @class NetworkQualityMonitor\n * @extends {EventsScope}\n */\nexport default class NetworkQualityMonitor extends EventsScope {\n config: any;\n frequencyTypes: any;\n indicatorTypes: any;\n mediaType: any;\n networkQualityScore: any;\n networkQualityStatus: any;\n\n /**\n * Creates a new instance of NetworkQualityMonitor\n * @constructor\n * @public\n * @param {Object} config\n * @property {Object} indicatorTypes - network properties used to evaluate network quality used as constants\n * @property {Object} frequencyTypes - frequency properties used as constants {uplink|send} {downlink|receive}\n * @property {number} networkQualityScore - 0|1 1 is acceptable 0 is bad/unknown\n * @property {Object} networkQualityStatus - hash object based on indicatorTypes and frequencyTypes\n * @property {string} mediaType - audio|video\n */\n constructor(config: any) {\n super();\n this.config = config;\n this.indicatorTypes = Object.freeze({\n PACKETLOSS: 'packetLoss',\n LATENCY: 'latency',\n JITTER: 'jitter',\n });\n this.frequencyTypes = Object.freeze({\n UPLINK: 'uplink',\n DOWNLINK: 'downlink',\n });\n this.networkQualityScore = 1;\n this.networkQualityStatus = {\n [this.frequencyTypes.UPLINK]: {},\n };\n this.mediaType = null;\n }\n\n /**\n * emits NETWORK_QUALITY event on meeting with payload of media type and uplinkNetworkQuality score\n *\n * @memberof NetworkQualityMonitor\n * @returns {void}\n */\n emitNetworkQuality() {\n this.emit(\n {\n file: 'networkQualityMonitor',\n function: 'emitNetworkQuality',\n },\n EVENT_TRIGGERS.NETWORK_QUALITY,\n {\n mediaType: this.mediaType,\n networkQualityScore: this.networkQualityScore,\n }\n );\n }\n\n /**\n * invokes emitNetworkQuality method resets values back to default\n * @returns {void}\n * @memberof NetworkQualityMonitor\n */\n updateNetworkQualityStatus() {\n this.emitNetworkQuality();\n\n // reset values\n this.networkQualityScore = 1;\n this.mediaType = null;\n }\n\n /**\n * filter data to determine uplink network quality, invoked on same interval as stats analyzer remote-inbout-rtp\n * @param {Object} configObj\n * @param {string} configObj.mediaType {audio|video}\n * @param {RTCStats} configObj.remoteRtpResults RTC stats remote obj\n * @param {Object} configObj.statsAnalyzerCurrentStats statsResults\n * @returns {void}\n * @public\n * @memberof NetworkQualityMonitor\n */\n public determineUplinkNetworkQuality({\n mediaType,\n remoteRtpResults,\n statsAnalyzerCurrentStats,\n }: {\n mediaType: string;\n remoteRtpResults: any;\n statsAnalyzerCurrentStats: object;\n }) {\n const roundTripTimeInMilliseconds = remoteRtpResults.roundTripTime * 1000;\n const jitterInMilliseconds = remoteRtpResults.jitter * 1000;\n const {currentPacketLossRatio} = statsAnalyzerCurrentStats[mediaType].send;\n\n this.mediaType = mediaType;\n\n const {JITTER, PACKETLOSS, LATENCY} = this.indicatorTypes;\n const {UPLINK} = this.frequencyTypes;\n\n /**\n * determines if packetLoss ratio is over threshold set in config\n * sets networkQualityScore to 0 if over threshold\n * @returns {boolean}\n */\n const determinePacketLoss = () => {\n if (currentPacketLossRatio > this.config.videoPacketLossRatioThreshold) {\n this.networkQualityScore = 0;\n\n return false;\n }\n\n return true;\n };\n\n /**\n * determines if round trip time value is over threshold set in config\n * sets networkQualityScore to 0 if over threshold\n * @returns {boolean}\n */\n const determineLatency = () => {\n if (roundTripTimeInMilliseconds > this.config.rttThreshold) {\n this.networkQualityScore = 0;\n\n return false;\n }\n\n return true;\n };\n\n /**\n * determines if jitter value is over threshold in config\n * sets networkQualityScore to 0 if over threshold\n * @returns {boolean}\n */\n const deterMineJitter = () => {\n if (jitterInMilliseconds > this.config.jitterThreshold) {\n this.networkQualityScore = 0;\n\n return false;\n }\n\n return true;\n };\n\n /**\n * returns null if val is specifically undefined\n * @param {(number|undefined)} value\n * @returns {(number|null)}\n */\n const determineIfUndefined = (value: number | undefined) =>\n typeof value === 'undefined' ? null : value;\n\n if (!this.networkQualityStatus[UPLINK][mediaType]) {\n this.networkQualityStatus[UPLINK][mediaType] = {};\n }\n\n /**\n * Values for some browsers specifically Safari will be undefined we explicitly set to null\n * https://bugs.webkit.org/show_bug.cgi?id=206645\n * https://bugs.webkit.org/show_bug.cgi?id=212668\n */\n // PACKET LOSS\n this.networkQualityStatus[UPLINK][mediaType][PACKETLOSS] = {\n acceptable: determinePacketLoss(),\n value: determineIfUndefined(currentPacketLossRatio),\n };\n\n // LATENCY measured in Round trip time\n this.networkQualityStatus[UPLINK][mediaType][LATENCY] = {\n acceptable: determineLatency(),\n value: determineIfUndefined(remoteRtpResults.roundTripTime),\n };\n\n // JITTER\n this.networkQualityStatus[UPLINK][mediaType][JITTER] = {\n acceptable: deterMineJitter(),\n value: determineIfUndefined(remoteRtpResults.jitter),\n };\n\n this.updateNetworkQualityStatus();\n }\n\n /**\n * Get the current status of network quaility object - networkQualityStatus\n * @returns {Object}\n * @public\n */\n get networkQualityStats() {\n const {UPLINK} = this.frequencyTypes;\n\n return this.networkQualityStatus[UPLINK];\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
|
|
4
|
-
_Object$defineProperty(exports, "__esModule", {
|
|
5
|
-
value: true
|
|
6
|
-
});
|
|
7
|
-
exports.default = void 0;
|
|
8
|
-
var RTC_METRICS = exports.default = {
|
|
9
|
-
APP_ID: 'FFB51ED5-4319-4C55-8303-B1F2FCCDE231'
|
|
10
|
-
};
|
|
11
|
-
//# sourceMappingURL=constants.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["RTC_METRICS","exports","default","APP_ID"],"sources":["constants.ts"],"sourcesContent":["const RTC_METRICS = {APP_ID: 'FFB51ED5-4319-4C55-8303-B1F2FCCDE231'};\n\nexport {RTC_METRICS as default};\n"],"mappings":";;;;;;;AAAA,IAAMA,WAAW,GAAAC,OAAA,CAAAC,OAAA,GAAG;EAACC,MAAM,EAAE;AAAsC,CAAC"}
|