@webex/plugin-meetings 2.37.0 → 2.37.1

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 (308) hide show
  1. package/UPGRADING.md +9 -9
  2. package/browsers.js +19 -24
  3. package/dist/common/browser-detection.js +1 -20
  4. package/dist/common/browser-detection.js.map +1 -1
  5. package/dist/common/collection.js +5 -20
  6. package/dist/common/collection.js.map +1 -1
  7. package/dist/common/config.js +0 -7
  8. package/dist/common/config.js.map +1 -1
  9. package/dist/common/errors/captcha-error.js +5 -26
  10. package/dist/common/errors/captcha-error.js.map +1 -1
  11. package/dist/common/errors/intent-to-join.js +5 -26
  12. package/dist/common/errors/intent-to-join.js.map +1 -1
  13. package/dist/common/errors/join-meeting.js +6 -27
  14. package/dist/common/errors/join-meeting.js.map +1 -1
  15. package/dist/common/errors/media.js +5 -26
  16. package/dist/common/errors/media.js.map +1 -1
  17. package/dist/common/errors/parameter.js +5 -33
  18. package/dist/common/errors/parameter.js.map +1 -1
  19. package/dist/common/errors/password-error.js +5 -26
  20. package/dist/common/errors/password-error.js.map +1 -1
  21. package/dist/common/errors/permission.js +4 -25
  22. package/dist/common/errors/permission.js.map +1 -1
  23. package/dist/common/errors/reconnection-in-progress.js +0 -17
  24. package/dist/common/errors/reconnection-in-progress.js.map +1 -1
  25. package/dist/common/errors/reconnection.js +5 -26
  26. package/dist/common/errors/reconnection.js.map +1 -1
  27. package/dist/common/errors/stats.js +5 -26
  28. package/dist/common/errors/stats.js.map +1 -1
  29. package/dist/common/errors/webex-errors.js +7 -46
  30. package/dist/common/errors/webex-errors.js.map +1 -1
  31. package/dist/common/errors/webex-meetings-error.js +1 -24
  32. package/dist/common/errors/webex-meetings-error.js.map +1 -1
  33. package/dist/common/events/events-scope.js +0 -22
  34. package/dist/common/events/events-scope.js.map +1 -1
  35. package/dist/common/events/events.js +0 -23
  36. package/dist/common/events/events.js.map +1 -1
  37. package/dist/common/events/trigger-proxy.js +0 -12
  38. package/dist/common/events/trigger-proxy.js.map +1 -1
  39. package/dist/common/events/util.js +0 -15
  40. package/dist/common/events/util.js.map +1 -1
  41. package/dist/common/logs/logger-config.js +0 -4
  42. package/dist/common/logs/logger-config.js.map +1 -1
  43. package/dist/common/logs/logger-proxy.js +1 -8
  44. package/dist/common/logs/logger-proxy.js.map +1 -1
  45. package/dist/common/logs/request.js +35 -61
  46. package/dist/common/logs/request.js.map +1 -1
  47. package/dist/common/queue.js +4 -14
  48. package/dist/common/queue.js.map +1 -1
  49. package/dist/config.js +1 -5
  50. package/dist/config.js.map +1 -1
  51. package/dist/constants.js +46 -42
  52. package/dist/constants.js.map +1 -1
  53. package/dist/index.js +1 -17
  54. package/dist/index.js.map +1 -1
  55. package/dist/locus-info/controlsUtils.js +10 -28
  56. package/dist/locus-info/controlsUtils.js.map +1 -1
  57. package/dist/locus-info/embeddedAppsUtils.js +3 -26
  58. package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
  59. package/dist/locus-info/fullState.js +0 -15
  60. package/dist/locus-info/fullState.js.map +1 -1
  61. package/dist/locus-info/hostUtils.js +4 -12
  62. package/dist/locus-info/hostUtils.js.map +1 -1
  63. package/dist/locus-info/index.js +101 -193
  64. package/dist/locus-info/index.js.map +1 -1
  65. package/dist/locus-info/infoUtils.js +0 -37
  66. package/dist/locus-info/infoUtils.js.map +1 -1
  67. package/dist/locus-info/mediaSharesUtils.js +12 -38
  68. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  69. package/dist/locus-info/parser.js +87 -123
  70. package/dist/locus-info/parser.js.map +1 -1
  71. package/dist/locus-info/selfUtils.js +16 -81
  72. package/dist/locus-info/selfUtils.js.map +1 -1
  73. package/dist/media/index.js +74 -137
  74. package/dist/media/index.js.map +1 -1
  75. package/dist/media/properties.js +64 -110
  76. package/dist/media/properties.js.map +1 -1
  77. package/dist/media/util.js +3 -17
  78. package/dist/media/util.js.map +1 -1
  79. package/dist/mediaQualityMetrics/config.js +10 -12
  80. package/dist/mediaQualityMetrics/config.js.map +1 -1
  81. package/dist/meeting/effectsState.js +120 -192
  82. package/dist/meeting/effectsState.js.map +1 -1
  83. package/dist/meeting/in-meeting-actions.js +0 -13
  84. package/dist/meeting/in-meeting-actions.js.map +1 -1
  85. package/dist/meeting/index.js +812 -1487
  86. package/dist/meeting/index.js.map +1 -1
  87. package/dist/meeting/muteState.js +31 -78
  88. package/dist/meeting/muteState.js.map +1 -1
  89. package/dist/meeting/request.js +157 -227
  90. package/dist/meeting/request.js.map +1 -1
  91. package/dist/meeting/state.js +21 -31
  92. package/dist/meeting/state.js.map +1 -1
  93. package/dist/meeting/util.js +25 -169
  94. package/dist/meeting/util.js.map +1 -1
  95. package/dist/meeting-info/collection.js +3 -25
  96. package/dist/meeting-info/collection.js.map +1 -1
  97. package/dist/meeting-info/index.js +10 -33
  98. package/dist/meeting-info/index.js.map +1 -1
  99. package/dist/meeting-info/meeting-info-v2.js +179 -268
  100. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  101. package/dist/meeting-info/request.js +1 -16
  102. package/dist/meeting-info/request.js.map +1 -1
  103. package/dist/meeting-info/util.js +98 -183
  104. package/dist/meeting-info/util.js.map +1 -1
  105. package/dist/meeting-info/utilv2.js +137 -228
  106. package/dist/meeting-info/utilv2.js.map +1 -1
  107. package/dist/meetings/collection.js +3 -21
  108. package/dist/meetings/collection.js.map +1 -1
  109. package/dist/meetings/index.js +451 -570
  110. package/dist/meetings/index.js.map +1 -1
  111. package/dist/meetings/request.js +7 -30
  112. package/dist/meetings/request.js.map +1 -1
  113. package/dist/meetings/util.js +94 -148
  114. package/dist/meetings/util.js.map +1 -1
  115. package/dist/member/index.js +49 -89
  116. package/dist/member/index.js.map +1 -1
  117. package/dist/member/util.js +17 -68
  118. package/dist/member/util.js.map +1 -1
  119. package/dist/members/collection.js +2 -12
  120. package/dist/members/collection.js.map +1 -1
  121. package/dist/members/index.js +68 -184
  122. package/dist/members/index.js.map +1 -1
  123. package/dist/members/request.js +21 -56
  124. package/dist/members/request.js.map +1 -1
  125. package/dist/members/util.js +9 -38
  126. package/dist/members/util.js.map +1 -1
  127. package/dist/metrics/config.js +0 -2
  128. package/dist/metrics/config.js.map +1 -1
  129. package/dist/metrics/constants.js +1 -2
  130. package/dist/metrics/constants.js.map +1 -1
  131. package/dist/metrics/index.js +48 -136
  132. package/dist/metrics/index.js.map +1 -1
  133. package/dist/networkQualityMonitor/index.js +28 -57
  134. package/dist/networkQualityMonitor/index.js.map +1 -1
  135. package/dist/peer-connection-manager/index.js +60 -190
  136. package/dist/peer-connection-manager/index.js.map +1 -1
  137. package/dist/peer-connection-manager/util.js +10 -24
  138. package/dist/peer-connection-manager/util.js.map +1 -1
  139. package/dist/personal-meeting-room/index.js +10 -45
  140. package/dist/personal-meeting-room/index.js.map +1 -1
  141. package/dist/personal-meeting-room/request.js +2 -33
  142. package/dist/personal-meeting-room/request.js.map +1 -1
  143. package/dist/personal-meeting-room/util.js +0 -13
  144. package/dist/personal-meeting-room/util.js.map +1 -1
  145. package/dist/reachability/index.js +100 -166
  146. package/dist/reachability/index.js.map +1 -1
  147. package/dist/reachability/request.js +2 -18
  148. package/dist/reachability/request.js.map +1 -1
  149. package/dist/reactions/reactions.js +0 -2
  150. package/dist/reactions/reactions.js.map +1 -1
  151. package/dist/reactions/reactions.type.js +0 -5
  152. package/dist/reactions/reactions.type.js.map +1 -1
  153. package/dist/reconnection-manager/index.js +294 -468
  154. package/dist/reconnection-manager/index.js.map +1 -1
  155. package/dist/roap/collection.js +1 -12
  156. package/dist/roap/collection.js.map +1 -1
  157. package/dist/roap/handler.js +15 -85
  158. package/dist/roap/handler.js.map +1 -1
  159. package/dist/roap/index.js +42 -94
  160. package/dist/roap/index.js.map +1 -1
  161. package/dist/roap/request.js +81 -148
  162. package/dist/roap/request.js.map +1 -1
  163. package/dist/roap/state.js +2 -39
  164. package/dist/roap/state.js.map +1 -1
  165. package/dist/roap/turnDiscovery.js +8 -52
  166. package/dist/roap/turnDiscovery.js.map +1 -1
  167. package/dist/roap/util.js +0 -26
  168. package/dist/roap/util.js.map +1 -1
  169. package/dist/statsAnalyzer/global.js +0 -2
  170. package/dist/statsAnalyzer/global.js.map +1 -1
  171. package/dist/statsAnalyzer/index.js +68 -168
  172. package/dist/statsAnalyzer/index.js.map +1 -1
  173. package/dist/statsAnalyzer/mqaUtil.js +54 -53
  174. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  175. package/dist/transcription/index.js +13 -45
  176. package/dist/transcription/index.js.map +1 -1
  177. package/internal-README.md +7 -6
  178. package/package.json +17 -17
  179. package/src/common/browser-detection.ts +9 -6
  180. package/src/common/collection.ts +3 -1
  181. package/src/common/errors/captcha-error.ts +6 -6
  182. package/src/common/errors/intent-to-join.ts +6 -6
  183. package/src/common/errors/join-meeting.ts +12 -8
  184. package/src/common/errors/media.ts +6 -6
  185. package/src/common/errors/parameter.ts +9 -6
  186. package/src/common/errors/password-error.ts +6 -6
  187. package/src/common/errors/permission.ts +5 -5
  188. package/src/common/errors/reconnection.ts +6 -6
  189. package/src/common/errors/stats.ts +6 -6
  190. package/src/common/errors/webex-errors.ts +7 -5
  191. package/src/common/errors/webex-meetings-error.ts +1 -1
  192. package/src/common/events/events-scope.ts +5 -1
  193. package/src/common/events/events.ts +5 -1
  194. package/src/common/events/trigger-proxy.ts +8 -3
  195. package/src/common/events/util.ts +1 -2
  196. package/src/common/logs/logger-proxy.ts +21 -10
  197. package/src/common/logs/request.ts +11 -8
  198. package/src/config.ts +11 -11
  199. package/src/constants.ts +138 -119
  200. package/src/index.js +1 -1
  201. package/src/locus-info/controlsUtils.ts +34 -24
  202. package/src/locus-info/fullState.ts +15 -11
  203. package/src/locus-info/hostUtils.ts +4 -3
  204. package/src/locus-info/index.ts +25 -34
  205. package/src/locus-info/infoUtils.ts +12 -4
  206. package/src/locus-info/mediaSharesUtils.ts +4 -4
  207. package/src/locus-info/parser.ts +45 -68
  208. package/src/locus-info/selfUtils.ts +106 -57
  209. package/src/media/index.ts +118 -109
  210. package/src/media/properties.ts +26 -20
  211. package/src/media/util.ts +2 -2
  212. package/src/mediaQualityMetrics/config.ts +46 -46
  213. package/src/meeting/effectsState.ts +35 -35
  214. package/src/meeting/in-meeting-actions.ts +7 -3
  215. package/src/meeting/index.ts +1435 -1210
  216. package/src/meeting/muteState.ts +62 -31
  217. package/src/meeting/request.ts +160 -113
  218. package/src/meeting/state.ts +45 -30
  219. package/src/meeting/util.ts +131 -90
  220. package/src/meeting-info/collection.ts +2 -1
  221. package/src/meeting-info/index.ts +32 -30
  222. package/src/meeting-info/meeting-info-v2.ts +106 -108
  223. package/src/meeting-info/request.ts +9 -3
  224. package/src/meeting-info/util.ts +54 -46
  225. package/src/meeting-info/utilv2.ts +59 -53
  226. package/src/meetings/collection.ts +1 -1
  227. package/src/meetings/index.ts +513 -441
  228. package/src/meetings/request.ts +26 -24
  229. package/src/meetings/util.ts +26 -23
  230. package/src/member/index.ts +55 -49
  231. package/src/member/util.ts +26 -13
  232. package/src/members/collection.ts +0 -1
  233. package/src/members/index.ts +172 -121
  234. package/src/members/request.ts +46 -14
  235. package/src/members/util.ts +44 -42
  236. package/src/metrics/config.ts +254 -81
  237. package/src/metrics/constants.ts +0 -2
  238. package/src/metrics/index.ts +84 -71
  239. package/src/networkQualityMonitor/index.ts +20 -23
  240. package/src/peer-connection-manager/index.ts +321 -241
  241. package/src/peer-connection-manager/util.ts +4 -2
  242. package/src/personal-meeting-room/index.ts +12 -16
  243. package/src/personal-meeting-room/request.ts +10 -3
  244. package/src/personal-meeting-room/util.ts +3 -3
  245. package/src/reachability/index.ts +61 -59
  246. package/src/reachability/request.ts +36 -32
  247. package/src/reactions/reactions.ts +4 -4
  248. package/src/reactions/reactions.type.ts +2 -3
  249. package/src/reconnection-manager/index.ts +159 -98
  250. package/src/roap/collection.ts +2 -4
  251. package/src/roap/handler.ts +63 -32
  252. package/src/roap/index.ts +78 -58
  253. package/src/roap/request.ts +69 -54
  254. package/src/roap/state.ts +17 -11
  255. package/src/roap/turnDiscovery.ts +60 -31
  256. package/src/roap/util.ts +39 -31
  257. package/src/statsAnalyzer/global.ts +30 -33
  258. package/src/statsAnalyzer/index.ts +397 -169
  259. package/src/statsAnalyzer/mqaUtil.ts +178 -72
  260. package/src/transcription/index.ts +34 -32
  261. package/test/integration/spec/journey.js +666 -462
  262. package/test/integration/spec/space-meeting.js +318 -203
  263. package/test/integration/spec/transcription.js +6 -7
  264. package/test/unit/spec/common/browser-detection.js +9 -28
  265. package/test/unit/spec/fixture/locus.js +92 -90
  266. package/test/unit/spec/locus-info/controlsUtils.js +5 -5
  267. package/test/unit/spec/locus-info/embeddedAppsUtils.js +8 -6
  268. package/test/unit/spec/locus-info/index.js +1 -2
  269. package/test/unit/spec/locus-info/infoUtils.js +24 -31
  270. package/test/unit/spec/locus-info/lib/BasicSeqCmp.json +88 -430
  271. package/test/unit/spec/locus-info/lib/SeqCmp.json +513 -685
  272. package/test/unit/spec/locus-info/parser.js +3 -9
  273. package/test/unit/spec/locus-info/selfConstant.js +72 -103
  274. package/test/unit/spec/locus-info/selfUtils.js +21 -12
  275. package/test/unit/spec/meeting/effectsState.js +33 -45
  276. package/test/unit/spec/meeting/in-meeting-actions.ts +2 -3
  277. package/test/unit/spec/meeting/index.js +1141 -649
  278. package/test/unit/spec/meeting/muteState.js +42 -33
  279. package/test/unit/spec/meeting/request.js +56 -45
  280. package/test/unit/spec/meeting/utils.js +66 -49
  281. package/test/unit/spec/meeting-info/meetinginfov2.js +100 -73
  282. package/test/unit/spec/meeting-info/request.js +7 -9
  283. package/test/unit/spec/meeting-info/util.js +11 -12
  284. package/test/unit/spec/meeting-info/utilv2.js +110 -74
  285. package/test/unit/spec/meetings/collection.js +1 -1
  286. package/test/unit/spec/meetings/index.js +438 -257
  287. package/test/unit/spec/meetings/utils.js +14 -12
  288. package/test/unit/spec/member/index.js +0 -1
  289. package/test/unit/spec/member/util.js +5 -6
  290. package/test/unit/spec/members/index.js +84 -35
  291. package/test/unit/spec/members/request.js +29 -20
  292. package/test/unit/spec/members/utils.js +8 -5
  293. package/test/unit/spec/metrics/index.js +16 -21
  294. package/test/unit/spec/networkQualityMonitor/index.js +21 -15
  295. package/test/unit/spec/peerconnection-manager/index.js +88 -58
  296. package/test/unit/spec/peerconnection-manager/utils.js +5 -4
  297. package/test/unit/spec/peerconnection-manager/utils.test-fixtures.ts +7 -8
  298. package/test/unit/spec/personal-meeting-room/personal-meeting-room.js +2 -7
  299. package/test/unit/spec/reachability/index.ts +9 -11
  300. package/test/unit/spec/reconnection-manager/index.js +14 -17
  301. package/test/unit/spec/roap/index.ts +18 -8
  302. package/test/unit/spec/roap/turnDiscovery.ts +22 -19
  303. package/test/unit/spec/roap/util.js +3 -3
  304. package/test/unit/spec/stats-analyzer/index.js +29 -24
  305. package/test/utils/cmr.js +44 -42
  306. package/test/utils/testUtils.js +83 -74
  307. package/test/utils/webex-config.js +18 -18
  308. package/test/utils/webex-test-users.js +53 -50
