@webex/plugin-meetings 3.0.0-beta.16 → 3.0.0-beta.18
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 +116 -0
- package/dist/breakouts/breakout.js.map +1 -0
- package/dist/breakouts/collection.js +23 -0
- package/dist/breakouts/collection.js.map +1 -0
- package/dist/breakouts/index.js +226 -0
- package/dist/breakouts/index.js.map +1 -0
- package/dist/config.js +4 -1
- package/dist/config.js.map +1 -1
- package/dist/constants.js +43 -6
- package/dist/constants.js.map +1 -1
- package/dist/locus-info/controlsUtils.js +2 -1
- package/dist/locus-info/controlsUtils.js.map +1 -1
- package/dist/locus-info/index.js +48 -0
- package/dist/locus-info/index.js.map +1 -1
- package/dist/locus-info/parser.js +1 -0
- package/dist/locus-info/parser.js.map +1 -1
- package/dist/locus-info/selfUtils.js +19 -11
- package/dist/locus-info/selfUtils.js.map +1 -1
- package/dist/media/index.js +3 -3
- package/dist/media/index.js.map +1 -1
- package/dist/media/properties.js +4 -4
- package/dist/media/properties.js.map +1 -1
- package/dist/meeting/in-meeting-actions.js +5 -1
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/meeting/index.js +652 -459
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/request.js +25 -44
- package/dist/meeting/request.js.map +1 -1
- package/dist/meeting/request.type.js.map +1 -1
- package/dist/meeting/util.js +22 -57
- package/dist/meeting/util.js.map +1 -1
- package/dist/meeting-info/meeting-info-v2.js +2 -0
- package/dist/meeting-info/meeting-info-v2.js.map +1 -1
- package/dist/meetings/index.js +28 -18
- package/dist/meetings/index.js.map +1 -1
- package/dist/meetings/request.js +14 -12
- package/dist/meetings/request.js.map +1 -1
- package/dist/member/index.js +9 -0
- package/dist/member/index.js.map +1 -1
- package/dist/member/util.js +14 -1
- package/dist/member/util.js.map +1 -1
- package/dist/members/index.js +8 -6
- package/dist/members/index.js.map +1 -1
- package/dist/members/request.js +3 -1
- package/dist/members/request.js.map +1 -1
- package/dist/multistream/mediaRequestManager.js +46 -6
- package/dist/multistream/mediaRequestManager.js.map +1 -1
- package/dist/multistream/multistreamMedia.js +4 -0
- package/dist/multistream/multistreamMedia.js.map +1 -1
- package/dist/multistream/receiveSlot.js +3 -3
- package/dist/multistream/receiveSlot.js.map +1 -1
- package/dist/multistream/receiveSlotManager.js +8 -6
- package/dist/multistream/receiveSlotManager.js.map +1 -1
- package/dist/multistream/remoteMedia.js.map +1 -1
- package/dist/multistream/remoteMediaGroup.js.map +1 -1
- package/dist/multistream/remoteMediaManager.js +168 -63
- package/dist/multistream/remoteMediaManager.js.map +1 -1
- package/dist/reachability/index.js +63 -51
- package/dist/reachability/index.js.map +1 -1
- package/dist/reactions/constants.js +13 -0
- package/dist/reactions/constants.js.map +1 -0
- package/dist/reactions/reactions.type.js.map +1 -1
- package/dist/reconnection-manager/index.js +25 -12
- package/dist/reconnection-manager/index.js.map +1 -1
- package/dist/recording-controller/enums.js +17 -0
- package/dist/recording-controller/enums.js.map +1 -0
- package/dist/recording-controller/index.js +343 -0
- package/dist/recording-controller/index.js.map +1 -0
- package/dist/recording-controller/util.js +63 -0
- package/dist/recording-controller/util.js.map +1 -0
- package/dist/roap/request.js +88 -68
- package/dist/roap/request.js.map +1 -1
- package/dist/roap/turnDiscovery.js +72 -47
- package/dist/roap/turnDiscovery.js.map +1 -1
- package/dist/statsAnalyzer/index.js +3 -3
- package/dist/statsAnalyzer/index.js.map +1 -1
- package/dist/statsAnalyzer/mqaUtil.js +18 -6
- package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
- package/package.json +24 -19
- package/src/breakouts/README.md +190 -0
- package/src/breakouts/breakout.ts +110 -0
- package/src/breakouts/collection.ts +19 -0
- package/src/breakouts/index.ts +225 -0
- package/src/config.ts +4 -1
- package/src/constants.ts +39 -1
- package/src/locus-info/controlsUtils.ts +2 -0
- package/src/locus-info/index.ts +59 -1
- package/src/locus-info/parser.ts +1 -0
- package/src/locus-info/selfUtils.ts +8 -0
- package/src/media/index.ts +1 -2
- package/src/media/properties.ts +6 -9
- package/src/meeting/in-meeting-actions.ts +8 -0
- package/src/meeting/index.ts +360 -111
- package/src/meeting/request.ts +9 -31
- package/src/meeting/request.type.ts +2 -0
- package/src/meeting/util.ts +25 -60
- package/src/meeting-info/meeting-info-v2.ts +2 -0
- package/src/meetings/index.ts +10 -5
- package/src/meetings/request.ts +1 -1
- package/src/member/index.ts +9 -0
- package/src/member/util.ts +14 -1
- package/src/members/index.ts +1 -0
- package/src/members/request.ts +1 -0
- package/src/multistream/mediaRequestManager.ts +79 -15
- package/src/multistream/multistreamMedia.ts +4 -0
- package/src/multistream/receiveSlot.ts +17 -12
- package/src/multistream/receiveSlotManager.ts +22 -21
- package/src/multistream/remoteMedia.ts +1 -1
- package/src/multistream/remoteMediaGroup.ts +2 -2
- package/src/multistream/remoteMediaManager.ts +150 -37
- package/src/reachability/index.ts +16 -13
- package/src/reactions/constants.ts +4 -0
- package/src/reactions/reactions.type.ts +25 -0
- package/src/reconnection-manager/index.ts +18 -9
- package/src/recording-controller/enums.ts +8 -0
- package/src/recording-controller/index.ts +315 -0
- package/src/recording-controller/util.ts +58 -0
- package/src/roap/request.ts +78 -73
- package/src/roap/turnDiscovery.ts +8 -6
- package/src/statsAnalyzer/index.ts +4 -4
- package/src/statsAnalyzer/mqaUtil.ts +6 -0
- package/test/unit/spec/breakouts/breakout.ts +119 -0
- package/test/unit/spec/breakouts/collection.ts +15 -0
- package/test/unit/spec/breakouts/index.ts +293 -0
- package/test/unit/spec/locus-info/controlsUtils.js +20 -0
- package/test/unit/spec/locus-info/index.js +103 -0
- package/test/unit/spec/locus-info/selfConstant.js +25 -0
- package/test/unit/spec/locus-info/selfUtils.js +84 -0
- package/test/unit/spec/media/index.ts +1 -1
- package/test/unit/spec/media/properties.ts +9 -9
- package/test/unit/spec/meeting/effectsState.js +5 -1
- package/test/unit/spec/meeting/in-meeting-actions.ts +5 -1
- package/test/unit/spec/meeting/index.js +241 -50
- package/test/unit/spec/meeting/request.js +17 -0
- package/test/unit/spec/meeting/utils.js +28 -122
- package/test/unit/spec/meetings/index.js +1 -0
- package/test/unit/spec/member/util.js +26 -1
- package/test/unit/spec/multistream/mediaRequestManager.ts +312 -50
- package/test/unit/spec/multistream/receiveSlot.ts +6 -6
- package/test/unit/spec/multistream/receiveSlotManager.ts +13 -13
- package/test/unit/spec/multistream/remoteMedia.ts +2 -2
- package/test/unit/spec/multistream/remoteMediaGroup.ts +5 -5
- package/test/unit/spec/multistream/remoteMediaManager.ts +354 -65
- package/test/unit/spec/reachability/index.ts +58 -24
- package/test/unit/spec/reconnection-manager/index.js +42 -13
- package/test/unit/spec/recording-controller/index.js +231 -0
- package/test/unit/spec/recording-controller/util.js +102 -0
- package/test/unit/spec/roap/index.ts +2 -1
- package/test/unit/spec/roap/request.ts +114 -0
- package/test/unit/spec/roap/turnDiscovery.ts +45 -29
- package/test/unit/spec/stats-analyzer/index.js +2 -2
- package/test/utils/webex-test-users.js +1 -0
- package/tsconfig.json +6 -0
- package/dist/media/internal-media-core-wrapper.js +0 -18
- package/dist/media/internal-media-core-wrapper.js.map +0 -1
- package/src/media/internal-media-core-wrapper.ts +0 -9
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import sinon from 'sinon';
|
|
2
2
|
import {assert} from '@webex/test-helper-chai';
|
|
3
|
-
import {
|
|
3
|
+
import {MediaType} from '@webex/internal-media-core';
|
|
4
4
|
import {ReceiveSlotManager} from '@webex/plugin-meetings/src/multistream/receiveSlotManager';
|
|
5
5
|
import * as ReceiveSlotModule from '@webex/plugin-meetings/src/multistream/receiveSlot';
|
|
6
6
|
|
|
@@ -48,7 +48,7 @@ describe('ReceiveSlotManager', () => {
|
|
|
48
48
|
fakeMeeting.mediaProperties.webrtcMediaConnection = null;
|
|
49
49
|
|
|
50
50
|
assert.isRejected(
|
|
51
|
-
receiveSlotManager.allocateSlot(
|
|
51
|
+
receiveSlotManager.allocateSlot(MediaType.VideoMain),
|
|
52
52
|
'Webrtc media connection is missing'
|
|
53
53
|
);
|
|
54
54
|
});
|
|
@@ -56,16 +56,16 @@ describe('ReceiveSlotManager', () => {
|
|
|
56
56
|
it('allocates a slot when allocateSlot() is called and there are no free slots', async () => {
|
|
57
57
|
assert.deepEqual(receiveSlotManager.getStats(), {numAllocatedSlots: {}, numFreeSlots: {}});
|
|
58
58
|
|
|
59
|
-
const slot = await receiveSlotManager.allocateSlot(
|
|
59
|
+
const slot = await receiveSlotManager.allocateSlot(MediaType.VideoMain);
|
|
60
60
|
|
|
61
61
|
assert.calledOnce(fakeMeeting.mediaProperties.webrtcMediaConnection.createReceiveSlot);
|
|
62
62
|
assert.calledWith(
|
|
63
63
|
fakeMeeting.mediaProperties.webrtcMediaConnection.createReceiveSlot,
|
|
64
|
-
|
|
64
|
+
MediaType.VideoMain
|
|
65
65
|
);
|
|
66
66
|
|
|
67
67
|
assert.calledOnce(mockReceiveSlotCtor);
|
|
68
|
-
assert.calledWith(mockReceiveSlotCtor,
|
|
68
|
+
assert.calledWith(mockReceiveSlotCtor, MediaType.VideoMain, fakeWcmeSlot, sinon.match.func);
|
|
69
69
|
assert.strictEqual(slot, fakeReceiveSlots[0]);
|
|
70
70
|
|
|
71
71
|
assert.deepEqual(receiveSlotManager.getStats(), {
|
|
@@ -75,7 +75,7 @@ describe('ReceiveSlotManager', () => {
|
|
|
75
75
|
});
|
|
76
76
|
|
|
77
77
|
it('reuses previously freed slot when allocateSlot() is called and a free slot is available', async () => {
|
|
78
|
-
const slot1 = await receiveSlotManager.allocateSlot(
|
|
78
|
+
const slot1 = await receiveSlotManager.allocateSlot(MediaType.VideoMain);
|
|
79
79
|
|
|
80
80
|
assert.calledOnce(fakeMeeting.mediaProperties.webrtcMediaConnection.createReceiveSlot);
|
|
81
81
|
assert.calledOnce(mockReceiveSlotCtor);
|
|
@@ -93,7 +93,7 @@ describe('ReceiveSlotManager', () => {
|
|
|
93
93
|
mockReceiveSlotCtor.resetHistory();
|
|
94
94
|
|
|
95
95
|
// allocate another slot, this time the previous one should be returned instead of allocating any new ones
|
|
96
|
-
const slot2 = await receiveSlotManager.allocateSlot(
|
|
96
|
+
const slot2 = await receiveSlotManager.allocateSlot(MediaType.VideoMain);
|
|
97
97
|
|
|
98
98
|
assert.notCalled(fakeMeeting.mediaProperties.webrtcMediaConnection.createReceiveSlot);
|
|
99
99
|
assert.notCalled(mockReceiveSlotCtor);
|
|
@@ -108,7 +108,7 @@ describe('ReceiveSlotManager', () => {
|
|
|
108
108
|
});
|
|
109
109
|
|
|
110
110
|
it('does not reuse any slots after reset() is called', async () => {
|
|
111
|
-
const slot1 = await receiveSlotManager.allocateSlot(
|
|
111
|
+
const slot1 = await receiveSlotManager.allocateSlot(MediaType.VideoMain);
|
|
112
112
|
|
|
113
113
|
assert.calledOnce(fakeMeeting.mediaProperties.webrtcMediaConnection.createReceiveSlot);
|
|
114
114
|
assert.calledOnce(mockReceiveSlotCtor);
|
|
@@ -125,7 +125,7 @@ describe('ReceiveSlotManager', () => {
|
|
|
125
125
|
assert.deepEqual(receiveSlotManager.getStats(), {numAllocatedSlots: {}, numFreeSlots: {}});
|
|
126
126
|
|
|
127
127
|
// allocate another slot, because we called reset(), the old free slot should not be reused
|
|
128
|
-
const slot2 = await receiveSlotManager.allocateSlot(
|
|
128
|
+
const slot2 = await receiveSlotManager.allocateSlot(MediaType.VideoMain);
|
|
129
129
|
|
|
130
130
|
assert.calledOnce(fakeMeeting.mediaProperties.webrtcMediaConnection.createReceiveSlot);
|
|
131
131
|
assert.calledOnce(mockReceiveSlotCtor);
|
|
@@ -140,7 +140,7 @@ describe('ReceiveSlotManager', () => {
|
|
|
140
140
|
});
|
|
141
141
|
|
|
142
142
|
it('does not reuse slots if they have different media type', async () => {
|
|
143
|
-
const slot1 = await receiveSlotManager.allocateSlot(
|
|
143
|
+
const slot1 = await receiveSlotManager.allocateSlot(MediaType.VideoMain);
|
|
144
144
|
|
|
145
145
|
assert.calledOnce(fakeMeeting.mediaProperties.webrtcMediaConnection.createReceiveSlot);
|
|
146
146
|
assert.calledOnce(mockReceiveSlotCtor);
|
|
@@ -151,16 +151,16 @@ describe('ReceiveSlotManager', () => {
|
|
|
151
151
|
mockReceiveSlotCtor.resetHistory();
|
|
152
152
|
|
|
153
153
|
// allocate another slot, this time for main audio, so it should be a completely new slot
|
|
154
|
-
const slot2 = await receiveSlotManager.allocateSlot(
|
|
154
|
+
const slot2 = await receiveSlotManager.allocateSlot(MediaType.AudioMain);
|
|
155
155
|
|
|
156
156
|
assert.calledOnce(fakeMeeting.mediaProperties.webrtcMediaConnection.createReceiveSlot);
|
|
157
157
|
assert.calledWith(
|
|
158
158
|
fakeMeeting.mediaProperties.webrtcMediaConnection.createReceiveSlot,
|
|
159
|
-
|
|
159
|
+
MediaType.AudioMain
|
|
160
160
|
);
|
|
161
161
|
|
|
162
162
|
assert.calledOnce(mockReceiveSlotCtor);
|
|
163
|
-
assert.calledWith(mockReceiveSlotCtor,
|
|
163
|
+
assert.calledWith(mockReceiveSlotCtor, MediaType.AudioMain, fakeWcmeSlot, sinon.match.func);
|
|
164
164
|
|
|
165
165
|
// verify that in fact we got a brand new slot
|
|
166
166
|
assert.strictEqual(slot2, fakeReceiveSlots[1]);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/* eslint-disable require-jsdoc */
|
|
2
2
|
import EventEmitter from 'events';
|
|
3
3
|
|
|
4
|
-
import {
|
|
4
|
+
import {MediaType} from '@webex/internal-media-core';
|
|
5
5
|
import {RemoteMedia, RemoteMediaEvents} from '@webex/plugin-meetings/src/multistream/remoteMedia';
|
|
6
6
|
import {ReceiveSlotEvents} from '@webex/plugin-meetings/src/multistream/receiveSlot';
|
|
7
7
|
import sinon from 'sinon';
|
|
@@ -16,7 +16,7 @@ describe('RemoteMedia', () => {
|
|
|
16
16
|
beforeEach(() => {
|
|
17
17
|
fakeStream = {id: 'fake stream'};
|
|
18
18
|
fakeReceiveSlot = new EventEmitter();
|
|
19
|
-
fakeReceiveSlot.mediaType =
|
|
19
|
+
fakeReceiveSlot.mediaType = MediaType.AudioMain;
|
|
20
20
|
fakeReceiveSlot.memberId = '12345678';
|
|
21
21
|
fakeReceiveSlot.csi = 999;
|
|
22
22
|
fakeReceiveSlot.sourceState = 'avatar';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import EventEmitter from 'events';
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import {MediaType} from '@webex/internal-media-core';
|
|
4
4
|
import {RemoteMediaGroup} from '@webex/plugin-meetings/src/multistream/remoteMediaGroup';
|
|
5
5
|
import {RemoteMedia} from '@webex/plugin-meetings/src/multistream/remoteMedia';
|
|
6
6
|
import {ReceiveSlot} from '@webex/plugin-meetings/src/multistream/receiveSlot';
|
|
@@ -8,11 +8,11 @@ import sinon from 'sinon';
|
|
|
8
8
|
import {assert} from '@webex/test-helper-chai';
|
|
9
9
|
|
|
10
10
|
class FakeSlot extends EventEmitter {
|
|
11
|
-
public mediaType:
|
|
11
|
+
public mediaType: MediaType;
|
|
12
12
|
|
|
13
13
|
public id: string;
|
|
14
14
|
|
|
15
|
-
constructor(mediaType:
|
|
15
|
+
constructor(mediaType: MediaType, id: string) {
|
|
16
16
|
super();
|
|
17
17
|
this.mediaType = mediaType;
|
|
18
18
|
this.id = id;
|
|
@@ -49,7 +49,7 @@ describe('RemoteMediaGroup', () => {
|
|
|
49
49
|
|
|
50
50
|
fakeReceiveSlots = Array(NUM_SLOTS)
|
|
51
51
|
.fill(null)
|
|
52
|
-
.map((_, index) => new FakeSlot(
|
|
52
|
+
.map((_, index) => new FakeSlot(MediaType.VideoMain, `fake receive slot ${index}`));
|
|
53
53
|
});
|
|
54
54
|
|
|
55
55
|
const getLastActiveSpeakerRequestId = () =>
|
|
@@ -368,7 +368,7 @@ describe('RemoteMediaGroup', () => {
|
|
|
368
368
|
|
|
369
369
|
const unpinnedRemoteMediaFromGroup = group.getRemoteMedia('all')[0];
|
|
370
370
|
const otherRemoteMedia = new RemoteMedia(
|
|
371
|
-
new FakeSlot(
|
|
371
|
+
new FakeSlot(MediaType.VideoMain, 'other slot') as unknown as ReceiveSlot,
|
|
372
372
|
fakeMediaRequestManager
|
|
373
373
|
);
|
|
374
374
|
|