@webex/plugin-meetings 2.35.2 → 2.35.4
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/common/browser-detection.js.map +1 -1
- package/dist/common/collection.js.map +1 -1
- package/dist/common/config.js.map +1 -1
- package/dist/common/errors/captcha-error.js +7 -0
- package/dist/common/errors/captcha-error.js.map +1 -1
- package/dist/common/errors/intent-to-join.js +8 -0
- package/dist/common/errors/intent-to-join.js.map +1 -1
- package/dist/common/errors/join-meeting.js +8 -0
- package/dist/common/errors/join-meeting.js.map +1 -1
- package/dist/common/errors/media.js +7 -0
- package/dist/common/errors/media.js.map +1 -1
- package/dist/common/errors/parameter.js.map +1 -1
- package/dist/common/errors/password-error.js +7 -0
- package/dist/common/errors/password-error.js.map +1 -1
- package/dist/common/errors/permission.js +7 -0
- package/dist/common/errors/permission.js.map +1 -1
- package/dist/common/errors/reconnection-in-progress.js.map +1 -1
- package/dist/common/errors/reconnection.js +7 -0
- package/dist/common/errors/reconnection.js.map +1 -1
- package/dist/common/errors/stats.js +7 -0
- package/dist/common/errors/stats.js.map +1 -1
- package/dist/common/errors/webex-errors.js.map +1 -1
- package/dist/common/errors/webex-meetings-error.js +5 -2
- package/dist/common/errors/webex-meetings-error.js.map +1 -1
- package/dist/common/events/events-scope.js.map +1 -1
- package/dist/common/events/events.js.map +1 -1
- package/dist/common/events/trigger-proxy.js.map +1 -1
- package/dist/common/events/util.js.map +1 -1
- package/dist/common/logs/logger-config.js.map +1 -1
- package/dist/common/logs/logger-proxy.js.map +1 -1
- package/dist/common/logs/request.js +3 -0
- package/dist/common/logs/request.js.map +1 -1
- package/dist/common/queue.js.map +1 -1
- package/dist/config.js.map +1 -1
- package/dist/constants.js.map +1 -1
- package/dist/locus-info/controlsUtils.js.map +1 -1
- package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
- package/dist/locus-info/fullState.js.map +1 -1
- package/dist/locus-info/hostUtils.js.map +1 -1
- package/dist/locus-info/index.js +43 -5
- package/dist/locus-info/index.js.map +1 -1
- package/dist/locus-info/infoUtils.js.map +1 -1
- package/dist/locus-info/mediaSharesUtils.js.map +1 -1
- package/dist/locus-info/parser.js +12 -3
- package/dist/locus-info/parser.js.map +1 -1
- package/dist/locus-info/selfUtils.js.map +1 -1
- package/dist/media/index.js.map +1 -1
- package/dist/media/properties.js +12 -0
- package/dist/media/properties.js.map +1 -1
- package/dist/media/util.js.map +1 -1
- package/dist/mediaQualityMetrics/config.js.map +1 -1
- package/dist/meeting/effectsState.js +8 -1
- package/dist/meeting/effectsState.js.map +1 -1
- package/dist/meeting/index.js +151 -32
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/muteState.js +6 -0
- package/dist/meeting/muteState.js.map +1 -1
- package/dist/meeting/request.js +54 -24
- package/dist/meeting/request.js.map +1 -1
- package/dist/meeting/state.js.map +1 -1
- package/dist/meeting/util.js.map +1 -1
- package/dist/meeting-info/collection.js +4 -1
- package/dist/meeting-info/collection.js.map +1 -1
- package/dist/meeting-info/index.js +5 -0
- package/dist/meeting-info/index.js.map +1 -1
- package/dist/meeting-info/meeting-info-v2.js +14 -2
- package/dist/meeting-info/meeting-info-v2.js.map +1 -1
- package/dist/meeting-info/request.js +3 -0
- package/dist/meeting-info/request.js.map +1 -1
- package/dist/meeting-info/util.js.map +1 -1
- package/dist/meeting-info/utilv2.js.map +1 -1
- package/dist/meetings/collection.js +4 -1
- package/dist/meetings/collection.js.map +1 -1
- package/dist/meetings/index.js +72 -20
- package/dist/meetings/index.js.map +1 -1
- package/dist/meetings/request.js +4 -0
- package/dist/meetings/request.js.map +1 -1
- package/dist/meetings/util.js.map +1 -1
- package/dist/member/index.js +30 -7
- package/dist/member/index.js.map +1 -1
- package/dist/member/util.js +2 -1
- package/dist/member/util.js.map +1 -1
- package/dist/members/collection.js +1 -0
- package/dist/members/collection.js.map +1 -1
- package/dist/members/index.js +12 -1
- package/dist/members/index.js.map +1 -1
- package/dist/members/request.js +19 -9
- package/dist/members/request.js.map +1 -1
- package/dist/members/util.js.map +1 -1
- package/dist/metrics/config.js.map +1 -1
- package/dist/metrics/constants.js.map +1 -1
- package/dist/metrics/index.js +8 -0
- package/dist/metrics/index.js.map +1 -1
- package/dist/networkQualityMonitor/index.js +10 -2
- package/dist/networkQualityMonitor/index.js.map +1 -1
- package/dist/peer-connection-manager/index.js +11 -4
- package/dist/peer-connection-manager/index.js.map +1 -1
- package/dist/personal-meeting-room/index.js +11 -0
- package/dist/personal-meeting-room/index.js.map +1 -1
- package/dist/personal-meeting-room/request.js +2 -1
- package/dist/personal-meeting-room/request.js.map +1 -1
- package/dist/personal-meeting-room/util.js.map +1 -1
- package/dist/reachability/index.js +17 -7
- package/dist/reachability/index.js.map +1 -1
- package/dist/reachability/request.js +1 -0
- package/dist/reachability/request.js.map +1 -1
- package/dist/reconnection-manager/index.js +21 -2
- package/dist/reconnection-manager/index.js.map +1 -1
- package/dist/roap/collection.js +1 -0
- package/dist/roap/collection.js.map +1 -1
- package/dist/roap/handler.js +14 -2
- package/dist/roap/handler.js.map +1 -1
- package/dist/roap/index.js +11 -1
- package/dist/roap/index.js.map +1 -1
- package/dist/roap/request.js +7 -2
- package/dist/roap/request.js.map +1 -1
- package/dist/roap/state.js.map +1 -1
- package/dist/roap/turnDiscovery.js +9 -1
- package/dist/roap/turnDiscovery.js.map +1 -1
- package/dist/roap/util.js.map +1 -1
- package/dist/statsAnalyzer/global.js.map +1 -1
- package/dist/statsAnalyzer/index.js +19 -1
- package/dist/statsAnalyzer/index.js.map +1 -1
- package/dist/statsAnalyzer/mqaUtil.js +9 -3
- package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
- package/dist/transcription/index.js +10 -3
- package/dist/transcription/index.js.map +1 -1
- package/package.json +19 -19
- package/src/common/{browser-detection.js → browser-detection.ts} +1 -1
- package/src/common/collection.ts +6 -6
- package/src/common/{config.js → config.ts} +1 -1
- package/src/common/errors/{captcha-error.js → captcha-error.ts} +5 -1
- package/src/common/errors/{intent-to-join.js → intent-to-join.ts} +6 -1
- package/src/common/errors/{join-meeting.js → join-meeting.ts} +6 -1
- package/src/common/errors/{media.js → media.ts} +5 -1
- package/src/common/errors/parameter.ts +3 -2
- package/src/common/errors/{password-error.js → password-error.ts} +5 -1
- package/src/common/errors/{permission.js → permission.ts} +5 -1
- package/src/common/errors/{reconnection-in-progress.js → reconnection-in-progress.ts} +0 -0
- package/src/common/errors/{reconnection.js → reconnection.ts} +5 -1
- package/src/common/errors/{stats.js → stats.ts} +5 -1
- package/src/common/errors/{webex-errors.js → webex-errors.ts} +1 -2
- package/src/common/errors/{webex-meetings-error.js → webex-meetings-error.ts} +3 -1
- package/src/common/events/{events-scope.js → events-scope.ts} +1 -1
- package/src/common/events/{events.js → events.ts} +0 -0
- package/src/common/events/{trigger-proxy.js → trigger-proxy.ts} +1 -2
- package/src/common/events/{util.js → util.ts} +1 -1
- package/src/common/logs/{logger-config.js → logger-config.ts} +1 -2
- package/src/common/logs/{logger-proxy.js → logger-proxy.ts} +1 -1
- package/src/common/logs/{request.js → request.ts} +12 -2
- package/src/common/queue.ts +1 -2
- package/src/{config.js → config.ts} +1 -0
- package/src/constants.ts +1 -0
- package/src/locus-info/{controlsUtils.js → controlsUtils.ts} +4 -4
- package/src/locus-info/{embeddedAppsUtils.js → embeddedAppsUtils.ts} +5 -6
- package/src/locus-info/{fullState.js → fullState.ts} +1 -1
- package/src/locus-info/{hostUtils.js → hostUtils.ts} +5 -5
- package/src/locus-info/{index.js → index.ts} +67 -32
- package/src/locus-info/{infoUtils.js → infoUtils.ts} +3 -4
- package/src/locus-info/{mediaSharesUtils.js → mediaSharesUtils.ts} +13 -13
- package/src/locus-info/{parser.js → parser.ts} +22 -12
- package/src/locus-info/{selfUtils.js → selfUtils.ts} +17 -19
- package/src/media/{index.js → index.ts} +108 -39
- package/src/media/{properties.js → properties.ts} +16 -4
- package/src/media/{util.js → util.ts} +2 -3
- package/src/mediaQualityMetrics/{config.js → config.ts} +1 -1
- package/src/meeting/{effectsState.js → effectsState.ts} +12 -6
- package/src/meeting/{index.js → index.ts} +323 -147
- package/src/meeting/{muteState.js → muteState.ts} +16 -11
- package/src/meeting/{request.js → request.ts} +124 -36
- package/src/meeting/{state.js → state.ts} +6 -6
- package/src/meeting/{util.js → util.ts} +4 -4
- package/src/meeting-info/{collection.js → collection.ts} +4 -1
- package/src/meeting-info/{index.js → index.ts} +10 -6
- package/src/meeting-info/{meeting-info-v2.js → meeting-info-v2.ts} +28 -10
- package/src/meeting-info/{request.js → request.ts} +6 -2
- package/src/meeting-info/{util.js → util.ts} +6 -5
- package/src/meeting-info/{utilv2.js → utilv2.ts} +8 -7
- package/src/meetings/{collection.js → collection.ts} +5 -2
- package/src/meetings/{index.js → index.ts} +88 -22
- package/src/meetings/{request.js → request.ts} +6 -1
- package/src/meetings/{util.js → util.ts} +5 -3
- package/src/member/{index.js → index.ts} +46 -15
- package/src/member/{util.js → util.ts} +17 -16
- package/src/members/{collection.js → collection.ts} +2 -1
- package/src/members/{index.js → index.ts} +39 -26
- package/src/members/{request.js → request.ts} +16 -5
- package/src/members/{util.js → util.ts} +7 -7
- package/src/metrics/{config.js → config.ts} +0 -2
- package/src/metrics/{constants.js → constants.ts} +0 -0
- package/src/metrics/{index.js → index.ts} +27 -8
- package/src/networkQualityMonitor/{index.js → index.ts} +18 -3
- package/src/peer-connection-manager/{index.js → index.ts} +72 -28
- package/src/personal-meeting-room/{index.js → index.ts} +17 -4
- package/src/personal-meeting-room/{request.js → request.ts} +3 -1
- package/src/personal-meeting-room/{util.js → util.ts} +1 -1
- package/src/reachability/{index.js → index.ts} +28 -17
- package/src/reachability/request.ts +4 -2
- package/src/reconnection-manager/{index.js → index.ts} +42 -13
- package/src/roap/{collection.js → collection.ts} +1 -0
- package/src/roap/{handler.js → handler.ts} +15 -4
- package/src/roap/{index.js → index.ts} +23 -10
- package/src/roap/{request.js → request.ts} +19 -3
- package/src/roap/{state.js → state.ts} +3 -2
- package/src/roap/turnDiscovery.ts +14 -5
- package/src/roap/{util.js → util.ts} +1 -2
- package/src/statsAnalyzer/{global.js → global.ts} +0 -0
- package/src/statsAnalyzer/{index.js → index.ts} +36 -17
- package/src/statsAnalyzer/{mqaUtil.js → mqaUtil.ts} +6 -1
- package/src/transcription/{index.js → index.ts} +16 -11
- package/test/integration/spec/space-meeting.js +1 -2
- package/test/unit/spec/roap/util.js +1 -1
|
@@ -29,6 +29,21 @@ export const EVENTS = {
|
|
|
29
29
|
* @extends {EventsScope}
|
|
30
30
|
*/
|
|
31
31
|
export class StatsAnalyzer extends EventsScope {
|
|
32
|
+
config: any;
|
|
33
|
+
correlationId: any;
|
|
34
|
+
lastEmittedStartStopEvent: any;
|
|
35
|
+
lastMqaDataSent: any;
|
|
36
|
+
lastStatsResults: any;
|
|
37
|
+
localMQEStats: any;
|
|
38
|
+
meetingMediaStatus: any;
|
|
39
|
+
mqaInterval: NodeJS.Timeout;
|
|
40
|
+
mqaSentCount: any;
|
|
41
|
+
networkQualityMonitor: any;
|
|
42
|
+
peerConnection: any;
|
|
43
|
+
statsInterval: NodeJS.Timeout;
|
|
44
|
+
statsResults: any;
|
|
45
|
+
statsStarted: any;
|
|
46
|
+
|
|
32
47
|
/**
|
|
33
48
|
* Creates a new instance of StatsAnalyzer
|
|
34
49
|
* @constructor
|
|
@@ -37,7 +52,7 @@ export class StatsAnalyzer extends EventsScope {
|
|
|
37
52
|
* @param {Object} networkQualityMonitor class for assessing network characteristics (jitter, packetLoss, latency)
|
|
38
53
|
* @param {Object} statsResults Default properties for stats
|
|
39
54
|
*/
|
|
40
|
-
constructor(config, networkQualityMonitor = {}, statsResults = defaultStats) {
|
|
55
|
+
constructor(config: any, networkQualityMonitor: object = {}, statsResults: object = defaultStats) {
|
|
41
56
|
super();
|
|
42
57
|
this.statsStarted = false;
|
|
43
58
|
this.statsResults = statsResults;
|
|
@@ -170,7 +185,7 @@ export class StatsAnalyzer extends EventsScope {
|
|
|
170
185
|
* @memberof StatsAnalyzer
|
|
171
186
|
* @returns {void}
|
|
172
187
|
*/
|
|
173
|
-
updateMediaStatus(status) {
|
|
188
|
+
public updateMediaStatus(status: object) {
|
|
174
189
|
this.meetingMediaStatus = status;
|
|
175
190
|
}
|
|
176
191
|
|
|
@@ -181,7 +196,7 @@ export class StatsAnalyzer extends EventsScope {
|
|
|
181
196
|
* @memberof StatsAnalyzer
|
|
182
197
|
* @returns {void}
|
|
183
198
|
*/
|
|
184
|
-
sendMqaData() {
|
|
199
|
+
public sendMqaData() {
|
|
185
200
|
const audioReceiver = mqaData.intervals[0].audioReceive[0];
|
|
186
201
|
const audioSender = mqaData.intervals[0].audioTransmit[0];
|
|
187
202
|
const videoReceiver = mqaData.intervals[0].videoReceive[0];
|
|
@@ -236,6 +251,7 @@ export class StatsAnalyzer extends EventsScope {
|
|
|
236
251
|
mqaData.intervals[0].intervalMetadata.peripherals.push({information: this.peerConnection?.videoTransceiver?.sender?.track?.label || _UNKNOWN_, name: MEDIA_DEVICES.CAMERA});
|
|
237
252
|
|
|
238
253
|
|
|
254
|
+
// @ts-ignore
|
|
239
255
|
mqaData.networkType = this.statsResults.connectionType.local.networkType;
|
|
240
256
|
|
|
241
257
|
this.mqaSentCount += 1;
|
|
@@ -257,6 +273,7 @@ export class StatsAnalyzer extends EventsScope {
|
|
|
257
273
|
EVENTS.MEDIA_QUALITY,
|
|
258
274
|
{
|
|
259
275
|
data: mqaData.intervals[0],
|
|
276
|
+
// @ts-ignore
|
|
260
277
|
networkType: mqaData.networkType
|
|
261
278
|
}
|
|
262
279
|
);
|
|
@@ -270,7 +287,7 @@ export class StatsAnalyzer extends EventsScope {
|
|
|
270
287
|
* @param {PeerConnection} peerConnection
|
|
271
288
|
* @returns {void}
|
|
272
289
|
*/
|
|
273
|
-
updatePeerconnection(peerConnection) {
|
|
290
|
+
updatePeerconnection(peerConnection: any) {
|
|
274
291
|
this.peerConnection = peerConnection;
|
|
275
292
|
}
|
|
276
293
|
|
|
@@ -282,7 +299,7 @@ export class StatsAnalyzer extends EventsScope {
|
|
|
282
299
|
* @param {PeerConnection} peerConnection
|
|
283
300
|
* @returns {Promise}
|
|
284
301
|
*/
|
|
285
|
-
startAnalyzer(peerConnection) {
|
|
302
|
+
public startAnalyzer(peerConnection: any) {
|
|
286
303
|
if (!this.statsStarted) {
|
|
287
304
|
this.statsStarted = true;
|
|
288
305
|
this.peerConnection = peerConnection;
|
|
@@ -310,7 +327,7 @@ export class StatsAnalyzer extends EventsScope {
|
|
|
310
327
|
* @memberof StatsAnalyzer
|
|
311
328
|
* @returns {void}
|
|
312
329
|
*/
|
|
313
|
-
stopAnalyzer() {
|
|
330
|
+
public stopAnalyzer() {
|
|
314
331
|
const sendOneLastMqa = this.mqaInterval && this.statsInterval;
|
|
315
332
|
|
|
316
333
|
if (this.statsInterval) {
|
|
@@ -344,7 +361,7 @@ export class StatsAnalyzer extends EventsScope {
|
|
|
344
361
|
* @returns {void}
|
|
345
362
|
* @memberof StatsAnalyzer
|
|
346
363
|
*/
|
|
347
|
-
parseGetStatsResult(getStatsResult, type, isSender) {
|
|
364
|
+
private parseGetStatsResult(getStatsResult: any, type: string, isSender: boolean) {
|
|
348
365
|
if (!getStatsResult) {
|
|
349
366
|
return;
|
|
350
367
|
}
|
|
@@ -361,6 +378,7 @@ export class StatsAnalyzer extends EventsScope {
|
|
|
361
378
|
break;
|
|
362
379
|
case 'remote-inbound-rtp':
|
|
363
380
|
case 'remote-outbound-rtp':
|
|
381
|
+
// @ts-ignore
|
|
364
382
|
this.compareSentAndReceived(getStatsResult, type, isSender);
|
|
365
383
|
break;
|
|
366
384
|
case 'remotecandidate':
|
|
@@ -371,6 +389,7 @@ export class StatsAnalyzer extends EventsScope {
|
|
|
371
389
|
this.parseCandidate(getStatsResult, type, isSender, false);
|
|
372
390
|
break;
|
|
373
391
|
case 'media-source':
|
|
392
|
+
// @ts-ignore
|
|
374
393
|
this.parseAudioSource(getStatsResult, type);
|
|
375
394
|
break;
|
|
376
395
|
default:
|
|
@@ -386,7 +405,7 @@ export class StatsAnalyzer extends EventsScope {
|
|
|
386
405
|
* @param {boolean} isSender
|
|
387
406
|
* @returns {void}
|
|
388
407
|
*/
|
|
389
|
-
filterAndParseGetStatsResults(getStatsResults
|
|
408
|
+
private filterAndParseGetStatsResults(getStatsResults: Array<any>, type: string, isSender: boolean) {
|
|
390
409
|
const {types} = DEFAULT_GET_STATS_FILTER;
|
|
391
410
|
|
|
392
411
|
getStatsResults.forEach((result) => {
|
|
@@ -402,7 +421,7 @@ export class StatsAnalyzer extends EventsScope {
|
|
|
402
421
|
* @param {boolean} type
|
|
403
422
|
* @returns {void}
|
|
404
423
|
*/
|
|
405
|
-
parseAudioSource(result, type) {
|
|
424
|
+
parseAudioSource(result: any, type: any) {
|
|
406
425
|
if (!result) {
|
|
407
426
|
return;
|
|
408
427
|
}
|
|
@@ -427,7 +446,7 @@ export class StatsAnalyzer extends EventsScope {
|
|
|
427
446
|
* @memberof StatsAnalyzer
|
|
428
447
|
* @returns {void}
|
|
429
448
|
*/
|
|
430
|
-
emitStartStopEvents = (mediaType, previousValue, currentValue, isLocal) => {
|
|
449
|
+
emitStartStopEvents = (mediaType: string, previousValue: number, currentValue: number, isLocal: boolean) => {
|
|
431
450
|
if (mediaType !== 'audio' && mediaType !== 'video' && mediaType !== 'share') {
|
|
432
451
|
throw new Error(`Unsupported mediaType: ${mediaType}`);
|
|
433
452
|
}
|
|
@@ -475,7 +494,7 @@ export class StatsAnalyzer extends EventsScope {
|
|
|
475
494
|
* @memberof StatsAnalyzer
|
|
476
495
|
* @returns {void}
|
|
477
496
|
*/
|
|
478
|
-
compareLastStatsResult() {
|
|
497
|
+
private compareLastStatsResult() {
|
|
479
498
|
if (this.lastStatsResults !== null && this.meetingMediaStatus) {
|
|
480
499
|
// compare audio stats sent
|
|
481
500
|
let mediaType = STATS.AUDIO_CORRELATE;
|
|
@@ -633,7 +652,7 @@ export class StatsAnalyzer extends EventsScope {
|
|
|
633
652
|
* @memberof StatsAnalyzer
|
|
634
653
|
* @returns {Promise}
|
|
635
654
|
*/
|
|
636
|
-
getStatsAndParse() {
|
|
655
|
+
private getStatsAndParse() {
|
|
637
656
|
if (!this.peerConnection) {
|
|
638
657
|
return Promise.resolve();
|
|
639
658
|
}
|
|
@@ -694,7 +713,7 @@ export class StatsAnalyzer extends EventsScope {
|
|
|
694
713
|
* @param {*} type
|
|
695
714
|
* @returns {void}
|
|
696
715
|
*/
|
|
697
|
-
processOutboundRTPResult(result, type) {
|
|
716
|
+
private processOutboundRTPResult(result: any, type: any) {
|
|
698
717
|
const mediaType = type || STATS.AUDIO_CORRELATE;
|
|
699
718
|
const sendrecvType = STATS.SEND_DIRECTION;
|
|
700
719
|
|
|
@@ -758,7 +777,7 @@ export class StatsAnalyzer extends EventsScope {
|
|
|
758
777
|
* @param {*} type
|
|
759
778
|
* @returns {void}
|
|
760
779
|
*/
|
|
761
|
-
processInboundRTPResult(result, type) {
|
|
780
|
+
private processInboundRTPResult(result: any, type: any) {
|
|
762
781
|
const mediaType = type || STATS.AUDIO_CORRELATE;
|
|
763
782
|
const sendrecvType = STATS.RECEIVE_DIRECTION;
|
|
764
783
|
|
|
@@ -860,7 +879,7 @@ export class StatsAnalyzer extends EventsScope {
|
|
|
860
879
|
*
|
|
861
880
|
* @returns {void}
|
|
862
881
|
*/
|
|
863
|
-
parseCandidate = (result, type, isSender, isRemote) => {
|
|
882
|
+
parseCandidate = (result: any, type: any, isSender: boolean, isRemote: boolean) => {
|
|
864
883
|
if (!result || !result.id) {
|
|
865
884
|
return;
|
|
866
885
|
}
|
|
@@ -935,7 +954,7 @@ export class StatsAnalyzer extends EventsScope {
|
|
|
935
954
|
* @returns {void}
|
|
936
955
|
* @memberof StatsAnalyzer
|
|
937
956
|
*/
|
|
938
|
-
processTrackResult(result, mediaType) {
|
|
957
|
+
private processTrackResult(result: any, mediaType: any) {
|
|
939
958
|
if (!result || result.type !== 'track') {
|
|
940
959
|
return;
|
|
941
960
|
}
|
|
@@ -979,7 +998,7 @@ export class StatsAnalyzer extends EventsScope {
|
|
|
979
998
|
* @returns {void}
|
|
980
999
|
* @memberof StatsAnalyzer
|
|
981
1000
|
*/
|
|
982
|
-
compareSentAndReceived(result, type) {
|
|
1001
|
+
private compareSentAndReceived(result: any, type: any) {
|
|
983
1002
|
if (!type) {
|
|
984
1003
|
return;
|
|
985
1004
|
}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
|
|
2
1
|
import {mean, max} from 'lodash';
|
|
3
2
|
|
|
4
3
|
import {STATS} from '../constants';
|
|
@@ -17,6 +16,7 @@ export const getAudioReceiverMqa = ({audioReceiver, statsResults, lastMqaDataSen
|
|
|
17
16
|
audioReceiver.common.mediaHopByHopLost = (statsResults[mediaType][sendrecvType].totalPacketsLost - lastMqaDataSent[mediaType][sendrecvType].totalPacketsLost) || 0;
|
|
18
17
|
audioReceiver.common.rtpHopByHopLost = statsResults[mediaType][sendrecvType].totalPacketsLost - lastMqaDataSent[mediaType][sendrecvType].totalPacketsLost || 0;
|
|
19
18
|
|
|
19
|
+
// @ts-ignore
|
|
20
20
|
audioReceiver.streams[0].common.maxRtpJitter = max(statsResults[mediaType][sendrecvType].meanRtpJitter) * 1000 || 0;
|
|
21
21
|
audioReceiver.streams[0].common.meanRtpJitter = mean(statsResults[mediaType][sendrecvType].meanRtpJitter) * 1000 || 0;
|
|
22
22
|
audioReceiver.streams[0].common.rtpJitter = audioReceiver.streams[0].common.maxRtpJitter;
|
|
@@ -43,6 +43,7 @@ export const getAudioSenderMqa = ({audioSender, statsResults, lastMqaDataSent})
|
|
|
43
43
|
audioSender.common.common.direction = statsResults[mediaType].direction;
|
|
44
44
|
audioSender.common.transportType = statsResults.connectionType.local.transport[0];
|
|
45
45
|
|
|
46
|
+
// @ts-ignore
|
|
46
47
|
audioSender.common.maxRemoteJitter = max(statsResults[mediaType][sendrecvType].meanRemoteJitter) * 1000 || 0;
|
|
47
48
|
audioSender.common.meanRemoteJitter = mean(statsResults[mediaType][sendrecvType].meanRemoteJitter) * 1000 || 0;
|
|
48
49
|
|
|
@@ -56,6 +57,7 @@ export const getAudioSenderMqa = ({audioSender, statsResults, lastMqaDataSent})
|
|
|
56
57
|
|
|
57
58
|
audioSender.common.remoteLossRate = totalpacketsLostForaMin > 0 ? (totalpacketsLostForaMin * 100 / audioSender.common.rtpPackets) : 0; // This is the packets sent with in last min || 0;
|
|
58
59
|
|
|
60
|
+
// @ts-ignore
|
|
59
61
|
audioSender.common.maxRoundTripTime = max(statsResults[mediaType][sendrecvType].meanRoundTripTime) * 1000 || 0;
|
|
60
62
|
audioSender.common.meanRoundTripTime = mean(statsResults[mediaType][sendrecvType].meanRoundTripTime) * 1000 || 0;
|
|
61
63
|
audioSender.common.roundTripTime = audioSender.common.maxRoundTripTime;
|
|
@@ -97,6 +99,7 @@ export const getVideoReceiverMqa = ({
|
|
|
97
99
|
|
|
98
100
|
// calculate this values
|
|
99
101
|
|
|
102
|
+
// @ts-ignore
|
|
100
103
|
videoReceiver.common.maxRemoteJitter = max(statsResults[mediaType][sendrecvType].meanRemoteJitter) * 1000 || 0;
|
|
101
104
|
videoReceiver.common.meanRemoteJitter = mean(statsResults[mediaType][sendrecvType].meanRemoteJitter) * 1000 || 0;
|
|
102
105
|
|
|
@@ -134,6 +137,7 @@ export const getVideoSenderMqa = ({
|
|
|
134
137
|
videoSender.common.common.direction = statsResults[mediaType].direction;
|
|
135
138
|
videoSender.common.transportType = statsResults.connectionType.local.transport[0];
|
|
136
139
|
|
|
140
|
+
// @ts-ignore
|
|
137
141
|
videoSender.common.maxRemoteJitter = max(statsResults[mediaType][sendrecvType].meanRemoteJitter) * 1000 || 0;
|
|
138
142
|
videoSender.common.meanRemoteJitter = mean(statsResults[mediaType][sendrecvType].meanRemoteJitter) * 1000 || 0;
|
|
139
143
|
|
|
@@ -146,6 +150,7 @@ export const getVideoSenderMqa = ({
|
|
|
146
150
|
|
|
147
151
|
videoSender.common.remoteLossRate = totalpacketsLostForaMin > 0 ? (totalpacketsLostForaMin) * 100 / (videoSender.common.rtpPackets + totalpacketsLostForaMin) : 0; // This is the packets sent with in last min || 0;
|
|
148
152
|
|
|
153
|
+
// @ts-ignore
|
|
149
154
|
videoSender.common.maxRoundTripTime = max(statsResults[mediaType][sendrecvType].meanRoundTripTime) * 1000 || 0;
|
|
150
155
|
videoSender.common.meanRoundTripTime = mean(statsResults[mediaType][sendrecvType].meanRoundTripTime) * 1000 || 0;
|
|
151
156
|
videoSender.common.roundTripTime = videoSender.common.maxRoundTripTime;
|
|
@@ -6,6 +6,12 @@ import {v4 as uuidv4} from 'uuid';
|
|
|
6
6
|
* @class Transcription
|
|
7
7
|
*/
|
|
8
8
|
export default class Transcription {
|
|
9
|
+
webSocketUrl: any;
|
|
10
|
+
sessionID: any;
|
|
11
|
+
members: any;
|
|
12
|
+
memberCSIs: any;
|
|
13
|
+
webSocket: any;
|
|
14
|
+
|
|
9
15
|
/**
|
|
10
16
|
* @param {string} webSocketUrl
|
|
11
17
|
* @param {sessionID} sessionId
|
|
@@ -13,7 +19,7 @@ export default class Transcription {
|
|
|
13
19
|
* @constructor
|
|
14
20
|
* @memberof Transcription
|
|
15
21
|
*/
|
|
16
|
-
constructor(webSocketUrl, sessionId, members) {
|
|
22
|
+
constructor(webSocketUrl: string, sessionId: any, members: object) {
|
|
17
23
|
this.webSocketUrl = webSocketUrl;
|
|
18
24
|
this.sessionID = sessionId;
|
|
19
25
|
this.members = members;
|
|
@@ -32,7 +38,7 @@ export default class Transcription {
|
|
|
32
38
|
* @param {string} sessionID
|
|
33
39
|
* @returns {void}
|
|
34
40
|
*/
|
|
35
|
-
connect(token) {
|
|
41
|
+
connect(token: string) {
|
|
36
42
|
this.webSocket.onopen = () => {
|
|
37
43
|
this.webSocket.send(JSON.stringify({
|
|
38
44
|
id: uuidv4(),
|
|
@@ -46,10 +52,10 @@ export default class Transcription {
|
|
|
46
52
|
/**
|
|
47
53
|
* Sets callback to invoke when the web socket connection is closed.
|
|
48
54
|
*
|
|
49
|
-
* @param {
|
|
55
|
+
* @param {Function} callback
|
|
50
56
|
* @returns {void}
|
|
51
57
|
*/
|
|
52
|
-
onCloseSocket(callback) {
|
|
58
|
+
onCloseSocket(callback: Function) {
|
|
53
59
|
if (callback) {
|
|
54
60
|
this.webSocket.onclose = (event) => {
|
|
55
61
|
callback(event);
|
|
@@ -61,10 +67,10 @@ export default class Transcription {
|
|
|
61
67
|
* Sets callback to invoke when a web socket connection error occurs.
|
|
62
68
|
* An event parameter will be send to the callback.
|
|
63
69
|
*
|
|
64
|
-
* @param {
|
|
70
|
+
* @param {Function} callback
|
|
65
71
|
* @returns {void}
|
|
66
72
|
*/
|
|
67
|
-
onErrorSocket(callback) {
|
|
73
|
+
onErrorSocket(callback: Function) {
|
|
68
74
|
if (callback) {
|
|
69
75
|
this.webSocket.onerror = (event) => {
|
|
70
76
|
callback(event);
|
|
@@ -79,7 +85,7 @@ export default class Transcription {
|
|
|
79
85
|
* @param {object} csis
|
|
80
86
|
* @returns {object}
|
|
81
87
|
*/
|
|
82
|
-
getSpeaker(csis) {
|
|
88
|
+
private getSpeaker(csis: any) {
|
|
83
89
|
for (const csi of csis) {
|
|
84
90
|
const member = this.memberCSIs[csi];
|
|
85
91
|
|
|
@@ -89,7 +95,7 @@ export default class Transcription {
|
|
|
89
95
|
}
|
|
90
96
|
|
|
91
97
|
return Object.values(this.members.membersCollection.members)
|
|
92
|
-
.find((member) => {
|
|
98
|
+
.find((member: any) => {
|
|
93
99
|
const memberCSIs = member.participant.status.csis;
|
|
94
100
|
let selfIsSpeaking = false;
|
|
95
101
|
|
|
@@ -108,10 +114,10 @@ export default class Transcription {
|
|
|
108
114
|
/**
|
|
109
115
|
* Sends transcription data to given callback as it arrives.
|
|
110
116
|
*
|
|
111
|
-
* @param {
|
|
117
|
+
* @param {Function} callback
|
|
112
118
|
* @returns {void}
|
|
113
119
|
*/
|
|
114
|
-
subscribe(callback) {
|
|
120
|
+
subscribe(callback: Function) {
|
|
115
121
|
let data, csis, speaker, transcription;
|
|
116
122
|
|
|
117
123
|
this.webSocket.onmessage = (event) => {
|
|
@@ -144,4 +150,3 @@ export default class Transcription {
|
|
|
144
150
|
this.webSocket.close();
|
|
145
151
|
}
|
|
146
152
|
}
|
|
147
|
-
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
import {assert} from '@webex/test-helper-chai';
|
|
3
3
|
import {skipInNode, jenkinsOnly} from '@webex/test-helper-mocha';
|
|
4
4
|
import {patterns} from '@webex/common';
|
|
5
|
-
|
|
6
5
|
import MeetingInfoUtil from '@webex/plugin-meetings/src/meeting-info/utilv2';
|
|
7
6
|
|
|
8
7
|
import CMR from '../../utils/cmr';
|
|
@@ -10,7 +9,7 @@ import testUtils from '../../utils/testUtils';
|
|
|
10
9
|
|
|
11
10
|
require('dotenv').config();
|
|
12
11
|
|
|
13
|
-
const webexTestUsers = require('../../utils/webex-test-users
|
|
12
|
+
const webexTestUsers = require('../../utils/webex-test-users');
|
|
14
13
|
|
|
15
14
|
let userSet, alice, bob, chris, guest;
|
|
16
15
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import 'jsdom-global/register';
|
|
2
2
|
import {assert} from '@webex/test-helper-chai';
|
|
3
3
|
import RoapUtil from '@webex/plugin-meetings/src/roap/util';
|
|
4
|
-
import PeerConnectionManager from '@webex/plugin-meetings/src/peer-connection-manager/index
|
|
4
|
+
import PeerConnectionManager from '@webex/plugin-meetings/src/peer-connection-manager/index';
|
|
5
5
|
import sinon from 'sinon';
|
|
6
6
|
|
|
7
7
|
describe('RoapUtil', () => {
|