@@ -1,53 +1,30 @@
1
1
  "use strict";
2
2
 
3
3
  var _Reflect$construct = require("@babel/runtime-corejs2/core-js/reflect/construct");
4
-
5
4
  var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
6
-
7
5
  var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
8
-
9
6
  _Object$defineProperty(exports, "__esModule", {
10
7
  value: true
11
8
  });
12
-
13
9
  exports.StatsAnalyzer = exports.EVENTS = void 0;
14
-
15
10
  var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/promise"));
16
-
17
11
  var _stringify = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/json/stringify"));
18
-
19
12
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
20
-
21
13
  var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));
22
-
23
14
  var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/assertThisInitialized"));
24
-
25
15
  var _inherits2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/inherits"));
26
-
27
16
  var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/possibleConstructorReturn"));
28
-
29
17
  var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/getPrototypeOf"));
30
-
31
18
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
32
-
33
19
  var _cloneDeep2 = _interopRequireDefault(require("lodash/cloneDeep"));
34
-
35
20
  var _eventsScope = _interopRequireDefault(require("../common/events/events-scope"));
36
-
37
21
  var _constants = require("../constants");
38
-
39
22
  var _config = _interopRequireDefault(require("../mediaQualityMetrics/config"));
40
-
41
23
  var _loggerProxy = _interopRequireDefault(require("../common/logs/logger-proxy"));
