@webex/plugin-meetings 3.9.0-webinar5k.1 → 3.10.0
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/constants.js +24 -0
- package/dist/constants.js.map +1 -1
- package/dist/controls-options-manager/index.js +22 -5
- package/dist/controls-options-manager/index.js.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/interceptors/index.js +7 -0
- package/dist/interceptors/index.js.map +1 -1
- package/dist/interceptors/locusRouteToken.js +116 -0
- package/dist/interceptors/locusRouteToken.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 -2
- package/dist/locus-info/controlsUtils.js.map +1 -1
- package/dist/locus-info/index.js +76 -322
- package/dist/locus-info/index.js.map +1 -1
- package/dist/locus-info/parser.js +4 -1
- package/dist/locus-info/parser.js.map +1 -1
- package/dist/media/properties.js +53 -5
- package/dist/media/properties.js.map +1 -1
- package/dist/meeting/in-meeting-actions.js +14 -0
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/meeting/index.js +467 -277
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/request.js +177 -14
- package/dist/meeting/request.js.map +1 -1
- package/dist/meeting/type.js +7 -0
- package/dist/meeting/type.js.map +1 -0
- package/dist/meeting/util.js +100 -3
- package/dist/meeting/util.js.map +1 -1
- package/dist/meeting-info/meeting-info-v2.js +29 -21
- package/dist/meeting-info/meeting-info-v2.js.map +1 -1
- package/dist/meetings/index.js +20 -16
- package/dist/meetings/index.js.map +1 -1
- package/dist/member/index.js +9 -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/members/index.js +10 -7
- package/dist/members/index.js.map +1 -1
- package/dist/members/util.js +7 -2
- package/dist/members/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 +1 -1
- package/dist/multistream/mediaRequestManager.js.map +1 -1
- package/dist/multistream/remoteMedia.js +34 -5
- package/dist/multistream/remoteMedia.js.map +1 -1
- package/dist/multistream/remoteMediaGroup.js +42 -2
- package/dist/multistream/remoteMediaGroup.js.map +1 -1
- package/dist/reachability/index.js +3 -3
- package/dist/reachability/index.js.map +1 -1
- package/dist/types/constants.d.ts +23 -0
- package/dist/types/controls-options-manager/index.d.ts +9 -1
- package/dist/types/interceptors/index.d.ts +2 -1
- package/dist/types/interceptors/locusRouteToken.d.ts +38 -0
- package/dist/types/locus-info/index.d.ts +9 -54
- package/dist/types/media/properties.d.ts +21 -0
- package/dist/types/meeting/in-meeting-actions.d.ts +14 -0
- package/dist/types/meeting/index.d.ts +64 -29
- package/dist/types/meeting/request.d.ts +42 -0
- package/dist/types/meeting/type.d.ts +9 -0
- package/dist/types/meeting/util.d.ts +13 -0
- package/dist/types/meeting-info/meeting-info-v2.d.ts +6 -3
- package/dist/types/meetings/index.d.ts +3 -1
- package/dist/types/member/index.d.ts +1 -0
- package/dist/types/member/util.d.ts +5 -0
- package/dist/types/members/index.d.ts +12 -11
- package/dist/types/members/util.d.ts +8 -4
- package/dist/types/metrics/constants.d.ts +1 -0
- package/dist/types/multistream/remoteMedia.d.ts +20 -1
- package/dist/types/multistream/remoteMediaGroup.d.ts +11 -0
- package/dist/webinar/index.js +1 -1
- package/package.json +25 -27
- package/src/constants.ts +26 -2
- package/src/controls-options-manager/index.ts +26 -5
- package/src/index.ts +2 -1
- package/src/interceptors/index.ts +2 -1
- package/src/interceptors/locusRouteToken.ts +80 -0
- package/src/locus-info/controlsUtils.ts +18 -0
- package/src/locus-info/index.ts +69 -357
- package/src/locus-info/parser.ts +5 -1
- package/src/media/properties.ts +43 -0
- package/src/meeting/in-meeting-actions.ts +29 -0
- package/src/meeting/index.ts +296 -87
- package/src/meeting/request.ts +141 -0
- package/src/meeting/type.ts +9 -0
- package/src/meeting/util.ts +107 -3
- package/src/meeting-info/meeting-info-v2.ts +24 -5
- package/src/meetings/index.ts +15 -22
- package/src/member/index.ts +10 -0
- package/src/member/util.ts +14 -0
- package/src/members/index.ts +20 -10
- package/src/members/util.ts +20 -3
- package/src/metrics/constants.ts +1 -0
- package/src/multistream/mediaRequestManager.ts +7 -7
- package/src/multistream/remoteMedia.ts +34 -4
- package/src/multistream/remoteMediaGroup.ts +37 -2
- package/src/reachability/index.ts +3 -3
- package/test/unit/spec/common/browser-detection.js +0 -24
- package/test/unit/spec/controls-options-manager/index.js +47 -0
- package/test/unit/spec/fixture/locus.js +1 -0
- package/test/unit/spec/interceptors/locusRouteToken.ts +87 -0
- package/test/unit/spec/locus-info/index.js +80 -361
- package/test/unit/spec/locus-info/parser.js +3 -2
- package/test/unit/spec/media/properties.ts +137 -0
- package/test/unit/spec/meeting/in-meeting-actions.ts +14 -0
- package/test/unit/spec/meeting/index.js +637 -53
- package/test/unit/spec/meeting/muteState.js +32 -6
- package/test/unit/spec/meeting/request.js +21 -0
- package/test/unit/spec/meeting/utils.js +171 -18
- package/test/unit/spec/meeting-info/meetinginfov2.js +8 -3
- package/test/unit/spec/meetings/index.js +12 -5
- package/test/unit/spec/member/util.js +24 -0
- package/test/unit/spec/members/collection.js +120 -0
- package/test/unit/spec/members/index.js +107 -2
- package/test/unit/spec/members/request.js +55 -0
- package/test/unit/spec/members/utils.js +116 -14
- package/test/unit/spec/multistream/mediaRequestManager.ts +19 -6
- package/test/unit/spec/multistream/remoteMedia.ts +66 -2
- package/test/unit/spec/reachability/index.ts +158 -3
- package/test/unit/spec/roap/turnDiscovery.ts +3 -3
- package/dist/hashTree/constants.js +0 -23
- package/dist/hashTree/constants.js.map +0 -1
- package/dist/hashTree/hashTree.js +0 -516
- package/dist/hashTree/hashTree.js.map +0 -1
- package/dist/hashTree/hashTreeParser.js +0 -521
- package/dist/hashTree/hashTreeParser.js.map +0 -1
- package/dist/types/hashTree/constants.d.ts +0 -8
- package/dist/types/hashTree/hashTree.d.ts +0 -128
- package/dist/types/hashTree/hashTreeParser.d.ts +0 -152
- package/src/hashTree/constants.ts +0 -12
- package/src/hashTree/hashTree.ts +0 -460
- package/src/hashTree/hashTreeParser.ts +0 -556
- package/test/unit/spec/hashTree/hashTree.ts +0 -394
- package/test/unit/spec/hashTree/hashTreeParser.ts +0 -156
package/src/media/properties.ts
CHANGED
|
@@ -9,9 +9,12 @@ import {
|
|
|
9
9
|
|
|
10
10
|
import {parse} from '@webex/ts-sdp';
|
|
11
11
|
import {ClientEvent} from '@webex/internal-plugin-metrics';
|
|
12
|
+
import {throttle} from 'lodash';
|
|
13
|
+
import Metrics from '../metrics';
|
|
12
14
|
import {MEETINGS, QUALITY_LEVELS} from '../constants';
|
|
13
15
|
import LoggerProxy from '../common/logs/logger-proxy';
|
|
14
16
|
import MediaConnectionAwaiter from './MediaConnectionAwaiter';
|
|
17
|
+
import BEHAVIORAL_METRICS from '../metrics/constants';
|
|
15
18
|
|
|
16
19
|
export type MediaDirection = {
|
|
17
20
|
sendAudio: boolean;
|
|
@@ -41,6 +44,8 @@ export default class MediaProperties {
|
|
|
41
44
|
videoDeviceId: any;
|
|
42
45
|
videoStream?: LocalCameraStream;
|
|
43
46
|
namespace = MEETINGS;
|
|
47
|
+
mediaIssueCounters: {[key: string]: number} = {};
|
|
48
|
+
throttledSendMediaIssueMetric: ReturnType<typeof throttle>;
|
|
44
49
|
|
|
45
50
|
/**
|
|
46
51
|
* @param {Object} [options] -- to auto construct
|
|
@@ -66,6 +71,15 @@ export default class MediaProperties {
|
|
|
66
71
|
this.remoteQualityLevel = QUALITY_LEVELS.HIGH;
|
|
67
72
|
this.mediaSettings = {};
|
|
68
73
|
this.videoDeviceId = null;
|
|
74
|
+
|
|
75
|
+
this.throttledSendMediaIssueMetric = throttle((eventPayload) => {
|
|
76
|
+
Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.MEDIA_ISSUE_DETECTED, {
|
|
77
|
+
...eventPayload,
|
|
78
|
+
});
|
|
79
|
+
Object.keys(this.mediaIssueCounters).forEach((key) => {
|
|
80
|
+
this.mediaIssueCounters[key] = 0;
|
|
81
|
+
});
|
|
82
|
+
}, 1000 * 60 * 5); // at most once every 5 minutes
|
|
69
83
|
}
|
|
70
84
|
|
|
71
85
|
/**
|
|
@@ -139,8 +153,14 @@ export default class MediaProperties {
|
|
|
139
153
|
this.videoDeviceId = deviceId;
|
|
140
154
|
}
|
|
141
155
|
|
|
156
|
+
/**
|
|
157
|
+
* Clears the webrtcMediaConnection. This method should be called after
|
|
158
|
+
* peer connection is closed and no longer needed.
|
|
159
|
+
* @returns {void}
|
|
160
|
+
*/
|
|
142
161
|
unsetPeerConnection() {
|
|
143
162
|
this.webrtcMediaConnection = null;
|
|
163
|
+
this.throttledSendMediaIssueMetric.flush();
|
|
144
164
|
}
|
|
145
165
|
|
|
146
166
|
/**
|
|
@@ -424,4 +444,27 @@ export default class MediaProperties {
|
|
|
424
444
|
};
|
|
425
445
|
}
|
|
426
446
|
}
|
|
447
|
+
|
|
448
|
+
/**
|
|
449
|
+
* Sends a metric about a media issue. Metrics are throttled so that we don't
|
|
450
|
+
* send too many of them, but include a count so that we know how many issues
|
|
451
|
+
* were detected.
|
|
452
|
+
*
|
|
453
|
+
* @param {string} issueType
|
|
454
|
+
* @param {string} issueSubType
|
|
455
|
+
* @param {string} correlationId
|
|
456
|
+
* @returns {void}
|
|
457
|
+
*/
|
|
458
|
+
public sendMediaIssueMetric(issueType: string, issueSubType: string, correlationId) {
|
|
459
|
+
const key = `${issueType}_${issueSubType}`;
|
|
460
|
+
|
|
461
|
+
const count = (this.mediaIssueCounters[key] || 0) + 1;
|
|
462
|
+
|
|
463
|
+
this.mediaIssueCounters[key] = count;
|
|
464
|
+
|
|
465
|
+
this.throttledSendMediaIssueMetric({
|
|
466
|
+
correlationId,
|
|
467
|
+
...this.mediaIssueCounters,
|
|
468
|
+
});
|
|
469
|
+
}
|
|
427
470
|
}
|
|
@@ -38,8 +38,15 @@ interface IInMeetingActions {
|
|
|
38
38
|
isClosedCaptionActive?: boolean;
|
|
39
39
|
canStartManualCaption?: boolean;
|
|
40
40
|
canStopManualCaption?: boolean;
|
|
41
|
+
isLocalRecordingStarted?: boolean;
|
|
42
|
+
isLocalRecordingStopped?: boolean;
|
|
43
|
+
isLocalRecordingPaused?: boolean;
|
|
44
|
+
isLocalStreamingStarted?: boolean;
|
|
45
|
+
isLocalStreamingStopped?: boolean;
|
|
46
|
+
|
|
41
47
|
isManualCaptionActive?: boolean;
|
|
42
48
|
isSaveTranscriptsEnabled?: boolean;
|
|
49
|
+
isSpokenLanguageAutoDetectionEnabled?: boolean;
|
|
43
50
|
isWebexAssistantActive?: boolean;
|
|
44
51
|
canViewCaptionPanel?: boolean;
|
|
45
52
|
isRealTimeTranslationEnabled?: boolean;
|
|
@@ -87,6 +94,7 @@ interface IInMeetingActions {
|
|
|
87
94
|
canDoVideo?: boolean;
|
|
88
95
|
canAnnotate?: boolean;
|
|
89
96
|
canUseVoip?: boolean;
|
|
97
|
+
showAutoEndMeetingWarning?: boolean;
|
|
90
98
|
supportHQV?: boolean;
|
|
91
99
|
supportHDV?: boolean;
|
|
92
100
|
canShareWhiteBoard?: boolean;
|
|
@@ -173,10 +181,22 @@ export default class InMeetingActions implements IInMeetingActions {
|
|
|
173
181
|
|
|
174
182
|
canStopManualCaption = null;
|
|
175
183
|
|
|
184
|
+
isLocalRecordingStopped = null;
|
|
185
|
+
|
|
186
|
+
isLocalRecordingStarted = null;
|
|
187
|
+
|
|
188
|
+
isLocalRecordingPaused = null;
|
|
189
|
+
|
|
176
190
|
isManualCaptionActive = null;
|
|
177
191
|
|
|
192
|
+
isLocalStreamingStarted = null;
|
|
193
|
+
|
|
194
|
+
isLocalStreamingStopped = null;
|
|
195
|
+
|
|
178
196
|
isSaveTranscriptsEnabled = null;
|
|
179
197
|
|
|
198
|
+
isSpokenLanguageAutoDetectionEnabled = null;
|
|
199
|
+
|
|
180
200
|
isWebexAssistantActive = null;
|
|
181
201
|
|
|
182
202
|
canViewCaptionPanel = null;
|
|
@@ -271,6 +291,8 @@ export default class InMeetingActions implements IInMeetingActions {
|
|
|
271
291
|
|
|
272
292
|
canUseVoip = null;
|
|
273
293
|
|
|
294
|
+
showAutoEndMeetingWarning = null;
|
|
295
|
+
|
|
274
296
|
supportHQV = null;
|
|
275
297
|
|
|
276
298
|
enforceVirtualBackground = null;
|
|
@@ -347,9 +369,15 @@ export default class InMeetingActions implements IInMeetingActions {
|
|
|
347
369
|
canStopTranscribing: this.canStopTranscribing,
|
|
348
370
|
isClosedCaptionActive: this.isClosedCaptionActive,
|
|
349
371
|
canStartManualCaption: this.canStartManualCaption,
|
|
372
|
+
isLocalRecordingStarted: this.isLocalRecordingStarted,
|
|
373
|
+
isLocalRecordingStopped: this.isLocalRecordingStopped,
|
|
374
|
+
isLocalRecordingPaused: this.isLocalRecordingPaused,
|
|
375
|
+
isLocalStreamingStarted: this.isLocalStreamingStarted,
|
|
376
|
+
isLocalStreamingStopped: this.isLocalStreamingStopped,
|
|
350
377
|
canStopManualCaption: this.canStopManualCaption,
|
|
351
378
|
isManualCaptionActive: this.isManualCaptionActive,
|
|
352
379
|
isSaveTranscriptsEnabled: this.isSaveTranscriptsEnabled,
|
|
380
|
+
isSpokenLanguageAutoDetectionEnabled: this.isSpokenLanguageAutoDetectionEnabled,
|
|
353
381
|
isWebexAssistantActive: this.isWebexAssistantActive,
|
|
354
382
|
canViewCaptionPanel: this.canViewCaptionPanel,
|
|
355
383
|
isRealTimeTranslationEnabled: this.isRealTimeTranslationEnabled,
|
|
@@ -388,6 +416,7 @@ export default class InMeetingActions implements IInMeetingActions {
|
|
|
388
416
|
canShareFile: this.canShareFile,
|
|
389
417
|
canShareApplication: this.canShareApplication,
|
|
390
418
|
canShareCamera: this.canShareCamera,
|
|
419
|
+
showAutoEndMeetingWarning: this.showAutoEndMeetingWarning,
|
|
391
420
|
canShareDesktop: this.canShareDesktop,
|
|
392
421
|
canShareContent: this.canShareContent,
|
|
393
422
|
canTransferFile: this.canTransferFile,
|