@webex/plugin-meetings 2.19.1 → 2.19.3

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,170 +0,0 @@
1
- "use strict";
2
-
3
- var _Object$keys = require("@babel/runtime-corejs2/core-js/object/keys");
4
-
5
- var _Object$getOwnPropertySymbols = require("@babel/runtime-corejs2/core-js/object/get-own-property-symbols");
6
-
7
- var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptor");
8
-
9
- var _Object$getOwnPropertyDescriptors = require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptors");
10
-
11
- var _Object$defineProperties = require("@babel/runtime-corejs2/core-js/object/define-properties");
12
-
13
- var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
14
-
15
- var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
16
-
17
- _Object$defineProperty(exports, "__esModule", {
18
- value: true
19
- });
20
-
21
- exports.default = void 0;
22
-
23
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
24
-
25
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
26
-
27
- var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));
28
-
29
- var _constants = require("../constants");
30
-
31
- var _browserDetection = _interopRequireDefault(require("../common/browser-detection"));
32
-
33
- function ownKeys(object, enumerableOnly) { var keys = _Object$keys(object); if (_Object$getOwnPropertySymbols) { var symbols = _Object$getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
34
-
35
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } return target; }
36
-
37
- var _BrowserDetection = (0, _browserDetection.default)(),
38
- isBrowser = _BrowserDetection.isBrowser;
39
- /**
40
- * @description MQAProcessor handles interval data for MQA
41
- * @export
42
- * @class MQAProcessor
43
- */
44
-
45
-
46
- var MQAProcessor = /*#__PURE__*/function () {
47
- /**
48
- * @constructor
49
- * @public
50
- * @memberof MQAProcessor
51
- */
52
- function MQAProcessor() {
53
- (0, _classCallCheck2.default)(this, MQAProcessor);
54
- this.data = {
55
- videoReceive: [],
56
- audioTransmit: [],
57
- audioReceive: [],
58
- videoTransmit: []
59
- };
60
- this.intervalNumber = 1;
61
- }
62
- /**
63
- * @param {String} id
64
- * @param {Array<WebRTCData>} interval - a slice of metrics history
65
- * @returns {undefined}
66
- * @memberof MQAProcessor
67
- */
68
-
69
-
70
- (0, _createClass2.default)(MQAProcessor, [{
71
- key: "process",
72
- value: function process(id, interval) {
73
- var rtcCandidatePair, rtcOutVideo, rtpOutVideo; // TODO: , rtcInVideo, rtpInVideo, rtcOutAudio, rtcInAudio, rtpInAudio, rtpOutAudio; // TODO:
74
-
75
- var vsTransmit;
76
- var _this$data = this.data,
77
- videoReceive = _this$data.videoReceive,
78
- audioTransmit = _this$data.audioTransmit,
79
- audioReceive = _this$data.audioReceive,
80
- videoTransmit = _this$data.videoTransmit;
81
- var sumValue = interval[0]; // the head is the last interval value, webRTC spec has some values automatically summed
82
-
83
- if (sumValue) {
84
- rtcCandidatePair = sumValue.rtcCandidatePair;
85
- }
86
-
87
- switch (id) {
88
- case _constants.STATS.AUDIO_SENDER_ID:
89
- audioTransmit.push();
90
- break;
91
-
92
- case _constants.STATS.AUDIO_RECEIVER_ID:
93
- audioReceive.push();
94
- break;
95
-
96
- case _constants.STATS.VIDEO_SENDER_ID:
97
- videoTransmit.push();
98
- break;
99
-
100
- case _constants.STATS.VIDEO_RECEIVER_ID:
101
- videoReceive.push();
102
- break;
103
-
104
- case _constants.STATS.SHARE_SENDER_ID:
105
- if (sumValue) {
106
- rtcOutVideo = sumValue.rtcOutVideo;
107
- rtpOutVideo = sumValue.rtpOutVideo;
108
- }
109
-
110
- vsTransmit = _objectSpread({}, _constants.MQA_STATS.DEFAULT_SHARE_SENDER_STATS);
111
-
112
- if (isBrowser('firefox')) {
113
- vsTransmit.common.remoteLossRate = rtpOutVideo ? rtpOutVideo.pliCount / (interval.length * this.intervalNumber) : 0;
114
- vsTransmit.common.rtpPackets = rtpOutVideo ? rtpOutVideo.packetsSent / (interval.length * this.intervalNumber) : 0;
115
- vsTransmit.streams[0].common.transmittedFrameRate = rtcOutVideo ? rtcOutVideo.framesEncoded / (interval.length * this.intervalNumber) : 0;
116
- vsTransmit.streams[0].common.rtpPackets = rtpOutVideo ? rtpOutVideo.packetsSent / (interval.length * this.intervalNumber) : 0;
117
- } else {
118
- vsTransmit.common.availableBitRate = rtcCandidatePair ? rtcCandidatePair.availableOutgoingBitrate : 0;
119
- vsTransmit.common.remoteLossRate = rtpOutVideo ? rtpOutVideo.pliCount / (interval.length * this.intervalNumber) : 0;
120
- vsTransmit.common.roundTripTime = rtcCandidatePair ? rtcCandidatePair.totalRoundTripTime / (interval.length * this.intervalNumber) : 0;
121
- vsTransmit.common.rtpPackets = rtpOutVideo ? rtpOutVideo.packetsSent / (interval.length * this.intervalNumber) : 0;
122
- vsTransmit.streams[0].common.rtpPackets = rtpOutVideo ? rtpOutVideo.packetsSent / (interval.length * this.intervalNumber) : 0;
123
- vsTransmit.streams[0].common.transmittedBitrate = rtcCandidatePair ? rtcCandidatePair.availableOutgoingBitrate : 0;
124
- vsTransmit.streams[0].common.transmittedFrameRate = rtcOutVideo ? rtcOutVideo.framesSent / (interval.length * this.intervalNumber) : 0;
125
- vsTransmit.streams[0].transmittedHeight = rtcOutVideo ? rtcOutVideo.frameHeight : 0;
126
- vsTransmit.streams[0].transmittedKeyFrames = rtcOutVideo ? rtcOutVideo.hugeFramesSent : 0;
127
- vsTransmit.streams[0].transmittedWidth = rtcOutVideo ? rtcOutVideo.frameWidth : 0;
128
- }
129
-
130
- videoTransmit.push(vsTransmit);
131
- break;
132
-
133
- default:
134
- break;
135
- }
136
-
137
- this.data.intervalMetadata = this.data.intervalMetadata || _objectSpread({}, _constants.MQA_STATS.intervalMetadata);
138
- }
139
- /**
140
- * get the data payload for media quality events after they all have been processed
141
- * wait to call this until after you have all the data from the interval you want
142
- * this method clears the data as a side effect
143
- * @returns {Object}
144
- * @memberof MQAProcessor
145
- */
146
-
147
- }, {
148
- key: "getData",
149
- value: function getData() {
150
- this.intervalNumber += 1;
151
-
152
- var payload = _objectSpread(_objectSpread({}, this.data), {}, {
153
- intervalNumber: this.intervalNumber
154
- });
155
-
156
- this.data = {
157
- videoReceive: [],
158
- audioTransmit: [],
159
- audioReceive: [],
160
- videoTransmit: []
161
- };
162
- return payload;
163
- }
164
- }]);
165
- return MQAProcessor;
166
- }();
167
-
168
- var _default = MQAProcessor;
169
- exports.default = _default;
170
- //# sourceMappingURL=mqa-processor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["BrowserDetection","isBrowser","MQAProcessor","data","videoReceive","audioTransmit","audioReceive","videoTransmit","intervalNumber","id","interval","rtcCandidatePair","rtcOutVideo","rtpOutVideo","vsTransmit","sumValue","STATS","AUDIO_SENDER_ID","push","AUDIO_RECEIVER_ID","VIDEO_SENDER_ID","VIDEO_RECEIVER_ID","SHARE_SENDER_ID","MQA_STATS","DEFAULT_SHARE_SENDER_STATS","common","remoteLossRate","pliCount","length","rtpPackets","packetsSent","streams","transmittedFrameRate","framesEncoded","availableBitRate","availableOutgoingBitrate","roundTripTime","totalRoundTripTime","transmittedBitrate","framesSent","transmittedHeight","frameHeight","transmittedKeyFrames","hugeFramesSent","transmittedWidth","frameWidth","intervalMetadata","payload"],"sources":["mqa-processor.js"],"sourcesContent":["import {\n STATS,\n MQA_STATS\n} from '../constants';\nimport BrowserDetection from '../common/browser-detection';\n\nconst {isBrowser} = BrowserDetection();\n\n/**\n * @description MQAProcessor handles interval data for MQA\n * @export\n * @class MQAProcessor\n */\nclass MQAProcessor {\n /**\n * @constructor\n * @public\n * @memberof MQAProcessor\n */\n constructor() {\n this.data = {\n videoReceive: [],\n audioTransmit: [],\n audioReceive: [],\n videoTransmit: []\n };\n this.intervalNumber = 1;\n }\n\n /**\n * @param {String} id\n * @param {Array<WebRTCData>} interval - a slice of metrics history\n * @returns {undefined}\n * @memberof MQAProcessor\n */\n process(id, interval) {\n let rtcCandidatePair, rtcOutVideo, rtpOutVideo; // TODO: , rtcInVideo, rtpInVideo, rtcOutAudio, rtcInAudio, rtpInAudio, rtpOutAudio; // TODO:\n let vsTransmit;\n\n const {\n videoReceive, audioTransmit, audioReceive, videoTransmit\n } = this.data;\n\n const sumValue = interval[0]; // the head is the last interval value, webRTC spec has some values automatically summed\n\n if (sumValue) {\n rtcCandidatePair = sumValue.rtcCandidatePair;\n }\n\n switch (id) {\n case STATS.AUDIO_SENDER_ID:\n audioTransmit.push();\n break;\n case STATS.AUDIO_RECEIVER_ID:\n audioReceive.push();\n break;\n case STATS.VIDEO_SENDER_ID:\n videoTransmit.push();\n break;\n case STATS.VIDEO_RECEIVER_ID:\n videoReceive.push();\n break;\n case STATS.SHARE_SENDER_ID:\n if (sumValue) {\n rtcOutVideo = sumValue.rtcOutVideo;\n rtpOutVideo = sumValue.rtpOutVideo;\n }\n vsTransmit = {...MQA_STATS.DEFAULT_SHARE_SENDER_STATS};\n if (isBrowser('firefox')) {\n vsTransmit.common.remoteLossRate = rtpOutVideo ? rtpOutVideo.pliCount / (interval.length * this.intervalNumber) : 0;\n vsTransmit.common.rtpPackets = rtpOutVideo ? rtpOutVideo.packetsSent / (interval.length * this.intervalNumber) : 0;\n vsTransmit.streams[0].common.transmittedFrameRate = rtcOutVideo ? rtcOutVideo.framesEncoded / (interval.length * this.intervalNumber) : 0;\n vsTransmit.streams[0].common.rtpPackets = rtpOutVideo ? rtpOutVideo.packetsSent / (interval.length * this.intervalNumber) : 0;\n }\n else {\n vsTransmit.common.availableBitRate = rtcCandidatePair ? rtcCandidatePair.availableOutgoingBitrate : 0;\n vsTransmit.common.remoteLossRate = rtpOutVideo ? rtpOutVideo.pliCount / (interval.length * this.intervalNumber) : 0;\n vsTransmit.common.roundTripTime = rtcCandidatePair ? rtcCandidatePair.totalRoundTripTime / (interval.length * this.intervalNumber) : 0;\n vsTransmit.common.rtpPackets = rtpOutVideo ? rtpOutVideo.packetsSent / (interval.length * this.intervalNumber) : 0;\n vsTransmit.streams[0].common.rtpPackets = rtpOutVideo ? rtpOutVideo.packetsSent / (interval.length * this.intervalNumber) : 0;\n vsTransmit.streams[0].common.transmittedBitrate = rtcCandidatePair ? rtcCandidatePair.availableOutgoingBitrate : 0;\n vsTransmit.streams[0].common.transmittedFrameRate = rtcOutVideo ? rtcOutVideo.framesSent / (interval.length * this.intervalNumber) : 0;\n vsTransmit.streams[0].transmittedHeight = rtcOutVideo ? rtcOutVideo.frameHeight : 0;\n vsTransmit.streams[0].transmittedKeyFrames = rtcOutVideo ? rtcOutVideo.hugeFramesSent : 0;\n vsTransmit.streams[0].transmittedWidth = rtcOutVideo ? rtcOutVideo.frameWidth : 0;\n }\n videoTransmit.push(vsTransmit);\n break;\n default:\n break;\n }\n this.data.intervalMetadata = this.data.intervalMetadata || {...MQA_STATS.intervalMetadata};\n }\n\n /**\n * get the data payload for media quality events after they all have been processed\n * wait to call this until after you have all the data from the interval you want\n * this method clears the data as a side effect\n * @returns {Object}\n * @memberof MQAProcessor\n */\n getData() {\n this.intervalNumber += 1;\n\n const payload = {...this.data, intervalNumber: this.intervalNumber};\n\n this.data = {\n videoReceive: [],\n audioTransmit: [],\n audioReceive: [],\n videoTransmit: []\n };\n\n return payload;\n }\n}\n\nexport default MQAProcessor;\n"],"mappings":"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"}
@@ -1,93 +0,0 @@
1
- "use strict";
2
-
3
- var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
4
-
5
- var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
6
-
7
- _Object$defineProperty(exports, "__esModule", {
8
- value: true
9
- });
10
-
11
- exports.default = void 0;
12
-
13
- var _keys = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/keys"));
14
-
15
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
16
-
17
- var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));
18
-
19
- var _omit2 = _interopRequireDefault(require("lodash/omit"));
20
-
21
- var _isEmpty2 = _interopRequireDefault(require("lodash/isEmpty"));
22
-
23
- var _uuid = _interopRequireDefault(require("uuid"));
24
-
25
- var _constants = require("../constants");
26
-
27
- // TODO: Break this up a bit more, so that consumers aren't calling data.data.getData()
28
-
29
- /**
30
- * @class WebRTCData
31
- */
32
- var WebRTCData = /*#__PURE__*/function () {
33
- /**
34
- * @param {Object} data
35
- */
36
- function WebRTCData(data) {
37
- (0, _classCallCheck2.default)(this, WebRTCData);
38
- this.data = data;
39
- this.id = _uuid.default.v4();
40
- }
41
- /**
42
- * get omitted rtc/rtcp/rtp/track/transport/candidate data with omitted data (default)
43
- * @returns {Object}
44
- */
45
-
46
-
47
- (0, _createClass2.default)(WebRTCData, [{
48
- key: "omit",
49
- value: function omit() {
50
- var _this = this;
51
-
52
- var flat = {};
53
- (0, _keys.default)(this.data).forEach(function (key) {
54
- flat[key] = (0, _omit2.default)(_this.data[key], _constants.DEFAULT_OMISSION_DATA_KEYS);
55
- });
56
- return flat;
57
- }
58
- /**
59
- * returns if the data is empty
60
- * @returns {Boolean};
61
- */
62
-
63
- }, {
64
- key: "isEmpty",
65
- value: function isEmpty() {
66
- return (0, _isEmpty2.default)(this.data);
67
- }
68
- /**
69
- * get the unique id for this specific stat pull
70
- * @returns {String};
71
- */
72
-
73
- }, {
74
- key: "getId",
75
- value: function getId() {
76
- return this.id;
77
- }
78
- /**
79
- * get the transformed data
80
- * @returns {Object}
81
- */
82
-
83
- }, {
84
- key: "getData",
85
- value: function getData() {
86
- return this.data;
87
- }
88
- }]);
89
- return WebRTCData;
90
- }();
91
-
92
- exports.default = WebRTCData;
93
- //# sourceMappingURL=data.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["WebRTCData","data","id","uuid","v4","flat","forEach","key","DEFAULT_OMISSION_DATA_KEYS"],"sources":["data.js"],"sourcesContent":["import uuid from 'uuid';\nimport {isEmpty, omit} from 'lodash';\n\nimport {DEFAULT_OMISSION_DATA_KEYS} from '../constants';\n\n// TODO: Break this up a bit more, so that consumers aren't calling data.data.getData()\n/**\n * @class WebRTCData\n */\nexport default class WebRTCData {\n /**\n * @param {Object} data\n */\n constructor(data) {\n this.data = data;\n this.id = uuid.v4();\n }\n\n /**\n * get omitted rtc/rtcp/rtp/track/transport/candidate data with omitted data (default)\n * @returns {Object}\n */\n omit() {\n const flat = {};\n\n Object.keys(this.data).forEach((key) => {\n flat[key] = omit(this.data[key], DEFAULT_OMISSION_DATA_KEYS);\n });\n\n return flat;\n }\n\n /**\n * returns if the data is empty\n * @returns {Boolean};\n */\n isEmpty() {\n return isEmpty(this.data);\n }\n\n /**\n * get the unique id for this specific stat pull\n * @returns {String};\n */\n getId() {\n return this.id;\n }\n\n /**\n * get the transformed data\n * @returns {Object}\n */\n getData() {\n return this.data;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA;;AAGA;;AAEA;;AACA;AACA;AACA;IACqBA,U;EACnB;AACF;AACA;EACE,oBAAYC,IAAZ,EAAkB;IAAA;IAChB,KAAKA,IAAL,GAAYA,IAAZ;IACA,KAAKC,EAAL,GAAUC,aAAA,CAAKC,EAAL,EAAV;EACD;EAED;AACF;AACA;AACA;;;;;WACE,gBAAO;MAAA;;MACL,IAAMC,IAAI,GAAG,EAAb;MAEA,mBAAY,KAAKJ,IAAjB,EAAuBK,OAAvB,CAA+B,UAACC,GAAD,EAAS;QACtCF,IAAI,CAACE,GAAD,CAAJ,GAAY,oBAAK,KAAI,CAACN,IAAL,CAAUM,GAAV,CAAL,EAAqBC,qCAArB,CAAZ;MACD,CAFD;MAIA,OAAOH,IAAP;IACD;IAED;AACF;AACA;AACA;;;;WACE,mBAAU;MACR,OAAO,uBAAQ,KAAKJ,IAAb,CAAP;IACD;IAED;AACF;AACA;AACA;;;;WACE,iBAAQ;MACN,OAAO,KAAKC,EAAZ;IACD;IAED;AACF;AACA;AACA;;;;WACE,mBAAU;MACR,OAAO,KAAKD,IAAZ;IACD"}
@@ -1,222 +0,0 @@
1
- "use strict";
2
-
3
- var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
4
-
5
- var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
6
-
7
- _Object$defineProperty(exports, "__esModule", {
8
- value: true
9
- });
10
-
11
- exports.default = void 0;
12
-
13
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
14
-
15
- var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));
16
-
17
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
18
-
19
- var _analyzer = _interopRequireDefault(require("../analyzer/analyzer"));
20
-
21
- var _constants = require("../constants");
22
-
23
- /**
24
- * @param {Object} operate the filtered, parsed, converted, transformed, simplified data point to check against
25
- * @param {String} type - local or remote
26
- * @param {String} keys - the stat keys for types of stats defined by DEFAULT_TRANSFORM_REGEX
27
- * @param {String} stat - the accessor to get the actual stat
28
- * @param {String} kind - audio or video
29
- * @returns {Object} always whatever the first sentFirstVideoBytes were, in the past or if it happened now, or undefined if never
30
- * @private
31
- * @memberof StatsEvents
32
- */
33
- var operateEvent = function operateEvent(operate, type, keys, stat, kind) {
34
- var foundMatch = {};
35
- foundMatch.found = keys.some(function (key) {
36
- if (operate[key] && operate[key][stat] && operate[key][stat] > 0) {
37
- foundMatch.match = {
38
- type: type,
39
- key: key,
40
- data: operate[key],
41
- stat: stat,
42
- kind: kind
43
- };
44
- return true;
45
- }
46
-
47
- return false;
48
- });
49
- return foundMatch;
50
- };
51
- /**
52
- * @export
53
- * @class StatsEvents
54
- */
55
-
56
-
57
- var StatsEvents = /*#__PURE__*/function () {
58
- /**
59
- * constructs an instance
60
- * @constructor
61
- * @param {StatsHistory} series
62
- * @param {Function} callback
63
- * @memberof StatsEvents
64
- */
65
- function StatsEvents() {
66
- var series = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
67
- var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () {};
68
- (0, _classCallCheck2.default)(this, StatsEvents);
69
- (0, _defineProperty2.default)(this, "namespace", _constants.MEETINGS);
70
-
71
- /**
72
- * @instance
73
- * @type {StatsHistory}
74
- * @private
75
- * @memberof StatsEvents
76
- */
77
- this.series = series;
78
- /**
79
- * @instance
80
- * @type {Function}
81
- * @private
82
- * @memberof StatsEvents
83
- */
84
-
85
- this.callback = callback;
86
- /**
87
- * @instance
88
- * @type {WebRTCData}
89
- * @private
90
- * @memberof StatsEvents
91
- */
92
-
93
- this.first = null;
94
- /**
95
- * @instance
96
- * @type {Boolean}
97
- * @private
98
- * @memberof StatsEvents
99
- */
100
-
101
- this.sendRemainStopped = false;
102
- /**
103
- * @instance
104
- * @type {Boolean}
105
- * @private
106
- * @memberof StatsEvents
107
- */
108
-
109
- this.recvRemainStopped = false;
110
- }
111
- /**
112
- * looks for data starting to flow through
113
- * @param {WebRTCData} data
114
- * @returns {Object}
115
- */
116
-
117
-
118
- (0, _createClass2.default)(StatsEvents, [{
119
- key: "start",
120
- value: function start(data) {
121
- if (data && data.data && data.data.getData()) {
122
- var operate = data.data.getData();
123
-
124
- if (operate && !this.first) {
125
- var operator = [operateEvent(operate, _constants.EVENT_TYPES.LOCAL, _constants.DEFAULT_EVENT_AUDIO_SEND_KEYS, _constants.EVENT_STATS_MAP.BYTES_SENT, _constants.AUDIO), operateEvent(operate, _constants.EVENT_TYPES.LOCAL, _constants.DEFAULT_EVENT_VIDEO_SEND_KEYS, _constants.EVENT_STATS_MAP.BYTES_SENT, _constants.VIDEO), operateEvent(operate, _constants.EVENT_TYPES.REMOTE, _constants.DEFAULT_EVENT_VIDEO_RECEIVE_KEYS, _constants.EVENT_STATS_MAP.BYTES_RECEIVED, _constants.VIDEO), operateEvent(operate, _constants.EVENT_TYPES.REMOTE, _constants.DEFAULT_EVENT_AUDIO_RECEIVE_KEYS, _constants.EVENT_STATS_MAP.BYTES_RECEIVED, _constants.AUDIO)];
126
- var somethingMatched = operator.find(function (element) {
127
- return element && element.found && element.match;
128
- });
129
-
130
- if (somethingMatched) {
131
- this.first = somethingMatched.match;
132
- this.callback(this.first);
133
- return somethingMatched;
134
- }
135
- }
136
- }
137
-
138
- return null;
139
- }
140
- /**
141
- * Looks for data to stop coming through
142
- * @returns {Object}
143
- */
144
-
145
- }, {
146
- key: "stop",
147
- value: function stop() {
148
- if (!this.series || this.series.get().length < 5) {
149
- return null;
150
- }
151
-
152
- var fiveSecondsData = this.series.getSlice(5);
153
- var prop = fiveSecondsData[0] && fiveSecondsData[0].rtpOutAudio || fiveSecondsData[0].rtpInAudio || fiveSecondsData[0].rtpInVideo || fiveSecondsData[0].rtpOutVideo;
154
-
155
- var sendAnalysis = _analyzer.default.analyze(fiveSecondsData, {
156
- analysisKeys: [{
157
- key: _constants.EVENT_STATS_MAP.BYTES_SENT,
158
- check: _constants.ANALYSIS_CHECKS.INCREASING,
159
- prop: prop
160
- }]
161
- });
162
-
163
- var receiveAnalysis = _analyzer.default.analyze(fiveSecondsData, {
164
- analysisKeys: [{
165
- key: _constants.EVENT_STATS_MAP.BYTES_RECEIVED,
166
- check: _constants.ANALYSIS_CHECKS.INCREASING,
167
- prop: prop
168
- }]
169
- });
170
-
171
- if (!sendAnalysis.valid && sendAnalysis.data.bytesSent.reports.length > 0) {
172
- if (!this.sendRemainStopped) {
173
- var ret = {
174
- stop: true,
175
- stat: _constants.EVENT_STATS_MAP.BYTES_SENT
176
- };
177
- this.callback(ret);
178
- this.sendRemainStopped = true;
179
- this.first = null;
180
- return ret;
181
- }
182
- } else if (sendAnalysis.valid && sendAnalysis.data.bytesSent.reports.length > 0) {
183
- this.sendRemainStopped = false;
184
- }
185
-
186
- if (!receiveAnalysis.valid && receiveAnalysis.data.bytesReceived.reports.length > 0) {
187
- if (!this.recvRemainStopped) {
188
- var _ret = {
189
- stop: true,
190
- stat: _constants.EVENT_STATS_MAP.BYTES_RECEIVED
191
- };
192
- this.callback(_ret);
193
- this.recvRemainStopped = true;
194
- this.first = null;
195
- return _ret;
196
- }
197
- } else if (receiveAnalysis.valid && receiveAnalysis.data.bytesReceived.reports.length > 0) {
198
- this.recvRemainStopped = false;
199
- }
200
-
201
- return null;
202
- }
203
- /**
204
- * handles all the types of events that need to be sent when they happen from getStats API
205
- * @param {WebRTCData} data
206
- * @returns {Object}
207
- */
208
-
209
- }, {
210
- key: "event",
211
- value: function event(data) {
212
- return {
213
- start: this.start(data),
214
- stop: this.stop()
215
- };
216
- }
217
- }]);
218
- return StatsEvents;
219
- }();
220
-
221
- exports.default = StatsEvents;
222
- //# sourceMappingURL=events.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["operateEvent","operate","type","keys","stat","kind","foundMatch","found","some","key","match","data","StatsEvents","series","callback","MEETINGS","first","sendRemainStopped","recvRemainStopped","getData","operator","EVENT_TYPES","LOCAL","DEFAULT_EVENT_AUDIO_SEND_KEYS","EVENT_STATS_MAP","BYTES_SENT","AUDIO","DEFAULT_EVENT_VIDEO_SEND_KEYS","VIDEO","REMOTE","DEFAULT_EVENT_VIDEO_RECEIVE_KEYS","BYTES_RECEIVED","DEFAULT_EVENT_AUDIO_RECEIVE_KEYS","somethingMatched","find","element","get","length","fiveSecondsData","getSlice","prop","rtpOutAudio","rtpInAudio","rtpInVideo","rtpOutVideo","sendAnalysis","StatsAnalyzer","analyze","analysisKeys","check","ANALYSIS_CHECKS","INCREASING","receiveAnalysis","valid","bytesSent","reports","ret","stop","bytesReceived","start"],"sources":["events.js"],"sourcesContent":["import StatsAnalyzer from '../analyzer/analyzer';\nimport {\n DEFAULT_EVENT_VIDEO_SEND_KEYS,\n DEFAULT_EVENT_AUDIO_SEND_KEYS,\n DEFAULT_EVENT_AUDIO_RECEIVE_KEYS,\n DEFAULT_EVENT_VIDEO_RECEIVE_KEYS,\n EVENT_TYPES,\n EVENT_STATS_MAP,\n MEETINGS,\n AUDIO,\n VIDEO,\n ANALYSIS_CHECKS\n} from '../constants';\n\n/**\n * @param {Object} operate the filtered, parsed, converted, transformed, simplified data point to check against\n * @param {String} type - local or remote\n * @param {String} keys - the stat keys for types of stats defined by DEFAULT_TRANSFORM_REGEX\n * @param {String} stat - the accessor to get the actual stat\n * @param {String} kind - audio or video\n * @returns {Object} always whatever the first sentFirstVideoBytes were, in the past or if it happened now, or undefined if never\n * @private\n * @memberof StatsEvents\n */\nconst operateEvent = (operate, type, keys, stat, kind) => {\n const foundMatch = {};\n\n foundMatch.found = keys.some((key) => {\n if (operate[key] && operate[key][stat] && operate[key][stat] > 0) {\n foundMatch.match = {\n type,\n key,\n data: operate[key],\n stat,\n kind\n };\n\n return true;\n }\n\n return false;\n });\n\n return foundMatch;\n};\n\n/**\n * @export\n * @class StatsEvents\n */\nexport default class StatsEvents {\n namespace = MEETINGS;\n\n /**\n * constructs an instance\n * @constructor\n * @param {StatsHistory} series\n * @param {Function} callback\n * @memberof StatsEvents\n */\n constructor(series = null, callback = () => {}) {\n /**\n * @instance\n * @type {StatsHistory}\n * @private\n * @memberof StatsEvents\n */\n this.series = series;\n /**\n * @instance\n * @type {Function}\n * @private\n * @memberof StatsEvents\n */\n this.callback = callback;\n /**\n * @instance\n * @type {WebRTCData}\n * @private\n * @memberof StatsEvents\n */\n this.first = null;\n /**\n * @instance\n * @type {Boolean}\n * @private\n * @memberof StatsEvents\n */\n this.sendRemainStopped = false;\n /**\n * @instance\n * @type {Boolean}\n * @private\n * @memberof StatsEvents\n */\n this.recvRemainStopped = false;\n }\n\n /**\n * looks for data starting to flow through\n * @param {WebRTCData} data\n * @returns {Object}\n */\n start(data) {\n if (data && data.data && data.data.getData()) {\n const operate = data.data.getData();\n\n if (operate && !this.first) {\n const operator = [\n operateEvent(operate, EVENT_TYPES.LOCAL, DEFAULT_EVENT_AUDIO_SEND_KEYS, EVENT_STATS_MAP.BYTES_SENT, AUDIO),\n operateEvent(operate, EVENT_TYPES.LOCAL, DEFAULT_EVENT_VIDEO_SEND_KEYS, EVENT_STATS_MAP.BYTES_SENT, VIDEO),\n operateEvent(operate, EVENT_TYPES.REMOTE, DEFAULT_EVENT_VIDEO_RECEIVE_KEYS, EVENT_STATS_MAP.BYTES_RECEIVED, VIDEO),\n operateEvent(operate, EVENT_TYPES.REMOTE, DEFAULT_EVENT_AUDIO_RECEIVE_KEYS, EVENT_STATS_MAP.BYTES_RECEIVED, AUDIO)\n ];\n const somethingMatched = operator.find((element) => element && element.found && element.match);\n\n if (somethingMatched) {\n this.first = somethingMatched.match;\n this.callback(this.first);\n\n return somethingMatched;\n }\n }\n }\n\n return null;\n }\n\n /**\n * Looks for data to stop coming through\n * @returns {Object}\n */\n stop() {\n if (!this.series || this.series.get().length < 5) {\n return null;\n }\n const fiveSecondsData = this.series.getSlice(5);\n const prop = fiveSecondsData[0] && fiveSecondsData[0].rtpOutAudio || fiveSecondsData[0].rtpInAudio || fiveSecondsData[0].rtpInVideo || fiveSecondsData[0].rtpOutVideo;\n const sendAnalysis = StatsAnalyzer.analyze(fiveSecondsData, {analysisKeys: [{key: EVENT_STATS_MAP.BYTES_SENT, check: ANALYSIS_CHECKS.INCREASING, prop}]});\n const receiveAnalysis = StatsAnalyzer.analyze(fiveSecondsData, {analysisKeys: [{key: EVENT_STATS_MAP.BYTES_RECEIVED, check: ANALYSIS_CHECKS.INCREASING, prop}]});\n\n if (!sendAnalysis.valid && sendAnalysis.data.bytesSent.reports.length > 0) {\n if (!this.sendRemainStopped) {\n const ret = {stop: true, stat: EVENT_STATS_MAP.BYTES_SENT};\n\n this.callback(ret);\n this.sendRemainStopped = true;\n this.first = null;\n\n return ret;\n }\n }\n else if (sendAnalysis.valid && sendAnalysis.data.bytesSent.reports.length > 0) {\n this.sendRemainStopped = false;\n }\n if (!receiveAnalysis.valid && receiveAnalysis.data.bytesReceived.reports.length > 0) {\n if (!this.recvRemainStopped) {\n const ret = {stop: true, stat: EVENT_STATS_MAP.BYTES_RECEIVED};\n\n this.callback(ret);\n this.recvRemainStopped = true;\n this.first = null;\n\n return ret;\n }\n }\n else if (receiveAnalysis.valid && receiveAnalysis.data.bytesReceived.reports.length > 0) {\n this.recvRemainStopped = false;\n }\n\n return null;\n }\n\n /**\n * handles all the types of events that need to be sent when they happen from getStats API\n * @param {WebRTCData} data\n * @returns {Object}\n */\n event(data) {\n return {\n start: this.start(data),\n stop: this.stop()\n };\n }\n}\n"],"mappings":"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"}
@@ -1,84 +0,0 @@
1
- "use strict";
2
-
3
- var _Reflect$construct = require("@babel/runtime-corejs2/core-js/reflect/construct");
4
-
5
- var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
6
-
7
- var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
8
-
9
- _Object$defineProperty(exports, "__esModule", {
10
- value: true
11
- });
12
-
13
- exports.default = void 0;
14
-
15
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
16
-
17
- var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));
18
-
19
- var _inherits2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/inherits"));
20
-
21
- var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/possibleConstructorReturn"));
22
-
23
- var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/getPrototypeOf"));
24
-
25
- var _readableStream = require("readable-stream");
26
-
27
- var _transformer = _interopRequireDefault(require("../stats/transformer"));
28
-
29
- var _data = _interopRequireDefault(require("../stats/data"));
30
-
31
- function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = _Reflect$construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
32
-
33
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !_Reflect$construct) return false; if (_Reflect$construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(_Reflect$construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
34
-
35
- /**
36
- * Reforms the interesting data from an RTCStatsReport to a new format
37
- */
38
- var StatsFilter = /*#__PURE__*/function (_Transform) {
39
- (0, _inherits2.default)(StatsFilter, _Transform);
40
-
41
- var _super = _createSuper(StatsFilter);
42
-
43
- /**
44
- * Tells the Stream we're operating in objectMode
45
- * @private
46
- */
47
- function StatsFilter() {
48
- (0, _classCallCheck2.default)(this, StatsFilter);
49
- return _super.call(this, {
50
- objectMode: true
51
- });
52
- }
53
- /**
54
- * Filters out data on the RTCStatsReport to the data around call quality and pushes it as a WebRTCData object
55
- * @param {RTCStatsReport} report
56
- * @param {*} encoding
57
- * @param {Function} callback
58
- * @private
59
- * @returns {undefined}
60
- */
61
-
62
-
63
- (0, _createClass2.default)(StatsFilter, [{
64
- key: "_transform",
65
- value: function _transform(report, encoding, callback) {
66
- if (!report) {
67
- callback();
68
- return;
69
- }
70
-
71
- var data = _transformer.default.transform(report);
72
-
73
- var push = new _data.default(data);
74
- this.push({
75
- data: push
76
- });
77
- callback();
78
- }
79
- }]);
80
- return StatsFilter;
81
- }(_readableStream.Transform);
82
-
83
- exports.default = StatsFilter;
84
- //# sourceMappingURL=filter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["StatsFilter","objectMode","report","encoding","callback","data","StatsTransformer","transform","push","WebRTCData","Transform"],"sources":["filter.js"],"sourcesContent":["import {Transform} from 'readable-stream';\n\nimport StatsTransformer from '../stats/transformer';\nimport WebRTCData from '../stats/data';\n\n/**\n * Reforms the interesting data from an RTCStatsReport to a new format\n */\nexport default class StatsFilter extends Transform {\n /**\n * Tells the Stream we're operating in objectMode\n * @private\n */\n constructor() {\n super({objectMode: true});\n }\n\n /**\n * Filters out data on the RTCStatsReport to the data around call quality and pushes it as a WebRTCData object\n * @param {RTCStatsReport} report\n * @param {*} encoding\n * @param {Function} callback\n * @private\n * @returns {undefined}\n */\n _transform(report, encoding, callback) {\n if (!report) {\n callback();\n\n return;\n }\n const data = StatsTransformer.transform(report);\n const push = new WebRTCData(data);\n\n this.push({\n data: push\n });\n callback();\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AAEA;;AACA;;;;;;AAEA;AACA;AACA;IACqBA,W;;;;;EACnB;AACF;AACA;AACA;EACE,uBAAc;IAAA;IAAA,yBACN;MAACC,UAAU,EAAE;IAAb,CADM;EAEb;EAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;;;;;WACE,oBAAWC,MAAX,EAAmBC,QAAnB,EAA6BC,QAA7B,EAAuC;MACrC,IAAI,CAACF,MAAL,EAAa;QACXE,QAAQ;QAER;MACD;;MACD,IAAMC,IAAI,GAAGC,oBAAA,CAAiBC,SAAjB,CAA2BL,MAA3B,CAAb;;MACA,IAAMM,IAAI,GAAG,IAAIC,aAAJ,CAAeJ,IAAf,CAAb;MAEA,KAAKG,IAAL,CAAU;QACRH,IAAI,EAAEG;MADE,CAAV;MAGAJ,QAAQ;IACT;;;EA9BsCM,yB"}