@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.
- package/README.md +0 -300
- package/dist/constants.js +3 -206
- package/dist/constants.js.map +1 -1
- package/dist/meeting/index.js +352 -489
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/util.js +4 -213
- package/dist/meeting/util.js.map +1 -1
- package/dist/meetings/index.js +0 -28
- package/dist/meetings/index.js.map +1 -1
- package/dist/statsAnalyzer/index.js +145 -86
- package/dist/statsAnalyzer/index.js.map +1 -1
- package/package.json +5 -7
- package/src/constants.ts +1 -214
- package/src/meeting/index.js +110 -208
- package/src/meeting/util.js +4 -252
- package/src/meetings/index.js +0 -22
- package/src/statsAnalyzer/index.js +164 -99
- package/test/integration/spec/journey.js +2 -67
- package/test/unit/spec/meeting/index.js +88 -29
- package/test/unit/spec/meeting/utils.js +0 -2
- package/test/unit/spec/stats-analyzer/index.js +209 -1
- package/dist/analyzer/analyzer.js +0 -113
- package/dist/analyzer/analyzer.js.map +0 -1
- package/dist/analyzer/calculator.js +0 -87
- package/dist/analyzer/calculator.js.map +0 -1
- package/dist/metrics/mqa-processor.js +0 -170
- package/dist/metrics/mqa-processor.js.map +0 -1
- package/dist/stats/data.js +0 -93
- package/dist/stats/data.js.map +0 -1
- package/dist/stats/events.js +0 -222
- package/dist/stats/events.js.map +0 -1
- package/dist/stats/filter.js +0 -84
- package/dist/stats/filter.js.map +0 -1
- package/dist/stats/history.js +0 -147
- package/dist/stats/history.js.map +0 -1
- package/dist/stats/index.js +0 -425
- package/dist/stats/index.js.map +0 -1
- package/dist/stats/metrics.js +0 -112
- package/dist/stats/metrics.js.map +0 -1
- package/dist/stats/stats.js +0 -592
- package/dist/stats/stats.js.map +0 -1
- package/dist/stats/stream.js +0 -156
- package/dist/stats/stream.js.map +0 -1
- package/dist/stats/transformer.js +0 -126
- package/dist/stats/transformer.js.map +0 -1
- package/dist/stats/util.js +0 -64
- package/dist/stats/util.js.map +0 -1
- package/src/analyzer/analyzer.js +0 -78
- package/src/analyzer/calculator.js +0 -77
- package/src/metrics/mqa-processor.js +0 -118
- package/src/stats/data.js +0 -56
- package/src/stats/events.js +0 -185
- package/src/stats/filter.js +0 -40
- package/src/stats/history.js +0 -107
- package/src/stats/index.js +0 -320
- package/src/stats/metrics.js +0 -95
- package/src/stats/stats.js +0 -477
- package/src/stats/stream.js +0 -108
- package/src/stats/transformer.js +0 -109
- package/src/stats/util.js +0 -44
package/README.md
CHANGED
|
@@ -111,12 +111,6 @@ webex.meetings.syncMeetings().then(() => {
|
|
|
111
111
|
webex.meetings.getMeetingByType('SIP_URI', sipUri)
|
|
112
112
|
```
|
|
113
113
|
|
|
114
|
-
##### Get the StatsAnalyzer Or StatsCalculator Singleton(s)
|
|
115
|
-
```js
|
|
116
|
-
const statsAnalyzer = webex.meetings.getAnalyzer();
|
|
117
|
-
const statsCalculator = webex.meetings.getCalculator();
|
|
118
|
-
```
|
|
119
|
-
|
|
120
114
|
##### Properties
|
|
121
115
|
```js
|
|
122
116
|
webex.meetings.personalMeetingRoom // the personal meeting room instance
|
|
@@ -693,280 +687,6 @@ meeting.reconnect();
|
|
|
693
687
|
#### Scheduled Meetings
|
|
694
688
|
For scheduled meetings see https://github.com/webex/webex-js-sdk/tree/master/packages/node_modules/%40webex/internal-plugin-calendar
|
|
695
689
|
|
|
696
|
-
#### getStats
|
|
697
|
-
|
|
698
|
-
Note: accessor methods get are simply helpers, one can always use dot notation to work on the objects in the same way
|
|
699
|
-
Note: correlate values will be either 'audio', 'video', or 'share' for use with the default config (plugin-meeting's media)
|
|
700
|
-
|
|
701
|
-
##### Default configuration
|
|
702
|
-
```javascript
|
|
703
|
-
// generate some IDs to use with the default configs
|
|
704
|
-
const audioSenderId = '0';
|
|
705
|
-
const audioReceiverId = '1';
|
|
706
|
-
// for default configuration (using plugin-meetings media)
|
|
707
|
-
const options = {
|
|
708
|
-
useConfig: true, // inform to create using config
|
|
709
|
-
senders: [
|
|
710
|
-
{ // audio sender object config option
|
|
711
|
-
id: audioSenderId, // associate an id for later lookup
|
|
712
|
-
correlate: 'audio', // NECESSARY KEY, see Note
|
|
713
|
-
history: true, // optional extra, to track history on this sender's stats
|
|
714
|
-
onData: (data) => { // callback for when filtered data comes through
|
|
715
|
-
console.log('audioSender->', data);
|
|
716
|
-
},
|
|
717
|
-
onClose: (error) => { console.warn('audioSender->', error); }, // callback for when the stream closes for any reason
|
|
718
|
-
onEvent: (event) => { console.log('audioSender->', event); } // callback for when triggered events come through the stream such as firstBytesSent
|
|
719
|
-
}
|
|
720
|
-
],
|
|
721
|
-
receivers: [
|
|
722
|
-
{ // audio receiver object config option
|
|
723
|
-
id: audioReceiverId,
|
|
724
|
-
correlate: 'audio',
|
|
725
|
-
onData: (data) => { console.log('audioReceiver->', data); },
|
|
726
|
-
onClose: (error) => { console.warn('audioReceiver->', error); },
|
|
727
|
-
onEvent: (event) => { console.log('audioReceiver->', event); }
|
|
728
|
-
}
|
|
729
|
-
]
|
|
730
|
-
};
|
|
731
|
-
|
|
732
|
-
// create the stats object using the options config, merged with the default config
|
|
733
|
-
// pass true as the second option to override the previous stats object
|
|
734
|
-
meeting.getStats(options, true);
|
|
735
|
-
```
|
|
736
|
-
|
|
737
|
-
##### Create Without Configuration
|
|
738
|
-
```javascript
|
|
739
|
-
const shareSenderId = '4';
|
|
740
|
-
// notice no meeting is needed, and no correlate key is required, this is the manual builder method
|
|
741
|
-
meeting
|
|
742
|
-
.getStats()
|
|
743
|
-
.addSenderStats(shareSenderId)
|
|
744
|
-
.withHistory()
|
|
745
|
-
.withId(shareSenderId)
|
|
746
|
-
.withName('shareSender')
|
|
747
|
-
.withFilter(meeting.mediaProperties.peerConnection.shareTransceiver.sender, meeting.mediaProperties.peerConnection)
|
|
748
|
-
.withEvents()
|
|
749
|
-
.onData((data) => {
|
|
750
|
-
console.log('shareSender->', data);
|
|
751
|
-
})
|
|
752
|
-
.onClose((error) => { console.warn('shareSender->', error); })
|
|
753
|
-
.onEvent((event) => { console.log('shareSender->', event); })
|
|
754
|
-
.build();
|
|
755
|
-
```
|
|
756
|
-
|
|
757
|
-
##### Create Configurations On The Fly
|
|
758
|
-
```javascript
|
|
759
|
-
const videoSenderId = '2';
|
|
760
|
-
const videoReceiverId = '3';
|
|
761
|
-
const shareReceiverId = '5';
|
|
762
|
-
|
|
763
|
-
meeting.getStats().associateMeeting(meeting); // NECESSARY for adding senders/receivers dynamically AFTER getStats was previously created
|
|
764
|
-
|
|
765
|
-
meeting.getStats().addSenders(
|
|
766
|
-
[
|
|
767
|
-
{ // video receiver config object, using default config
|
|
768
|
-
id: videoSenderId, // associate the ID
|
|
769
|
-
correlate: 'video', // NECESSARY KEY
|
|
770
|
-
onData: (data) => { console.log('videoSender->', data); },
|
|
771
|
-
onClose: (error) => { console.warn('videoSender->', error); },
|
|
772
|
-
onEvent: (event) => { console.log('videoSender->', event); }
|
|
773
|
-
}
|
|
774
|
-
],
|
|
775
|
-
true // using the default configuration afterwards when adding new stats
|
|
776
|
-
);
|
|
777
|
-
|
|
778
|
-
meeting.getStats().addReceivers(
|
|
779
|
-
[
|
|
780
|
-
{
|
|
781
|
-
id: videoReceiverId,
|
|
782
|
-
correlate: 'video', // NECESSARY KEY
|
|
783
|
-
history: true,
|
|
784
|
-
onData: (data) => { console.log('videoReceiver->', data); },
|
|
785
|
-
onClose: (error) => { console.warn('videoReceiver->', error); },
|
|
786
|
-
onEvent: (event) => { console.log('videoReceiver->', event); }
|
|
787
|
-
}
|
|
788
|
-
],
|
|
789
|
-
true
|
|
790
|
-
);
|
|
791
|
-
|
|
792
|
-
meeting.getStats().addReceiver({
|
|
793
|
-
id: shareReceiverId,
|
|
794
|
-
correlate: 'share', // NECESSARY KEY
|
|
795
|
-
// history: true, // could add this
|
|
796
|
-
// aggregator: true, // could add this
|
|
797
|
-
// interval: true, // could add this
|
|
798
|
-
onData: (data) => { console.log('shareReceiver->', data); },
|
|
799
|
-
onClose: (error) => { console.warn('shareReceiver->', error); },
|
|
800
|
-
onEvent: (event) => { console.log('shareReceiver->', event); }
|
|
801
|
-
}, true);
|
|
802
|
-
```
|
|
803
|
-
|
|
804
|
-
##### Add Configurations on the Fly
|
|
805
|
-
|
|
806
|
-
```javascript
|
|
807
|
-
// you can always add additional configurations later on based on events, or some timing, using the builder above
|
|
808
|
-
// say you created the object above with the options method, and you decided you wanted to add an aggregator to it
|
|
809
|
-
meeting
|
|
810
|
-
.getStats()
|
|
811
|
-
.getSender('0')
|
|
812
|
-
.withHistory()
|
|
813
|
-
// and now you have an aggregator instance to work with on that sender stats object
|
|
814
|
-
```
|
|
815
|
-
|
|
816
|
-
##### History
|
|
817
|
-
|
|
818
|
-
```javascript
|
|
819
|
-
meeting
|
|
820
|
-
.getStats() // get the stats instance on the meeting
|
|
821
|
-
.getSender('0') // get the sender stats instance
|
|
822
|
-
.getHistory() // get the history instance on that media stats
|
|
823
|
-
// call any history function
|
|
824
|
-
```
|
|
825
|
-
|
|
826
|
-
###### Adding Data to a Chart
|
|
827
|
-
Using myChart you can add sections of data
|
|
828
|
-
create the chart
|
|
829
|
-
```javascript
|
|
830
|
-
document.getElementById('charting').addEventListener('click', () => {
|
|
831
|
-
const ctx = document.getElementById('myChart').getContext('2d');
|
|
832
|
-
const chart = new Chart(ctx, { // eslint-disable-line
|
|
833
|
-
// The type of chart we want to create
|
|
834
|
-
type: 'line',
|
|
835
|
-
options: {
|
|
836
|
-
title: {
|
|
837
|
-
display: true,
|
|
838
|
-
text: 'Time Series'
|
|
839
|
-
},
|
|
840
|
-
elements: {
|
|
841
|
-
line: {
|
|
842
|
-
tension: 0 // disables bezier curves
|
|
843
|
-
}
|
|
844
|
-
},
|
|
845
|
-
scales: {
|
|
846
|
-
yAxes: [{
|
|
847
|
-
id: 'left-y-axis',
|
|
848
|
-
type: 'linear',
|
|
849
|
-
position: 'left'
|
|
850
|
-
}, {
|
|
851
|
-
id: 'right-y-axis',
|
|
852
|
-
type: 'linear',
|
|
853
|
-
position: 'right'
|
|
854
|
-
}]
|
|
855
|
-
}
|
|
856
|
-
},
|
|
857
|
-
// The data for our dataset
|
|
858
|
-
data: {
|
|
859
|
-
datasets: [
|
|
860
|
-
{
|
|
861
|
-
label: 'bytesSent',
|
|
862
|
-
backgroundColor: 'rgb(255, 99, 132)',
|
|
863
|
-
borderColor: 'rgb(255, 99, 132)',
|
|
864
|
-
fill: false,
|
|
865
|
-
yAxisID: 'left-y-axis'
|
|
866
|
-
},
|
|
867
|
-
{
|
|
868
|
-
label: 'bytesSentDifference',
|
|
869
|
-
backgroundColor: 'rgb(0, 0, 255)',
|
|
870
|
-
borderColor: 'rgb(0, 0, 255)',
|
|
871
|
-
fill: false,
|
|
872
|
-
yAxisID: 'right-y-axis'
|
|
873
|
-
}
|
|
874
|
-
]
|
|
875
|
-
}
|
|
876
|
-
});
|
|
877
|
-
|
|
878
|
-
const analyzer = webex.meetings.getAnalyzer();
|
|
879
|
-
|
|
880
|
-
document.getElementById('addChartData').addEventListener('click', () => {
|
|
881
|
-
const thirtySecondsData = meeting.getStats().getSender('0').getHistory().getSlice(30);
|
|
882
|
-
const analysis = analyzer.analyze(thirtySecondsData, {analysisKeys: [{key: 'bytesSent', check: 'increasing'}, {key: 'packetsSent', check: 'increasing'}]});
|
|
883
|
-
const wholeData0 = [];
|
|
884
|
-
const wholeData1 = [];
|
|
885
|
-
const wholeDataLabel = [];
|
|
886
|
-
|
|
887
|
-
analysis.data.bytesSent.reports.forEach((report) => {
|
|
888
|
-
wholeDataLabel.push(report.index);
|
|
889
|
-
wholeData0.push(report.value);
|
|
890
|
-
wholeData1.push(report.difference);
|
|
891
|
-
});
|
|
892
|
-
|
|
893
|
-
chart.data.datasets[0].data = wholeData0;
|
|
894
|
-
chart.data.datasets[1].data = wholeData1;
|
|
895
|
-
chart.data.labels = wholeDataLabel;
|
|
896
|
-
chart.update();
|
|
897
|
-
});
|
|
898
|
-
});
|
|
899
|
-
```
|
|
900
|
-
|
|
901
|
-
Using real time data pushes, you can add data to the chart by the interval:
|
|
902
|
-
```javascript
|
|
903
|
-
const ctx = document.getElementById('myChart2').getContext('2d');
|
|
904
|
-
const chart = new Chart(ctx, { // eslint-disable-line
|
|
905
|
-
// The type of chart we want to create
|
|
906
|
-
type: 'line',
|
|
907
|
-
options: {
|
|
908
|
-
title: {
|
|
909
|
-
display: true,
|
|
910
|
-
text: 'Time Series'
|
|
911
|
-
},
|
|
912
|
-
elements: {
|
|
913
|
-
line: {
|
|
914
|
-
tension: 0 // disables bezier curves
|
|
915
|
-
}
|
|
916
|
-
},
|
|
917
|
-
scales: {
|
|
918
|
-
yAxes: [{
|
|
919
|
-
id: 'left-y-axis',
|
|
920
|
-
type: 'linear',
|
|
921
|
-
position: 'left'
|
|
922
|
-
}]
|
|
923
|
-
}
|
|
924
|
-
},
|
|
925
|
-
// The data for our dataset
|
|
926
|
-
data: {
|
|
927
|
-
datasets: [
|
|
928
|
-
{
|
|
929
|
-
label: 'bytesReceived',
|
|
930
|
-
backgroundColor: 'rgb(255, 99, 132)',
|
|
931
|
-
borderColor: 'rgb(255, 99, 132)',
|
|
932
|
-
fill: false,
|
|
933
|
-
yAxisID: 'left-y-axis'
|
|
934
|
-
}
|
|
935
|
-
]
|
|
936
|
-
}
|
|
937
|
-
});
|
|
938
|
-
let i = 0;
|
|
939
|
-
// when setting up the audioReceiver for example
|
|
940
|
-
// ...
|
|
941
|
-
receivers: [
|
|
942
|
-
{
|
|
943
|
-
id: audioReceiverId,
|
|
944
|
-
correlate: 'audio', // NECESSARY KEY
|
|
945
|
-
history: true,
|
|
946
|
-
onData: (data) => {
|
|
947
|
-
console.log('audioReceiver->', data);
|
|
948
|
-
const k = data.data.getData();
|
|
949
|
-
|
|
950
|
-
if (k && k.rtpInAudio && k.rtpInAudio.bytesReceived) {
|
|
951
|
-
chart.data.labels.push(i);
|
|
952
|
-
addData(chart, 0, k.rtpInAudio.bytesReceived);
|
|
953
|
-
i += 1;
|
|
954
|
-
}
|
|
955
|
-
|
|
956
|
-
if (i > 30) {
|
|
957
|
-
removeData(chart);
|
|
958
|
-
}
|
|
959
|
-
},
|
|
960
|
-
onClose: (error) => { console.warn('audioReceiver->', error); },
|
|
961
|
-
onEvent: (event) => { console.error('audioReceiver->', event); }
|
|
962
|
-
}
|
|
963
|
-
]
|
|
964
|
-
```
|
|
965
|
-
|
|
966
|
-
##### Stop Stats Running
|
|
967
|
-
```js
|
|
968
|
-
meeting.stopStats();
|
|
969
|
-
```
|
|
970
690
|
|
|
971
691
|
#### Member
|
|
972
692
|
|
|
@@ -1305,26 +1025,6 @@ meeting.on('media:stopped', (media) => {
|
|
|
1305
1025
|
}
|
|
1306
1026
|
```
|
|
1307
1027
|
|
|
1308
|
-
`meeting:highPacketLoss` has the following payload
|
|
1309
|
-
```js
|
|
1310
|
-
{
|
|
1311
|
-
mediaType // String - Type of media experiencing packet loss
|
|
1312
|
-
packetLossRatio // Number - current packet loss ratio
|
|
1313
|
-
}
|
|
1314
|
-
```
|
|
1315
|
-
|
|
1316
|
-
-note stats does not send events, but the onEvent callback payload always has the format
|
|
1317
|
-
```javascript
|
|
1318
|
-
{
|
|
1319
|
-
type, // local or remote
|
|
1320
|
-
key, // which key it matched, i.e., rtpOutAudio, etc, defined by DEFAULT_EVENT_VIDEO|AUDIO_RECEIVE|SEND_KEYS
|
|
1321
|
-
data, // the data at the point that the event was fired
|
|
1322
|
-
stat, // the accessor for the stat itself, i.e, bytesSent, bytesReceived
|
|
1323
|
-
id, // the id specified when creating the events instance
|
|
1324
|
-
kind; // audio or video
|
|
1325
|
-
}
|
|
1326
|
-
```
|
|
1327
|
-
|
|
1328
1028
|
`meeting:recording:started`
|
|
1329
1029
|
`meeting:recording:stopped`
|
|
1330
1030
|
`meeting:recording:paused`
|
package/dist/constants.js
CHANGED
|
@@ -8,8 +8,8 @@ _Object$defineProperty(exports, "__esModule", {
|
|
|
8
8
|
value: true
|
|
9
9
|
});
|
|
10
10
|
|
|
11
|
-
exports.ONLINE = exports.OFFLINE = exports.OFFER = exports.NETWORK_TYPE = exports.NETWORK_STATUS = exports.MediaContent = exports.MQA_STATS = exports.MQA_INTEVAL = exports.MODERATOR_TRUE = exports.MODERATOR_FALSE = exports.METRICS_JOIN_TIMES_MAX_DURATION = exports.MEET_M = exports.MEETING_VIDEO_STATE_MACHINE = exports.MEETING_STATE_MACHINE = exports.MEETING_STATE = exports.MEETING_REMOVED_REASON = exports.MEETING_INFO_FAILURE_REASON = exports.MEETING_ERRORS = exports.MEETING_END_REASON = exports.MEETING_AUDIO_STATE_MACHINE = exports.MEETINGS = exports.MEETINGINFO = exports.MEET = exports.MEDIA_TRACK_CONSTRAINT = exports.MEDIA_STATE = exports.MEDIA_PEER_CONNECTION_NAME = exports.MEDIA_DEVICES = exports.MEDIA = exports.MAX_RANDOM_DELAY_FOR_MEETING_INFO = exports.MAX_FRAMESIZES = exports.LOCUS_URL = exports.LOCUSINFO = exports.LOCUSEVENT = exports.LOCUS = exports.LOCI = exports.LOCAL = exports.LIVE = exports.LEAVE = exports.LAYOUT_TYPES = exports.JOIN = exports.IPV4_REGEX = exports.INTENT_TO_JOIN = exports.ICE_TIMEOUT = exports.ICE_STATE = exports.ICE_GATHERING_STATE = exports.ICE_FAIL_TIMEOUT = exports.HTTP_VERBS = exports.HTTPS_PROTOCOL = exports.HOST = exports.HECATE = exports.GATHERING = exports.FULL_STATE = exports.FLOOR_ACTION = exports.EVENT_TYPES = exports.EVENT_TRIGGERS = exports.
|
|
12
|
-
exports._WEBEX_MEETING_ = exports._WAIT_ = exports._USER_ = exports._UNKNOWN_ = exports._S_LINE = exports._SLIDES_ = exports._SIP_URI_ = exports._SIP_BRIDGE_ = exports._SEND_RECEIVE_ = exports._SEND_ONLY_ = exports._ROOM_ = exports._RESOURCE_ROOM_ = exports._REQUESTED_ = exports._REMOVE_ = exports._RECEIVE_ONLY_ = exports._PERSONAL_ROOM_ = exports._PEOPLE_ = exports._OFFER_ = exports._OBSERVE_ = exports._NOT_IN_MEETING_ = exports._NONE_ = exports._MOVE_MEDIA_ = exports._MEETING_UUID_ = exports._MEETING_LINK_ = exports._MEETING_ID_ = exports._MEETING_CENTER_ = exports._MEETING_ = exports._LOCUS_ID_ = exports._LEFT_ = exports._JOIN_ = exports._JOINED_ = exports._IN_MEETING_ = exports._IN_LOBBY_ = exports._IN_ = exports._INCOMING_ = exports._INACTIVE_ = exports._ID_ = exports._IDLE_ = exports._FORCED_ = exports._ERROR_ = exports._CREATED_ = exports._CONVERSATION_URL_ = exports._CONFLICT_ = exports._CALL_ = exports._ANSWER_ = exports._ACTIVE_ = exports.WWW_DOT = exports.WHITEBOARD = exports.WEBEX_DOT_COM = exports.VIDEO_STATUS = exports.VIDEO_RESOLUTIONS = exports.VIDEO_INPUT = exports.VIDEO = exports.VALID_PMR_LINK = exports.VALID_PMR_ADDRESS = exports.VALID_PIN = exports.VALID_EMAIL_ADDRESS = exports.UUID_REG = exports.USE_URI_LOOKUP_FALSE = exports.TYPE = exports.STATS = exports.SIP_URI = exports.SHARE_STOPPED_REASON = exports.SHARE_STATUS = exports.SHARE_PEER_CONNECTION_NAME = exports.SHARE = exports.SEND_DTMF_ENDPOINT = exports.SENDRECV = exports.SELF_ROLES = exports.SDP = exports.RTC_CONFIGURATION_FIREFOX = exports.RTC_CONFIGURATION = exports.ROAP_SEQ_PRE = exports.ROAP = exports.RETRY_TIMEOUT = exports.RESOURCE = exports.REMOTE = exports.RECORDING_STATE =
|
|
11
|
+
exports.RECONNECTION = exports.READY = exports.REACHABILITY = exports.QUALITY_LEVELS = exports.PSTN_STATUS = exports.PROVISIONAL_TYPE_DIAL_OUT = exports.PROVISIONAL_TYPE_DIAL_IN = exports.PEER_CONNECTION_STATE = exports.PC_BAIL_TIMEOUT = exports.PASSWORD_STATUS = exports.PARTICIPANT_DELTAS = exports.PARTICIPANT = exports.ONLINE = exports.OFFLINE = exports.OFFER = exports.NETWORK_TYPE = exports.NETWORK_STATUS = exports.MediaContent = exports.MQA_STATS = exports.MQA_INTEVAL = exports.MODERATOR_TRUE = exports.MODERATOR_FALSE = exports.METRICS_JOIN_TIMES_MAX_DURATION = exports.MEET_M = exports.MEETING_VIDEO_STATE_MACHINE = exports.MEETING_STATE_MACHINE = exports.MEETING_STATE = exports.MEETING_REMOVED_REASON = exports.MEETING_INFO_FAILURE_REASON = exports.MEETING_ERRORS = exports.MEETING_END_REASON = exports.MEETING_AUDIO_STATE_MACHINE = exports.MEETINGS = exports.MEETINGINFO = exports.MEET = exports.MEDIA_TRACK_CONSTRAINT = exports.MEDIA_STATE = exports.MEDIA_PEER_CONNECTION_NAME = exports.MEDIA_DEVICES = exports.MEDIA = exports.MAX_RANDOM_DELAY_FOR_MEETING_INFO = exports.MAX_FRAMESIZES = exports.LOCUS_URL = exports.LOCUSINFO = exports.LOCUSEVENT = exports.LOCUS = exports.LOCI = exports.LOCAL = exports.LIVE = exports.LEAVE = exports.LAYOUT_TYPES = exports.JOIN = exports.IPV4_REGEX = exports.INTENT_TO_JOIN = exports.ICE_TIMEOUT = exports.ICE_STATE = exports.ICE_GATHERING_STATE = exports.ICE_FAIL_TIMEOUT = exports.HTTP_VERBS = exports.HTTPS_PROTOCOL = exports.HOST = exports.HECATE = exports.GATHERING = exports.FULL_STATE = exports.FLOOR_ACTION = exports.EVENT_TYPES = exports.EVENT_TRIGGERS = exports.EVENTS = exports.ERROR_DICTIONARY = exports.ERROR = exports.ENDED = exports.END = exports.DISPLAY_HINTS = exports.DIALER_REGEX = exports.DEVELOPMENT = exports.DEFAULT_GET_STATS_FILTER = exports.DEFAULT_EXCLUDED_STATS = exports.DECLINE = exports.CORRELATION_ID = exports.CONVERSATION_URL = exports.CONVERSATION_SERVICE = exports.CONTROLS = exports.CONTENT = exports.CONNECTION_STATE = exports.COMPLETE = exports.CMR_MEETINGS = exports.CLAIM = exports.CALL_REMOVED_REASON = exports.CALL = exports.CALENDAR_EVENTS_API = exports.CALENDAR_EVENTS = exports.CALENDAR = exports.BNR_STATUS = exports.AUDIO_STATUS = exports.AUDIO_INPUT = exports.AUDIO = exports.API = exports.ANSWER = exports.ALTERNATE_REDIRECT_TRUE = exports.ALERT = void 0;
|
|
12
|
+
exports._WEBEX_MEETING_ = exports._WAIT_ = exports._USER_ = exports._UNKNOWN_ = exports._S_LINE = exports._SLIDES_ = exports._SIP_URI_ = exports._SIP_BRIDGE_ = exports._SEND_RECEIVE_ = exports._SEND_ONLY_ = exports._ROOM_ = exports._RESOURCE_ROOM_ = exports._REQUESTED_ = exports._REMOVE_ = exports._RECEIVE_ONLY_ = exports._PERSONAL_ROOM_ = exports._PEOPLE_ = exports._OFFER_ = exports._OBSERVE_ = exports._NOT_IN_MEETING_ = exports._NONE_ = exports._MOVE_MEDIA_ = exports._MEETING_UUID_ = exports._MEETING_LINK_ = exports._MEETING_ID_ = exports._MEETING_CENTER_ = exports._MEETING_ = exports._LOCUS_ID_ = exports._LEFT_ = exports._JOIN_ = exports._JOINED_ = exports._IN_MEETING_ = exports._IN_LOBBY_ = exports._IN_ = exports._INCOMING_ = exports._INACTIVE_ = exports._ID_ = exports._IDLE_ = exports._FORCED_ = exports._ERROR_ = exports._CREATED_ = exports._CONVERSATION_URL_ = exports._CONFLICT_ = exports._CALL_ = exports._ANSWER_ = exports._ACTIVE_ = exports.WWW_DOT = exports.WHITEBOARD = exports.WEBEX_DOT_COM = exports.VIDEO_STATUS = exports.VIDEO_RESOLUTIONS = exports.VIDEO_INPUT = exports.VIDEO = exports.VALID_PMR_LINK = exports.VALID_PMR_ADDRESS = exports.VALID_PIN = exports.VALID_EMAIL_ADDRESS = exports.UUID_REG = exports.USE_URI_LOOKUP_FALSE = exports.TYPE = exports.STATS = exports.SIP_URI = exports.SHARE_STOPPED_REASON = exports.SHARE_STATUS = exports.SHARE_PEER_CONNECTION_NAME = exports.SHARE = exports.SEND_DTMF_ENDPOINT = exports.SENDRECV = exports.SELF_ROLES = exports.SDP = exports.RTC_CONFIGURATION_FIREFOX = exports.RTC_CONFIGURATION = exports.ROAP_SEQ_PRE = exports.ROAP = exports.RETRY_TIMEOUT = exports.RESOURCE = exports.REMOTE = exports.RECORDING_STATE = void 0;
|
|
13
13
|
|
|
14
14
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
|
|
15
15
|
|
|
@@ -294,103 +294,6 @@ var DIALER_REGEX = {
|
|
|
294
294
|
exports.DIALER_REGEX = DIALER_REGEX;
|
|
295
295
|
var IPV4_REGEX = /^(?:[0-9]{1,3}\.){3}[0-9]{1,3}|.local/g;
|
|
296
296
|
exports.IPV4_REGEX = IPV4_REGEX;
|
|
297
|
-
var DEFAULT_TRANSFORM_REGEX = {
|
|
298
|
-
rtpOutVideo: {
|
|
299
|
-
regex: new RegExp('^(?:RTC)?[Oo]utbound_?[Rr][Tt][Pp]_?[Vv]ideo')
|
|
300
|
-
},
|
|
301
|
-
rtpOutAudio: {
|
|
302
|
-
regex: new RegExp('^(?:RTC)?[Oo]utbound_?[Rr][Tt][Pp]_?[Aa]udio')
|
|
303
|
-
},
|
|
304
|
-
rtpInVideo: {
|
|
305
|
-
regex: new RegExp('^(?:RTC)?[Ii]nbound_?[Rr][Tt][Pp]_?[Vv]ideo')
|
|
306
|
-
},
|
|
307
|
-
rtpInAudio: {
|
|
308
|
-
regex: new RegExp('^(?:RTC)?[Ii]nbound_?[Rr][Tt][Pp]_?[Aa]udio')
|
|
309
|
-
},
|
|
310
|
-
rtpRemoteInboundAudio: {
|
|
311
|
-
regex: new RegExp('^(?:RTC)?[Rr]emote[Ii]nbound_?[Rr][Tt][Pp]_?[Aa]udio[sS]tream_?.*')
|
|
312
|
-
},
|
|
313
|
-
rtpRemoteOutboundAudio: {
|
|
314
|
-
regex: new RegExp('^(?:RTC)?[Rr]emote[Oo]utbound_?[Rr][Tt][Pp]_?[Aa]udio[sS]tream_?.*')
|
|
315
|
-
},
|
|
316
|
-
rtpRemoteInboundVideo: {
|
|
317
|
-
regex: new RegExp('^(?:RTC)?[Rr]emote[Ii]nbound_?[Rr][Tt][Pp]_?[Vv]ideo[sS]tream_?.*')
|
|
318
|
-
},
|
|
319
|
-
rtpRemoteOutboundVideo: {
|
|
320
|
-
regex: new RegExp('^(?:RTC)?[Rr]emote[Oo]utbound_?[Rr][Tt][Pp]_?[Vv]ideo[sS]tream_?.*')
|
|
321
|
-
},
|
|
322
|
-
rtcOutAudio: {
|
|
323
|
-
regex: new RegExp('^RTCMediaStreamTrack_(?:local|sender)_'),
|
|
324
|
-
profiler: {
|
|
325
|
-
type: 'kind',
|
|
326
|
-
value: 'audio'
|
|
327
|
-
}
|
|
328
|
-
},
|
|
329
|
-
rtcOutVideo: {
|
|
330
|
-
regex: new RegExp('^RTCMediaStreamTrack_(?:local|sender)_'),
|
|
331
|
-
profiler: {
|
|
332
|
-
type: 'kind',
|
|
333
|
-
value: 'video'
|
|
334
|
-
}
|
|
335
|
-
},
|
|
336
|
-
rtcInAudio: {
|
|
337
|
-
regex: new RegExp('^RTCMediaStreamTrack_(?:remote|receiver)_'),
|
|
338
|
-
profiler: {
|
|
339
|
-
type: 'kind',
|
|
340
|
-
value: 'audio'
|
|
341
|
-
}
|
|
342
|
-
},
|
|
343
|
-
rtcInVideo: {
|
|
344
|
-
regex: new RegExp('^RTCMediaStreamTrack_(?:remote|receiver)_'),
|
|
345
|
-
profiler: {
|
|
346
|
-
type: 'kind',
|
|
347
|
-
value: 'video'
|
|
348
|
-
}
|
|
349
|
-
},
|
|
350
|
-
rtcTransAudio: {
|
|
351
|
-
regex: new RegExp('^RTCTransport_[Aa]udio')
|
|
352
|
-
},
|
|
353
|
-
rtcTransVideo: {
|
|
354
|
-
regex: new RegExp('^RTCTransport_[Vv]ideo')
|
|
355
|
-
},
|
|
356
|
-
rtcCandidatePair: {
|
|
357
|
-
regex: new RegExp('^RTCIceCandidatePair_'),
|
|
358
|
-
decider: 'nominated',
|
|
359
|
-
selector: true,
|
|
360
|
-
profiler: {
|
|
361
|
-
type: 'type',
|
|
362
|
-
value: 'candidate-pair'
|
|
363
|
-
}
|
|
364
|
-
}
|
|
365
|
-
}; // we need a specific firefox transform regular expression map
|
|
366
|
-
// to convert firefox values to a consistent getStats type mapping
|
|
367
|
-
// as with chrome/edge/safari
|
|
368
|
-
|
|
369
|
-
exports.DEFAULT_TRANSFORM_REGEX = DEFAULT_TRANSFORM_REGEX;
|
|
370
|
-
var DEFAULT_FF_TRANSFORM_REGEX = {
|
|
371
|
-
rtpOutVideo: {
|
|
372
|
-
regex: new RegExp('^outbound-rtp_video_.*')
|
|
373
|
-
},
|
|
374
|
-
rtpOutAudio: {
|
|
375
|
-
regex: new RegExp('^outbound-rtp_audio_.*')
|
|
376
|
-
},
|
|
377
|
-
rtpInVideo: {
|
|
378
|
-
regex: new RegExp('^inbound-rtp_video_.*')
|
|
379
|
-
},
|
|
380
|
-
rtpInAudio: {
|
|
381
|
-
regex: new RegExp('^inbound-rtp_audio_.*')
|
|
382
|
-
},
|
|
383
|
-
rtcCandidatePair: {
|
|
384
|
-
regex: new RegExp('^candidate-pair.*'),
|
|
385
|
-
decider: 'nominated',
|
|
386
|
-
selector: true,
|
|
387
|
-
profiler: {
|
|
388
|
-
type: 'type',
|
|
389
|
-
value: 'candidate-pair'
|
|
390
|
-
}
|
|
391
|
-
}
|
|
392
|
-
};
|
|
393
|
-
exports.DEFAULT_FF_TRANSFORM_REGEX = DEFAULT_FF_TRANSFORM_REGEX;
|
|
394
297
|
var VALID_EMAIL_ADDRESS = /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
|
|
395
298
|
exports.VALID_EMAIL_ADDRESS = VALID_EMAIL_ADDRESS;
|
|
396
299
|
var VALID_PMR_ADDRESS = /([a-z0-9][-a-z0-9, '.']{0,62})@([a-z0-9][-a-z0-9, '.']{0,62})\.webex\.com/i;
|
|
@@ -409,24 +312,6 @@ var API = {
|
|
|
409
312
|
LOCUS: 'locus'
|
|
410
313
|
};
|
|
411
314
|
exports.API = API;
|
|
412
|
-
var ANALYSIS_CHECKS = {
|
|
413
|
-
INCREASING: 'increasing',
|
|
414
|
-
DECREASING: 'decreasing',
|
|
415
|
-
CONSTANT: 'constant'
|
|
416
|
-
};
|
|
417
|
-
exports.ANALYSIS_CHECKS = ANALYSIS_CHECKS;
|
|
418
|
-
var ANALYSIS_STATS = {
|
|
419
|
-
DEFAULT_KEYS: [{
|
|
420
|
-
key: 'bytesSent',
|
|
421
|
-
check: 'increasing',
|
|
422
|
-
prop: 'rtpOutAudio'
|
|
423
|
-
}, {
|
|
424
|
-
key: 'bytesReceived',
|
|
425
|
-
check: 'increasing',
|
|
426
|
-
prop: 'rtpInAudio'
|
|
427
|
-
}]
|
|
428
|
-
};
|
|
429
|
-
exports.ANALYSIS_STATS = ANALYSIS_STATS;
|
|
430
315
|
var CALENDAR_EVENTS = {
|
|
431
316
|
CREATE: 'event:calendar.meeting.create',
|
|
432
317
|
UPDATE: 'event:calendar.meeting.update',
|
|
@@ -439,26 +324,6 @@ var DEFAULT_GET_STATS_FILTER = {
|
|
|
439
324
|
types: ['track', 'transport', 'candidate-pair', 'outbound-rtp', 'outboundrtp', 'inbound-rtp', 'inboundrtp', 'remote-inbound-rtp', 'remote-outbound-rtp', 'remote-candidate', 'local-candidate', 'media-source']
|
|
440
325
|
};
|
|
441
326
|
exports.DEFAULT_GET_STATS_FILTER = DEFAULT_GET_STATS_FILTER;
|
|
442
|
-
var DEFAULT_EVENT_VIDEO_SEND_KEYS = ['rtpOutVideo', 'rtcOutVideo', 'rtcTransVideo'];
|
|
443
|
-
exports.DEFAULT_EVENT_VIDEO_SEND_KEYS = DEFAULT_EVENT_VIDEO_SEND_KEYS;
|
|
444
|
-
var DEFAULT_EVENT_AUDIO_SEND_KEYS = ['rtpOutAudio', 'rtcOutAudio', 'rtcTransAudio'];
|
|
445
|
-
exports.DEFAULT_EVENT_AUDIO_SEND_KEYS = DEFAULT_EVENT_AUDIO_SEND_KEYS;
|
|
446
|
-
var DEFAULT_EVENT_VIDEO_RECEIVE_KEYS = ['rtpInVideo', 'rtcInVideo', 'rtcTransVideo'];
|
|
447
|
-
exports.DEFAULT_EVENT_VIDEO_RECEIVE_KEYS = DEFAULT_EVENT_VIDEO_RECEIVE_KEYS;
|
|
448
|
-
var DEFAULT_EVENT_AUDIO_RECEIVE_KEYS = ['rtpInAudio', 'rtcInAudio', 'rtcTransAudio'];
|
|
449
|
-
exports.DEFAULT_EVENT_AUDIO_RECEIVE_KEYS = DEFAULT_EVENT_AUDIO_RECEIVE_KEYS;
|
|
450
|
-
var DEFAULT_TRANSFORM_KEYS = ['rtpOutVideo', 'rtpOutAudio', 'rtpInVideo', 'rtpInAudio', 'rtcOutAudio', 'rtcOutVideo', 'rtcInAudio', 'rtcInVideo', 'rtcTransAudio', 'rtcTransVideo', 'rtcCandidatePairAudio', 'rtcCandidatePairVideo']; // remove unneccessary data that stays constant during a call
|
|
451
|
-
|
|
452
|
-
exports.DEFAULT_TRANSFORM_KEYS = DEFAULT_TRANSFORM_KEYS;
|
|
453
|
-
var DEFAULT_OMISSION_DATA_KEYS = ['id', 'timestamp', 'type', 'ssrc', 'isRemote', 'mediaType', 'kind', 'trackId', 'transportId', 'codecId', 'mediaSourceId', 'trackIdentifier'];
|
|
454
|
-
exports.DEFAULT_OMISSION_DATA_KEYS = DEFAULT_OMISSION_DATA_KEYS;
|
|
455
|
-
var DELTAEVENT = {
|
|
456
|
-
GT: 'GT',
|
|
457
|
-
CF: 'CF',
|
|
458
|
-
EQ: 'EQ',
|
|
459
|
-
LT: 'LT'
|
|
460
|
-
};
|
|
461
|
-
exports.DELTAEVENT = DELTAEVENT;
|
|
462
327
|
var RECORDING_STATE = {
|
|
463
328
|
RECORDING: 'recording',
|
|
464
329
|
IDLE: 'idle',
|
|
@@ -521,7 +386,6 @@ var EVENT_TRIGGERS = {
|
|
|
521
386
|
MEETING_LOG_UPLOAD_FAILURE: 'meeting:logUpload:failure',
|
|
522
387
|
MEETING_ACTIONS_UPDATE: 'meeting:actionsUpdate',
|
|
523
388
|
MEETING_STATE_CHANGE: 'meeting:stateChange',
|
|
524
|
-
MEETING_HIGH_PACKETLOSS: 'meeting:highPacketLoss',
|
|
525
389
|
MEETING_MEETING_CONTAINER_UPDATE: 'meeting:meetingContainer:update',
|
|
526
390
|
MEDIA_QUALITY: 'media:quality',
|
|
527
391
|
MEETINGS_NETWORK_DISCONNECTED: 'network:disconnected',
|
|
@@ -606,11 +470,6 @@ var MEDIA_STATE = {
|
|
|
606
470
|
inactive: 'inactive'
|
|
607
471
|
};
|
|
608
472
|
exports.MEDIA_STATE = MEDIA_STATE;
|
|
609
|
-
var EVENT_STATS_MAP = {
|
|
610
|
-
BYTES_SENT: 'bytesSent',
|
|
611
|
-
BYTES_RECEIVED: 'bytesReceived'
|
|
612
|
-
};
|
|
613
|
-
exports.EVENT_STATS_MAP = EVENT_STATS_MAP;
|
|
614
473
|
var ERROR_DICTIONARY = {
|
|
615
474
|
PARAMETER: {
|
|
616
475
|
NAME: 'ParameterError',
|
|
@@ -1082,71 +941,10 @@ var STATS = {
|
|
|
1082
941
|
AUDIO_CORRELATE: 'audio',
|
|
1083
942
|
VIDEO_CORRELATE: 'video',
|
|
1084
943
|
SHARE_CORRELATE: 'share',
|
|
1085
|
-
AUDIO_SENDER_ID: 'audioSender',
|
|
1086
|
-
AUDIO_RECEIVER_ID: 'audioReceiver',
|
|
1087
|
-
VIDEO_SENDER_ID: 'videoSender',
|
|
1088
|
-
VIDEO_RECEIVER_ID: 'videoReceiver',
|
|
1089
|
-
SHARE_SENDER_ID: 'shareSender',
|
|
1090
|
-
SHARE_RECEIVER_ID: 'shareReceiver',
|
|
1091
944
|
SEND_DIRECTION: 'send',
|
|
1092
945
|
RECEIVE_DIRECTION: 'recv',
|
|
1093
|
-
END: 'end',
|
|
1094
946
|
REMOTE: 'remote',
|
|
1095
|
-
LOCAL: 'local'
|
|
1096
|
-
DATA: 'data',
|
|
1097
|
-
CLOSED: 'closed',
|
|
1098
|
-
SENDER: 'sender',
|
|
1099
|
-
RECEIVER: 'receiver',
|
|
1100
|
-
SENDERS: 'senders',
|
|
1101
|
-
RECEIVERS: 'receivers',
|
|
1102
|
-
CONFIG: {
|
|
1103
|
-
senders: {
|
|
1104
|
-
audio: {
|
|
1105
|
-
transceiver: 'audioTransceiver',
|
|
1106
|
-
child: 'sender',
|
|
1107
|
-
parent: 'mediaProperties',
|
|
1108
|
-
peerConnection: 'peerConnection',
|
|
1109
|
-
name: 'audioSender'
|
|
1110
|
-
},
|
|
1111
|
-
video: {
|
|
1112
|
-
transceiver: 'videoTransceiver',
|
|
1113
|
-
child: 'sender',
|
|
1114
|
-
parent: 'mediaProperties',
|
|
1115
|
-
peerConnection: 'peerConnection',
|
|
1116
|
-
name: 'videoSender'
|
|
1117
|
-
},
|
|
1118
|
-
share: {
|
|
1119
|
-
transceiver: 'shareTransceiver',
|
|
1120
|
-
child: 'sender',
|
|
1121
|
-
parent: 'mediaProperties',
|
|
1122
|
-
peerConnection: 'peerConnection',
|
|
1123
|
-
name: 'shareSender'
|
|
1124
|
-
}
|
|
1125
|
-
},
|
|
1126
|
-
receivers: {
|
|
1127
|
-
audio: {
|
|
1128
|
-
transceiver: 'audioTransceiver',
|
|
1129
|
-
child: 'receiver',
|
|
1130
|
-
parent: 'mediaProperties',
|
|
1131
|
-
peerConnection: 'peerConnection',
|
|
1132
|
-
name: 'audioReceiver'
|
|
1133
|
-
},
|
|
1134
|
-
video: {
|
|
1135
|
-
transceiver: 'videoTransceiver',
|
|
1136
|
-
child: 'receiver',
|
|
1137
|
-
parent: 'mediaProperties',
|
|
1138
|
-
peerConnection: 'peerConnection',
|
|
1139
|
-
name: 'videoReceiver'
|
|
1140
|
-
},
|
|
1141
|
-
share: {
|
|
1142
|
-
transceiver: 'shareTransceiver',
|
|
1143
|
-
child: 'receiver',
|
|
1144
|
-
parent: 'mediaProperties',
|
|
1145
|
-
peerConnection: 'peerConnection',
|
|
1146
|
-
name: 'shareReceiver'
|
|
1147
|
-
}
|
|
1148
|
-
}
|
|
1149
|
-
}
|
|
947
|
+
LOCAL: 'local'
|
|
1150
948
|
};
|
|
1151
949
|
exports.STATS = STATS;
|
|
1152
950
|
var MQA_STATS = {
|
|
@@ -1154,7 +952,6 @@ var MQA_STATS = {
|
|
|
1154
952
|
// MQA is done on 60 second intervals by server def, add a buffer for missed events
|
|
1155
953
|
CA_TYPE: 'MQA',
|
|
1156
954
|
DEFAULT_IP: '0.0.0.0',
|
|
1157
|
-
DATA_PLACEMENTS: [STATS.AUDIO_SENDER_ID, STATS.AUDIO_RECEIVER_ID, STATS.VIDEO_SENDER_ID, STATS.VIDEO_RECEIVER_ID, STATS.SHARE_SENDER_ID, STATS.SHARE_RECEIVER_ID],
|
|
1158
955
|
DEFAULT_SHARE_SENDER_STATS: {
|
|
1159
956
|
common: {
|
|
1160
957
|
common: {
|