42
-
43
24
  var _global = _interopRequireDefault(require("./global"));
44
-
45
25
  var _mqaUtil = require("./mqaUtil");
46
-
47
26
  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); }; }
48
-
49
27
  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; } }
50
-
51
28
  var EVENTS = {
52
29
  MEDIA_QUALITY: 'MEDIA_QUALITY',
53
30
  LOCAL_MEDIA_STARTED: 'LOCAL_MEDIA_STARTED',
@@ -55,6 +32,7 @@ var EVENTS = {
55
32
  REMOTE_MEDIA_STARTED: 'REMOTE_MEDIA_STARTED',
56
33
  REMOTE_MEDIA_STOPPED: 'REMOTE_MEDIA_STOPPED'
57
34
  };
35
+
58
36
  /**
59
37
  * Stats Analyzer class that will emit events based on detected quality
60
38
  *
@@ -62,14 +40,10 @@ var EVENTS = {
62
40
  * @class StatsAnalyzer
63
41
  * @extends {EventsScope}
64
42
  */
65
-
66
43
  exports.EVENTS = EVENTS;
67
-
68
44
  var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
69
45
  (0, _inherits2.default)(StatsAnalyzer, _EventsScope);
70
-
71
46
  var _super = _createSuper(StatsAnalyzer);
72
-
73
47
  /**
74
48
  * Creates a new instance of StatsAnalyzer
75
49
  * @constructor
@@ -80,7 +54,6 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
80
54
  */
81
55
  function StatsAnalyzer(config) {
82
56
  var _this;
83
-
84
57
  var networkQualityMonitor = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
85
58
  var statsResults = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _global.default;
86
59
  (0, _classCallCheck2.default)(this, StatsAnalyzer);
@@ -102,28 +75,25 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
102
75
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "emitStartStopEvents", function (mediaType, previousValue, currentValue, isLocal) {
103
76
  if (mediaType !== 'audio' && mediaType !== 'video' && mediaType !== 'share') {
104
77
  throw new Error("Unsupported mediaType: ".concat(mediaType));
105
- } // eslint-disable-next-line no-param-reassign
106
-
107
-
108
- if (previousValue === undefined) previousValue = 0; // eslint-disable-next-line no-param-reassign
78
+ }
109
79
 
80
+ // eslint-disable-next-line no-param-reassign
81
+ if (previousValue === undefined) previousValue = 0;
82
+ // eslint-disable-next-line no-param-reassign
110
83
  if (currentValue === undefined) currentValue = 0;
111
84
  var lastEmittedEvent = isLocal ? _this.lastEmittedStartStopEvent[mediaType].local : _this.lastEmittedStartStopEvent[mediaType].remote;
112
85
  var newEvent;
113
-
114
86
  if (currentValue - previousValue > 0) {
115
87
  newEvent = isLocal ? EVENTS.LOCAL_MEDIA_STARTED : EVENTS.REMOTE_MEDIA_STARTED;
116
88
  } else if (currentValue === previousValue && currentValue > 0) {
117
89
  newEvent = isLocal ? EVENTS.LOCAL_MEDIA_STOPPED : EVENTS.REMOTE_MEDIA_STOPPED;
118
90
  }
119
-
120
91
  if (newEvent && lastEmittedEvent !== newEvent) {
121
92
  if (isLocal) {
122
93
  _this.lastEmittedStartStopEvent[mediaType].local = newEvent;
123
94
  } else {
124
95
  _this.lastEmittedStartStopEvent[mediaType].remote = newEvent;
125
96
  }
126
-
127
97
  _this.emit({
128
98
  file: 'statsAnalyzer/index',
129
99
  function: 'compareLastStatsResult'
@@ -136,7 +106,6 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
136
106
  if (!result || !result.id) {
137
107
  return;
138
108
  }
139
-
140
109
  var RemoteCandidateType = {};
141
110
  var RemoteTransport = {};
142
111
  var RemoteIpAddress = {};
@@ -144,31 +113,24 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
144
113
  if (!result.id) return;
145
114
  var sendRecvType = isSender ? _constants.STATS.SEND_DIRECTION : _constants.STATS.RECEIVE_DIRECTION;
146
115
  var ipType = isRemote ? _constants.STATS.REMOTE : _constants.STATS.LOCAL;
147
-
148
116
  if (!RemoteCandidateType[result.id]) {
149
117
  RemoteCandidateType[result.id] = [];
150
118
  }
151
-
152
119
  if (!RemoteTransport[result.id]) {
153
120
  RemoteTransport[result.id] = [];
154
121
  }
155
-
156
122
  if (!RemoteIpAddress[result.id]) {
157
123
  RemoteIpAddress[result.id] = [];
158
124
  }
159
-
160
125
  if (!RemoteNetworkType[result.id]) {
161
126
  RemoteNetworkType[result.id] = [];
162
127
  }
163
-
164
128
  if (result.candidateType && RemoteCandidateType[result.id].indexOf(result.candidateType) === -1) {
165
129
  RemoteCandidateType[result.id].push(result.candidateType);
166
130
  }
167
-
168
131
  if (result.protocol && RemoteTransport[result.id].indexOf(result.protocol) === -1) {
169
132
  RemoteTransport[result.id].push(result.protocol.toUpperCase());
170
133
  }
171
-
172
134
  if (result.ip && RemoteIpAddress[result.id].indexOf("".concat(result.ip, ":").concat(result.portNumber)) === -1) {
173
135
  RemoteIpAddress[result.id].push("".concat(result.ip)); // TODO: Add ports
174
136
  }
@@ -176,7 +138,6 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
176
138
  if (result.networkType && RemoteNetworkType[result.id].indexOf(result.networkType) === -1) {
177
139
  RemoteNetworkType[result.id].push(result.networkType);
178
140
  }
179
-
180
141
  _this.statsResults.internal.candidates[result.id] = {
181
142
  candidateType: RemoteCandidateType[result.id],
182
143
  ipAddress: RemoteIpAddress[result.id],
@@ -285,11 +246,11 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
285
246
  };
286
247
  return _this;
287
248
  }
288
-
289
249
  (0, _createClass2.default)(StatsAnalyzer, [{
290
250
  key: "populateResults",
291
251
  value: function populateResults(lastMqa) {
292
252
  // Audio
253
+
293
254
  this.localMQEStats.audio.RX.packetsLost.push(lastMqa.audioReceive[0].common.mediaHopByHopLost);
294
255
  this.localMQEStats.audio.RX.jitter.push(lastMqa.audioReceive[0].streams[0].common.rtpJitter);
295
256
  this.localMQEStats.audio.RX.latency.push(lastMqa.audioReceive[0].common.roundTripTime);
@@ -297,7 +258,9 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
297
258
  this.localMQEStats.audio.TX.packetsLost.push(lastMqa.audioTransmit[0].common.remoteLossRate);
298
259
  this.localMQEStats.audio.TX.jitter.push(lastMqa.audioTransmit[0].common.remoteJitter);
299
260
  this.localMQEStats.audio.TX.latency.push(lastMqa.audioTransmit[0].common.roundTripTime);
300
- this.localMQEStats.audio.TX.bitRate.push(lastMqa.audioTransmit[0].streams[0].common.transmittedBitrate); // Video
261
+ this.localMQEStats.audio.TX.bitRate.push(lastMqa.audioTransmit[0].streams[0].common.transmittedBitrate);
262
+
263
+ // Video
301
264
 
302
265
  this.localMQEStats.video.RX.packetsLost.push(lastMqa.videoReceive[0].common.mediaHopByHopLost);
303
266
  this.localMQEStats.video.RX.jitter.push(lastMqa.videoReceive[0].streams[0].common.rtpJitter);
@@ -324,15 +287,18 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
324
287
  this.statsResults.audio.send.meanRemoteJitter = [];
325
288
  this.statsResults.video.send.meanRemoteJitter = [];
326
289
  this.statsResults.share.send.meanRemoteJitter = [];
327
- this.statsResults.audio.recv.meanRtpJitter = []; // TODO: currently no values are present
290
+ this.statsResults.audio.recv.meanRtpJitter = [];
328
291
 
292
+ // TODO: currently no values are present
329
293
  this.statsResults.video.recv.meanRtpJitter = [];
330
- this.statsResults.share.recv.meanRtpJitter = []; // Reset the roundTripTime
294
+ this.statsResults.share.recv.meanRtpJitter = [];
331
295
 
296
+ // Reset the roundTripTime
332
297
  this.statsResults.audio.send.meanRoundTripTime = [];
333
298
  this.statsResults.video.send.meanRoundTripTime = [];
334
299
  this.statsResults.share.send.meanRoundTripTime = [];
335
300
  }
301
+
336
302
  /**
337
303
  * sets mediaStatus status for analyzing metrics
338
304
  *
@@ -341,12 +307,12 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
341
307
  * @memberof StatsAnalyzer
342
308
  * @returns {void}
343
309
  */
344
-
345
310
  }, {
346
311
  key: "updateMediaStatus",
347
312
  value: function updateMediaStatus(status) {
348
313
  this.meetingMediaStatus = status;
349
314
  }
315
+
350
316
  /**
351
317
  * captures MQA data from peerconnection
352
318
  *
@@ -354,12 +320,10 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
354
320
  * @memberof StatsAnalyzer
355
321
  * @returns {void}
356
322
  */
357
-
358
323
  }, {
359
324
  key: "sendMqaData",
360
325
  value: function sendMqaData() {
361
326
  var _this$peerConnection, _this$peerConnection$, _this$peerConnection$2, _this$peerConnection$3, _this$peerConnection2, _this$peerConnection3, _this$peerConnection4, _this$peerConnection5;
362
-
363
327
  var audioReceiver = _config.default.intervals[0].audioReceive[0];
364
328
  var audioSender = _config.default.intervals[0].audioTransmit[0];
365
329
  var videoReceiver = _config.default.intervals[0].videoReceive[0];
@@ -385,7 +349,9 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
385
349
  videoSender: videoSender,
386
350
  statsResults: this.statsResults,
387
351
  lastMqaDataSent: this.lastMqaDataSent
388
- }); // Capture mqa for share scenario
352
+ });
353
+
354
+ // Capture mqa for share scenario
389
355
 
390
356
  (0, _mqaUtil.getVideoSenderMqa)({
391
357
  videoSender: shareSender,
@@ -399,30 +365,29 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
399
365
  lastMqaDataSent: this.lastMqaDataSent,
400
366
  isShareStream: true
401
367
  });
402
- _config.default.intervals[0].intervalMetadata.peerReflexiveIP = this.statsResults.connectionType.local.ipAddress[0]; // Adding peripheral information
368
+ _config.default.intervals[0].intervalMetadata.peerReflexiveIP = this.statsResults.connectionType.local.ipAddress[0];
403
369
 
370
+ // Adding peripheral information
404
371
  _config.default.intervals[0].intervalMetadata.peripherals = [];
405
-
406
372
  _config.default.intervals[0].intervalMetadata.peripherals.push({
407
373
  information: _constants._UNKNOWN_,
408
374
  name: _constants.MEDIA_DEVICES.SPEAKER
409
375
  });
410
-
411
376
  _config.default.intervals[0].intervalMetadata.peripherals.push({
412
377
  information: ((_this$peerConnection = this.peerConnection) === null || _this$peerConnection === void 0 ? void 0 : (_this$peerConnection$ = _this$peerConnection.audioTransceiver) === null || _this$peerConnection$ === void 0 ? void 0 : (_this$peerConnection$2 = _this$peerConnection$.sender) === null || _this$peerConnection$2 === void 0 ? void 0 : (_this$peerConnection$3 = _this$peerConnection$2.track) === null || _this$peerConnection$3 === void 0 ? void 0 : _this$peerConnection$3.label) || _constants._UNKNOWN_,
413
378
  name: _constants.MEDIA_DEVICES.MICROPHONE
414
379
  });
415
-
416
380
  _config.default.intervals[0].intervalMetadata.peripherals.push({
417
381
  information: ((_this$peerConnection2 = this.peerConnection) === null || _this$peerConnection2 === void 0 ? void 0 : (_this$peerConnection3 = _this$peerConnection2.videoTransceiver) === null || _this$peerConnection3 === void 0 ? void 0 : (_this$peerConnection4 = _this$peerConnection3.sender) === null || _this$peerConnection4 === void 0 ? void 0 : (_this$peerConnection5 = _this$peerConnection4.track) === null || _this$peerConnection5 === void 0 ? void 0 : _this$peerConnection5.label) || _constants._UNKNOWN_,
418
382
  name: _constants.MEDIA_DEVICES.CAMERA
419
- }); // @ts-ignore
420
-
383
+ });
421
384
 
385
+ // @ts-ignore
422
386
  _config.default.networkType = this.statsResults.connectionType.local.networkType;
423
387
  this.mqaSentCount += 1;
424
- _config.default.intervals[0].intervalNumber = this.mqaSentCount; // DO Deep copy, for some reason it takes the reference all the time rather then old value set
388
+ _config.default.intervals[0].intervalNumber = this.mqaSentCount;
425
389
 
390
+ // DO Deep copy, for some reason it takes the reference all the time rather then old value set
426
391
  this.lastMqaDataSent = (0, _cloneDeep2.default)(this.statsResults);
427
392
  this.populateResults(_config.default.intervals[0]);
428
393
  this.resetStatsResults();
@@ -435,6 +400,7 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
435
400
  networkType: _config.default.networkType
436
401
  });
