@webex/plugin-meetings 3.8.1 → 3.9.0-webinar5k.1
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 +26 -13
- package/dist/breakouts/breakout.js +1 -1
- package/dist/breakouts/index.js +1 -1
- package/dist/constants.js +16 -3
- package/dist/constants.js.map +1 -1
- package/dist/controls-options-manager/enums.js +1 -0
- package/dist/controls-options-manager/enums.js.map +1 -1
- package/dist/controls-options-manager/types.js.map +1 -1
- package/dist/controls-options-manager/util.js +26 -0
- package/dist/controls-options-manager/util.js.map +1 -1
- package/dist/hashTree/constants.js +23 -0
- package/dist/hashTree/constants.js.map +1 -0
- package/dist/hashTree/hashTree.js +516 -0
- package/dist/hashTree/hashTree.js.map +1 -0
- package/dist/hashTree/hashTreeParser.js +521 -0
- package/dist/hashTree/hashTreeParser.js.map +1 -0
- package/dist/interpretation/index.js +1 -1
- package/dist/interpretation/siLanguage.js +1 -1
- package/dist/locus-info/controlsUtils.js +11 -3
- package/dist/locus-info/controlsUtils.js.map +1 -1
- package/dist/locus-info/index.js +331 -59
- package/dist/locus-info/index.js.map +1 -1
- package/dist/media/index.js +2 -2
- package/dist/media/index.js.map +1 -1
- package/dist/meeting/brbState.js +17 -14
- package/dist/meeting/brbState.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 +264 -125
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/muteState.js +2 -5
- package/dist/meeting/muteState.js.map +1 -1
- package/dist/meeting/request.js +19 -0
- package/dist/meeting/request.js.map +1 -1
- package/dist/meeting/request.type.js.map +1 -1
- package/dist/meeting/util.js +8 -11
- package/dist/meeting/util.js.map +1 -1
- package/dist/meetings/index.js +6 -2
- package/dist/meetings/index.js.map +1 -1
- package/dist/member/types.js.map +1 -1
- package/dist/members/collection.js +13 -0
- package/dist/members/collection.js.map +1 -1
- package/dist/members/index.js +44 -23
- package/dist/members/index.js.map +1 -1
- package/dist/members/request.js +3 -3
- package/dist/members/request.js.map +1 -1
- package/dist/members/util.js +18 -6
- package/dist/members/util.js.map +1 -1
- package/dist/metrics/constants.js +1 -0
- package/dist/metrics/constants.js.map +1 -1
- package/dist/multistream/sendSlotManager.js +32 -2
- package/dist/multistream/sendSlotManager.js.map +1 -1
- package/dist/reachability/index.js +5 -10
- package/dist/reachability/index.js.map +1 -1
- package/dist/types/constants.d.ts +12 -0
- package/dist/types/controls-options-manager/enums.d.ts +2 -1
- package/dist/types/controls-options-manager/types.d.ts +4 -1
- package/dist/types/hashTree/constants.d.ts +8 -0
- package/dist/types/hashTree/hashTree.d.ts +128 -0
- package/dist/types/hashTree/hashTreeParser.d.ts +152 -0
- package/dist/types/locus-info/index.d.ts +93 -3
- package/dist/types/meeting/brbState.d.ts +0 -1
- package/dist/types/meeting/in-meeting-actions.d.ts +4 -0
- package/dist/types/meeting/index.d.ts +36 -3
- package/dist/types/meeting/request.d.ts +9 -1
- package/dist/types/meeting/request.type.d.ts +74 -0
- package/dist/types/meeting/util.d.ts +3 -3
- package/dist/types/member/types.d.ts +1 -0
- package/dist/types/members/collection.d.ts +6 -0
- package/dist/types/members/index.d.ts +15 -3
- package/dist/types/members/request.d.ts +1 -1
- package/dist/types/members/util.d.ts +5 -2
- package/dist/types/metrics/constants.d.ts +1 -0
- package/dist/types/multistream/sendSlotManager.d.ts +16 -0
- package/dist/types/reachability/index.d.ts +2 -2
- package/dist/webinar/index.js +1 -1
- package/package.json +26 -25
- package/src/constants.ts +16 -0
- package/src/controls-options-manager/enums.ts +1 -0
- package/src/controls-options-manager/types.ts +6 -1
- package/src/controls-options-manager/util.ts +31 -0
- package/src/hashTree/constants.ts +12 -0
- package/src/hashTree/hashTree.ts +460 -0
- package/src/hashTree/hashTreeParser.ts +556 -0
- package/src/locus-info/controlsUtils.ts +15 -0
- package/src/locus-info/index.ts +434 -58
- package/src/media/index.ts +2 -2
- package/src/meeting/brbState.ts +13 -9
- package/src/meeting/in-meeting-actions.ts +8 -0
- package/src/meeting/index.ts +193 -39
- package/src/meeting/muteState.ts +2 -6
- package/src/meeting/request.ts +16 -0
- package/src/meeting/request.type.ts +64 -0
- package/src/meeting/util.ts +17 -20
- package/src/meetings/index.ts +17 -3
- package/src/member/types.ts +1 -0
- package/src/members/collection.ts +11 -0
- package/src/members/index.ts +33 -7
- package/src/members/request.ts +2 -2
- package/src/members/util.ts +14 -3
- package/src/metrics/constants.ts +1 -0
- package/src/multistream/sendSlotManager.ts +34 -2
- package/src/reachability/index.ts +5 -13
- package/test/unit/spec/controls-options-manager/util.js +58 -0
- package/test/unit/spec/hashTree/hashTree.ts +394 -0
- package/test/unit/spec/hashTree/hashTreeParser.ts +156 -0
- package/test/unit/spec/locus-info/controlsUtils.js +52 -0
- package/test/unit/spec/locus-info/index.js +547 -54
- package/test/unit/spec/media/index.ts +107 -0
- package/test/unit/spec/meeting/brbState.ts +23 -4
- package/test/unit/spec/meeting/in-meeting-actions.ts +4 -0
- package/test/unit/spec/meeting/index.js +647 -46
- package/test/unit/spec/meeting/request.js +71 -0
- package/test/unit/spec/members/index.js +33 -10
- package/test/unit/spec/members/request.js +2 -2
- package/test/unit/spec/members/utils.js +27 -7
- package/test/unit/spec/multistream/sendSlotManager.ts +59 -0
- package/test/unit/spec/reachability/index.ts +2 -6
- package/dist/annotation/annotation.types.d.ts +0 -42
- package/dist/annotation/constants.d.ts +0 -31
- package/dist/annotation/index.d.ts +0 -117
- package/dist/breakouts/breakout.d.ts +0 -8
- package/dist/breakouts/collection.d.ts +0 -5
- package/dist/breakouts/edit-lock-error.d.ts +0 -15
- package/dist/breakouts/events.d.ts +0 -8
- package/dist/breakouts/index.d.ts +0 -5
- package/dist/breakouts/request.d.ts +0 -22
- package/dist/breakouts/utils.d.ts +0 -15
- package/dist/common/browser-detection.d.ts +0 -9
- package/dist/common/collection.d.ts +0 -48
- package/dist/common/config.d.ts +0 -2
- package/dist/common/errors/captcha-error.d.ts +0 -15
- package/dist/common/errors/intent-to-join.d.ts +0 -16
- package/dist/common/errors/join-meeting.d.ts +0 -17
- package/dist/common/errors/media.d.ts +0 -15
- package/dist/common/errors/no-meeting-info.d.ts +0 -14
- package/dist/common/errors/parameter.d.ts +0 -15
- package/dist/common/errors/password-error.d.ts +0 -15
- package/dist/common/errors/permission.d.ts +0 -14
- package/dist/common/errors/reclaim-host-role-error.d.ts +0 -60
- package/dist/common/errors/reclaim-host-role-error.js +0 -158
- package/dist/common/errors/reclaim-host-role-error.js.map +0 -1
- package/dist/common/errors/reclaim-host-role-errors.d.ts +0 -60
- package/dist/common/errors/reconnection-in-progress.d.ts +0 -9
- package/dist/common/errors/reconnection-in-progress.js +0 -35
- package/dist/common/errors/reconnection-in-progress.js.map +0 -1
- package/dist/common/errors/reconnection.d.ts +0 -15
- package/dist/common/errors/stats.d.ts +0 -15
- package/dist/common/errors/webex-errors.d.ts +0 -81
- package/dist/common/errors/webex-meetings-error.d.ts +0 -20
- package/dist/common/events/events-scope.d.ts +0 -17
- package/dist/common/events/events.d.ts +0 -12
- package/dist/common/events/trigger-proxy.d.ts +0 -2
- package/dist/common/events/util.d.ts +0 -2
- package/dist/common/logs/logger-config.d.ts +0 -2
- package/dist/common/logs/logger-proxy.d.ts +0 -2
- package/dist/common/logs/request.d.ts +0 -34
- package/dist/common/queue.d.ts +0 -32
- package/dist/config.d.ts +0 -73
- package/dist/constants.d.ts +0 -952
- package/dist/controls-options-manager/constants.d.ts +0 -4
- package/dist/controls-options-manager/enums.d.ts +0 -5
- package/dist/controls-options-manager/index.d.ts +0 -120
- package/dist/controls-options-manager/types.d.ts +0 -43
- package/dist/controls-options-manager/util.d.ts +0 -7
- package/dist/index.d.ts +0 -4
- package/dist/interceptors/index.d.ts +0 -2
- package/dist/interceptors/locusRetry.d.ts +0 -27
- package/dist/interpretation/collection.d.ts +0 -5
- package/dist/interpretation/index.d.ts +0 -5
- package/dist/interpretation/siLanguage.d.ts +0 -5
- package/dist/locus-info/controlsUtils.d.ts +0 -2
- package/dist/locus-info/embeddedAppsUtils.d.ts +0 -2
- package/dist/locus-info/fullState.d.ts +0 -2
- package/dist/locus-info/hostUtils.d.ts +0 -2
- package/dist/locus-info/index.d.ts +0 -269
- package/dist/locus-info/infoUtils.d.ts +0 -2
- package/dist/locus-info/mediaSharesUtils.d.ts +0 -2
- package/dist/locus-info/parser.d.ts +0 -212
- package/dist/locus-info/selfUtils.d.ts +0 -2
- package/dist/media/index.d.ts +0 -32
- package/dist/media/properties.d.ts +0 -108
- package/dist/media/util.d.ts +0 -2
- package/dist/mediaQualityMetrics/config.d.ts +0 -233
- package/dist/mediaQualityMetrics/config.js +0 -513
- package/dist/mediaQualityMetrics/config.js.map +0 -1
- package/dist/meeting/effectsState.d.ts +0 -42
- package/dist/meeting/effectsState.js +0 -260
- package/dist/meeting/effectsState.js.map +0 -1
- package/dist/meeting/in-meeting-actions.d.ts +0 -79
- package/dist/meeting/index.d.ts +0 -1622
- package/dist/meeting/locusMediaRequest.d.ts +0 -74
- package/dist/meeting/muteState.d.ts +0 -116
- package/dist/meeting/request.d.ts +0 -257
- package/dist/meeting/request.type.d.ts +0 -11
- package/dist/meeting/state.d.ts +0 -9
- package/dist/meeting/util.d.ts +0 -2
- package/dist/meeting/voicea-meeting.d.ts +0 -16
- package/dist/meeting-info/collection.d.ts +0 -20
- package/dist/meeting-info/index.d.ts +0 -57
- package/dist/meeting-info/meeting-info-v2.d.ts +0 -93
- package/dist/meeting-info/request.d.ts +0 -22
- package/dist/meeting-info/util.d.ts +0 -2
- package/dist/meeting-info/utilv2.d.ts +0 -2
- package/dist/meetings/collection.d.ts +0 -23
- package/dist/meetings/index.d.ts +0 -296
- package/dist/meetings/meetings.types.d.ts +0 -4
- package/dist/meetings/request.d.ts +0 -27
- package/dist/meetings/util.d.ts +0 -18
- package/dist/member/index.d.ts +0 -148
- package/dist/member/member.types.d.ts +0 -11
- package/dist/member/member.types.js +0 -18
- package/dist/member/member.types.js.map +0 -1
- package/dist/member/types.d.ts +0 -32
- package/dist/member/util.d.ts +0 -2
- package/dist/members/collection.d.ts +0 -24
- package/dist/members/index.d.ts +0 -308
- package/dist/members/request.d.ts +0 -58
- package/dist/members/types.d.ts +0 -25
- package/dist/members/util.d.ts +0 -2
- package/dist/metrics/config.d.ts +0 -169
- package/dist/metrics/config.js +0 -289
- package/dist/metrics/config.js.map +0 -1
- package/dist/metrics/constants.d.ts +0 -59
- package/dist/metrics/index.d.ts +0 -152
- package/dist/multistream/mediaRequestManager.d.ts +0 -119
- package/dist/multistream/receiveSlot.d.ts +0 -68
- package/dist/multistream/receiveSlotManager.d.ts +0 -56
- package/dist/multistream/remoteMedia.d.ts +0 -72
- package/dist/multistream/remoteMediaGroup.d.ts +0 -49
- package/dist/multistream/remoteMediaManager.d.ts +0 -300
- package/dist/multistream/sendSlotManager.d.ts +0 -69
- package/dist/networkQualityMonitor/index.d.ts +0 -70
- package/dist/networkQualityMonitor/index.js +0 -226
- package/dist/networkQualityMonitor/index.js.map +0 -1
- package/dist/peer-connection-manager/index.d.ts +0 -6
- package/dist/peer-connection-manager/index.js +0 -671
- package/dist/peer-connection-manager/index.js.map +0 -1
- package/dist/peer-connection-manager/util.d.ts +0 -6
- package/dist/peer-connection-manager/util.js +0 -110
- package/dist/peer-connection-manager/util.js.map +0 -1
- package/dist/personal-meeting-room/index.d.ts +0 -47
- package/dist/personal-meeting-room/request.d.ts +0 -14
- package/dist/personal-meeting-room/util.d.ts +0 -2
- package/dist/reachability/clusterReachability.d.ts +0 -109
- package/dist/reachability/index.d.ts +0 -139
- package/dist/reachability/request.d.ts +0 -35
- package/dist/reachability/util.d.ts +0 -8
- package/dist/reactions/constants.d.ts +0 -3
- package/dist/reactions/reactions.d.ts +0 -4
- package/dist/reactions/reactions.type.d.ts +0 -32
- package/dist/reconnection-manager/index.d.ts +0 -112
- package/dist/recording-controller/enums.d.ts +0 -7
- package/dist/recording-controller/index.d.ts +0 -193
- package/dist/recording-controller/util.d.ts +0 -13
- package/dist/roap/collection.d.ts +0 -10
- package/dist/roap/collection.js +0 -63
- package/dist/roap/collection.js.map +0 -1
- package/dist/roap/handler.d.ts +0 -47
- package/dist/roap/handler.js +0 -279
- package/dist/roap/handler.js.map +0 -1
- package/dist/roap/index.d.ts +0 -116
- package/dist/roap/request.d.ts +0 -35
- package/dist/roap/state.d.ts +0 -9
- package/dist/roap/state.js +0 -127
- package/dist/roap/state.js.map +0 -1
- package/dist/roap/turnDiscovery.d.ts +0 -81
- package/dist/roap/util.d.ts +0 -2
- package/dist/roap/util.js +0 -76
- package/dist/roap/util.js.map +0 -1
- package/dist/rtcMetrics/constants.d.ts +0 -4
- package/dist/rtcMetrics/constants.js +0 -11
- package/dist/rtcMetrics/constants.js.map +0 -1
- package/dist/rtcMetrics/index.d.ts +0 -61
- package/dist/rtcMetrics/index.js +0 -197
- package/dist/rtcMetrics/index.js.map +0 -1
- package/dist/statsAnalyzer/global.d.ts +0 -118
- package/dist/statsAnalyzer/global.js +0 -127
- package/dist/statsAnalyzer/global.js.map +0 -1
- package/dist/statsAnalyzer/index.d.ts +0 -193
- package/dist/statsAnalyzer/index.js +0 -1019
- package/dist/statsAnalyzer/index.js.map +0 -1
- package/dist/statsAnalyzer/mqaUtil.d.ts +0 -22
- package/dist/statsAnalyzer/mqaUtil.js +0 -181
- package/dist/statsAnalyzer/mqaUtil.js.map +0 -1
- package/dist/transcription/index.d.ts +0 -64
- package/dist/types/common/errors/reconnection-in-progress.d.ts +0 -9
- package/dist/types/mediaQualityMetrics/config.d.ts +0 -241
- 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/dist/types/statsAnalyzer/global.d.ts +0 -36
- package/dist/types/statsAnalyzer/index.d.ts +0 -217
- package/dist/types/statsAnalyzer/mqaUtil.d.ts +0 -48
- package/dist/webinar/collection.d.ts +0 -16
- package/dist/webinar/index.d.ts +0 -5
@@ -826,4 +826,75 @@ describe('plugin-meetings', () => {
|
|
826
826
|
});
|
827
827
|
});
|
828
828
|
});
|
829
|
+
|
830
|
+
describe('#synchronizeStage', () => {
|
831
|
+
[
|
832
|
+
['an unset stage', {overrideDefault: false}],
|
833
|
+
[
|
834
|
+
'a minimally set stage',
|
835
|
+
{
|
836
|
+
overrideDefault: true,
|
837
|
+
lockAttendeeViewOnStageOnly: false,
|
838
|
+
stageParameters: {
|
839
|
+
activeSpeakerProportion: 0.5,
|
840
|
+
showActiveSpeaker: {show: false, order: 0},
|
841
|
+
stageManagerType: 0,
|
842
|
+
},
|
843
|
+
},
|
844
|
+
],
|
845
|
+
[
|
846
|
+
'a fully set stage',
|
847
|
+
{
|
848
|
+
overrideDefault: true,
|
849
|
+
lockAttendeeViewOnStageOnly: true,
|
850
|
+
stageParameters: {
|
851
|
+
activeSpeakerProportion: 0.6,
|
852
|
+
importantParticipants: [
|
853
|
+
{mainCsi: 11111111, participantId: uuidv4(), order: 1},
|
854
|
+
{mainCsi: 22222222, participantId: uuidv4(), order: 2},
|
855
|
+
{mainCsi: 33333333, participantId: uuidv4(), order: 3},
|
856
|
+
{mainCsi: 44444444, participantId: uuidv4(), order: 4},
|
857
|
+
{mainCsi: 55555555, participantId: uuidv4(), order: 5},
|
858
|
+
{mainCsi: 66666666, participantId: uuidv4(), order: 6},
|
859
|
+
{mainCsi: 77777777, participantId: uuidv4(), order: 7},
|
860
|
+
{mainCsi: 88888888, participantId: uuidv4(), order: 8},
|
861
|
+
],
|
862
|
+
showActiveSpeaker: {show: true, order: 0},
|
863
|
+
stageManagerType: 7,
|
864
|
+
},
|
865
|
+
customLayouts: {
|
866
|
+
background: {url: `https://test.wbx2.com/background/${uuidv4()}.jpg`},
|
867
|
+
logo: {url: `https://test.wbx2.com/logo/${uuidv4()}.png`, position: 'UpperMiddle'},
|
868
|
+
},
|
869
|
+
nameLabelStyle: {
|
870
|
+
accentColor: '#00A3FF',
|
871
|
+
background: {color: 'rgba(0, 163, 255, 1)'},
|
872
|
+
border: {color: 'rgba(0, 163, 255, 1)'},
|
873
|
+
content: {
|
874
|
+
displayName: {color: 'rgba(255, 255, 255, 0.95)'},
|
875
|
+
subtitle: {color: 'rgba(255, 255, 255, 0.7)'},
|
876
|
+
},
|
877
|
+
decoration: {color: 'rgba(255, 255, 255, 0.95)'},
|
878
|
+
fadeOut: {delay: 15},
|
879
|
+
type: 'PrimaryInverted',
|
880
|
+
},
|
881
|
+
},
|
882
|
+
],
|
883
|
+
].forEach(([description, videoLayout]) => {
|
884
|
+
it(`sends request to synchronize the stage with ${description} video layout`, async () => {
|
885
|
+
const locusUrl = `https://locus-test.wbx2.com/locus/api/v1/loci/${uuidv4()}`;
|
886
|
+
|
887
|
+
const synchronizePromise = meetingsRequest.synchronizeStage(locusUrl, videoLayout);
|
888
|
+
|
889
|
+
assert.exists(synchronizePromise.then);
|
890
|
+
await synchronizePromise;
|
891
|
+
|
892
|
+
checkRequest({
|
893
|
+
method: 'PATCH',
|
894
|
+
uri: `${locusUrl}/controls`,
|
895
|
+
body: {videoLayout},
|
896
|
+
});
|
897
|
+
});
|
898
|
+
});
|
899
|
+
});
|
829
900
|
});
|
@@ -176,6 +176,20 @@ describe('plugin-meetings', () => {
|
|
176
176
|
assert.calledOnce(MembersUtil.isInvalidInvitee);
|
177
177
|
assert.isFalse(MembersUtil.isInvalidInvitee({email: 'sip:test@cisco.com'}), 'SIP email should be valid');
|
178
178
|
});
|
179
|
+
|
180
|
+
it('should accept valid phone with isInternalNumber', async () => {
|
181
|
+
sandbox.spy(MembersUtil, 'isInvalidInvitee');
|
182
|
+
|
183
|
+
const members = createMembers({url: true});
|
184
|
+
|
185
|
+
await members.addMember({phoneNumber: '+8618578675309', isInternalNumber: false});
|
186
|
+
|
187
|
+
assert.calledOnce(MembersUtil.isInvalidInvitee);
|
188
|
+
assert.isFalse(MembersUtil.isInvalidInvitee({ phoneNumber: '+8618578675309', isInternalNumber: false }));
|
189
|
+
assert.isTrue(MembersUtil.isInvalidInvitee({ phoneNumber: '18578675309', isInternalNumber: false }));
|
190
|
+
assert.isFalse(MembersUtil.isInvalidInvitee({phoneNumber: '18578675309', isInternalNumber: true}));
|
191
|
+
assert.isTrue(MembersUtil.isInvalidInvitee({phoneNumber: '+8618578675309', isInternalNumber: true}));
|
192
|
+
});
|
179
193
|
});
|
180
194
|
|
181
195
|
describe('#admitMembers', () => {
|
@@ -293,7 +307,7 @@ describe('plugin-meetings', () => {
|
|
293
307
|
},
|
294
308
|
EVENT_TRIGGERS.MEMBERS_UPDATE,
|
295
309
|
{
|
296
|
-
delta: {added: [], updated: []},
|
310
|
+
delta: {added: [], updated: [], removedIds: []},
|
297
311
|
full: {},
|
298
312
|
isReplace: true,
|
299
313
|
}
|
@@ -465,29 +479,38 @@ describe('plugin-meetings', () => {
|
|
465
479
|
});
|
466
480
|
});
|
467
481
|
|
468
|
-
describe('#
|
482
|
+
describe('#cancelInviteByMemberId', () => {
|
469
483
|
const memberId = uuid.v4();
|
470
|
-
it('should invoke
|
471
|
-
sandbox.spy(MembersUtil, '
|
484
|
+
it('should invoke cancelInviteByMemberIdOptions from MembersUtil when cancelInviteByMemberId is called with valid params', async () => {
|
485
|
+
sandbox.spy(MembersUtil, 'cancelInviteByMemberIdOptions');
|
486
|
+
|
487
|
+
const members = createMembers({url: url1});
|
488
|
+
|
489
|
+
await members.cancelInviteByMemberId({memberId});
|
490
|
+
assert.calledOnce(MembersUtil.cancelInviteByMemberIdOptions);
|
491
|
+
});
|
492
|
+
|
493
|
+
it('should invoke cancelInviteByMemberIdOptions from MembersUtil when cancelInviteByMemberId is called with isInternalNumber', async () => {
|
494
|
+
sandbox.spy(MembersUtil, 'cancelInviteByMemberIdOptions');
|
472
495
|
|
473
496
|
const members = createMembers({url: url1});
|
474
497
|
|
475
|
-
await members.
|
476
|
-
assert.calledOnce(MembersUtil.
|
498
|
+
await members.cancelInviteByMemberId({memberId, isInternalNumber: true});
|
499
|
+
assert.calledOnce(MembersUtil.cancelInviteByMemberIdOptions);
|
477
500
|
});
|
478
501
|
|
479
502
|
it('should throw a rejection if there is no locus url', async () => {
|
480
503
|
const members = createMembers({url: false});
|
481
504
|
|
482
|
-
assert.isRejected(members.
|
505
|
+
assert.isRejected(members.cancelInviteByMemberId({memberId}));
|
483
506
|
});
|
484
507
|
|
485
508
|
it('should throw a rejection if memberId is not provided', async () => {
|
486
509
|
const members = createMembers({url: url1});
|
487
510
|
|
488
|
-
assert.isRejected(members.
|
489
|
-
assert.isRejected(members.
|
490
|
-
assert.isRejected(members.
|
511
|
+
assert.isRejected(members.cancelInviteByMemberId({}));
|
512
|
+
assert.isRejected(members.cancelInviteByMemberId({memberId: null}));
|
513
|
+
assert.isRejected(members.cancelInviteByMemberId({memberId: undefined}));
|
491
514
|
});
|
492
515
|
});
|
493
516
|
|
@@ -221,7 +221,7 @@ describe('plugin-meetings', () => {
|
|
221
221
|
});
|
222
222
|
});
|
223
223
|
|
224
|
-
describe('#
|
224
|
+
describe('#cancelInviteByMemberId', () => {
|
225
225
|
const memberId = uuid.v4();
|
226
226
|
it('sends a PUT to the locus endpoint', async () => {
|
227
227
|
const options = {
|
@@ -231,7 +231,7 @@ describe('plugin-meetings', () => {
|
|
231
231
|
locusUrl: url1,
|
232
232
|
};
|
233
233
|
|
234
|
-
await membersRequest.
|
234
|
+
await membersRequest.cancelInviteByMemberId(options);
|
235
235
|
|
236
236
|
checkRequest({
|
237
237
|
method: 'PUT',
|
@@ -302,6 +302,26 @@ describe('plugin-meetings', () => {
|
|
302
302
|
});
|
303
303
|
});
|
304
304
|
|
305
|
+
it('returns the correct body with phone number and isInternalNumber', () => {
|
306
|
+
const options = {
|
307
|
+
invitee: {
|
308
|
+
phoneNumber: '1234567890',
|
309
|
+
isInternalNumber: false
|
310
|
+
},
|
311
|
+
alertIfActive: false,
|
312
|
+
};
|
313
|
+
|
314
|
+
assert.deepEqual(MembersUtil.getAddMemberBody(options), {
|
315
|
+
invitees: [
|
316
|
+
{
|
317
|
+
address: '1234567890',
|
318
|
+
isInternalNumber: false
|
319
|
+
},
|
320
|
+
],
|
321
|
+
alertIfActive: false,
|
322
|
+
});
|
323
|
+
});
|
324
|
+
|
305
325
|
it('returns the correct body with fallback to email', () => {
|
306
326
|
const options = {
|
307
327
|
invitee: {
|
@@ -391,14 +411,14 @@ describe('plugin-meetings', () => {
|
|
391
411
|
});
|
392
412
|
});
|
393
413
|
|
394
|
-
describe('#
|
414
|
+
describe('#cancelInviteByMemberIdOptions', () => {
|
395
415
|
it('returns the correct options', () => {
|
396
416
|
const locusUrl = 'TestLocusUrl';
|
397
417
|
const memberId = 'test';
|
398
|
-
const invitee = {memberId};
|
418
|
+
const invitee = {memberId, isInternalNumber: false};
|
399
419
|
|
400
420
|
assert.deepEqual(
|
401
|
-
MembersUtil.
|
421
|
+
MembersUtil.cancelInviteByMemberIdOptions(
|
402
422
|
invitee,
|
403
423
|
locusUrl
|
404
424
|
),
|
@@ -410,22 +430,22 @@ describe('plugin-meetings', () => {
|
|
410
430
|
});
|
411
431
|
});
|
412
432
|
|
413
|
-
describe('#
|
433
|
+
describe('#generateCancelInviteByMemberIdRequestParams', () => {
|
414
434
|
it('returns the correct params', () => {
|
415
435
|
const locusUrl = 'TestLocusUrl';
|
416
436
|
const memberId = 'test';
|
417
437
|
const options = {
|
418
438
|
locusUrl,
|
419
|
-
invitee: {memberId}
|
439
|
+
invitee: {memberId, isInternalNumber: false}
|
420
440
|
};
|
421
441
|
const body = {
|
422
442
|
actionType: 'REMOVE',
|
423
|
-
invitees: [{address: options.invitee.memberId}],
|
443
|
+
invitees: [{address: options.invitee.memberId, isInternalNumber: false}],
|
424
444
|
};
|
425
445
|
|
426
446
|
const uri = options.locusUrl;
|
427
447
|
|
428
|
-
assert.deepEqual(MembersUtil.
|
448
|
+
assert.deepEqual(MembersUtil.generateCancelInviteByMemberIdRequestParams(options), {
|
429
449
|
method: HTTP_VERBS.PUT,
|
430
450
|
uri,
|
431
451
|
body,
|
@@ -272,4 +272,63 @@ describe('SendSlotsManager', () => {
|
|
272
272
|
expect(() => sendSlotsManager.getSlot(MediaType.VideoSlides)).to.throw();
|
273
273
|
});
|
274
274
|
});
|
275
|
+
|
276
|
+
describe('sourceStateOverride', () => {
|
277
|
+
let mediaConnection: MultistreamRoapMediaConnection;
|
278
|
+
beforeEach(() => {
|
279
|
+
mediaConnection = {
|
280
|
+
createSendSlot: sinon.stub().returns({
|
281
|
+
setSourceStateOverride: sinon.stub().resolves(),
|
282
|
+
clearSourceStateOverride: sinon.stub().resolves(),
|
283
|
+
}),
|
284
|
+
} as MultistreamRoapMediaConnection;
|
285
|
+
});
|
286
|
+
|
287
|
+
it(`can set source state override for ${MediaType.VideoMain}`, () => {
|
288
|
+
const slot: any = sendSlotsManager.createSlot(mediaConnection, MediaType.VideoMain);
|
289
|
+
|
290
|
+
const set = () => sendSlotsManager.setSourceStateOverride(MediaType.VideoMain, 'away');
|
291
|
+
|
292
|
+
expect(set).not.to.throw();
|
293
|
+
expect(slot.setSourceStateOverride.calledWith('away')).to.be.true;
|
294
|
+
});
|
295
|
+
|
296
|
+
[MediaType.VideoSlides, MediaType.AudioMain, MediaType.AudioSlides].forEach((mediaType) => {
|
297
|
+
it(`can't set source state override for ${mediaType}`, () => {
|
298
|
+
const slot: any = sendSlotsManager.createSlot(mediaConnection, mediaType);
|
299
|
+
|
300
|
+
const set = () => sendSlotsManager.setSourceStateOverride(mediaType, 'away');
|
301
|
+
|
302
|
+
expect(set).to.throw();
|
303
|
+
expect(slot.setSourceStateOverride.called).to.be.false;
|
304
|
+
});
|
305
|
+
});
|
306
|
+
|
307
|
+
it("can't set source state override for non-existing slot", () => {
|
308
|
+
const set = () => sendSlotsManager.setSourceStateOverride(MediaType.VideoMain, 'away');
|
309
|
+
expect(set).to.throw(`Slot for ${MediaType.VideoMain} does not exist`);
|
310
|
+
});
|
311
|
+
|
312
|
+
it('can clear source state override', () => {
|
313
|
+
const slot: any = sendSlotsManager.createSlot(mediaConnection, MediaType.VideoMain);
|
314
|
+
sendSlotsManager.setSourceStateOverride(MediaType.VideoMain, 'away');
|
315
|
+
|
316
|
+
expect(slot.setSourceStateOverride.calledWith('away')).to.be.true;
|
317
|
+
expect(slot.clearSourceStateOverride.called).to.be.false;
|
318
|
+
|
319
|
+
sendSlotsManager.setSourceStateOverride(MediaType.VideoMain, null);
|
320
|
+
expect(slot.clearSourceStateOverride.called).to.be.true;
|
321
|
+
});
|
322
|
+
|
323
|
+
it("won't set source state override if it didn't change", () => {
|
324
|
+
const slot: any = sendSlotsManager.createSlot(mediaConnection, MediaType.VideoMain);
|
325
|
+
sendSlotsManager.setSourceStateOverride(MediaType.VideoMain, 'away');
|
326
|
+
|
327
|
+
expect(slot.setSourceStateOverride.calledWith('away')).to.be.true;
|
328
|
+
slot.setSourceStateOverride.resetHistory();
|
329
|
+
|
330
|
+
sendSlotsManager.setSourceStateOverride(MediaType.VideoMain, 'away');
|
331
|
+
expect(slot.setSourceStateOverride.called).to.be.false;
|
332
|
+
});
|
333
|
+
});
|
275
334
|
});
|
@@ -2764,14 +2764,10 @@ describe('isSubnetReachable', () => {
|
|
2764
2764
|
});
|
2765
2765
|
|
2766
2766
|
it('returns true if the subnet is reachable', () => {
|
2767
|
-
assert(reachability.isSubnetReachable('1
|
2767
|
+
assert(reachability.isSubnetReachable('1'));
|
2768
2768
|
});
|
2769
2769
|
|
2770
2770
|
it(`returns false if the subnet is unreachable`, () => {
|
2771
|
-
assert(!reachability.isSubnetReachable('11
|
2772
|
-
});
|
2773
|
-
|
2774
|
-
it('returns null if the subnet is not provided', () => {
|
2775
|
-
assert.isNull(reachability.isSubnetReachable(undefined));
|
2771
|
+
assert(!reachability.isSubnetReachable('11'));
|
2776
2772
|
});
|
2777
2773
|
});
|
@@ -1,42 +0,0 @@
|
|
1
|
-
import { ANNOTATION_POLICY } from './constants';
|
2
|
-
/**
|
3
|
-
* Type for an StrokeData Object
|
4
|
-
*/
|
5
|
-
type StrokeData = {
|
6
|
-
deviceId: string;
|
7
|
-
toUserId: string;
|
8
|
-
requesterId: string;
|
9
|
-
content: string;
|
10
|
-
shareInstanceId: string;
|
11
|
-
encryptionKeyUrl: string;
|
12
|
-
version: string;
|
13
|
-
};
|
14
|
-
type RequestData = {
|
15
|
-
toUserId: string;
|
16
|
-
toDeviceUrl: string;
|
17
|
-
shareInstanceId: string;
|
18
|
-
};
|
19
|
-
type CommandRequestBody = {
|
20
|
-
actionType: string;
|
21
|
-
resourceType: string;
|
22
|
-
shareInstanceId: string;
|
23
|
-
receivers?: any[];
|
24
|
-
};
|
25
|
-
/**
|
26
|
-
* Type for an annotation Object include annotation version and privilege
|
27
|
-
*/
|
28
|
-
type AnnotationInfo = {
|
29
|
-
version: string;
|
30
|
-
policy: ANNOTATION_POLICY;
|
31
|
-
};
|
32
|
-
interface IAnnotationChannel {
|
33
|
-
acceptRequest: (approval: any) => undefined | Promise<void>;
|
34
|
-
declineRequest: (approval: any) => undefined | Promise<void>;
|
35
|
-
closeAnnotation: (requestData: RequestData) => undefined | Promise<void>;
|
36
|
-
approveAnnotation: (requestData: RequestData) => undefined | Promise<void>;
|
37
|
-
cancelApproveAnnotation: (requestData: RequestData, approval: any) => undefined | Promise<void>;
|
38
|
-
sendStrokeData: (strokeData: StrokeData) => void;
|
39
|
-
approvalUrlUpdate: (approvalUrl: string) => void;
|
40
|
-
locusUrlUpdate: (locusUrl: string) => void;
|
41
|
-
}
|
42
|
-
export type { StrokeData, RequestData, CommandRequestBody, IAnnotationChannel, AnnotationInfo };
|
@@ -1,31 +0,0 @@
|
|
1
|
-
export declare const EVENT_TRIGGERS: {
|
2
|
-
ANNOTATION_STROKE_DATA: string;
|
3
|
-
ANNOTATION_COMMAND: string;
|
4
|
-
};
|
5
|
-
export declare const ANNOTATION_RESOURCE_TYPE = "AnnotationOnShare";
|
6
|
-
export declare const ANNOTATION_RELAY_TYPES: {
|
7
|
-
ANNOTATION_CLIENT: string;
|
8
|
-
};
|
9
|
-
export declare const ANNOTATION_STATUS: {
|
10
|
-
NO_ANNOTATION: string;
|
11
|
-
RUNNING_ANNOTATION: string;
|
12
|
-
};
|
13
|
-
export declare enum ANNOTATION_POLICY {
|
14
|
-
ANYONE_CAN_ANNOTATE = "AnyoneCanAnnotate",
|
15
|
-
APPROVAL = "Approval",
|
16
|
-
ANNOTATION_NOT_ALLOWED = "AnnotationNotAllowed"
|
17
|
-
}
|
18
|
-
export declare const ANNOTATION_REQUEST_TYPE: {
|
19
|
-
ANNOTATION_MESSAGE: string;
|
20
|
-
};
|
21
|
-
export declare const enum ANNOTATION_ACTION_TYPE {
|
22
|
-
REQUESTED = "REQUESTED",
|
23
|
-
ACCEPTED = "ACCEPTED",
|
24
|
-
DECLINED = "DECLINED",
|
25
|
-
OFFERED = "OFFERED",
|
26
|
-
CANCELED = "CANCELED",
|
27
|
-
EXPIRED = "EXPIRED",
|
28
|
-
REVOKED = "REVOKED",
|
29
|
-
CLOSED = "CLOSED"
|
30
|
-
}
|
31
|
-
export declare const ANNOTATION = "annotation";
|
@@ -1,117 +0,0 @@
|
|
1
|
-
import { WebexPlugin } from '@webex/webex-core';
|
2
|
-
import { StrokeData, RequestData, IAnnotationChannel } from './annotation.types';
|
3
|
-
/**
|
4
|
-
* @description Annotation to handle LLM and Mercury message and locus API
|
5
|
-
* @class
|
6
|
-
*/
|
7
|
-
declare class AnnotationChannel extends WebexPlugin implements IAnnotationChannel {
|
8
|
-
namespace: string;
|
9
|
-
private seqNum;
|
10
|
-
hasSubscribedToEvents: boolean;
|
11
|
-
approvalUrl: string;
|
12
|
-
locusUrl: string;
|
13
|
-
deviceUrl: string;
|
14
|
-
/**
|
15
|
-
* Initializes annotation module
|
16
|
-
*/
|
17
|
-
constructor(...args: any[]);
|
18
|
-
/**
|
19
|
-
* Process Stroke Data
|
20
|
-
* @param {object} data
|
21
|
-
* @returns {void}
|
22
|
-
*/
|
23
|
-
private processStrokeMessage;
|
24
|
-
/** bind all events from mercury
|
25
|
-
* @param {Object} e
|
26
|
-
* @returns {undefined}
|
27
|
-
*/
|
28
|
-
private eventCommandProcessor;
|
29
|
-
/** bind all events from llm
|
30
|
-
* @param {Object} e
|
31
|
-
* @returns {undefined}
|
32
|
-
*/
|
33
|
-
private eventDataProcessor;
|
34
|
-
/**
|
35
|
-
* Listen to websocket messages
|
36
|
-
* @returns {undefined}
|
37
|
-
*/
|
38
|
-
private listenToEvents;
|
39
|
-
/**
|
40
|
-
* set locusUrl
|
41
|
-
* @param {string} locusUrl
|
42
|
-
* @returns {void}
|
43
|
-
*/
|
44
|
-
locusUrlUpdate(locusUrl: string): void;
|
45
|
-
/**
|
46
|
-
* set approved url
|
47
|
-
* @param {string} approvalUrl
|
48
|
-
* @returns {void}
|
49
|
-
*/
|
50
|
-
approvalUrlUpdate(approvalUrl: string): void;
|
51
|
-
/**
|
52
|
-
* accept request
|
53
|
-
* @param {object} approval
|
54
|
-
* @returns {Promise}
|
55
|
-
*/
|
56
|
-
acceptRequest(approval: any): any;
|
57
|
-
/**
|
58
|
-
* presenter declined request annotation
|
59
|
-
* @param {approval} approval
|
60
|
-
* @returns {Promise}
|
61
|
-
*/
|
62
|
-
declineRequest(approval: any): any;
|
63
|
-
/**
|
64
|
-
* request approved annotation
|
65
|
-
* @param {RequestData} requestData
|
66
|
-
* @returns {Promise}
|
67
|
-
*/
|
68
|
-
approveAnnotation(requestData: RequestData): Promise<void>;
|
69
|
-
/**
|
70
|
-
* cancel approved annotation
|
71
|
-
* @param {object} requestData
|
72
|
-
* @param {object} approval
|
73
|
-
* @returns {Promise}
|
74
|
-
*/
|
75
|
-
cancelApproveAnnotation(requestData: RequestData, approval: any): any;
|
76
|
-
/**
|
77
|
-
* close annotation
|
78
|
-
* @param {object} requestData
|
79
|
-
* @returns {Promise}
|
80
|
-
*/
|
81
|
-
closeAnnotation(requestData: RequestData): Promise<void>;
|
82
|
-
/**
|
83
|
-
* send annotation command
|
84
|
-
* @param {ANNOTATION_ACTION_TYPE} actionType
|
85
|
-
* @param {RequestData} requestData
|
86
|
-
* @returns {Promise}
|
87
|
-
*/
|
88
|
-
private sendAnnotationAction;
|
89
|
-
/**
|
90
|
-
* decrypt data
|
91
|
-
* @param {string} encryptionKeyUrl
|
92
|
-
* @param {string} content encrypted content
|
93
|
-
* @returns {string} decrypted content
|
94
|
-
*/
|
95
|
-
private decryptContent;
|
96
|
-
/**
|
97
|
-
* encrypt data
|
98
|
-
* @param {string} encryptionKeyUrl
|
99
|
-
* @param {string} content original content
|
100
|
-
* @returns {string} encrypted content
|
101
|
-
*/
|
102
|
-
private encryptContent;
|
103
|
-
/**
|
104
|
-
* Sends stroke data to presenter
|
105
|
-
* @param {StrokeData} strokeData
|
106
|
-
* @returns {void}
|
107
|
-
*/
|
108
|
-
sendStrokeData: (strokeData: StrokeData) => void;
|
109
|
-
/**
|
110
|
-
* private encrypted the strokes data
|
111
|
-
* @param {string} encryptedContent
|
112
|
-
* @param {StrokeData} strokeData
|
113
|
-
* @returns {void}
|
114
|
-
*/
|
115
|
-
private publishEncrypted;
|
116
|
-
}
|
117
|
-
export default AnnotationChannel;
|
@@ -1,15 +0,0 @@
|
|
1
|
-
/**
|
2
|
-
* Extended Error object to signify breakout related errors
|
3
|
-
*/
|
4
|
-
export default class BreakoutEditLockedError extends Error {
|
5
|
-
code: any;
|
6
|
-
error: any;
|
7
|
-
sdkMessage: any;
|
8
|
-
/**
|
9
|
-
*
|
10
|
-
* @constructor
|
11
|
-
* @param {String} [message]
|
12
|
-
* @param {Object} [error]
|
13
|
-
*/
|
14
|
-
constructor(message?: string, error?: any);
|
15
|
-
}
|
@@ -1,8 +0,0 @@
|
|
1
|
-
import { ClientEvent } from '@webex/internal-plugin-metrics';
|
2
|
-
declare const breakoutEvent: {
|
3
|
-
onBreakoutMoveRequest: (eventInfo: any, submitClientEvent: any) => void;
|
4
|
-
onBreakoutMoveResponse: (eventInfo: any, submitClientEvent: any) => void;
|
5
|
-
onBreakoutJoinResponse: (eventInfo: any, submitClientEvent: any) => void;
|
6
|
-
postMoveCallAnalyzer: (event: ClientEvent['name'], eventInfo: any, submitClientEvent: any) => void;
|
7
|
-
};
|
8
|
-
export default breakoutEvent;
|
@@ -1,22 +0,0 @@
|
|
1
|
-
import { StatelessWebexPlugin } from '@webex/webex-core';
|
2
|
-
/**
|
3
|
-
* @class BreakoutRequest
|
4
|
-
*/
|
5
|
-
export default class BreakoutRequest extends StatelessWebexPlugin {
|
6
|
-
/**
|
7
|
-
* Broadcast message to all breakout session's participants
|
8
|
-
* @param {String} url
|
9
|
-
* @param {String} message
|
10
|
-
* @param {Object} options
|
11
|
-
* @param {string} groupId
|
12
|
-
* @param {string} sessionId
|
13
|
-
* @returns {Promise}
|
14
|
-
*/
|
15
|
-
broadcast({ url, message, options, groupId, sessionId, }: {
|
16
|
-
url: string;
|
17
|
-
message: string;
|
18
|
-
options?: object;
|
19
|
-
groupId: string;
|
20
|
-
sessionId?: string;
|
21
|
-
}): any;
|
22
|
-
}
|
@@ -1,15 +0,0 @@
|
|
1
|
-
export declare const getBroadcastRoles: (options: any) => string[];
|
2
|
-
/**
|
3
|
-
* Deals with all kinds of errors of breakout service
|
4
|
-
* @param {object} error // one of the breakout service error
|
5
|
-
* @param {string} position // position of the error occur
|
6
|
-
* @returns {object}
|
7
|
-
*/
|
8
|
-
export declare const boServiceErrorHandler: (error: any, position: string) => any;
|
9
|
-
/**
|
10
|
-
*
|
11
|
-
* @param {object} breakout
|
12
|
-
* @param {string} newSessionType
|
13
|
-
* @returns {boolean}
|
14
|
-
*/
|
15
|
-
export declare const isSessionTypeChangedFromSessionToMain: (breakout: any, newSessionType: any) => boolean;
|
@@ -1,9 +0,0 @@
|
|
1
|
-
/// <reference types="lodash" />
|
2
|
-
declare const _default: ((agent?: any) => {
|
3
|
-
getOSName: () => any;
|
4
|
-
getOSVersion: () => any;
|
5
|
-
getBrowserName: () => any;
|
6
|
-
getBrowserVersion: () => any;
|
7
|
-
isBrowser: (name: any) => boolean;
|
8
|
-
}) & import("lodash").MemoizedFunction;
|
9
|
-
export default _default;
|
@@ -1,48 +0,0 @@
|
|
1
|
-
/**
|
2
|
-
* @class Collection
|
3
|
-
*/
|
4
|
-
export default class Collection {
|
5
|
-
namespace: string;
|
6
|
-
propertyName: string;
|
7
|
-
/**
|
8
|
-
* @param {String} property
|
9
|
-
* @memberof Collection
|
10
|
-
*/
|
11
|
-
constructor(property: string);
|
12
|
-
/**
|
13
|
-
* @param {String} id ID of the thing stuffed into the collection at id location
|
14
|
-
* @returns {Any} returns whatever is being stuffed into the collection
|
15
|
-
* @public
|
16
|
-
* @memberof Collection
|
17
|
-
*/
|
18
|
-
get(id: string): any;
|
19
|
-
/**
|
20
|
-
* @param {String} id the id of the meeting info instance to add to the collection
|
21
|
-
* @param {Any} value the thing to set in the collection
|
22
|
-
* @returns {Any} returns the thing just put in the collection
|
23
|
-
* @public
|
24
|
-
* @memberof Collection
|
25
|
-
*/
|
26
|
-
set(id: string, value: any): any;
|
27
|
-
/**
|
28
|
-
* remove the thing at the id
|
29
|
-
* @param {String} id ID of the thing you wish to delete from the collection
|
30
|
-
* @returns {undefined}
|
31
|
-
* @public
|
32
|
-
* @memberof Collection
|
33
|
-
*/
|
34
|
-
delete(id: string): void;
|
35
|
-
/**
|
36
|
-
* @returns {Object} returns an object map of things stuffed into the collection
|
37
|
-
* @public
|
38
|
-
* @memberof Collection
|
39
|
-
*/
|
40
|
-
getAll(): any;
|
41
|
-
/**
|
42
|
-
* @param {Object} set the replacement object
|
43
|
-
* @returns {Object} returns an object map of things stuffed into the collection
|
44
|
-
* @public
|
45
|
-
* @memberof Collection
|
46
|
-
*/
|
47
|
-
setAll(set: object): any;
|
48
|
-
}
|
package/dist/common/config.d.ts
DELETED