@webex/plugin-meetings 2.19.1 → 2.19.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.
Files changed (60) hide show
  1. package/README.md +0 -300
  2. package/dist/constants.js +3 -206
  3. package/dist/constants.js.map +1 -1
  4. package/dist/meeting/index.js +352 -489
  5. package/dist/meeting/index.js.map +1 -1
  6. package/dist/meeting/util.js +4 -213
  7. package/dist/meeting/util.js.map +1 -1
  8. package/dist/meetings/index.js +0 -28
  9. package/dist/meetings/index.js.map +1 -1
  10. package/dist/statsAnalyzer/index.js +145 -86
  11. package/dist/statsAnalyzer/index.js.map +1 -1
  12. package/package.json +5 -7
  13. package/src/constants.ts +1 -214
  14. package/src/meeting/index.js +110 -208
  15. package/src/meeting/util.js +4 -252
  16. package/src/meetings/index.js +0 -22
  17. package/src/statsAnalyzer/index.js +164 -99
  18. package/test/integration/spec/journey.js +2 -67
  19. package/test/unit/spec/meeting/index.js +88 -29
  20. package/test/unit/spec/meeting/utils.js +0 -2
  21. package/test/unit/spec/stats-analyzer/index.js +209 -1
  22. package/dist/analyzer/analyzer.js +0 -113
  23. package/dist/analyzer/analyzer.js.map +0 -1
  24. package/dist/analyzer/calculator.js +0 -87
  25. package/dist/analyzer/calculator.js.map +0 -1
  26. package/dist/metrics/mqa-processor.js +0 -170
  27. package/dist/metrics/mqa-processor.js.map +0 -1
  28. package/dist/stats/data.js +0 -93
  29. package/dist/stats/data.js.map +0 -1
  30. package/dist/stats/events.js +0 -222
  31. package/dist/stats/events.js.map +0 -1
  32. package/dist/stats/filter.js +0 -84
  33. package/dist/stats/filter.js.map +0 -1
  34. package/dist/stats/history.js +0 -147
  35. package/dist/stats/history.js.map +0 -1
  36. package/dist/stats/index.js +0 -425
  37. package/dist/stats/index.js.map +0 -1
  38. package/dist/stats/metrics.js +0 -112
  39. package/dist/stats/metrics.js.map +0 -1
  40. package/dist/stats/stats.js +0 -592
  41. package/dist/stats/stats.js.map +0 -1
  42. package/dist/stats/stream.js +0 -156
  43. package/dist/stats/stream.js.map +0 -1
  44. package/dist/stats/transformer.js +0 -126
  45. package/dist/stats/transformer.js.map +0 -1
  46. package/dist/stats/util.js +0 -64
  47. package/dist/stats/util.js.map +0 -1
  48. package/src/analyzer/analyzer.js +0 -78
  49. package/src/analyzer/calculator.js +0 -77
  50. package/src/metrics/mqa-processor.js +0 -118
  51. package/src/stats/data.js +0 -56
  52. package/src/stats/events.js +0 -185
  53. package/src/stats/filter.js +0 -40
  54. package/src/stats/history.js +0 -107
  55. package/src/stats/index.js +0 -320
  56. package/src/stats/metrics.js +0 -95
  57. package/src/stats/stats.js +0 -477
  58. package/src/stats/stream.js +0 -108
  59. package/src/stats/transformer.js +0 -109
  60. package/src/stats/util.js +0 -44
@@ -1,22 +1,17 @@
1
1
  import {isEmpty} from 'lodash';
2
2
 
3
3
  import {MeetingNotActiveError, UserNotJoinedError} from '../common/errors/webex-errors';
4
- import StatsUtil from '../stats/util';
5
4
  import Metrics from '../metrics';
6
- import {eventType, trigger, mediaType} from '../metrics/config';
5
+ import {eventType, trigger} from '../metrics/config';
7
6
  import Media from '../media';
8
7
  import LoggerProxy from '../common/logs/logger-proxy';
9
- import WebRTCStats from '../stats/index';
10
8
  import {INTENT_TO_JOIN,
11
9
  _LEFT_,
12
10
  _IDLE_,
13
11
  _JOINED_,
14
- STATS,
15
- EVENT_TRIGGERS,
16
12
  PASSWORD_STATUS,
17
13
  DISPLAY_HINTS,
18
14
  FULL_STATE} from '../constants';
19
- import Trigger from '../common/events/trigger-proxy';
20
15
  import IntentToJoinError from '../common/errors/intent-to-join';
21
16
  import JoinMeetingError from '../common/errors/join-meeting';
22
17
  import ParameterError from '../common/errors/parameter';
