@webex/plugin-meetings 2.18.0 → 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 (64) 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/effectsState.js +1 -2
  5. package/dist/meeting/effectsState.js.map +1 -1
  6. package/dist/meeting/index.js +366 -496
  7. package/dist/meeting/index.js.map +1 -1
  8. package/dist/meeting/util.js +4 -213
  9. package/dist/meeting/util.js.map +1 -1
  10. package/dist/meetings/index.js +0 -28
  11. package/dist/meetings/index.js.map +1 -1
  12. package/dist/statsAnalyzer/index.js +145 -86
  13. package/dist/statsAnalyzer/index.js.map +1 -1
  14. package/package.json +6 -8
  15. package/src/constants.ts +1 -214
  16. package/src/meeting/effectsState.js +1 -2
  17. package/src/meeting/index.js +120 -213
  18. package/src/meeting/util.js +4 -252
  19. package/src/meetings/index.js +0 -22
  20. package/src/statsAnalyzer/index.js +164 -99
  21. package/test/integration/spec/journey.js +2 -67
  22. package/test/unit/spec/meeting/effectsState.js +2 -1
  23. package/test/unit/spec/meeting/index.js +88 -29
  24. package/test/unit/spec/meeting/utils.js +0 -2
  25. package/test/unit/spec/stats-analyzer/index.js +209 -1
  26. package/dist/analyzer/analyzer.js +0 -113
  27. package/dist/analyzer/analyzer.js.map +0 -1
  28. package/dist/analyzer/calculator.js +0 -87
  29. package/dist/analyzer/calculator.js.map +0 -1
  30. package/dist/metrics/mqa-processor.js +0 -170
  31. package/dist/metrics/mqa-processor.js.map +0 -1
  32. package/dist/stats/data.js +0 -93
  33. package/dist/stats/data.js.map +0 -1
  34. package/dist/stats/events.js +0 -222
  35. package/dist/stats/events.js.map +0 -1
  36. package/dist/stats/filter.js +0 -84
  37. package/dist/stats/filter.js.map +0 -1
  38. package/dist/stats/history.js +0 -147
  39. package/dist/stats/history.js.map +0 -1
  40. package/dist/stats/index.js +0 -425
  41. package/dist/stats/index.js.map +0 -1
  42. package/dist/stats/metrics.js +0 -112
  43. package/dist/stats/metrics.js.map +0 -1
  44. package/dist/stats/stats.js +0 -592
  45. package/dist/stats/stats.js.map +0 -1
  46. package/dist/stats/stream.js +0 -156
  47. package/dist/stats/stream.js.map +0 -1
  48. package/dist/stats/transformer.js +0 -126
  49. package/dist/stats/transformer.js.map +0 -1
  50. package/dist/stats/util.js +0 -64
  51. package/dist/stats/util.js.map +0 -1
  52. package/src/analyzer/analyzer.js +0 -78
  53. package/src/analyzer/calculator.js +0 -77
  54. package/src/metrics/mqa-processor.js +0 -118
  55. package/src/stats/data.js +0 -56
  56. package/src/stats/events.js +0 -185
  57. package/src/stats/filter.js +0 -40
  58. package/src/stats/history.js +0 -107
  59. package/src/stats/index.js +0 -320
  60. package/src/stats/metrics.js +0 -95
  61. package/src/stats/stats.js +0 -477
  62. package/src/stats/stream.js +0 -108
  63. package/src/stats/transformer.js +0 -109
  64. 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
  }