437
402
  }
403
+
438
404
  /**
439
405
  * updated the peerconnection when changed
440
406
  *
@@ -443,12 +409,12 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
443
409
  * @param {PeerConnection} peerConnection
444
410
  * @returns {void}
445
411
  */
446
-
447
412
  }, {
448
413
  key: "updatePeerconnection",
449
414
  value: function updatePeerconnection(peerConnection) {
450
415
  this.peerConnection = peerConnection;
451
416
  }
417
+
452
418
  /**
453
419
  * Starts the stats analyzer on interval
454
420
  *
@@ -457,30 +423,27 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
457
423
  * @param {PeerConnection} peerConnection
458
424
  * @returns {Promise}
459
425
  */
460
-
461
426
  }, {
462
427
  key: "startAnalyzer",
463
428
  value: function startAnalyzer(peerConnection) {
464
429
  var _this2 = this;
465
-
466
430
  if (!this.statsStarted) {
467
431
  this.statsStarted = true;
468
432
  this.peerConnection = peerConnection;
469
433
  return this.getStatsAndParse().then(function () {
470
434
  _this2.statsInterval = setInterval(function () {
471
435
  _this2.getStatsAndParse();
472
- }, _this2.config.analyzerInterval); // Trigger initial fetch
473
-
436
+ }, _this2.config.analyzerInterval);
437
+ // Trigger initial fetch
474
438
  _this2.sendMqaData();
475
-
476
439
  _this2.mqaInterval = setInterval(function () {
477
440
  _this2.sendMqaData();
478
441
  }, _constants.MQA_INTEVAL);
479
442
  });
480
443
  }