@@ -121,9 +116,10 @@ MeetingUtil.joinMeeting = (meeting, options) => {
121
116
 
122
117
  MeetingUtil.cleanUp = (meeting) => {
123
118
  // make sure we send last metrics before we close the peerconnection
124
- if (meeting.statsAnalyzer) meeting.statsAnalyzer.stopAnalyzer();
119
+ const stopStatsAnalyzer = (meeting.statsAnalyzer) ? meeting.statsAnalyzer.stopAnalyzer() : Promise.resolve();
125
120
 
126
- return meeting.closeLocalStream()
121
+ return stopStatsAnalyzer
122
+ .then(() => meeting.closeLocalStream())
127
123
  .then(() => meeting.closeLocalShare())
128
124
  .then(() => meeting.closeRemoteTracks())
129
125
  .then(() => meeting.closePeerConnections())
@@ -132,7 +128,6 @@ MeetingUtil.cleanUp = (meeting) => {
132
128
  meeting.unsetLocalShareTrack();
133
129
  meeting.unsetRemoteTracks();
134
130
  meeting.unsetPeerConnections();
135
- meeting.cleanMQAInterval();
136
131
  meeting.reconnectionManager.cleanUp();
137
132
  })
138
133
  .then(() => meeting.roap.stop(meeting.correlationId, meeting.roapSeq));
@@ -467,249 +462,6 @@ MeetingUtil.unlockMeeting = (actions, request, locusUrl) => {
467
462
  return Promise.reject(new PermissionError('Unlock not allowed, due to joined property.'));
468
463
  };
469
464
 
470
- MeetingUtil.startInternalStats = (meeting) => {
471
- if (!meeting.internalStats) {
472
- const options = {
473
- useConfig: true,
474
- senders: [
475
- {
476
- id: 'mainAudio',
477
- correlate: 'audio',
478
- history: true,
479
- onEvent: (event) => {
480
- // TODO: we don't need checks like this since it comes from the transceiver
481
- // refactor event linkage to use callbacks instead of events
482
- if (event.kind === 'audio' && event.stat === 'bytesSent') {
483
- Trigger.trigger(
484
- meeting,
485
- {
486
- file: 'meeting/util',
487
- function: 'startInternalStats'
488
- },
489
- EVENT_TRIGGERS.MEETING_MEDIA_LOCAL_STARTED,
490
- {
491
- type: mediaType.AUDIO
492
- }
493
- );
494
- Metrics.postEvent({
495
- event: eventType.SENDING_MEDIA_START,
496
- meeting,
497
- data: {
498
- mediaType: mediaType.AUDIO
499
- }
500
- });
501
- }
502
- else if (event.stop && event.stat === 'bytesSent') {
503
- Metrics.postEvent({
504
- event: eventType.SENDING_MEDIA_STOP,
505
- meeting,
506
- data: {
507
- mediaType: mediaType.AUDIO
508
- }
509
- });
510
- }
511
- },
512
- onData: () => {}
513
- },
514
- {
515
- id: 'mainVideo',
516
- correlate: 'video',
517
- history: true,
518
- onEvent: (event) => {
519
- if (event.kind === 'video' && event.stat === 'bytesSent') {
520
- Trigger.trigger(
521
- meeting,
522
- {
523
- file: 'meeting/util',
524
- function: 'startInternalStats'
525
- },
526
- EVENT_TRIGGERS.MEETING_MEDIA_LOCAL_STARTED,
527
- {
528
- type: mediaType.VIDEO
529
- }
530
- );
531
- Metrics.postEvent({
532
- event: eventType.SENDING_MEDIA_START,
533
- meeting,
534
- data: {
535
- mediaType: mediaType.VIDEO
536
- }
537
- });
538
- }
539
- else if (event.stop && event.stat === 'bytesSent') {
540
- Metrics.postEvent({
541
- event: eventType.SENDING_MEDIA_STOP,
542
- meeting,
543
- data: {
544
- mediaType: mediaType.VIDEO
545
- }
546
- });
547
- }
548
- },
549
- onData: () => {}
550
- },
551
- {
552
- id: 'mainShare',
553
- correlate: 'video',
554
- onEvent: (event) => {
555
- if (event.kind === 'share' && event.stat === 'bytesSent') {
556
- Trigger.trigger(
557
- meeting,
558
- {
559
- file: 'meeting/util',
560
- function: 'startInternalStats'
561
- },
562
- EVENT_TRIGGERS.MEETING_MEDIA_LOCAL_STARTED,
563
- {
564
- type: mediaType.SHARE
565
- }
566
- );
567
- Metrics.postEvent({
568
- event: eventType.SENDING_SHARE_START,
569
- meeting,
570
- data: {
571
- mediaType: mediaType.SHARE
572
- }
573
- });
574
- }
575
- else if (event.stop && event.stat === 'bytesSent') {
576
- Metrics.postEvent({
577
- event: eventType.SENDING_SHARE_STOP,
578
- meeting,
579
- data: {
580
- mediaType: mediaType.SHARE
581
- }
582
- });
583
- }
584
- },
585
- onData: () => {}
586
- }
587
- ],
588
- receivers: [
589
- {
590
- id: 'mainAudio',
591
- correlate: 'audio',
592
- history: true,
593
- onEvent: (event) => {
594
- if (event.kind === 'audio' && event.stat === 'bytesReceived') {
595
- Trigger.trigger(
596
- meeting,
597
- {
598
- file: 'meeting/util',
599
- function: 'startInternalStats'
600
- },
601
- EVENT_TRIGGERS.MEETING_MEDIA_REMOTE_STARTED,
602
- {
603
- type: mediaType.AUDIO
604
- }
605
- );
606
- Metrics.postEvent({
607
- event: eventType.RECEIVING_MEDIA_START,
608
- meeting,
609
- data: {
610
- mediaType: mediaType.AUDIO
611
- }
612
- });
613
- }
614
- else if (event.stop && event.stat === 'bytesReceived') {
615
- Metrics.postEvent({
616
- event: eventType.RECEIVING_MEDIA_STOP,
617
- meeting,
618
- data: {
619
- mediaType: mediaType.AUDIO
620
- }
621
- });
622
- }
623
- },
624
- onData: () => {}
625
- },
626
- {
627
- id: 'mainVideo',
628
- correlate: 'video',
629
- history: true,
630
- onEvent: (event) => {
631
- if (event.kind === 'video' && event.stat === 'bytesReceived') {
632
- Trigger.trigger(
633
- meeting,
634
- {
635
- file: 'meeting/util',
636
- function: 'startInternalStats'
637
- },
638
- EVENT_TRIGGERS.MEETING_MEDIA_REMOTE_STARTED,
639
- {
640
- type: mediaType.VIDEO
641
- }
642
- );
643
- Metrics.postEvent({
644
- event: eventType.RECEIVING_MEDIA_START,
645
- meeting,
646
- data: {
647
- mediaType: mediaType.VIDEO
648
- }
649
- });
650
- }
651
- else if (event.stop && event.stat === 'bytesReceived') {
652
- Metrics.postEvent({
653
- event: eventType.RECEIVING_MEDIA_STOP,
654
- meeting,
655
- data: {
656
- mediaType: mediaType.VIDEO
657
- }
658
- });
659
- }
660
- },
661
- onData: () => {}
662
- },
663
- {
664
- id: 'mainShare',
665
- correlate: 'video',
666
- onEvent: (event) => {
667
- if (event.kind === 'share' && event.stat === 'bytesReceived') {
668
- Trigger.trigger(
669
- meeting,
670
- {
671
- file: 'meeting/util',
672
- function: 'startInternalStats'
673
- },
674
- EVENT_TRIGGERS.MEETING_MEDIA_REMOTE_STARTED,
675
- {
676
- type: mediaType.SHARE
677
- }
678
- );
679
- Metrics.postEvent({
680
- event: eventType.RECEIVING_MEDIA_START,
681
- meeting,
682
- data: {
683
- mediaType: mediaType.SHARE
684
- }
685
- });
686
- }
687
- else if (event.stop && event.stat === 'bytesReceived') {
688
- Metrics.postEvent({
689
- event: eventType.RECEIVING_MEDIA_STOP,
690
- meeting,
691
- data: {
692
- mediaType: mediaType.SHARE
693
- }
694
- });
695
- }
696
- },
697
- onData: () => {}
698
- }
699
- ]
700
- };
701
-
702
- StatsUtil.generateOptions(options, STATS.CONFIG, meeting);
703
-
704
- options.config = STATS.CONFIG;
705
-
706
- // pass the attrs and options for the webex instance
707
- meeting.internalStats = new WebRTCStats(meeting.attrs, meeting.options, options);
708
- }
709
-
710
- return meeting.internalStats;
711
- };
712
-
713
465
  MeetingUtil.handleAudioLogging = (audioTrack) => {
714
466
  const LOG_HEADER = 'MeetingUtil#handleAudioLogging -->';
715
467
 
@@ -45,8 +45,6 @@ import Meeting from '../meeting';
45
45
  import PersonalMeetingRoom from '../personal-meeting-room';
46
46
  import Reachability from '../reachability';
47
47
  import Request from '../meetings/request';
48
- import StatsAnalyzer from '../analyzer/analyzer';
49
- import StatsCalculator from '../analyzer/calculator';
50
48
  import PasswordError from '../common/errors/password-error';
51
49
  import CaptchaError from '../common/errors/captcha-error';
52
50
 
@@ -971,24 +969,4 @@ export default class Meetings extends WebexPlugin {
971
969
  getLogger() {
972
970
  return LoggerProxy.get();
973
971
  }
974
-
975
- /**
976
- * Get the Stats Analyzer singleton
977
- * @returns {StatsAnalyzer}
978
- * @public
979
- * @memberof Meetings
980
- */
981
- getAnalyzer() {
982
- return StatsAnalyzer;
983
- }
984
-
985
- /**
986
- * Get the Stats Calculator singleton
987
- * @returns {StatsCalculator}
988
- * @public
989
- * @memberof Meetings
990
- */
991
- getCalculator() {
992
- return StatsCalculator;
993
- }
994
972
  }