@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/dist/stats/history.js
DELETED
|
@@ -1,147 +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
|
-
/**
|
|
18
|
-
* stores the last x filtered stream datas
|
|
19
|
-
*/
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* @export
|
|
23
|
-
* @class StatsHistory
|
|
24
|
-
*/
|
|
25
|
-
var StatsHistory = /*#__PURE__*/function () {
|
|
26
|
-
/**
|
|
27
|
-
* instantiate our wrapped history array
|
|
28
|
-
* @param {Number} max
|
|
29
|
-
*/
|
|
30
|
-
function StatsHistory(max) {
|
|
31
|
-
(0, _classCallCheck2.default)(this, StatsHistory);
|
|
32
|
-
|
|
33
|
-
/**
|
|
34
|
-
* @instance
|
|
35
|
-
* @type {Array}
|
|
36
|
-
* @public
|
|
37
|
-
* @memberof StatsHistory
|
|
38
|
-
*/
|
|
39
|
-
this.history = [];
|
|
40
|
-
/**
|
|
41
|
-
* @instance
|
|
42
|
-
* @type {Number}
|
|
43
|
-
* @public
|
|
44
|
-
* @memberof StatsHistory
|
|
45
|
-
*/
|
|
46
|
-
|
|
47
|
-
this.max = max;
|
|
48
|
-
}
|
|
49
|
-
/**
|
|
50
|
-
* @returns {Array} the array of stats reports, read from [0] = most recent to [length - 1] = least recent
|
|
51
|
-
* @public
|
|
52
|
-
* @memberof StatsHistory
|
|
53
|
-
*/
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
(0, _createClass2.default)(StatsHistory, [{
|
|
57
|
-
key: "get",
|
|
58
|
-
value: function get() {
|
|
59
|
-
return this.history;
|
|
60
|
-
}
|
|
61
|
-
/**
|
|
62
|
-
* deletes the history array and resets it
|
|
63
|
-
* @returns {undefined}
|
|
64
|
-
* @public
|
|
65
|
-
* @memberof StatsHistory
|
|
66
|
-
*/
|
|
67
|
-
|
|
68
|
-
}, {
|
|
69
|
-
key: "clear",
|
|
70
|
-
value: function clear() {
|
|
71
|
-
this.history = [];
|
|
72
|
-
}
|
|
73
|
-
/**
|
|
74
|
-
* gets the stored stat
|
|
75
|
-
* @param {Number} index the location
|
|
76
|
-
* @returns {Object} the stat at location index
|
|
77
|
-
* @public
|
|
78
|
-
* @memberof StatsHistory
|
|
79
|
-
*/
|
|
80
|
-
|
|
81
|
-
}, {
|
|
82
|
-
key: "getAt",
|
|
83
|
-
value: function getAt(index) {
|
|
84
|
-
return this.history[index];
|
|
85
|
-
}
|
|
86
|
-
/**
|
|
87
|
-
* gets the most recently stored stat
|
|
88
|
-
* @returns {Object} the most recently added stat to the history recorder
|
|
89
|
-
* @public
|
|
90
|
-
* @memberof StatsHistory
|
|
91
|
-
*/
|
|
92
|
-
|
|
93
|
-
}, {
|
|
94
|
-
key: "getMostRecent",
|
|
95
|
-
value: function getMostRecent() {
|
|
96
|
-
return this.history.length > 1 ? this.getAt(0) : null;
|
|
97
|
-
}
|
|
98
|
-
/**
|
|
99
|
-
* gets the last two values, that can be used to compare
|
|
100
|
-
* @returns {Object} {previous: WebRTCData, current: WebRTCData}
|
|
101
|
-
*/
|
|
102
|
-
|
|
103
|
-
}, {
|
|
104
|
-
key: "getComparable",
|
|
105
|
-
value: function getComparable() {
|
|
106
|
-
return {
|
|
107
|
-
previous: this.getMostRecent(),
|
|
108
|
-
current: this.history.length > 2 ? this.getAt(1) : null
|
|
109
|
-
};
|
|
110
|
-
}
|
|
111
|
-
/**
|
|
112
|
-
* gets a cut of the n most recent WebRTC datas stored
|
|
113
|
-
* @param {Number} exclusiveEnd
|
|
114
|
-
* @returns {Array}
|
|
115
|
-
*/
|
|
116
|
-
|
|
117
|
-
}, {
|
|
118
|
-
key: "getSlice",
|
|
119
|
-
value: function getSlice(exclusiveEnd) {
|
|
120
|
-
return this.history.slice(0, exclusiveEnd);
|
|
121
|
-
}
|
|
122
|
-
/**
|
|
123
|
-
* adds a history entry into tshe array at the head, removes from the tail
|
|
124
|
-
* if too large, returns the old tail if removed
|
|
125
|
-
* @param {WebRTCData} data filtered stats report to add to the history array
|
|
126
|
-
* @returns {Object} the removed stats report at the end if that had to be removed
|
|
127
|
-
* to make space for the new stats data report to be added to the front
|
|
128
|
-
*/
|
|
129
|
-
|
|
130
|
-
}, {
|
|
131
|
-
key: "add",
|
|
132
|
-
value: function add(data) {
|
|
133
|
-
var removed = null;
|
|
134
|
-
|
|
135
|
-
if (this.history.length >= this.max) {
|
|
136
|
-
removed = this.history.pop();
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
this.history.unshift(data);
|
|
140
|
-
return removed;
|
|
141
|
-
}
|
|
142
|
-
}]);
|
|
143
|
-
return StatsHistory;
|
|
144
|
-
}();
|
|
145
|
-
|
|
146
|
-
exports.default = StatsHistory;
|
|
147
|
-
//# sourceMappingURL=history.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["StatsHistory","max","history","index","length","getAt","previous","getMostRecent","current","exclusiveEnd","slice","data","removed","pop","unshift"],"sources":["history.js"],"sourcesContent":["/**\n * stores the last x filtered stream datas\n */\n/**\n * @export\n * @class StatsHistory\n */\nexport default class StatsHistory {\n /**\n * instantiate our wrapped history array\n * @param {Number} max\n */\n constructor(max) {\n /**\n * @instance\n * @type {Array}\n * @public\n * @memberof StatsHistory\n */\n this.history = [];\n /**\n * @instance\n * @type {Number}\n * @public\n * @memberof StatsHistory\n */\n this.max = max;\n }\n\n /**\n * @returns {Array} the array of stats reports, read from [0] = most recent to [length - 1] = least recent\n * @public\n * @memberof StatsHistory\n */\n get() {\n return this.history;\n }\n\n /**\n * deletes the history array and resets it\n * @returns {undefined}\n * @public\n * @memberof StatsHistory\n */\n clear() {\n this.history = [];\n }\n\n /**\n * gets the stored stat\n * @param {Number} index the location\n * @returns {Object} the stat at location index\n * @public\n * @memberof StatsHistory\n */\n getAt(index) {\n return this.history[index];\n }\n\n /**\n * gets the most recently stored stat\n * @returns {Object} the most recently added stat to the history recorder\n * @public\n * @memberof StatsHistory\n */\n getMostRecent() {\n return this.history.length > 1 ? this.getAt(0) : null;\n }\n\n /**\n * gets the last two values, that can be used to compare\n * @returns {Object} {previous: WebRTCData, current: WebRTCData}\n */\n getComparable() {\n return {\n previous: this.getMostRecent(),\n current: this.history.length > 2 ? this.getAt(1) : null\n };\n }\n\n /**\n * gets a cut of the n most recent WebRTC datas stored\n * @param {Number} exclusiveEnd\n * @returns {Array}\n */\n getSlice(exclusiveEnd) {\n return this.history.slice(0, exclusiveEnd);\n }\n\n /**\n * adds a history entry into tshe array at the head, removes from the tail\n * if too large, returns the old tail if removed\n * @param {WebRTCData} data filtered stats report to add to the history array\n * @returns {Object} the removed stats report at the end if that had to be removed\n * to make space for the new stats data report to be added to the front\n */\n add(data) {\n let removed = null;\n\n if (this.history.length >= this.max) {\n removed = this.history.pop();\n }\n this.history.unshift(data);\n\n return removed;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;AACA;AACA;;AACA;AACA;AACA;AACA;IACqBA,Y;EACnB;AACF;AACA;AACA;EACE,sBAAYC,GAAZ,EAAiB;IAAA;;IACf;AACJ;AACA;AACA;AACA;AACA;IACI,KAAKC,OAAL,GAAe,EAAf;IACA;AACJ;AACA;AACA;AACA;AACA;;IACI,KAAKD,GAAL,GAAWA,GAAX;EACD;EAED;AACF;AACA;AACA;AACA;;;;;WACE,eAAM;MACJ,OAAO,KAAKC,OAAZ;IACD;IAED;AACF;AACA;AACA;AACA;AACA;;;;WACE,iBAAQ;MACN,KAAKA,OAAL,GAAe,EAAf;IACD;IAED;AACF;AACA;AACA;AACA;AACA;AACA;;;;WACE,eAAMC,KAAN,EAAa;MACX,OAAO,KAAKD,OAAL,CAAaC,KAAb,CAAP;IACD;IAED;AACF;AACA;AACA;AACA;AACA;;;;WACE,yBAAgB;MACd,OAAO,KAAKD,OAAL,CAAaE,MAAb,GAAsB,CAAtB,GAA0B,KAAKC,KAAL,CAAW,CAAX,CAA1B,GAA0C,IAAjD;IACD;IAED;AACF;AACA;AACA;;;;WACE,yBAAgB;MACd,OAAO;QACLC,QAAQ,EAAE,KAAKC,aAAL,EADL;QAELC,OAAO,EAAE,KAAKN,OAAL,CAAaE,MAAb,GAAsB,CAAtB,GAA0B,KAAKC,KAAL,CAAW,CAAX,CAA1B,GAA0C;MAF9C,CAAP;IAID;IAED;AACF;AACA;AACA;AACA;;;;WACE,kBAASI,YAAT,EAAuB;MACrB,OAAO,KAAKP,OAAL,CAAaQ,KAAb,CAAmB,CAAnB,EAAsBD,YAAtB,CAAP;IACD;IAED;AACF;AACA;AACA;AACA;AACA;AACA;;;;WACE,aAAIE,IAAJ,EAAU;MACR,IAAIC,OAAO,GAAG,IAAd;;MAEA,IAAI,KAAKV,OAAL,CAAaE,MAAb,IAAuB,KAAKH,GAAhC,EAAqC;QACnCW,OAAO,GAAG,KAAKV,OAAL,CAAaW,GAAb,EAAV;MACD;;MACD,KAAKX,OAAL,CAAaY,OAAb,CAAqBH,IAArB;MAEA,OAAOC,OAAP;IACD"}
|
package/dist/stats/index.js
DELETED
|
@@ -1,425 +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 _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/assertThisInitialized"));
|
|
20
|
-
|
|
21
|
-
var _inherits2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/inherits"));
|
|
22
|
-
|
|
23
|
-
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/possibleConstructorReturn"));
|
|
24
|
-
|
|
25
|
-
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/getPrototypeOf"));
|
|
26
|
-
|
|
27
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
|
|
28
|
-
|
|
29
|
-
var _forEach2 = _interopRequireDefault(require("lodash/forEach"));
|
|
30
|
-
|
|
31
|
-
var _webexCore = require("@webex/webex-core");
|
|
32
|
-
|
|
33
|
-
var _constants = require("../constants");
|
|
34
|
-
|
|
35
|
-
var _stats = _interopRequireDefault(require("../stats/stats"));
|
|
36
|
-
|
|
37
|
-
var _util = _interopRequireDefault(require("../stats/util"));
|
|
38
|
-
|
|
39
|
-
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); }; }
|
|
40
|
-
|
|
41
|
-
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; } }
|
|
42
|
-
|
|
43
|
-
/**
|
|
44
|
-
* @class WebRTCStats
|
|
45
|
-
*/
|
|
46
|
-
var WebRTCStats = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
47
|
-
(0, _inherits2.default)(WebRTCStats, _StatelessWebexPlugin);
|
|
48
|
-
|
|
49
|
-
var _super = _createSuper(WebRTCStats);
|
|
50
|
-
|
|
51
|
-
/**
|
|
52
|
-
*
|
|
53
|
-
* @param {Object} attrs
|
|
54
|
-
* @param {Object} options
|
|
55
|
-
* @param {Object} [optionalCreateOptions]
|
|
56
|
-
*/
|
|
57
|
-
function WebRTCStats(attrs, options, optionalCreateOptions) {
|
|
58
|
-
var _this;
|
|
59
|
-
|
|
60
|
-
(0, _classCallCheck2.default)(this, WebRTCStats);
|
|
61
|
-
_this = _super.call(this, {}, options);
|
|
62
|
-
/**
|
|
63
|
-
* @instance
|
|
64
|
-
* @type {Object}
|
|
65
|
-
* @private
|
|
66
|
-
* @memberof WebRTCStats
|
|
67
|
-
*/
|
|
68
|
-
|
|
69
|
-
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "namespace", _constants.MEETINGS);
|
|
70
|
-
_this.attrs = attrs;
|
|
71
|
-
/**
|
|
72
|
-
* @instance
|
|
73
|
-
* @type {Object}
|
|
74
|
-
* @private
|
|
75
|
-
* @memberof WebRTCStats
|
|
76
|
-
*/
|
|
77
|
-
|
|
78
|
-
_this.options = options;
|
|
79
|
-
/**
|
|
80
|
-
* @instance
|
|
81
|
-
* @type {Object}
|
|
82
|
-
* @public
|
|
83
|
-
* @memberof WebRTCStats
|
|
84
|
-
*/
|
|
85
|
-
|
|
86
|
-
_this.senders = {};
|
|
87
|
-
/**
|
|
88
|
-
* @instance
|
|
89
|
-
* @type {Object}
|
|
90
|
-
* @public
|
|
91
|
-
* @memberof WebRTCStats
|
|
92
|
-
*/
|
|
93
|
-
|
|
94
|
-
_this.receivers = {};
|
|
95
|
-
/**
|
|
96
|
-
* @instance
|
|
97
|
-
* @type {Meeting}
|
|
98
|
-
* @private
|
|
99
|
-
* @memberof WebRTCStats
|
|
100
|
-
*/
|
|
101
|
-
|
|
102
|
-
_this.meetingRef = null;
|
|
103
|
-
/**
|
|
104
|
-
* @instance
|
|
105
|
-
* @type {Object}
|
|
106
|
-
* @public
|
|
107
|
-
* @memberof WebRTCStats
|
|
108
|
-
*/
|
|
109
|
-
|
|
110
|
-
_this.statsConfig = null;
|
|
111
|
-
|
|
112
|
-
_this.populate(optionalCreateOptions);
|
|
113
|
-
|
|
114
|
-
return _this;
|
|
115
|
-
}
|
|
116
|
-
/**
|
|
117
|
-
* @param {Object} [optionalCreateOptions]
|
|
118
|
-
* @param {Object} optionalCreateOptions.config
|
|
119
|
-
* @param {Meeting} optionalCreateOptions.meeting
|
|
120
|
-
* @param {Object} optionalCreateOptions.senders
|
|
121
|
-
* @param {Object} optionalCreateOptions.receivers
|
|
122
|
-
* @returns {WebRTCStats}
|
|
123
|
-
* @private
|
|
124
|
-
* @memberof WebRTCStats
|
|
125
|
-
*/
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
(0, _createClass2.default)(WebRTCStats, [{
|
|
129
|
-
key: "populate",
|
|
130
|
-
value: function populate(optionalCreateOptions) {
|
|
131
|
-
if (optionalCreateOptions) {
|
|
132
|
-
if (optionalCreateOptions.config) {
|
|
133
|
-
this.setConfig(optionalCreateOptions.config);
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
if (optionalCreateOptions.meeting) {
|
|
137
|
-
this.associateMeeting(optionalCreateOptions.meeting);
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
if (optionalCreateOptions.senders) {
|
|
141
|
-
this.addSenders(optionalCreateOptions.senders);
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
if (optionalCreateOptions.receivers) {
|
|
145
|
-
this.addReceivers(optionalCreateOptions.receivers);
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
return this;
|
|
150
|
-
}
|
|
151
|
-
/**
|
|
152
|
-
* @param {Object} config
|
|
153
|
-
* @returns {WebRTCStats}
|
|
154
|
-
* @public
|
|
155
|
-
* @memberof WebRTCStats
|
|
156
|
-
*/
|
|
157
|
-
|
|
158
|
-
}, {
|
|
159
|
-
key: "setConfig",
|
|
160
|
-
value: function setConfig(config) {
|
|
161
|
-
this.statsConfig = config;
|
|
162
|
-
}
|
|
163
|
-
/**
|
|
164
|
-
* @param {Meeting} meeting
|
|
165
|
-
* @returns {WebRTCStats}
|
|
166
|
-
* @public
|
|
167
|
-
* @memberof WebRTCStats
|
|
168
|
-
*/
|
|
169
|
-
|
|
170
|
-
}, {
|
|
171
|
-
key: "associateMeeting",
|
|
172
|
-
value: function associateMeeting(meeting) {
|
|
173
|
-
this.meetingRef = meeting;
|
|
174
|
-
return this;
|
|
175
|
-
}
|
|
176
|
-
/**
|
|
177
|
-
* @param {Object} senders
|
|
178
|
-
* @param {Boolean} useConfig
|
|
179
|
-
* @returns {WebRTCStats}
|
|
180
|
-
* @public
|
|
181
|
-
* @memberof WebRTCStats
|
|
182
|
-
*/
|
|
183
|
-
|
|
184
|
-
}, {
|
|
185
|
-
key: "addSenders",
|
|
186
|
-
value: function addSenders(senders) {
|
|
187
|
-
var _this2 = this;
|
|
188
|
-
|
|
189
|
-
var useConfig = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
190
|
-
|
|
191
|
-
if (!senders.forEach) {
|
|
192
|
-
throw new TypeError('Stats senders must be created with an iterable array of senders to act on.');
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
senders.forEach(function (sender) {
|
|
196
|
-
_this2.addSender(sender, useConfig);
|
|
197
|
-
});
|
|
198
|
-
return this;
|
|
199
|
-
}
|
|
200
|
-
/**
|
|
201
|
-
* @param {Object} sender
|
|
202
|
-
* @param {Boolean} useConfig
|
|
203
|
-
* @returns {WebRTCStats}
|
|
204
|
-
* @public
|
|
205
|
-
* @memberof WebRTCStats
|
|
206
|
-
*/
|
|
207
|
-
|
|
208
|
-
}, {
|
|
209
|
-
key: "addSender",
|
|
210
|
-
value: function addSender(sender) {
|
|
211
|
-
var useConfig = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
212
|
-
|
|
213
|
-
if (sender) {
|
|
214
|
-
if (useConfig) {
|
|
215
|
-
_util.default.generateSingularOptions(sender, this.statsConfig, this.meetingRef, _constants.STATS.SENDERS);
|
|
216
|
-
}
|
|
217
|
-
|
|
218
|
-
sender.type = _constants.STATS.SENDER;
|
|
219
|
-
this.senders[sender.id] = new _stats.default(this.attrs, this.options, sender);
|
|
220
|
-
}
|
|
221
|
-
|
|
222
|
-
return this;
|
|
223
|
-
}
|
|
224
|
-
/**
|
|
225
|
-
*
|
|
226
|
-
* @param {String} id
|
|
227
|
-
* @returns {WebRTCStats}
|
|
228
|
-
* @public
|
|
229
|
-
* @memberof WebRTCStats
|
|
230
|
-
*/
|
|
231
|
-
|
|
232
|
-
}, {
|
|
233
|
-
key: "addSenderStats",
|
|
234
|
-
value: function addSenderStats(id) {
|
|
235
|
-
var newSender = new _stats.default(this.attrs, this.options);
|
|
236
|
-
this.senders[id] = newSender;
|
|
237
|
-
return newSender;
|
|
238
|
-
}
|
|
239
|
-
/**
|
|
240
|
-
*
|
|
241
|
-
* @param {String} id
|
|
242
|
-
* @returns {WebRTCStats}
|
|
243
|
-
* @public
|
|
244
|
-
* @memberof WebRTCStats
|
|
245
|
-
*/
|
|
246
|
-
|
|
247
|
-
}, {
|
|
248
|
-
key: "addReceiverStats",
|
|
249
|
-
value: function addReceiverStats(id) {
|
|
250
|
-
var newReceiver = new _stats.default(this.attrs, this.options);
|
|
251
|
-
this.receivers[id] = newReceiver;
|
|
252
|
-
return newReceiver;
|
|
253
|
-
}
|
|
254
|
-
/**
|
|
255
|
-
* @param {Object} receivers
|
|
256
|
-
* @param {boolean} useConfig
|
|
257
|
-
* @returns {WebRTCStats}
|
|
258
|
-
* @public
|
|
259
|
-
* @memberof WebRTCStats
|
|
260
|
-
*/
|
|
261
|
-
|
|
262
|
-
}, {
|
|
263
|
-
key: "addReceivers",
|
|
264
|
-
value: function addReceivers(receivers) {
|
|
265
|
-
var _this3 = this;
|
|
266
|
-
|
|
267
|
-
var useConfig = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
268
|
-
|
|
269
|
-
if (!receivers.forEach) {
|
|
270
|
-
throw new TypeError('Stats receivers must be created with an iterable array of receivers to act on.');
|
|
271
|
-
}
|
|
272
|
-
|
|
273
|
-
receivers.forEach(function (receiver) {
|
|
274
|
-
_this3.addReceiver(receiver, useConfig);
|
|
275
|
-
});
|
|
276
|
-
return this;
|
|
277
|
-
}
|
|
278
|
-
/**
|
|
279
|
-
* @param {Object} receiver
|
|
280
|
-
* @param {boolean} useConfig
|
|
281
|
-
* @returns {WebRTCStats}
|
|
282
|
-
* @public
|
|
283
|
-
* @memberof WebRTCStats
|
|
284
|
-
*/
|
|
285
|
-
|
|
286
|
-
}, {
|
|
287
|
-
key: "addReceiver",
|
|
288
|
-
value: function addReceiver(receiver) {
|
|
289
|
-
var useConfig = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
290
|
-
|
|
291
|
-
if (receiver) {
|
|
292
|
-
if (useConfig) {
|
|
293
|
-
_util.default.generateSingularOptions(receiver, this.statsConfig, this.meetingRef, _constants.STATS.RECEIVERS);
|
|
294
|
-
}
|
|
295
|
-
|
|
296
|
-
receiver.type = _constants.STATS.RECEIVER;
|
|
297
|
-
this.receivers[receiver.id] = new _stats.default(this.attrs, this.options, receiver);
|
|
298
|
-
}
|
|
299
|
-
|
|
300
|
-
return this;
|
|
301
|
-
}
|
|
302
|
-
/**
|
|
303
|
-
* @returns {Object}
|
|
304
|
-
* @public
|
|
305
|
-
* @memberof WebRTCStats
|
|
306
|
-
*/
|
|
307
|
-
|
|
308
|
-
}, {
|
|
309
|
-
key: "getReceivers",
|
|
310
|
-
value: function getReceivers() {
|
|
311
|
-
return this.receivers;
|
|
312
|
-
}
|
|
313
|
-
/**
|
|
314
|
-
* @returns {Object}
|
|
315
|
-
* @public
|
|
316
|
-
* @memberof WebRTCStats
|
|
317
|
-
*/
|
|
318
|
-
|
|
319
|
-
}, {
|
|
320
|
-
key: "getSenders",
|
|
321
|
-
value: function getSenders() {
|
|
322
|
-
return this.senders;
|
|
323
|
-
}
|
|
324
|
-
/**
|
|
325
|
-
* @param {String} id
|
|
326
|
-
* @returns {Object}
|
|
327
|
-
* @public
|
|
328
|
-
* @memberof WebRTCStats
|
|
329
|
-
*/
|
|
330
|
-
|
|
331
|
-
}, {
|
|
332
|
-
key: "getSender",
|
|
333
|
-
value: function getSender(id) {
|
|
334
|
-
return this.senders[id];
|
|
335
|
-
}
|
|
336
|
-
/**
|
|
337
|
-
* @param {String} id
|
|
338
|
-
* @returns {Object}
|
|
339
|
-
* @public
|
|
340
|
-
* @memberof WebRTCStats
|
|
341
|
-
*/
|
|
342
|
-
|
|
343
|
-
}, {
|
|
344
|
-
key: "getReceiver",
|
|
345
|
-
value: function getReceiver(id) {
|
|
346
|
-
return this.receivers[id];
|
|
347
|
-
}
|
|
348
|
-
/**
|
|
349
|
-
* @returns {Object}
|
|
350
|
-
* @public
|
|
351
|
-
* @memberof WebRTCStats
|
|
352
|
-
*/
|
|
353
|
-
|
|
354
|
-
}, {
|
|
355
|
-
key: "destroySenders",
|
|
356
|
-
value: function destroySenders() {
|
|
357
|
-
var _this4 = this;
|
|
358
|
-
|
|
359
|
-
(0, _forEach2.default)(this.senders, function (v, k) {
|
|
360
|
-
_this4.destroySender(k);
|
|
361
|
-
});
|
|
362
|
-
}
|
|
363
|
-
/**
|
|
364
|
-
* @returns {undefined}
|
|
365
|
-
* @public
|
|
366
|
-
* @memberof WebRTCStats
|
|
367
|
-
*/
|
|
368
|
-
|
|
369
|
-
}, {
|
|
370
|
-
key: "destroyReceivers",
|
|
371
|
-
value: function destroyReceivers() {
|
|
372
|
-
var _this5 = this;
|
|
373
|
-
|
|
374
|
-
(0, _forEach2.default)(this.receivers, function (v, k) {
|
|
375
|
-
_this5.destroyReceiver(k);
|
|
376
|
-
});
|
|
377
|
-
}
|
|
378
|
-
/**
|
|
379
|
-
* @param {String} id
|
|
380
|
-
* @returns {undefined}
|
|
381
|
-
* @public
|
|
382
|
-
* @memberof WebRTCStats
|
|
383
|
-
*/
|
|
384
|
-
|
|
385
|
-
}, {
|
|
386
|
-
key: "destroySender",
|
|
387
|
-
value: function destroySender(id) {
|
|
388
|
-
var sender = this.getSender(id);
|
|
389
|
-
|
|
390
|
-
if (sender) {
|
|
391
|
-
if (sender.stream) {
|
|
392
|
-
sender.stream.destroy();
|
|
393
|
-
}
|
|
394
|
-
}
|
|
395
|
-
|
|
396
|
-
sender = null;
|
|
397
|
-
delete this.receivers[id];
|
|
398
|
-
}
|
|
399
|
-
/**
|
|
400
|
-
* @param {String} id
|
|
401
|
-
* @returns {undefined}
|
|
402
|
-
* @public
|
|
403
|
-
* @memberof WebRTCStats
|
|
404
|
-
*/
|
|
405
|
-
|
|
406
|
-
}, {
|
|
407
|
-
key: "destroyReceiver",
|
|
408
|
-
value: function destroyReceiver(id) {
|
|
409
|
-
var receiver = this.getReceiver(id);
|
|
410
|
-
|
|
411
|
-
if (receiver) {
|
|
412
|
-
if (receiver.stream) {
|
|
413
|
-
receiver.stream.destroy();
|
|
414
|
-
}
|
|
415
|
-
}
|
|
416
|
-
|
|
417
|
-
receiver = null;
|
|
418
|
-
delete this.receivers[id];
|
|
419
|
-
}
|
|
420
|
-
}]);
|
|
421
|
-
return WebRTCStats;
|
|
422
|
-
}(_webexCore.StatelessWebexPlugin);
|
|
423
|
-
|
|
424
|
-
exports.default = WebRTCStats;
|
|
425
|
-
//# sourceMappingURL=index.js.map
|
package/dist/stats/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["WebRTCStats","attrs","options","optionalCreateOptions","MEETINGS","senders","receivers","meetingRef","statsConfig","populate","config","setConfig","meeting","associateMeeting","addSenders","addReceivers","useConfig","forEach","TypeError","sender","addSender","StatsUtil","generateSingularOptions","STATS","SENDERS","type","SENDER","id","MeetingStats","newSender","newReceiver","receiver","addReceiver","RECEIVERS","RECEIVER","v","k","destroySender","destroyReceiver","getSender","stream","destroy","getReceiver","StatelessWebexPlugin"],"sources":["index.js"],"sourcesContent":["import {forEach} from 'lodash';\nimport {StatelessWebexPlugin} from '@webex/webex-core';\n\nimport {\n MEETINGS,\n STATS\n} from '../constants';\nimport MeetingStats from '../stats/stats';\nimport StatsUtil from '../stats/util';\n\n/**\n * @class WebRTCStats\n */\nexport default class WebRTCStats extends StatelessWebexPlugin {\n namespace = MEETINGS;\n\n /**\n *\n * @param {Object} attrs\n * @param {Object} options\n * @param {Object} [optionalCreateOptions]\n */\n constructor(attrs, options, optionalCreateOptions) {\n super({}, options);\n /**\n * @instance\n * @type {Object}\n * @private\n * @memberof WebRTCStats\n */\n this.attrs = attrs;\n /**\n * @instance\n * @type {Object}\n * @private\n * @memberof WebRTCStats\n */\n this.options = options;\n /**\n * @instance\n * @type {Object}\n * @public\n * @memberof WebRTCStats\n */\n this.senders = {};\n /**\n * @instance\n * @type {Object}\n * @public\n * @memberof WebRTCStats\n */\n this.receivers = {};\n /**\n * @instance\n * @type {Meeting}\n * @private\n * @memberof WebRTCStats\n */\n this.meetingRef = null;\n /**\n * @instance\n * @type {Object}\n * @public\n * @memberof WebRTCStats\n */\n this.statsConfig = null;\n this.populate(optionalCreateOptions);\n }\n\n /**\n * @param {Object} [optionalCreateOptions]\n * @param {Object} optionalCreateOptions.config\n * @param {Meeting} optionalCreateOptions.meeting\n * @param {Object} optionalCreateOptions.senders\n * @param {Object} optionalCreateOptions.receivers\n * @returns {WebRTCStats}\n * @private\n * @memberof WebRTCStats\n */\n populate(optionalCreateOptions) {\n if (optionalCreateOptions) {\n if (optionalCreateOptions.config) {\n this.setConfig(optionalCreateOptions.config);\n }\n if (optionalCreateOptions.meeting) {\n this.associateMeeting(optionalCreateOptions.meeting);\n }\n if (optionalCreateOptions.senders) {\n this.addSenders(optionalCreateOptions.senders);\n }\n if (optionalCreateOptions.receivers) {\n this.addReceivers(optionalCreateOptions.receivers);\n }\n }\n\n return this;\n }\n\n /**\n * @param {Object} config\n * @returns {WebRTCStats}\n * @public\n * @memberof WebRTCStats\n */\n setConfig(config) {\n this.statsConfig = config;\n }\n\n /**\n * @param {Meeting} meeting\n * @returns {WebRTCStats}\n * @public\n * @memberof WebRTCStats\n */\n associateMeeting(meeting) {\n this.meetingRef = meeting;\n\n return this;\n }\n\n /**\n * @param {Object} senders\n * @param {Boolean} useConfig\n * @returns {WebRTCStats}\n * @public\n * @memberof WebRTCStats\n */\n addSenders(senders, useConfig = false) {\n if (!senders.forEach) {\n throw new TypeError('Stats senders must be created with an iterable array of senders to act on.');\n }\n senders.forEach((sender) => {\n this.addSender(sender, useConfig);\n });\n\n return this;\n }\n\n /**\n * @param {Object} sender\n * @param {Boolean} useConfig\n * @returns {WebRTCStats}\n * @public\n * @memberof WebRTCStats\n */\n addSender(sender, useConfig = false) {\n if (sender) {\n if (useConfig) {\n StatsUtil.generateSingularOptions(sender, this.statsConfig, this.meetingRef, STATS.SENDERS);\n }\n sender.type = STATS.SENDER;\n this.senders[sender.id] = new MeetingStats(this.attrs, this.options, sender);\n }\n\n return this;\n }\n\n /**\n *\n * @param {String} id\n * @returns {WebRTCStats}\n * @public\n * @memberof WebRTCStats\n */\n addSenderStats(id) {\n const newSender = new MeetingStats(this.attrs, this.options);\n\n this.senders[id] = newSender;\n\n return newSender;\n }\n\n /**\n *\n * @param {String} id\n * @returns {WebRTCStats}\n * @public\n * @memberof WebRTCStats\n */\n addReceiverStats(id) {\n const newReceiver = new MeetingStats(this.attrs, this.options);\n\n this.receivers[id] = newReceiver;\n\n return newReceiver;\n }\n\n /**\n * @param {Object} receivers\n * @param {boolean} useConfig\n * @returns {WebRTCStats}\n * @public\n * @memberof WebRTCStats\n */\n addReceivers(receivers, useConfig = false) {\n if (!receivers.forEach) {\n throw new TypeError('Stats receivers must be created with an iterable array of receivers to act on.');\n }\n receivers.forEach((receiver) => {\n this.addReceiver(receiver, useConfig);\n });\n\n return this;\n }\n\n /**\n * @param {Object} receiver\n * @param {boolean} useConfig\n * @returns {WebRTCStats}\n * @public\n * @memberof WebRTCStats\n */\n addReceiver(receiver, useConfig = false) {\n if (receiver) {\n if (useConfig) {\n StatsUtil.generateSingularOptions(receiver, this.statsConfig, this.meetingRef, STATS.RECEIVERS);\n }\n receiver.type = STATS.RECEIVER;\n this.receivers[receiver.id] = new MeetingStats(this.attrs, this.options, receiver);\n }\n\n return this;\n }\n\n /**\n * @returns {Object}\n * @public\n * @memberof WebRTCStats\n */\n getReceivers() {\n return this.receivers;\n }\n\n /**\n * @returns {Object}\n * @public\n * @memberof WebRTCStats\n */\n getSenders() {\n return this.senders;\n }\n\n /**\n * @param {String} id\n * @returns {Object}\n * @public\n * @memberof WebRTCStats\n */\n getSender(id) {\n return this.senders[id];\n }\n\n /**\n * @param {String} id\n * @returns {Object}\n * @public\n * @memberof WebRTCStats\n */\n getReceiver(id) {\n return this.receivers[id];\n }\n\n /**\n * @returns {Object}\n * @public\n * @memberof WebRTCStats\n */\n destroySenders() {\n forEach(this.senders, (v, k) => {\n this.destroySender(k);\n });\n }\n\n /**\n * @returns {undefined}\n * @public\n * @memberof WebRTCStats\n */\n destroyReceivers() {\n forEach(this.receivers, (v, k) => {\n this.destroyReceiver(k);\n });\n }\n\n /**\n * @param {String} id\n * @returns {undefined}\n * @public\n * @memberof WebRTCStats\n */\n destroySender(id) {\n let sender = this.getSender(id);\n\n if (sender) {\n if (sender.stream) {\n sender.stream.destroy();\n }\n }\n sender = null;\n delete this.receivers[id];\n }\n\n /**\n * @param {String} id\n * @returns {undefined}\n * @public\n * @memberof WebRTCStats\n */\n destroyReceiver(id) {\n let receiver = this.getReceiver(id);\n\n if (receiver) {\n if (receiver.stream) {\n receiver.stream.destroy();\n }\n }\n receiver = null;\n delete this.receivers[id];\n }\n}\n"],"mappings":"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"}
|