481
-
482
444
  return _promise.default.resolve();
483
445
  }
446
+
484
447
  /**
485
448
  * Cleans up the analyzer when done
486
449
  *
@@ -488,35 +451,29 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
488
451
  * @memberof StatsAnalyzer
489
452
  * @returns {void}
490
453
  */
491
-
492
454
  }, {
493
455
  key: "stopAnalyzer",
494
456
  value: function stopAnalyzer() {
495
457
  var _this3 = this;
496
-
497
458
  var sendOneLastMqa = this.mqaInterval && this.statsInterval;
498
-
499
459
  if (this.statsInterval) {
500
460
  clearInterval(this.statsInterval);
501
461
  this.statsInterval = undefined;
502
462
  }
503
-
504
463
  if (this.mqaInterval) {
505
464
  clearInterval(this.mqaInterval);
506
465
  this.mqaInterval = undefined;
507
466
  }
508
-
509
467
  if (sendOneLastMqa) {
510
468
  return this.getStatsAndParse().then(function () {
511
469
  _this3.sendMqaData();
512
-
513
470
  _this3.peerConnection = null;
514
471
  });
515
472
  }
516
-
517
473
  this.peerConnection = null;
518
474
  return _promise.default.resolve();
519
475
  }
476
+
520
477
  /**
521
478
  * Parse a single result of get stats
522
479
  *
@@ -527,51 +484,43 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
527
484
  * @returns {void}
528
485
  * @memberof StatsAnalyzer
529
486
  */
530
-
531
487
  }, {
532
488
  key: "parseGetStatsResult",
533
489
  value: function parseGetStatsResult(getStatsResult, type, isSender) {
534
490
  if (!getStatsResult) {
535
491
  return;
536
492
  }
537
-
538
493
  switch (getStatsResult.type) {
539
494
  case 'outbound-rtp':
540
495
  this.processOutboundRTPResult(getStatsResult, type);
541
496
  break;
542
-
543
497
  case 'inbound-rtp':
544
498
  this.processInboundRTPResult(getStatsResult, type);
545
499
  break;
546
-
547
500
  case 'track':
548
501
  this.processTrackResult(getStatsResult, type);
549
502
  break;
550
-
551
503
  case 'remote-inbound-rtp':
552
504
  case 'remote-outbound-rtp':
553
505
  // @ts-ignore
554
506
  this.compareSentAndReceived(getStatsResult, type, isSender);
555
507
  break;
556
-
557
508
  case 'remotecandidate':
558
509
  case 'remote-candidate':
559
510
  this.parseCandidate(getStatsResult, type, isSender, true);
560
511
  break;
561
-
562
512
  case 'local-candidate':
563
513
  this.parseCandidate(getStatsResult, type, isSender, false);
564
514
  break;
565
-
566
515
  case 'media-source':
567
516
  // @ts-ignore
568
517
  this.parseAudioSource(getStatsResult, type);
569
518
  break;
570
-
571
519
  default:
572
520
  break;
573
521
  }
574
522
  }
523
+
575
524
  /**
576
525
  * Filters the get stats results for types
577
526
  * @private
@@ -580,12 +529,10 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
580
529
  * @param {boolean} isSender
581
530
  * @returns {void}
582
531
  */
583
-
584
532
  }, {
585
533
  key: "filterAndParseGetStatsResults",
586
534
  value: function filterAndParseGetStatsResults(getStatsResults, type, isSender) {
587
535
  var _this4 = this;
588
-
589
536
  var types = _constants.DEFAULT_GET_STATS_FILTER.types;
590
537
  getStatsResults.forEach(function (result) {
591
538
  if (types.includes(result.type)) {
@@ -593,25 +540,25 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
593
540
  }
594
541
  });
595
542
  }
543
+
596
544
  /**
597
545
  * parse the audio
598
546
  * @param {String} result
599
547
  * @param {boolean} type
600
548
  * @returns {void}
601
549
  */
602
-
603
550
  }, {
604
551
  key: "parseAudioSource",
605
552
  value: function parseAudioSource(result, type) {
606
553
  if (!result) {
607
554
  return;
608
555
  }
609
-
610
556
  if (type === _constants.STATS.AUDIO_CORRELATE) {
611
557
  this.statsResults[type].send.audioLevel = result.audioLevel;
612
558
  this.statsResults[type].send.totalAudioEnergy = result.totalAudioEnergy;
613
559
  }
614
560
  }
561
+
615
562
  /**
616
563
  * emits started/stopped events for local/remote media by checking
617
564
  * if given values are increasing or not. The previousValue, currentValue
@@ -626,7 +573,6 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
626
573
  * @memberof StatsAnalyzer
627
574
  * @returns {void}
628
575
  */
629
-
630
576
  }, {
631
577
  key: "compareLastStatsResult",
632
578
  value:
@@ -643,131 +589,111 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
643
589
  var mediaType = _constants.STATS.AUDIO_CORRELATE;
644
590
  var currentStats = null;
645
591
  var previousStats = null;
646
-
647
592
  if (this.meetingMediaStatus.expected.sendAudio) {
648
593
  currentStats = this.statsResults[mediaType].send;
649
594
  previousStats = this.lastStatsResults[mediaType].send;
650
-
651
595
  if (currentStats.totalPacketsSent === previousStats.totalPacketsSent || currentStats.totalPacketsSent === 0) {
652
596
  _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No ".concat(mediaType, " RTP packets sent"));
653
597
  } else {
654
598
  if (currentStats.totalAudioEnergy === previousStats.totalAudioEnergy || currentStats.totalAudioEnergy === 0) {
655
599
  _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No ".concat(mediaType, " Energy present"));
656
600
  }
657
-
658
601
  if (currentStats.audioLevel === 0) {
659
602
  _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> ".concat(mediaType, " level is 0 for the user"));
660
603
  }
661
604
  }
662
-
663
605
  this.emitStartStopEvents(mediaType, previousStats.totalPacketsSent, currentStats.totalPacketsSent, true);
664
606
  }
665
-
666
607
  if (this.meetingMediaStatus.expected.receiveAudio) {
667
608
  // compare audio stats received
668
609
  currentStats = this.statsResults[mediaType].recv;
669
610
  previousStats = this.lastStatsResults[mediaType].recv;
670
-
671
611
  if (currentStats.totalPacketsReceived === previousStats.totalPacketsReceived || currentStats.totalPacketsReceived === 0) {
672
612
  _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No ".concat(mediaType, " RTP packets received"));
673
613
  } else if (currentStats.totalSamplesReceived === previousStats.totalSamplesReceived || currentStats.totalSamplesReceived === 0) {
674
614
  _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No ".concat(mediaType, " samples received"));
675
615
  }
676
-
677
616
  this.emitStartStopEvents(mediaType, previousStats.totalPacketsReceived, currentStats.totalPacketsReceived, false);
678
617
  }
679
-
680
618
  mediaType = _constants.STATS.VIDEO_CORRELATE;
681
-
682
619
  if (this.meetingMediaStatus.expected.sendVideo) {
683
620
  // compare video stats sent
684
621
  currentStats = this.statsResults[mediaType].send;
685
622
  previousStats = this.lastStatsResults[mediaType].send;
686
-
687
623
  if (currentStats.totalPacketsSent === previousStats.totalPacketsSent || currentStats.totalPacketsSent === 0) {
688
624
  _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No ".concat(mediaType, " RTP packets sent"));
689
625
  } else {
690
626
  if (currentStats.framesEncoded === previousStats.framesEncoded || currentStats.framesEncoded === 0) {
691
627
  _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No ".concat(mediaType, " Frames Encoded"));
692
628
  }
693
-
694
629
  if (this.statsResults.resolutions[mediaType].send.framesSent === this.lastStatsResults.resolutions[mediaType].send.framesSent || this.statsResults.resolutions[mediaType].send.framesSent === 0) {
695
630
  _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No ".concat(mediaType, " Frames sent"));
696
631
  }
697
632
  }
698
-
699
633
  this.emitStartStopEvents(mediaType, previousStats.framesSent, currentStats.framesSent, true);
700
634
  }
701
-
702
635
  if (this.meetingMediaStatus.expected.receiveVideo) {
703
636
  // compare video stats reveived
637
+
704
638
  currentStats = this.statsResults[mediaType].recv;
705
639
  previousStats = this.lastStatsResults[mediaType].recv;
706
-
707
640
  if (currentStats.totalPacketsReceived === previousStats.totalPacketsReceived || currentStats.totalPacketsReceived === 0) {
708
641
  _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No ".concat(mediaType, " RTP packets received"));
709
642
  } else {
710
643
  if (this.statsResults.resolutions[mediaType].recv.framesReceived === this.lastStatsResults.resolutions[mediaType].recv.framesReceived || this.statsResults.resolutions[mediaType].recv.framesReceived === 0) {
711
644
  _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No ".concat(mediaType, " frames received"));
712
645
  }
713
-
714
646
  if (this.statsResults[mediaType].recv.framesDecoded === this.lastStatsResults[mediaType].recv.framesDecoded || this.statsResults.resolutions[mediaType].send.framesDecoded === 0) {
715
647
  _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No ".concat(mediaType, " frames decoded"));
716
648
  }
717
-
718
649
  if (this.statsResults.resolutions[mediaType].recv.framesDropped - this.lastStatsResults.resolutions[mediaType].recv.framesDropped > 10) {
719
650
  _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> ".concat(mediaType, " frames are getting dropped"));
720
651
  }
721
652
  }
722
-
723
653
  this.emitStartStopEvents(mediaType, previousStats.framesDecoded, currentStats.framesDecoded, false);
724
654
  }
725
-
726
655
  mediaType = _constants.STATS.SHARE_CORRELATE;
727
-
728
656
  if (this.meetingMediaStatus.expected.sendShare) {
729
657
  // compare share stats sent
658
+
730
659
  currentStats = this.statsResults[mediaType].send;
731
660
  previousStats = this.lastStatsResults[mediaType].send;
732
-
733
661
  if (currentStats.totalPacketsSent === previousStats.totalPacketsSent || currentStats.totalPacketsSent === 0) {
734
662
  _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No ".concat(mediaType, " RTP packets sent"));
735
663
  } else {
736
664
  if (currentStats.framesEncoded === previousStats.framesEncoded || currentStats.framesEncoded === 0) {
737
665
  _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No ".concat(mediaType, " frames getting encoded"));
738
666
  }
739
-
740
667
  if (this.statsResults.resolutions[mediaType].send.framesSent === this.lastStatsResults.resolutions[mediaType].send.framesSent || this.statsResults.resolutions[mediaType].send.framesSent === 0) {
741
668
  _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No ".concat(mediaType, " frames sent"));
742
669
  }
743
- } // TODO:need to check receive share value
744
- // compare share stats reveived
745
-
670
+ }
746
671
 
672
+ // TODO:need to check receive share value
673
+ // compare share stats reveived
747
674
  currentStats = this.statsResults[mediaType].recv;
748
675
  previousStats = this.lastStatsResults[mediaType].recv;
749
-
750
676
  if (currentStats.totalPacketsReceived === previousStats.totalPacketsReceived || currentStats.totalPacketsSent === 0) {
751
677
  _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No ".concat(mediaType, " RTP packets received"));
752
678
  } else {
753
679
  if (this.statsResults.resolutions[mediaType].recv.framesReceived === this.lastStatsResults.resolutions[mediaType].recv.framesReceived || this.statsResults.resolutions[mediaType].recv.framesReceived === 0) {
754
680
  _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No ".concat(mediaType, " frames received"));
755
681
  }
756
-
757
682
  if (this.statsResults[mediaType].recv.framesDecoded === this.lastStatsResults[mediaType].recv.framesDecoded || this.statsResults.resolutions[mediaType].send.framesDecoded === 0) {
758
683
  _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No ".concat(mediaType, " frames decoded"));
759
684
  }
760
-
761
685
  if (this.statsResults.resolutions[mediaType].recv.framesDropped - this.lastStatsResults.resolutions[mediaType].recv.framesDropped > 10) {
762
686
  _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> ".concat(mediaType, " frames are getting dropped"));
763
687
  }
764
- } // we are not calling emitStartStopEvents() for sending or receiving share because sharing is often started and stopped
688
+ }
689
+
690
+ // we are not calling emitStartStopEvents() for sending or receiving share because sharing is often started and stopped
765
691
  // in meetings and this.meetingMediaStatus.expected values can be out of sync with the actual packet flow
