@webex/plugin-meetings 3.11.0 → 3.12.0-next.2
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/aiEnableRequest/index.js +184 -0
- package/dist/aiEnableRequest/index.js.map +1 -0
- package/dist/aiEnableRequest/utils.js +36 -0
- package/dist/aiEnableRequest/utils.js.map +1 -0
- package/dist/annotation/index.js +14 -5
- package/dist/annotation/index.js.map +1 -1
- package/dist/breakouts/breakout.js +1 -1
- package/dist/breakouts/index.js +1 -1
- package/dist/config.js +7 -2
- package/dist/config.js.map +1 -1
- package/dist/constants.js +28 -6
- package/dist/constants.js.map +1 -1
- package/dist/hashTree/constants.js +3 -1
- package/dist/hashTree/constants.js.map +1 -1
- package/dist/hashTree/hashTree.js +18 -0
- package/dist/hashTree/hashTree.js.map +1 -1
- package/dist/hashTree/hashTreeParser.js +850 -410
- package/dist/hashTree/hashTreeParser.js.map +1 -1
- package/dist/hashTree/types.js +4 -2
- package/dist/hashTree/types.js.map +1 -1
- package/dist/hashTree/utils.js +10 -0
- package/dist/hashTree/utils.js.map +1 -1
- package/dist/index.js +11 -2
- package/dist/index.js.map +1 -1
- package/dist/interceptors/constant.js +12 -0
- package/dist/interceptors/constant.js.map +1 -0
- package/dist/interceptors/dataChannelAuthToken.js +290 -0
- package/dist/interceptors/dataChannelAuthToken.js.map +1 -0
- package/dist/interceptors/index.js +7 -0
- package/dist/interceptors/index.js.map +1 -1
- package/dist/interceptors/utils.js +27 -0
- package/dist/interceptors/utils.js.map +1 -0
- package/dist/interpretation/index.js +2 -2
- package/dist/interpretation/index.js.map +1 -1
- package/dist/interpretation/siLanguage.js +1 -1
- package/dist/locus-info/controlsUtils.js +5 -3
- package/dist/locus-info/controlsUtils.js.map +1 -1
- package/dist/locus-info/index.js +522 -131
- package/dist/locus-info/index.js.map +1 -1
- package/dist/locus-info/selfUtils.js +1 -0
- package/dist/locus-info/selfUtils.js.map +1 -1
- package/dist/locus-info/types.js.map +1 -1
- package/dist/media/MediaConnectionAwaiter.js +57 -1
- package/dist/media/MediaConnectionAwaiter.js.map +1 -1
- package/dist/media/properties.js +4 -2
- package/dist/media/properties.js.map +1 -1
- package/dist/meeting/in-meeting-actions.js +7 -1
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/meeting/index.js +1173 -877
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/request.js +50 -0
- package/dist/meeting/request.js.map +1 -1
- package/dist/meeting/request.type.js.map +1 -1
- package/dist/meeting/util.js +133 -3
- package/dist/meeting/util.js.map +1 -1
- package/dist/meetings/index.js +117 -48
- package/dist/meetings/index.js.map +1 -1
- package/dist/member/index.js +10 -0
- package/dist/member/index.js.map +1 -1
- package/dist/member/util.js +10 -0
- package/dist/member/util.js.map +1 -1
- package/dist/metrics/constants.js +2 -1
- package/dist/metrics/constants.js.map +1 -1
- package/dist/multistream/mediaRequestManager.js +9 -60
- package/dist/multistream/mediaRequestManager.js.map +1 -1
- package/dist/multistream/remoteMediaManager.js +11 -0
- package/dist/multistream/remoteMediaManager.js.map +1 -1
- package/dist/reachability/index.js +18 -10
- package/dist/reachability/index.js.map +1 -1
- package/dist/reactions/reactions.type.js.map +1 -1
- package/dist/reconnection-manager/index.js +0 -1
- package/dist/reconnection-manager/index.js.map +1 -1
- package/dist/types/aiEnableRequest/index.d.ts +5 -0
- package/dist/types/aiEnableRequest/utils.d.ts +2 -0
- package/dist/types/config.d.ts +4 -0
- package/dist/types/constants.d.ts +23 -1
- package/dist/types/hashTree/constants.d.ts +1 -0
- package/dist/types/hashTree/hashTree.d.ts +7 -0
- package/dist/types/hashTree/hashTreeParser.d.ts +122 -14
- package/dist/types/hashTree/types.d.ts +3 -0
- package/dist/types/hashTree/utils.d.ts +6 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/interceptors/constant.d.ts +5 -0
- package/dist/types/interceptors/dataChannelAuthToken.d.ts +43 -0
- package/dist/types/interceptors/index.d.ts +2 -1
- package/dist/types/interceptors/utils.d.ts +1 -0
- package/dist/types/locus-info/index.d.ts +60 -8
- package/dist/types/locus-info/types.d.ts +7 -0
- package/dist/types/media/MediaConnectionAwaiter.d.ts +10 -1
- package/dist/types/media/properties.d.ts +2 -1
- package/dist/types/meeting/in-meeting-actions.d.ts +6 -0
- package/dist/types/meeting/index.d.ts +61 -7
- package/dist/types/meeting/request.d.ts +16 -1
- package/dist/types/meeting/request.type.d.ts +5 -0
- package/dist/types/meeting/util.d.ts +31 -0
- package/dist/types/meetings/index.d.ts +4 -2
- package/dist/types/member/index.d.ts +1 -0
- package/dist/types/member/util.d.ts +5 -0
- package/dist/types/metrics/constants.d.ts +1 -0
- package/dist/types/multistream/mediaRequestManager.d.ts +0 -23
- package/dist/types/reactions/reactions.type.d.ts +1 -0
- package/dist/types/webinar/utils.d.ts +6 -0
- package/dist/webinar/index.js +291 -91
- package/dist/webinar/index.js.map +1 -1
- package/dist/webinar/utils.js +25 -0
- package/dist/webinar/utils.js.map +1 -0
- package/package.json +24 -23
- package/src/aiEnableRequest/README.md +84 -0
- package/src/aiEnableRequest/index.ts +170 -0
- package/src/aiEnableRequest/utils.ts +25 -0
- package/src/annotation/index.ts +27 -7
- package/src/config.ts +4 -0
- package/src/constants.ts +29 -1
- package/src/hashTree/constants.ts +1 -0
- package/src/hashTree/hashTree.ts +17 -0
- package/src/hashTree/hashTreeParser.ts +745 -252
- package/src/hashTree/types.ts +4 -0
- package/src/hashTree/utils.ts +9 -0
- package/src/index.ts +8 -1
- package/src/interceptors/constant.ts +6 -0
- package/src/interceptors/dataChannelAuthToken.ts +170 -0
- package/src/interceptors/index.ts +2 -1
- package/src/interceptors/utils.ts +16 -0
- package/src/interpretation/index.ts +2 -2
- package/src/locus-info/controlsUtils.ts +11 -0
- package/src/locus-info/index.ts +579 -113
- package/src/locus-info/selfUtils.ts +1 -0
- package/src/locus-info/types.ts +8 -0
- package/src/media/MediaConnectionAwaiter.ts +41 -1
- package/src/media/properties.ts +3 -1
- package/src/meeting/in-meeting-actions.ts +12 -0
- package/src/meeting/index.ts +291 -76
- package/src/meeting/request.ts +42 -0
- package/src/meeting/request.type.ts +6 -0
- package/src/meeting/util.ts +160 -2
- package/src/meetings/index.ts +157 -44
- package/src/member/index.ts +10 -0
- package/src/member/util.ts +12 -0
- package/src/metrics/constants.ts +1 -0
- package/src/multistream/mediaRequestManager.ts +4 -54
- package/src/multistream/remoteMediaManager.ts +13 -0
- package/src/reachability/index.ts +9 -0
- package/src/reactions/reactions.type.ts +1 -0
- package/src/reconnection-manager/index.ts +0 -1
- package/src/webinar/index.ts +191 -6
- package/src/webinar/utils.ts +16 -0
- package/test/unit/spec/aiEnableRequest/index.ts +981 -0
- package/test/unit/spec/aiEnableRequest/utils.ts +130 -0
- package/test/unit/spec/annotation/index.ts +69 -7
- package/test/unit/spec/hashTree/hashTree.ts +66 -0
- package/test/unit/spec/hashTree/hashTreeParser.ts +2225 -189
- package/test/unit/spec/interceptors/dataChannelAuthToken.ts +210 -0
- package/test/unit/spec/interceptors/utils.ts +75 -0
- package/test/unit/spec/locus-info/controlsUtils.js +29 -0
- package/test/unit/spec/locus-info/index.js +1134 -55
- package/test/unit/spec/media/MediaConnectionAwaiter.ts +41 -1
- package/test/unit/spec/media/properties.ts +12 -3
- package/test/unit/spec/meeting/in-meeting-actions.ts +8 -2
- package/test/unit/spec/meeting/index.js +829 -115
- package/test/unit/spec/meeting/request.js +70 -0
- package/test/unit/spec/meeting/utils.js +438 -26
- package/test/unit/spec/meetings/index.js +653 -32
- package/test/unit/spec/member/index.js +28 -4
- package/test/unit/spec/member/util.js +65 -27
- package/test/unit/spec/multistream/mediaRequestManager.ts +2 -85
- package/test/unit/spec/multistream/remoteMediaManager.ts +30 -0
- package/test/unit/spec/reachability/index.ts +23 -0
- package/test/unit/spec/reconnection-manager/index.js +4 -8
- package/test/unit/spec/webinar/index.ts +474 -37
- package/test/unit/spec/webinar/utils.ts +39 -0
|
@@ -138,6 +138,7 @@ const SelfUtils = {
|
|
|
138
138
|
updates.breakoutsChanged = SelfUtils.breakoutsChanged(previous, current);
|
|
139
139
|
updates.interpretationChanged = SelfUtils.interpretationChanged(previous, current);
|
|
140
140
|
updates.brbChanged = SelfUtils.brbChanged(previous, current);
|
|
141
|
+
updates.selfIdChanged = previous?.selfId !== current.selfId;
|
|
141
142
|
|
|
142
143
|
return {
|
|
143
144
|
previous,
|
package/src/locus-info/types.ts
CHANGED
|
@@ -19,6 +19,7 @@ export type Links = {
|
|
|
19
19
|
|
|
20
20
|
export type LocusDTO = {
|
|
21
21
|
controls?: any;
|
|
22
|
+
embeddedApps?: any[];
|
|
22
23
|
fullState?: LocusFullState;
|
|
23
24
|
host?: {
|
|
24
25
|
id: string;
|
|
@@ -31,6 +32,7 @@ export type LocusDTO = {
|
|
|
31
32
|
info?: any;
|
|
32
33
|
jsSdkMeta?: {
|
|
33
34
|
removedParticipantIds: string[]; // list of ids of participants that are removed in the last update
|
|
35
|
+
forceReplaceMembers?: boolean; // when true, forces a full replacement of meeting members (e.g. when switching to a new hash tree parser - when moving between breakouts)
|
|
34
36
|
};
|
|
35
37
|
links?: Links;
|
|
36
38
|
mediaShares?: any[];
|
|
@@ -51,3 +53,9 @@ export type LocusDTO = {
|
|
|
51
53
|
syncUrl?: string;
|
|
52
54
|
url?: string;
|
|
53
55
|
};
|
|
56
|
+
|
|
57
|
+
export type ReplacesInfo = {
|
|
58
|
+
locusUrl: string;
|
|
59
|
+
replacedAt: string;
|
|
60
|
+
sessionId: string;
|
|
61
|
+
};
|
|
@@ -2,9 +2,12 @@ import {Defer} from '@webex/common';
|
|
|
2
2
|
import {ConnectionState, MediaConnectionEventNames} from '@webex/internal-media-core';
|
|
3
3
|
import LoggerProxy from '../common/logs/logger-proxy';
|
|
4
4
|
import {ICE_AND_DTLS_CONNECTION_TIMEOUT} from '../constants';
|
|
5
|
+
import BEHAVIORAL_METRICS from '../metrics/constants';
|
|
6
|
+
import Metrics from '../metrics';
|
|
5
7
|
|
|
6
8
|
export interface MediaConnectionAwaiterProps {
|
|
7
9
|
webrtcMediaConnection: any;
|
|
10
|
+
correlationId: string;
|
|
8
11
|
}
|
|
9
12
|
|
|
10
13
|
/**
|
|
@@ -16,6 +19,7 @@ export default class MediaConnectionAwaiter {
|
|
|
16
19
|
private defer: Defer;
|
|
17
20
|
private retried: boolean;
|
|
18
21
|
private iceConnected: boolean;
|
|
22
|
+
private correlationId: string;
|
|
19
23
|
private onTimeoutCallback: () => void;
|
|
20
24
|
private peerConnectionStateCallback: () => void;
|
|
21
25
|
private iceConnectionStateCallback: () => void;
|
|
@@ -24,11 +28,12 @@ export default class MediaConnectionAwaiter {
|
|
|
24
28
|
/**
|
|
25
29
|
* @param {MediaConnectionAwaiterProps} mediaConnectionAwaiterProps
|
|
26
30
|
*/
|
|
27
|
-
constructor({webrtcMediaConnection}: MediaConnectionAwaiterProps) {
|
|
31
|
+
constructor({webrtcMediaConnection, correlationId}: MediaConnectionAwaiterProps) {
|
|
28
32
|
this.webrtcMediaConnection = webrtcMediaConnection;
|
|
29
33
|
this.defer = new Defer();
|
|
30
34
|
this.retried = false;
|
|
31
35
|
this.iceConnected = false;
|
|
36
|
+
this.correlationId = correlationId;
|
|
32
37
|
this.onTimeoutCallback = this.onTimeout.bind(this);
|
|
33
38
|
this.peerConnectionStateCallback = this.peerConnectionStateHandler.bind(this);
|
|
34
39
|
this.iceConnectionStateCallback = this.iceConnectionStateHandler.bind(this);
|
|
@@ -175,6 +180,32 @@ export default class MediaConnectionAwaiter {
|
|
|
175
180
|
this.timer = setTimeout(this.onTimeoutCallback, ICE_AND_DTLS_CONNECTION_TIMEOUT);
|
|
176
181
|
}
|
|
177
182
|
|
|
183
|
+
/**
|
|
184
|
+
* sends a metric with some additional info that might help debugging
|
|
185
|
+
* issues where browser doesn't update the RTCPeerConnection's iceConnectionState or connectionState
|
|
186
|
+
*
|
|
187
|
+
* @returns {void}
|
|
188
|
+
*/
|
|
189
|
+
async sendMetric() {
|
|
190
|
+
const stats = await this.webrtcMediaConnection.getStats();
|
|
191
|
+
|
|
192
|
+
// in theory we can end up with more than one transport report in the stats,
|
|
193
|
+
// but for the purpose of this metric it's fine to just use the first one
|
|
194
|
+
const transportReports = Array.from(
|
|
195
|
+
stats.values().filter((report) => report.type === 'transport')
|
|
196
|
+
) as Record<string, number | string>[];
|
|
197
|
+
|
|
198
|
+
Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.MEDIA_STILL_NOT_CONNECTED, {
|
|
199
|
+
correlation_id: this.correlationId,
|
|
200
|
+
numTransports: transportReports.length,
|
|
201
|
+
dtlsState: transportReports[0]?.dtlsState,
|
|
202
|
+
iceState: transportReports[0]?.iceState,
|
|
203
|
+
packetsSent: transportReports[0]?.packetsSent,
|
|
204
|
+
packetsReceived: transportReports[0]?.packetsReceived,
|
|
205
|
+
dataChannelState: this.webrtcMediaConnection.multistreamConnection?.dataChannel?.readyState,
|
|
206
|
+
});
|
|
207
|
+
}
|
|
208
|
+
|
|
178
209
|
/**
|
|
179
210
|
* Function called when the timeout is reached.
|
|
180
211
|
*
|
|
@@ -189,6 +220,8 @@ export default class MediaConnectionAwaiter {
|
|
|
189
220
|
return;
|
|
190
221
|
}
|
|
191
222
|
|
|
223
|
+
this.sendMetric();
|
|
224
|
+
|
|
192
225
|
if (!this.isIceGatheringCompleted()) {
|
|
193
226
|
if (!this.retried) {
|
|
194
227
|
LoggerProxy.logger.warn(
|
|
@@ -226,8 +259,15 @@ export default class MediaConnectionAwaiter {
|
|
|
226
259
|
*/
|
|
227
260
|
waitForMediaConnectionConnected(): Promise<void> {
|
|
228
261
|
if (this.isConnected()) {
|
|
262
|
+
LoggerProxy.logger.log(
|
|
263
|
+
'Media:MediaConnectionAwaiter#waitForMediaConnectionConnected --> Already connected'
|
|
264
|
+
);
|
|
265
|
+
|
|
229
266
|
return Promise.resolve();
|
|
230
267
|
}
|
|
268
|
+
LoggerProxy.logger.log(
|
|
269
|
+
'Media:MediaConnectionAwaiter#waitForMediaConnectionConnected --> Waiting for media connection to be connected'
|
|
270
|
+
);
|
|
231
271
|
|
|
232
272
|
this.webrtcMediaConnection.on(
|
|
233
273
|
MediaConnectionEventNames.PEER_CONNECTION_STATE_CHANGED,
|
package/src/media/properties.ts
CHANGED
|
@@ -196,11 +196,13 @@ export default class MediaProperties {
|
|
|
196
196
|
/**
|
|
197
197
|
* Waits for the webrtc media connection to be connected.
|
|
198
198
|
*
|
|
199
|
+
* @param {string} correlationId
|
|
199
200
|
* @returns {Promise<void>}
|
|
200
201
|
*/
|
|
201
|
-
waitForMediaConnectionConnected(): Promise<void> {
|
|
202
|
+
waitForMediaConnectionConnected(correlationId: string): Promise<void> {
|
|
202
203
|
const mediaConnectionAwaiter = new MediaConnectionAwaiter({
|
|
203
204
|
webrtcMediaConnection: this.webrtcMediaConnection,
|
|
205
|
+
correlationId,
|
|
204
206
|
});
|
|
205
207
|
|
|
206
208
|
return mediaConnectionAwaiter.waitForMediaConnectionConnected();
|
|
@@ -32,6 +32,7 @@ interface IInMeetingActions {
|
|
|
32
32
|
canLowerAllHands?: boolean;
|
|
33
33
|
canLowerSomeoneElsesHand?: boolean;
|
|
34
34
|
bothLeaveAndEndMeetingAvailable?: boolean;
|
|
35
|
+
requireHostEndMeetingBeforeLeave?: boolean;
|
|
35
36
|
canEnableClosedCaption?: boolean;
|
|
36
37
|
canStartTranscribing?: boolean;
|
|
37
38
|
canStopTranscribing?: boolean;
|
|
@@ -117,6 +118,8 @@ interface IInMeetingActions {
|
|
|
117
118
|
canMoveToLobby?: boolean;
|
|
118
119
|
canEnablePollingQA?: boolean;
|
|
119
120
|
canDisablePollingQA?: boolean;
|
|
121
|
+
canAttendeeRequestAiAssistantEnabled?: boolean;
|
|
122
|
+
isAttendeeRequestAiAssistantDeclinedAll?: boolean;
|
|
120
123
|
}
|
|
121
124
|
|
|
122
125
|
/**
|
|
@@ -169,6 +172,8 @@ export default class InMeetingActions implements IInMeetingActions {
|
|
|
169
172
|
|
|
170
173
|
bothLeaveAndEndMeetingAvailable = null;
|
|
171
174
|
|
|
175
|
+
requireHostEndMeetingBeforeLeave = null;
|
|
176
|
+
|
|
172
177
|
canEnableClosedCaption = null;
|
|
173
178
|
|
|
174
179
|
canStartTranscribing = null;
|
|
@@ -337,6 +342,10 @@ export default class InMeetingActions implements IInMeetingActions {
|
|
|
337
342
|
|
|
338
343
|
canDisablePollingQA = null;
|
|
339
344
|
|
|
345
|
+
canAttendeeRequestAiAssistantEnabled = null;
|
|
346
|
+
|
|
347
|
+
isAttendeeRequestAiAssistantDeclinedAll = null;
|
|
348
|
+
|
|
340
349
|
/**
|
|
341
350
|
* Returns all meeting action options
|
|
342
351
|
* @returns {Object}
|
|
@@ -364,6 +373,7 @@ export default class InMeetingActions implements IInMeetingActions {
|
|
|
364
373
|
canLowerAllHands: this.canLowerAllHands,
|
|
365
374
|
canLowerSomeoneElsesHand: this.canLowerSomeoneElsesHand,
|
|
366
375
|
bothLeaveAndEndMeetingAvailable: this.bothLeaveAndEndMeetingAvailable,
|
|
376
|
+
requireHostEndMeetingBeforeLeave: this.requireHostEndMeetingBeforeLeave,
|
|
367
377
|
canEnableClosedCaption: this.canEnableClosedCaption,
|
|
368
378
|
canStartTranscribing: this.canStartTranscribing,
|
|
369
379
|
canStopTranscribing: this.canStopTranscribing,
|
|
@@ -448,6 +458,8 @@ export default class InMeetingActions implements IInMeetingActions {
|
|
|
448
458
|
canMoveToLobby: this.canMoveToLobby,
|
|
449
459
|
canEnablePollingQA: this.canEnablePollingQA,
|
|
450
460
|
canDisablePollingQA: this.canDisablePollingQA,
|
|
461
|
+
canAttendeeRequestAiAssistantEnabled: this.canAttendeeRequestAiAssistantEnabled,
|
|
462
|
+
isAttendeeRequestAiAssistantDeclinedAll: this.isAttendeeRequestAiAssistantDeclinedAll,
|
|
451
463
|
});
|
|
452
464
|
|
|
453
465
|
/**
|