766
692
  // so we would send "sharing stopped" events incorrectly
767
-
768
693
  }
769
694
  }
770
695
  }
696
+
771
697
  /**
772
698
  * Does a `getStats` on all the transceivers and parses the results
773
699
  *
@@ -775,24 +701,18 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
775
701
  * @memberof StatsAnalyzer
776
702
  * @returns {Promise}
777
703
  */
778
-
779
704
  }, {
780
705
  key: "getStatsAndParse",
781
706
  value: function getStatsAndParse() {
782
707
  var _this5 = this;
783
-
784
708
  if (!this.peerConnection) {
785
709
  return _promise.default.resolve();
786
710
  }
787
-
788
711
  if (this.peerConnection && this.peerConnection.connectionState === _constants.CONNECTION_STATE.FAILED) {
789
712
  _loggerProxy.default.logger.trace('StatsAnalyzer:index#getStatsAndParse --> PeerConnection is in failed state');
790
-
791
713
  return _promise.default.resolve();
792
714
  }
793
-
794
715
  _loggerProxy.default.logger.trace('StatsAnalyzer:index#getStatsAndParse --> Collecting Stats');
795
-
796
716
  return _promise.default.all([this.peerConnection.videoTransceiver.sender.getStats().then(function (res) {
797
717
  _this5.filterAndParseGetStatsResults(res, _constants.STATS.VIDEO_CORRELATE, true);
798
718
  }), this.peerConnection.videoTransceiver.receiver.getStats().then(function (res) {
@@ -801,7 +721,8 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
801
721
  _this5.filterAndParseGetStatsResults(res, _constants.STATS.AUDIO_CORRELATE, true);
802
722
  }), this.peerConnection.audioTransceiver.receiver.getStats().then(function (res) {
803
723
  _this5.filterAndParseGetStatsResults(res, _constants.STATS.AUDIO_CORRELATE, false);
804
- }), // TODO: add checks for screen share
724
+ }),
725
+ // TODO: add checks for screen share
805
726
  this.peerConnection.shareTransceiver.sender.getStats().then(function (res) {
806
727
  _this5.filterAndParseGetStatsResults(res, _constants.STATS.SHARE_CORRELATE, true);
807
728
  }), this.peerConnection.shareTransceiver.receiver.getStats().then(function (res) {
@@ -809,16 +730,17 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
809
730
  })]).then(function () {
810
731
  _this5.statsResults[_constants.STATS.AUDIO_CORRELATE].direction = _this5.peerConnection.audioTransceiver.currentDirection;
811
732
  _this5.statsResults[_constants.STATS.VIDEO_CORRELATE].direction = _this5.peerConnection.videoTransceiver.currentDirection;
812
- _this5.statsResults[_constants.STATS.SHARE_CORRELATE].direction = _this5.peerConnection.shareTransceiver.currentDirection; // Process Stats results every 5 seconds
813
-
814
- _this5.compareLastStatsResult(); // Save the last results to compare with the current
733
+ _this5.statsResults[_constants.STATS.SHARE_CORRELATE].direction = _this5.peerConnection.shareTransceiver.currentDirection;
815
734
 
735
+ // Process Stats results every 5 seconds
736
+ _this5.compareLastStatsResult();
816
737
 
738
+ // Save the last results to compare with the current
817
739
  _this5.lastStatsResults = JSON.parse((0, _stringify.default)(_this5.statsResults));
818
-
819
740
  _loggerProxy.default.logger.trace('StatsAnalyzer:index#getStatsAndParse --> Finished Collecting Stats');
820
741
  });
821
742
  }
743
+
822
744
  /**
823
745
  * Processes OutboundRTP stats result and stores
824
746
  * @private
@@ -826,28 +748,22 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
826
748
  * @param {*} type
827
749
  * @returns {void}
828
750
  */
829
-
830
751
  }, {
831
752
  key: "processOutboundRTPResult",
832
753
  value: function processOutboundRTPResult(result, type) {
833
754
  var mediaType = type || _constants.STATS.AUDIO_CORRELATE;
834
755
  var sendrecvType = _constants.STATS.SEND_DIRECTION;
835
-
836
756
  if (result.bytesSent) {
837
757
  var kilobytes = 0;
838
-
839
758
  if (!this.statsResults.internal[mediaType][sendrecvType].prevBytesSent) {
840
759
  this.statsResults.internal[mediaType][sendrecvType].prevBytesSent = result.bytesSent;
841
760
  }
842
-
843
761
  if (!this.statsResults.internal[mediaType][sendrecvType].framesEncoded) {
844
762
  this.statsResults.internal[mediaType][sendrecvType].framesEncoded = result.framesEncoded;
845
763
  }
846
-
847
764
  if (!this.statsResults.internal[mediaType][sendrecvType].keyFramesEncoded) {
848
765
  this.statsResults.internal[mediaType][sendrecvType].keyFramesEncoded = result.keyFramesEncoded;
849
766
  }
850
-
851
767
  var bytes = result.bytesSent - this.statsResults.internal[mediaType][sendrecvType].prevBytesSent;
852
768
  this.statsResults.internal[mediaType][sendrecvType].prevBytesSent = result.bytesSent;
853
769
  kilobytes = bytes / 1024;
@@ -856,13 +772,13 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
856
772
  this.statsResults[mediaType][sendrecvType].framesEncoded = result.framesEncoded - this.statsResults.internal[mediaType][sendrecvType].framesEncoded;
857
773
  this.statsResults[mediaType][sendrecvType].keyFramesEncoded = result.keyFramesEncoded - this.statsResults.internal[mediaType][sendrecvType].keyFramesEncoded;
858
774
  this.statsResults.internal[mediaType].outboundRtpId = result.id;
859
-
860
775
  if (!this.statsResults.internal[mediaType][sendrecvType].packetsSent) {
861
776
  this.statsResults.internal[mediaType][sendrecvType].packetsSent = result.packetsSent;
862
777
  }
863
-
864
778
  this.statsResults[mediaType][sendrecvType].packetsSent = result.packetsSent - this.statsResults.internal[mediaType][sendrecvType].packetsSent;
865
- this.statsResults.internal[mediaType][sendrecvType].packetsSent = result.packetsSent; // Data saved to send MQA metrics
779
+ this.statsResults.internal[mediaType][sendrecvType].packetsSent = result.packetsSent;
780
+
781
+ // Data saved to send MQA metrics
866
782
 
867
783
  this.statsResults[mediaType][sendrecvType].totalKeyFramesEncoded = result.keyFramesEncoded;
868
784
  this.statsResults[mediaType][sendrecvType].totalNackCount = result.nackCount;
@@ -880,6 +796,7 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
880
796
  this.statsResults[mediaType][sendrecvType].retransmittedBytesSent = result.retransmittedBytesSent;
881
797
  }
882
798
  }
799
+
883
800
  /**
884
801
  * Processes InboundRTP stats result and stores
885
802
  * @private
@@ -887,36 +804,28 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
887
804
  * @param {*} type
888
805
  * @returns {void}
889
806
  */
890
-
891
807
  }, {
892
808
  key: "processInboundRTPResult",
893
809
  value: function processInboundRTPResult(result, type) {
894
810
  var mediaType = type || _constants.STATS.AUDIO_CORRELATE;
895
811
  var sendrecvType = _constants.STATS.RECEIVE_DIRECTION;
896
-
897
812
  if (result.bytesReceived) {
898
813
  var kilobytes = 0;
899
-
900
814
  if (!this.statsResults.internal[mediaType][sendrecvType].prevBytesReceived) {
901
815
  this.statsResults.internal[mediaType][sendrecvType].prevBytesReceived = result.bytesReceived;
902
816
  }
903
-
904
817
  if (!this.statsResults.internal[mediaType][sendrecvType].pliCount) {
905
818
  this.statsResults.internal[mediaType][sendrecvType].pliCount = result.pliCount;
906
819
  }
907
-
908
820
  if (!this.statsResults.internal[mediaType][sendrecvType].packetsLost) {
909
821
  this.statsResults.internal[mediaType][sendrecvType].packetsLost = result.packetsLost;
910
822
  }
911
-
912
823
  if (!this.statsResults.internal[mediaType][sendrecvType].totalPacketsReceived) {
913
824
  this.statsResults.internal[mediaType][sendrecvType].totalPacketsReceived = result.packetsReceived;
914
825
  }
915
-
916
826
  if (!this.statsResults.internal[mediaType][sendrecvType].lastPacketReceivedTimestamp) {
917
827
  this.statsResults.internal[mediaType][sendrecvType].lastPacketReceivedTimestamp = result.lastPacketReceivedTimestamp;
918
828
  }
919
-
920
829
  var bytes = result.bytesReceived - this.statsResults.internal[mediaType][sendrecvType].prevBytesReceived;
921
830
  this.statsResults.internal[mediaType][sendrecvType].prevBytesReceived = result.bytesReceived;
922
831
  kilobytes = bytes / 1024;
@@ -924,34 +833,31 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
924
833
  this.statsResults[mediaType].bytesReceived = kilobytes.toFixed(1);
925
834
  this.statsResults[mediaType][sendrecvType].pliCount = result.pliCount - this.statsResults.internal[mediaType][sendrecvType].pliCount;
926
835
  this.statsResults[mediaType][sendrecvType].currentPacketsLost = result.packetsLost - this.statsResults.internal[mediaType][sendrecvType].packetsLost;
927
-
928
836
  if (this.statsResults[mediaType][sendrecvType].currentPacketsLost < 0) {
929
837
  this.statsResults[mediaType][sendrecvType].currentPacketsLost = 0;
930
838
  }
931
-
932
839
  this.statsResults[mediaType][sendrecvType].packetsReceived = result.packetsReceived - this.statsResults.internal[mediaType][sendrecvType].totalPacketsReceived;
933
840
  this.statsResults.internal[mediaType][sendrecvType].totalPacketsReceived = result.packetsReceived;
934
-
935
841
  if (this.statsResults[mediaType][sendrecvType].packetsReceived === 0) {
936
842
  _loggerProxy.default.logger.info("StatsAnalyzer:index#processInboundRTPResult --> No packets received for ".concat(mediaType, " "), this.statsResults[mediaType][sendrecvType].packetsReceived);
937
- } // Check the over all packet Lost ratio
938
-
843
+ }
939
844
 
845
+ // Check the over all packet Lost ratio
940
846
  this.statsResults[mediaType][sendrecvType].currentPacketLossRatio = this.statsResults[mediaType][sendrecvType].currentPacketsLost > 0 ? this.statsResults[mediaType][sendrecvType].currentPacketsLost / (this.statsResults[mediaType][sendrecvType].packetsReceived + this.statsResults[mediaType][sendrecvType].currentPacketsLost) : 0;
941
-
942
847
  if (this.statsResults[mediaType][sendrecvType].currentPacketLossRatio > 3) {
943
848
  _loggerProxy.default.logger.info('StatsAnalyzer:index#processInboundRTPResult --> Packets getting lost from the receiver ', this.statsResults[mediaType][sendrecvType].currentPacketLossRatio);
944
- } // TODO: check the packet loss value is negative values here
849
+ }
945
850
 
851
+ // TODO: check the packet loss value is negative values here
946
852
 
947
853
  if (result.packetsLost) {
948
854
  this.statsResults[mediaType][sendrecvType].totalPacketsLost = result.packetsLost > 0 ? result.packetsLost : -result.packetsLost;
949
855
  } else {
950
856
  this.statsResults[mediaType][sendrecvType].totalPacketsLost = 0;
951
857
  }
858
+ this.statsResults[mediaType][sendrecvType].lastPacketReceivedTimestamp = result.lastPacketReceivedTimestamp;
952
859
 
953
- this.statsResults[mediaType][sendrecvType].lastPacketReceivedTimestamp = result.lastPacketReceivedTimestamp; // From Thin
954
-
860
+ // From Thin
955
861
  this.statsResults[mediaType][sendrecvType].totalNackCount = result.nackCount;
956
862
  this.statsResults[mediaType][sendrecvType].totalPliCount = result.pliCount;
957
863
  this.statsResults[mediaType][sendrecvType].framesDecoded = result.framesDecoded;
@@ -962,7 +868,9 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
962
868
  this.statsResults[mediaType][sendrecvType].fecPacketsReceived = result.fecPacketsReceived;
963
869
  this.statsResults[mediaType][sendrecvType].totalBytesReceived = result.bytesReceived;
964
870
  this.statsResults[mediaType][sendrecvType].headerBytesReceived = result.headerBytesReceived;
965
- this.statsResults[mediaType][sendrecvType].meanRtpJitter.push(result.jitter); // Audio stats
871
+ this.statsResults[mediaType][sendrecvType].meanRtpJitter.push(result.jitter);
872
+
873
+ // Audio stats
966
874
 
967
875
  this.statsResults[mediaType][sendrecvType].audioLevel = result.audioLevel;
968
876
  this.statsResults[mediaType][sendrecvType].totalAudioEnergy = result.totalAudioEnergy;
@@ -971,6 +879,7 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
971
879
  this.statsResults[mediaType][sendrecvType].concealedSamples = result.concealedSamples || 0;
972
880
  }
973
881
  }
882
+
974
883
  /**
975
884
  * Processes remote and local candidate result and stores
976
885
  * @private
@@ -981,7 +890,6 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
981
890
  *
982
891
  * @returns {void}
983
892
  */
984
-
985
893
  }, {
986
894
  key: "processTrackResult",
987
895
  value:
@@ -998,33 +906,31 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
998
906
  if (!result || result.type !== 'track') {
999
907
  return;
1000
908
  }
1001
-
1002
909
  if (result.type !== 'track') return;
1003
910
  var sendrecvType = result.remoteSource === true ? _constants.STATS.RECEIVE_DIRECTION : _constants.STATS.SEND_DIRECTION;
1004
-
1005
911
  if (result.frameWidth && result.frameHeight) {
1006
912
  this.statsResults.resolutions[mediaType][sendrecvType].width = result.frameWidth;
1007
913
  this.statsResults.resolutions[mediaType][sendrecvType].height = result.frameHeight;
1008
914
  this.statsResults.resolutions[mediaType][sendrecvType].framesSent = result.framesSent;
1009
915
  this.statsResults.resolutions[mediaType][sendrecvType].hugeFramesSent = result.hugeFramesSent;
1010
916
  }
1011
-
1012
917
  if (sendrecvType === _constants.STATS.RECEIVE_DIRECTION) {
1013
918
  this.statsResults.resolutions[mediaType][sendrecvType].framesReceived = result.framesReceived;
1014
919
  this.statsResults.resolutions[mediaType][sendrecvType].framesDecoded = result.framesDecoded;
1015
920
  this.statsResults.resolutions[mediaType][sendrecvType].framesDropped = result.framesDropped;
1016
921
  }
1017
-
1018
922
  if (result.trackIdentifier && mediaType !== _constants.STATS.AUDIO_CORRELATE) {
1019
923
  this.statsResults.resolutions[mediaType][sendrecvType].trackIdentifier = result.trackIdentifier;
1020
924
  var jitterBufferDelay = result && result.jitterBufferDelay;
1021
925
  var jitterBufferEmittedCount = result && result.jitterBufferEmittedCount;
1022
- this.statsResults.resolutions[mediaType][sendrecvType].avgJitterDelay = jitterBufferEmittedCount && +jitterBufferDelay / +jitterBufferEmittedCount; // Used to calculate the jitter
926
+ this.statsResults.resolutions[mediaType][sendrecvType].avgJitterDelay = jitterBufferEmittedCount && +jitterBufferDelay / +jitterBufferEmittedCount;
1023
927
 
928
+ // Used to calculate the jitter
1024
929
  this.statsResults.resolutions[mediaType][sendrecvType].jitterBufferDelay = result.jitterBufferDelay;
1025
930
  this.statsResults.resolutions[mediaType][sendrecvType].jitterBufferEmittedCount = result.jitterBufferEmittedCount;
1026
931
  }
1027
932
  }
933
+
1028
934
  /**
1029
935
  *
1030
936
  * @private
@@ -1033,20 +939,16 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
1033
939
  * @returns {void}
1034
940
  * @memberof StatsAnalyzer
1035
941
  */
1036
-
1037
942
  }, {
1038
943
  key: "compareSentAndReceived",
1039
944
  value: function compareSentAndReceived(result, type) {
1040
945
  if (!type) {
1041
946
  return;
1042
947
  }
1043
-
1044
948
  var mediaType = type;
1045
-
1046
949
  if (!this.statsResults.internal[mediaType].send.totalPacketsLostOnReceiver) {
1047
950
  this.statsResults.internal[mediaType].send.totalPacketsLostOnReceiver = result.packetsLost;
1048
951
  }
1049
-
1050
952
  var currentPacketLoss = result.packetsLost - this.statsResults.internal[mediaType].send.totalPacketsLostOnReceiver;
1051
953
  this.statsResults.internal[mediaType].send.totalPacketsLostOnReceiver = result.packetsLost;
1052
954
  this.statsResults[mediaType].send.packetsLostOnReceiver = currentPacketLoss;
@@ -1055,15 +957,14 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
1055
957
  this.statsResults[mediaType].send.meanRoundTripTime.push(result.roundTripTime);
1056
958
  this.statsResults[mediaType].send.timestamp = result.timestamp;
1057
959
  this.statsResults[mediaType].send.ssrc = result.ssrc;
1058
- this.statsResults[mediaType].send.reportsReceived = result.reportsReceived; // Total packloss ratio on this video section of the call
960
+ this.statsResults[mediaType].send.reportsReceived = result.reportsReceived;
1059
961
 
962
+ // Total packloss ratio on this video section of the call
1060
963
  this.statsResults[mediaType].send.overAllPacketLossRatio = this.statsResults[mediaType].send.totalPacketsLostOnReceiver > 0 ? this.statsResults[mediaType].send.totalPacketsLostOnReceiver / this.statsResults[mediaType].send.totalPacketsSent : 0;
1061
964
  this.statsResults[mediaType].send.currentPacketLossRatio = this.statsResults[mediaType].send.packetsLostOnReceiver > 0 ? this.statsResults[mediaType].send.packetsLostOnReceiver * 100 / (this.statsResults[mediaType].send.packetsSent + this.statsResults[mediaType].send.packetsLostOnReceiver) : 0;
1062
-
1063
965
  if (this.statsResults[mediaType].send.maxPacketLossRatio < this.statsResults[mediaType].send.currentPacketLossRatio) {
1064
966
  this.statsResults[mediaType].send.maxPacketLossRatio = this.statsResults[mediaType].send.currentPacketLossRatio;
1065
967
  }
1066
-
1067
968
  if (result.type === 'remote-inbound-rtp') {
1068
969
  this.networkQualityMonitor.determineUplinkNetworkQuality({
1069
970
  mediaType: mediaType,
@@ -1075,6 +976,5 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
1075
976
  }]);
1076
977
  return StatsAnalyzer;
1077
978
  }(_eventsScope.default);
1078
-
1079
979
  exports.StatsAnalyzer = StatsAnalyzer;
1080
980
  //# sourceMappingURL=index.js.map