@webex/plugin-meetings 3.0.0-beta.14 → 3.0.0-beta.16

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 (311) 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 +6 -41
  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 +45 -40
  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 -38
  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 +43 -97
  74. package/dist/media/index.js.map +1 -1
  75. package/dist/media/internal-media-core-wrapper.js +0 -4
  76. package/dist/media/internal-media-core-wrapper.js.map +1 -1
  77. package/dist/media/properties.js +64 -110
  78. package/dist/media/properties.js.map +1 -1
  79. package/dist/media/util.js +2 -9
  80. package/dist/media/util.js.map +1 -1
  81. package/dist/mediaQualityMetrics/config.js +10 -12
  82. package/dist/mediaQualityMetrics/config.js.map +1 -1
  83. package/dist/meeting/effectsState.js +120 -192
  84. package/dist/meeting/effectsState.js.map +1 -1
  85. package/dist/meeting/in-meeting-actions.js +0 -13
  86. package/dist/meeting/in-meeting-actions.js.map +1 -1
  87. package/dist/meeting/index.js +819 -1591
  88. package/dist/meeting/index.js.map +1 -1
  89. package/dist/meeting/muteState.js +31 -78
  90. package/dist/meeting/muteState.js.map +1 -1
  91. package/dist/meeting/request.js +160 -230
  92. package/dist/meeting/request.js.map +1 -1
  93. package/dist/meeting/request.type.js +0 -1
  94. package/dist/meeting/request.type.js.map +1 -1
  95. package/dist/meeting/state.js +21 -31
  96. package/dist/meeting/state.js.map +1 -1
  97. package/dist/meeting/util.js +19 -158
  98. package/dist/meeting/util.js.map +1 -1
  99. package/dist/meeting-info/collection.js +3 -25
  100. package/dist/meeting-info/collection.js.map +1 -1
  101. package/dist/meeting-info/index.js +10 -33
  102. package/dist/meeting-info/index.js.map +1 -1
  103. package/dist/meeting-info/meeting-info-v2.js +179 -268
  104. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  105. package/dist/meeting-info/request.js +1 -16
  106. package/dist/meeting-info/request.js.map +1 -1
  107. package/dist/meeting-info/util.js +98 -183
  108. package/dist/meeting-info/util.js.map +1 -1
  109. package/dist/meeting-info/utilv2.js +137 -228
  110. package/dist/meeting-info/utilv2.js.map +1 -1
  111. package/dist/meetings/collection.js +3 -21
  112. package/dist/meetings/collection.js.map +1 -1
  113. package/dist/meetings/index.js +450 -582
  114. package/dist/meetings/index.js.map +1 -1
  115. package/dist/meetings/request.js +7 -30
  116. package/dist/meetings/request.js.map +1 -1
  117. package/dist/meetings/util.js +99 -155
  118. package/dist/meetings/util.js.map +1 -1
  119. package/dist/member/index.js +49 -89
  120. package/dist/member/index.js.map +1 -1
  121. package/dist/member/util.js +17 -68
  122. package/dist/member/util.js.map +1 -1
  123. package/dist/members/collection.js +2 -12
  124. package/dist/members/collection.js.map +1 -1
  125. package/dist/members/index.js +72 -194
  126. package/dist/members/index.js.map +1 -1
  127. package/dist/members/request.js +21 -56
  128. package/dist/members/request.js.map +1 -1
  129. package/dist/members/util.js +9 -38
  130. package/dist/members/util.js.map +1 -1
  131. package/dist/metrics/config.js +0 -2
  132. package/dist/metrics/config.js.map +1 -1
  133. package/dist/metrics/constants.js +1 -2
  134. package/dist/metrics/constants.js.map +1 -1
  135. package/dist/metrics/index.js +48 -136
  136. package/dist/metrics/index.js.map +1 -1
  137. package/dist/multistream/mediaRequestManager.js +12 -28
  138. package/dist/multistream/mediaRequestManager.js.map +1 -1
  139. package/dist/multistream/multistreamMedia.js +11 -21
  140. package/dist/multistream/multistreamMedia.js.map +1 -1
  141. package/dist/multistream/receiveSlot.js +7 -47
  142. package/dist/multistream/receiveSlot.js.map +1 -1
  143. package/dist/multistream/receiveSlotManager.js +38 -77
  144. package/dist/multistream/receiveSlotManager.js.map +1 -1
  145. package/dist/multistream/remoteMedia.js +11 -56
  146. package/dist/multistream/remoteMedia.js.map +1 -1
  147. package/dist/multistream/remoteMediaGroup.js +6 -40
  148. package/dist/multistream/remoteMediaGroup.js.map +1 -1
  149. package/dist/multistream/remoteMediaManager.js +221 -380
  150. package/dist/multistream/remoteMediaManager.js.map +1 -1
  151. package/dist/networkQualityMonitor/index.js +28 -57
  152. package/dist/networkQualityMonitor/index.js.map +1 -1
  153. package/dist/personal-meeting-room/index.js +10 -45
  154. package/dist/personal-meeting-room/index.js.map +1 -1
  155. package/dist/personal-meeting-room/request.js +2 -33
  156. package/dist/personal-meeting-room/request.js.map +1 -1
  157. package/dist/personal-meeting-room/util.js +0 -13
  158. package/dist/personal-meeting-room/util.js.map +1 -1
  159. package/dist/reachability/index.js +100 -166
  160. package/dist/reachability/index.js.map +1 -1
  161. package/dist/reachability/request.js +2 -18
  162. package/dist/reachability/request.js.map +1 -1
  163. package/dist/reactions/reactions.js +0 -2
  164. package/dist/reactions/reactions.js.map +1 -1
  165. package/dist/reactions/reactions.type.js +2 -6
  166. package/dist/reactions/reactions.type.js.map +1 -1
  167. package/dist/reconnection-manager/index.js +294 -459
  168. package/dist/reconnection-manager/index.js.map +1 -1
  169. package/dist/roap/index.js +18 -53
  170. package/dist/roap/index.js.map +1 -1
  171. package/dist/roap/request.js +13 -55
  172. package/dist/roap/request.js.map +1 -1
  173. package/dist/roap/turnDiscovery.js +10 -52
  174. package/dist/roap/turnDiscovery.js.map +1 -1
  175. package/dist/statsAnalyzer/global.js +0 -2
  176. package/dist/statsAnalyzer/global.js.map +1 -1
  177. package/dist/statsAnalyzer/index.js +66 -174
  178. package/dist/statsAnalyzer/index.js.map +1 -1
  179. package/dist/statsAnalyzer/mqaUtil.js +54 -53
  180. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  181. package/dist/transcription/index.js +13 -45
  182. package/dist/transcription/index.js.map +1 -1
  183. package/internal-README.md +7 -6
  184. package/package.json +18 -18
  185. package/src/common/browser-detection.ts +9 -6
  186. package/src/common/collection.ts +3 -1
  187. package/src/common/errors/captcha-error.ts +6 -6
  188. package/src/common/errors/intent-to-join.ts +6 -6
  189. package/src/common/errors/join-meeting.ts +12 -8
  190. package/src/common/errors/media.ts +6 -6
  191. package/src/common/errors/parameter.ts +9 -6
  192. package/src/common/errors/password-error.ts +6 -6
  193. package/src/common/errors/permission.ts +5 -5
  194. package/src/common/errors/reconnection.ts +6 -6
  195. package/src/common/errors/stats.ts +6 -6
  196. package/src/common/errors/webex-errors.ts +7 -5
  197. package/src/common/errors/webex-meetings-error.ts +1 -1
  198. package/src/common/events/events-scope.ts +5 -1
  199. package/src/common/events/events.ts +5 -1
  200. package/src/common/events/trigger-proxy.ts +8 -3
  201. package/src/common/events/util.ts +1 -2
  202. package/src/common/logs/logger-proxy.ts +21 -10
  203. package/src/common/logs/request.ts +11 -8
  204. package/src/config.ts +11 -11
  205. package/src/constants.ts +1 -1
  206. package/src/index.js +1 -1
  207. package/src/locus-info/controlsUtils.ts +34 -24
  208. package/src/locus-info/fullState.ts +15 -11
  209. package/src/locus-info/hostUtils.ts +4 -3
  210. package/src/locus-info/index.ts +25 -34
  211. package/src/locus-info/infoUtils.ts +12 -4
  212. package/src/locus-info/mediaSharesUtils.ts +4 -4
  213. package/src/locus-info/parser.ts +45 -68
  214. package/src/locus-info/selfUtils.ts +106 -57
  215. package/src/media/index.ts +123 -135
  216. package/src/media/internal-media-core-wrapper.ts +2 -2
  217. package/src/media/properties.ts +30 -20
  218. package/src/media/util.ts +1 -1
  219. package/src/mediaQualityMetrics/config.ts +46 -46
  220. package/src/meeting/effectsState.ts +35 -35
  221. package/src/meeting/in-meeting-actions.ts +7 -3
  222. package/src/meeting/index.ts +1559 -1292
  223. package/src/meeting/muteState.ts +62 -31
  224. package/src/meeting/request.ts +155 -116
  225. package/src/meeting/request.type.ts +8 -8
  226. package/src/meeting/state.ts +45 -30
  227. package/src/meeting/util.ts +101 -70
  228. package/src/meeting-info/collection.ts +2 -1
  229. package/src/meeting-info/index.ts +32 -30
  230. package/src/meeting-info/meeting-info-v2.ts +106 -108
  231. package/src/meeting-info/request.ts +9 -3
  232. package/src/meeting-info/util.ts +54 -46
  233. package/src/meeting-info/utilv2.ts +59 -53
  234. package/src/meetings/collection.ts +1 -1
  235. package/src/meetings/index.ts +512 -440
  236. package/src/meetings/request.ts +26 -24
  237. package/src/meetings/util.ts +29 -29
  238. package/src/member/index.ts +55 -49
  239. package/src/member/util.ts +26 -13
  240. package/src/members/collection.ts +0 -1
  241. package/src/members/index.ts +182 -126
  242. package/src/members/request.ts +46 -14
  243. package/src/members/util.ts +44 -42
  244. package/src/metrics/config.ts +254 -81
  245. package/src/metrics/constants.ts +0 -2
  246. package/src/metrics/index.ts +84 -71
  247. package/src/multistream/multistreamMedia.ts +1 -0
  248. package/src/multistream/receiveSlot.ts +1 -0
  249. package/src/multistream/receiveSlotManager.ts +1 -0
  250. package/src/multistream/remoteMedia.ts +1 -1
  251. package/src/multistream/remoteMediaGroup.ts +2 -1
  252. package/src/multistream/remoteMediaManager.ts +3 -0
  253. package/src/networkQualityMonitor/index.ts +20 -23
  254. package/src/personal-meeting-room/index.ts +12 -16
  255. package/src/personal-meeting-room/request.ts +10 -3
  256. package/src/personal-meeting-room/util.ts +3 -3
  257. package/src/reachability/index.ts +61 -59
  258. package/src/reachability/request.ts +36 -32
  259. package/src/reactions/reactions.ts +4 -4
  260. package/src/reactions/reactions.type.ts +4 -3
  261. package/src/reconnection-manager/index.ts +139 -84
  262. package/src/roap/index.ts +46 -38
  263. package/src/roap/request.ts +44 -31
  264. package/src/roap/turnDiscovery.ts +59 -30
  265. package/src/statsAnalyzer/global.ts +30 -33
  266. package/src/statsAnalyzer/index.ts +432 -175
  267. package/src/statsAnalyzer/mqaUtil.ts +178 -72
  268. package/src/transcription/index.ts +34 -32
  269. package/test/integration/spec/journey.js +664 -463
  270. package/test/integration/spec/space-meeting.js +319 -204
  271. package/test/integration/spec/transcription.js +7 -8
  272. package/test/unit/spec/common/browser-detection.js +9 -28
  273. package/test/unit/spec/fixture/locus.js +92 -90
  274. package/test/unit/spec/locus-info/controlsUtils.js +5 -5
  275. package/test/unit/spec/locus-info/embeddedAppsUtils.js +8 -6
  276. package/test/unit/spec/locus-info/index.js +1 -2
  277. package/test/unit/spec/locus-info/infoUtils.js +26 -33
  278. package/test/unit/spec/locus-info/lib/BasicSeqCmp.json +88 -430
  279. package/test/unit/spec/locus-info/lib/SeqCmp.json +513 -685
  280. package/test/unit/spec/locus-info/parser.js +3 -9
  281. package/test/unit/spec/locus-info/selfConstant.js +72 -103
  282. package/test/unit/spec/locus-info/selfUtils.js +21 -12
  283. package/test/unit/spec/meeting/effectsState.js +36 -46
  284. package/test/unit/spec/meeting/in-meeting-actions.ts +2 -3
  285. package/test/unit/spec/meeting/index.js +1279 -685
  286. package/test/unit/spec/meeting/muteState.js +42 -33
  287. package/test/unit/spec/meeting/request.js +57 -46
  288. package/test/unit/spec/meeting/utils.js +78 -53
  289. package/test/unit/spec/meeting-info/meetinginfov2.js +100 -73
  290. package/test/unit/spec/meeting-info/request.js +7 -9
  291. package/test/unit/spec/meeting-info/util.js +11 -12
  292. package/test/unit/spec/meeting-info/utilv2.js +110 -74
  293. package/test/unit/spec/meetings/collection.js +1 -1
  294. package/test/unit/spec/meetings/index.js +438 -257
  295. package/test/unit/spec/meetings/utils.js +14 -12
  296. package/test/unit/spec/member/index.js +0 -1
  297. package/test/unit/spec/member/util.js +5 -6
  298. package/test/unit/spec/members/index.js +104 -54
  299. package/test/unit/spec/members/request.js +29 -20
  300. package/test/unit/spec/members/utils.js +8 -5
  301. package/test/unit/spec/metrics/index.js +16 -21
  302. package/test/unit/spec/networkQualityMonitor/index.js +21 -15
  303. package/test/unit/spec/personal-meeting-room/personal-meeting-room.js +2 -7
  304. package/test/unit/spec/reachability/index.ts +9 -11
  305. package/test/unit/spec/reconnection-manager/index.js +16 -18
  306. package/test/unit/spec/roap/turnDiscovery.ts +22 -19
  307. package/test/unit/spec/stats-analyzer/index.js +25 -20
  308. package/test/utils/cmr.js +44 -42
  309. package/test/utils/testUtils.js +83 -74
  310. package/test/utils/webex-config.js +18 -18
  311. package/test/utils/webex-test-users.js +53 -50
@@ -1,55 +1,31 @@
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 _internalMediaCore = require("@webex/internal-media-core");
36
-
37
21
  var _eventsScope = _interopRequireDefault(require("../common/events/events-scope"));
38
-
39
22
  var _constants = require("../constants");
40
-
41
23
  var _config = _interopRequireDefault(require("../mediaQualityMetrics/config"));
42
-
43
24
  var _loggerProxy = _interopRequireDefault(require("../common/logs/logger-proxy"));
44
-
45
25
  var _global = _interopRequireDefault(require("./global"));
46
-
47
26
  var _mqaUtil = require("./mqaUtil");
48
-
49
27
  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); }; }
50
-
51
28
  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; } }
52
-
53
29
  var EVENTS = {
54
30
  MEDIA_QUALITY: 'MEDIA_QUALITY',
55
31
  LOCAL_MEDIA_STARTED: 'LOCAL_MEDIA_STARTED',
@@ -57,6 +33,7 @@ var EVENTS = {
57
33
  REMOTE_MEDIA_STARTED: 'REMOTE_MEDIA_STARTED',
58
34
  REMOTE_MEDIA_STOPPED: 'REMOTE_MEDIA_STOPPED'
59
35
  };
36
+
60
37
  /**
61
38
  * Stats Analyzer class that will emit events based on detected quality
62
39
  *
@@ -64,14 +41,10 @@ var EVENTS = {
64
41
  * @class StatsAnalyzer
65
42
  * @extends {EventsScope}
66
43
  */
67
-
68
44
  exports.EVENTS = EVENTS;
69
-
70
45
  var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
71
46
  (0, _inherits2.default)(StatsAnalyzer, _EventsScope);
72
-
73
47
  var _super = _createSuper(StatsAnalyzer);
74
-
75
48
  /**
76
49
  * Creates a new instance of StatsAnalyzer
77
50
  * @constructor
@@ -82,7 +55,6 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
82
55
  */
83
56
  function StatsAnalyzer(config) {
84
57
  var _this;
85
-
86
58
  var networkQualityMonitor = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
87
59
  var statsResults = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _global.default;
88
60
  (0, _classCallCheck2.default)(this, StatsAnalyzer);
@@ -104,28 +76,25 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
104
76
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "emitStartStopEvents", function (mediaType, previousValue, currentValue, isLocal) {
105
77
  if (mediaType !== 'audio' && mediaType !== 'video' && mediaType !== 'share') {
106
78
  throw new Error("Unsupported mediaType: ".concat(mediaType));
107
- } // eslint-disable-next-line no-param-reassign
108
-
109
-
110
- if (previousValue === undefined) previousValue = 0; // eslint-disable-next-line no-param-reassign
79
+ }
111
80
 
81
+ // eslint-disable-next-line no-param-reassign
82
+ if (previousValue === undefined) previousValue = 0;
83
+ // eslint-disable-next-line no-param-reassign
112
84
  if (currentValue === undefined) currentValue = 0;
113
85
  var lastEmittedEvent = isLocal ? _this.lastEmittedStartStopEvent[mediaType].local : _this.lastEmittedStartStopEvent[mediaType].remote;
114
86
  var newEvent;
115
-
116
87
  if (currentValue - previousValue > 0) {
117
88
  newEvent = isLocal ? EVENTS.LOCAL_MEDIA_STARTED : EVENTS.REMOTE_MEDIA_STARTED;
118
89
  } else if (currentValue === previousValue && currentValue > 0) {
119
90
  newEvent = isLocal ? EVENTS.LOCAL_MEDIA_STOPPED : EVENTS.REMOTE_MEDIA_STOPPED;
120
91
  }
121
-
122
92
  if (newEvent && lastEmittedEvent !== newEvent) {
123
93
  if (isLocal) {
124
94
  _this.lastEmittedStartStopEvent[mediaType].local = newEvent;
125
95
  } else {
126
96
  _this.lastEmittedStartStopEvent[mediaType].remote = newEvent;
127
97
  }
128
-
129
98
  _this.emit({
130
99
  file: 'statsAnalyzer/index',
131
100
  function: 'compareLastStatsResult'
@@ -138,7 +107,6 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
138
107
  if (!result || !result.id) {
139
108
  return;
140
109
  }
141
-
142
110
  var RemoteCandidateType = {};
143
111
  var RemoteTransport = {};
144
112
  var RemoteIpAddress = {};
@@ -146,31 +114,24 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
146
114
  if (!result.id) return;
147
115
  var sendRecvType = isSender ? _constants.STATS.SEND_DIRECTION : _constants.STATS.RECEIVE_DIRECTION;
148
116
  var ipType = isRemote ? _constants.STATS.REMOTE : _constants.STATS.LOCAL;
149
-
150
117
  if (!RemoteCandidateType[result.id]) {
151
118
  RemoteCandidateType[result.id] = [];
152
119
  }
153
-
154
120
  if (!RemoteTransport[result.id]) {
155
121
  RemoteTransport[result.id] = [];
156
122
  }
157
-
158
123
  if (!RemoteIpAddress[result.id]) {
159
124
  RemoteIpAddress[result.id] = [];
160
125
  }
161
-
162
126
  if (!RemoteNetworkType[result.id]) {
163
127
  RemoteNetworkType[result.id] = [];
164
128
  }
165
-
166
129
  if (result.candidateType && RemoteCandidateType[result.id].indexOf(result.candidateType) === -1) {
167
130
  RemoteCandidateType[result.id].push(result.candidateType);
168
131
  }
169
-
170
132
  if (result.protocol && RemoteTransport[result.id].indexOf(result.protocol) === -1) {
171
133
  RemoteTransport[result.id].push(result.protocol.toUpperCase());
172
134
  }
173
-
174
135
  if (result.ip && RemoteIpAddress[result.id].indexOf("".concat(result.ip, ":").concat(result.portNumber)) === -1) {
175
136
  RemoteIpAddress[result.id].push("".concat(result.ip)); // TODO: Add ports
176
137
  }
@@ -178,7 +139,6 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
178
139
  if (result.networkType && RemoteNetworkType[result.id].indexOf(result.networkType) === -1) {
179
140
  RemoteNetworkType[result.id].push(result.networkType);
180
141
  }
181
-
182
142
  _this.statsResults.internal.candidates[result.id] = {
183
143
  candidateType: RemoteCandidateType[result.id],
184
144
  ipAddress: RemoteIpAddress[result.id],
@@ -287,11 +247,11 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
287
247
  };
288
248
  return _this;
289
249
  }
290
-
291
250
  (0, _createClass2.default)(StatsAnalyzer, [{
292
251
  key: "populateResults",
293
252
  value: function populateResults(lastMqa) {
294
253
  // Audio
254
+
295
255
  this.localMQEStats.audio.RX.packetsLost.push(lastMqa.audioReceive[0].common.mediaHopByHopLost);
296
256
  this.localMQEStats.audio.RX.jitter.push(lastMqa.audioReceive[0].streams[0].common.rtpJitter);
297
257
  this.localMQEStats.audio.RX.latency.push(lastMqa.audioReceive[0].common.roundTripTime);
@@ -299,7 +259,9 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
299
259
  this.localMQEStats.audio.TX.packetsLost.push(lastMqa.audioTransmit[0].common.remoteLossRate);
300
260
  this.localMQEStats.audio.TX.jitter.push(lastMqa.audioTransmit[0].common.remoteJitter);
301
261
  this.localMQEStats.audio.TX.latency.push(lastMqa.audioTransmit[0].common.roundTripTime);
302
- this.localMQEStats.audio.TX.bitRate.push(lastMqa.audioTransmit[0].streams[0].common.transmittedBitrate); // Video
262
+ this.localMQEStats.audio.TX.bitRate.push(lastMqa.audioTransmit[0].streams[0].common.transmittedBitrate);
263
+
264
+ // Video
303
265
 
304
266
  this.localMQEStats.video.RX.packetsLost.push(lastMqa.videoReceive[0].common.mediaHopByHopLost);
305
267
  this.localMQEStats.video.RX.jitter.push(lastMqa.videoReceive[0].streams[0].common.rtpJitter);
@@ -326,15 +288,18 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
326
288
  this.statsResults.audio.send.meanRemoteJitter = [];
327
289
  this.statsResults.video.send.meanRemoteJitter = [];
328
290
  this.statsResults.share.send.meanRemoteJitter = [];
329
- this.statsResults.audio.recv.meanRtpJitter = []; // TODO: currently no values are present
291
+ this.statsResults.audio.recv.meanRtpJitter = [];
330
292
 
293
+ // TODO: currently no values are present
331
294
  this.statsResults.video.recv.meanRtpJitter = [];
332
- this.statsResults.share.recv.meanRtpJitter = []; // Reset the roundTripTime
295
+ this.statsResults.share.recv.meanRtpJitter = [];
333
296
 
297
+ // Reset the roundTripTime
334
298
  this.statsResults.audio.send.meanRoundTripTime = [];
335
299
  this.statsResults.video.send.meanRoundTripTime = [];
336
300
  this.statsResults.share.send.meanRoundTripTime = [];
337
301
  }
302
+
338
303
  /**
339
304
  * sets mediaStatus status for analyzing metrics
340
305
  *
@@ -343,12 +308,12 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
343
308
  * @memberof StatsAnalyzer
344
309
  * @returns {void}
345
310
  */
346
-
347
311
  }, {
348
312
  key: "updateMediaStatus",
349
313
  value: function updateMediaStatus(status) {
350
314
  this.meetingMediaStatus = status;
351
315
  }
316
+
352
317
  /**
353
318
  * captures MQA data from media connection
354
319
  *
@@ -356,7 +321,6 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
356
321
  * @memberof StatsAnalyzer
357
322
  * @returns {void}
358
323
  */
359
-
360
324
  }, {
361
325
  key: "sendMqaData",
362
326
  value: function sendMqaData() {
@@ -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.statsResults[_constants.STATS.AUDIO_CORRELATE][_constants.STATS.SEND_DIRECTION].trackLabel || _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.statsResults[_constants.STATS.VIDEO_CORRELATE][_constants.STATS.SEND_DIRECTION].trackLabel || _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 media connection when changed
440
406
  *
@@ -443,12 +409,12 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
443
409
  * @param {MC.RoapMediaConnection} mediaConnection
444
410
  * @returns {void}
445
411
  */
446
-
447
412
  }, {
448
413
  key: "updateMediaConnection",
449
414
  value: function updateMediaConnection(mediaConnection) {
450
415
  this.mediaConnection = mediaConnection;
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 {MC.RoapMediaConnection} mediaConnection
458
424
  * @returns {Promise}
459
425
  */
460
-
461
426
  }, {
462
427
  key: "startAnalyzer",
463
428
  value: function startAnalyzer(mediaConnection) {
464
429
  var _this2 = this;
465
-
466
430
  if (!this.statsStarted) {
467
431
  this.statsStarted = true;
468
432
  this.mediaConnection = mediaConnection;
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.mediaConnection = null;
514
471
  });
515
472
  }
516
-
517
473
  this.mediaConnection = 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,53 +701,41 @@ 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.mediaConnection) {
785
709
  return _promise.default.resolve();
786
710
  }
787
-
788
711
  if (this.mediaConnection && this.mediaConnection.getConnectionState() === _internalMediaCore.MediaConnection.ConnectionState.Failed) {
789
712
  _loggerProxy.default.logger.trace('StatsAnalyzer:index#getStatsAndParse --> media connection 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 this.mediaConnection.getTransceiverStats().then(function (transceiverStats) {
797
717
  _this5.filterAndParseGetStatsResults(transceiverStats.video.sender, _constants.STATS.VIDEO_CORRELATE, true);
798
-
799
718
  _this5.filterAndParseGetStatsResults(transceiverStats.video.receiver, _constants.STATS.VIDEO_CORRELATE, false);
800
-
801
719
  _this5.filterAndParseGetStatsResults(transceiverStats.audio.sender, _constants.STATS.AUDIO_CORRELATE, true);
802
-
803
720
  _this5.filterAndParseGetStatsResults(transceiverStats.audio.receiver, _constants.STATS.AUDIO_CORRELATE, false);
804
-
805
721
  _this5.filterAndParseGetStatsResults(transceiverStats.screenShareVideo.sender, _constants.STATS.SHARE_CORRELATE, true);
722
+ _this5.filterAndParseGetStatsResults(transceiverStats.screenShareVideo.receiver, _constants.STATS.SHARE_CORRELATE, false);
806
723
 
807
- _this5.filterAndParseGetStatsResults(transceiverStats.screenShareVideo.receiver, _constants.STATS.SHARE_CORRELATE, false); // updates the current direction of media
808
-
809
-
724
+ // updates the current direction of media
810
725
  _this5.statsResults[_constants.STATS.AUDIO_CORRELATE].direction = transceiverStats.audio.currentDirection;
811
726
  _this5.statsResults[_constants.STATS.VIDEO_CORRELATE].direction = transceiverStats.video.currentDirection;
812
727
  _this5.statsResults[_constants.STATS.SHARE_CORRELATE].direction = transceiverStats.screenShareVideo.currentDirection;
813
728
  _this5.statsResults[_constants.STATS.AUDIO_CORRELATE][_constants.STATS.SEND_DIRECTION].trackLabel = transceiverStats.audio.localTrackLabel;
814
729
  _this5.statsResults[_constants.STATS.VIDEO_CORRELATE][_constants.STATS.SEND_DIRECTION].trackLabel = transceiverStats.video.localTrackLabel;
730
+ _this5.compareLastStatsResult();
815
731
 
816
- _this5.compareLastStatsResult(); // Save the last results to compare with the current
732
+ // Save the last results to compare with the current
817
733
  // DO Deep copy, for some reason it takes the reference all the time rather then old value set
818
-
819
-
820
734
  _this5.lastStatsResults = JSON.parse((0, _stringify.default)(_this5.statsResults));
821
-
822
735
  _loggerProxy.default.logger.trace('StatsAnalyzer:index#getStatsAndParse --> Finished Collecting Stats');
823
736
  });
824
737
  }
738
+
825
739
  /**
826
740
  * Processes OutboundRTP stats result and stores
827
741
  * @private
@@ -829,28 +743,22 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
829
743
  * @param {*} type
830
744
  * @returns {void}
831
745
  */
832
-
833
746
  }, {
834
747
  key: "processOutboundRTPResult",
835
748
  value: function processOutboundRTPResult(result, type) {
836
749
  var mediaType = type || _constants.STATS.AUDIO_CORRELATE;
837
750
  var sendrecvType = _constants.STATS.SEND_DIRECTION;
838
-
839
751
  if (result.bytesSent) {
840
752
  var kilobytes = 0;
841
-
842
753
  if (!this.statsResults.internal[mediaType][sendrecvType].prevBytesSent) {
843
754
  this.statsResults.internal[mediaType][sendrecvType].prevBytesSent = result.bytesSent;
844
755
  }
845
-
846
756
  if (!this.statsResults.internal[mediaType][sendrecvType].framesEncoded) {
847
757
  this.statsResults.internal[mediaType][sendrecvType].framesEncoded = result.framesEncoded;
848
758
  }
849
-
850
759
  if (!this.statsResults.internal[mediaType][sendrecvType].keyFramesEncoded) {
851
760
  this.statsResults.internal[mediaType][sendrecvType].keyFramesEncoded = result.keyFramesEncoded;
852
761
  }
853
-
854
762
  var bytes = result.bytesSent - this.statsResults.internal[mediaType][sendrecvType].prevBytesSent;
855
763
  this.statsResults.internal[mediaType][sendrecvType].prevBytesSent = result.bytesSent;
856
764
  kilobytes = bytes / 1024;
@@ -859,13 +767,13 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
859
767
  this.statsResults[mediaType][sendrecvType].framesEncoded = result.framesEncoded - this.statsResults.internal[mediaType][sendrecvType].framesEncoded;
860
768
  this.statsResults[mediaType][sendrecvType].keyFramesEncoded = result.keyFramesEncoded - this.statsResults.internal[mediaType][sendrecvType].keyFramesEncoded;
861
769
  this.statsResults.internal[mediaType].outboundRtpId = result.id;
862
-
863
770
  if (!this.statsResults.internal[mediaType][sendrecvType].packetsSent) {
864
771
  this.statsResults.internal[mediaType][sendrecvType].packetsSent = result.packetsSent;
865
772
  }
866
-
867
773
  this.statsResults[mediaType][sendrecvType].packetsSent = result.packetsSent - this.statsResults.internal[mediaType][sendrecvType].packetsSent;
868
- this.statsResults.internal[mediaType][sendrecvType].packetsSent = result.packetsSent; // Data saved to send MQA metrics
774
+ this.statsResults.internal[mediaType][sendrecvType].packetsSent = result.packetsSent;
775
+
776
+ // Data saved to send MQA metrics
869
777
 
870
778
  this.statsResults[mediaType][sendrecvType].totalKeyFramesEncoded = result.keyFramesEncoded;
871
779
  this.statsResults[mediaType][sendrecvType].totalNackCount = result.nackCount;
@@ -883,6 +791,7 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
883
791
  this.statsResults[mediaType][sendrecvType].retransmittedBytesSent = result.retransmittedBytesSent;
884
792
  }
885
793
  }
794
+
886
795
  /**
887
796
  * Processes InboundRTP stats result and stores
888
797
  * @private
@@ -890,36 +799,28 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
890
799
  * @param {*} type
891
800
  * @returns {void}
892
801
  */
893
-
894
802
  }, {
895
803
  key: "processInboundRTPResult",
896
804
  value: function processInboundRTPResult(result, type) {
897
805
  var mediaType = type || _constants.STATS.AUDIO_CORRELATE;
898
806
  var sendrecvType = _constants.STATS.RECEIVE_DIRECTION;
899
-
900
807
  if (result.bytesReceived) {
901
808
  var kilobytes = 0;
902
-
903
809
  if (!this.statsResults.internal[mediaType][sendrecvType].prevBytesReceived) {
904
810
  this.statsResults.internal[mediaType][sendrecvType].prevBytesReceived = result.bytesReceived;
905
811
  }
906
-
907
812
  if (!this.statsResults.internal[mediaType][sendrecvType].pliCount) {
908
813
  this.statsResults.internal[mediaType][sendrecvType].pliCount = result.pliCount;
909
814
  }
910
-
911
815
  if (!this.statsResults.internal[mediaType][sendrecvType].packetsLost) {
912
816
  this.statsResults.internal[mediaType][sendrecvType].packetsLost = result.packetsLost;
913
817
  }
914
-
915
818
  if (!this.statsResults.internal[mediaType][sendrecvType].totalPacketsReceived) {
916
819
  this.statsResults.internal[mediaType][sendrecvType].totalPacketsReceived = result.packetsReceived;
917
820
  }
918
-
919
821
  if (!this.statsResults.internal[mediaType][sendrecvType].lastPacketReceivedTimestamp) {
920
822
  this.statsResults.internal[mediaType][sendrecvType].lastPacketReceivedTimestamp = result.lastPacketReceivedTimestamp;
921
823
  }
922
-
923
824
  var bytes = result.bytesReceived - this.statsResults.internal[mediaType][sendrecvType].prevBytesReceived;
924
825
  this.statsResults.internal[mediaType][sendrecvType].prevBytesReceived = result.bytesReceived;
925
826
  kilobytes = bytes / 1024;
@@ -927,34 +828,31 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
927
828
  this.statsResults[mediaType].bytesReceived = kilobytes.toFixed(1);
928
829
  this.statsResults[mediaType][sendrecvType].pliCount = result.pliCount - this.statsResults.internal[mediaType][sendrecvType].pliCount;
929
830
  this.statsResults[mediaType][sendrecvType].currentPacketsLost = result.packetsLost - this.statsResults.internal[mediaType][sendrecvType].packetsLost;
930
-
931
831
  if (this.statsResults[mediaType][sendrecvType].currentPacketsLost < 0) {
932
832
  this.statsResults[mediaType][sendrecvType].currentPacketsLost = 0;
933
833
  }
934
-
935
834
  this.statsResults[mediaType][sendrecvType].packetsReceived = result.packetsReceived - this.statsResults.internal[mediaType][sendrecvType].totalPacketsReceived;
936
835
  this.statsResults.internal[mediaType][sendrecvType].totalPacketsReceived = result.packetsReceived;
937
-
938
836
  if (this.statsResults[mediaType][sendrecvType].packetsReceived === 0) {
939
837
  _loggerProxy.default.logger.info("StatsAnalyzer:index#processInboundRTPResult --> No packets received for ".concat(mediaType, " "), this.statsResults[mediaType][sendrecvType].packetsReceived);
940
- } // Check the over all packet Lost ratio
941
-
838
+ }
942
839
 
840
+ // Check the over all packet Lost ratio
943
841
  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;
944
-
945
842
  if (this.statsResults[mediaType][sendrecvType].currentPacketLossRatio > 3) {
946
843
  _loggerProxy.default.logger.info('StatsAnalyzer:index#processInboundRTPResult --> Packets getting lost from the receiver ', this.statsResults[mediaType][sendrecvType].currentPacketLossRatio);
947
- } // TODO: check the packet loss value is negative values here
844
+ }
948
845
 
846
+ // TODO: check the packet loss value is negative values here
949
847
 
950
848
  if (result.packetsLost) {
951
849
  this.statsResults[mediaType][sendrecvType].totalPacketsLost = result.packetsLost > 0 ? result.packetsLost : -result.packetsLost;
952
850
  } else {
953
851
  this.statsResults[mediaType][sendrecvType].totalPacketsLost = 0;
954
852
  }
853
+ this.statsResults[mediaType][sendrecvType].lastPacketReceivedTimestamp = result.lastPacketReceivedTimestamp;
955
854
 
956
- this.statsResults[mediaType][sendrecvType].lastPacketReceivedTimestamp = result.lastPacketReceivedTimestamp; // From Thin
957
-
855
+ // From Thin
958
856
  this.statsResults[mediaType][sendrecvType].totalNackCount = result.nackCount;
959
857
  this.statsResults[mediaType][sendrecvType].totalPliCount = result.pliCount;
960
858
  this.statsResults[mediaType][sendrecvType].framesDecoded = result.framesDecoded;
@@ -965,7 +863,9 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
965
863
  this.statsResults[mediaType][sendrecvType].fecPacketsReceived = result.fecPacketsReceived;
966
864
  this.statsResults[mediaType][sendrecvType].totalBytesReceived = result.bytesReceived;
967
865
  this.statsResults[mediaType][sendrecvType].headerBytesReceived = result.headerBytesReceived;
968
- this.statsResults[mediaType][sendrecvType].meanRtpJitter.push(result.jitter); // Audio stats
866
+ this.statsResults[mediaType][sendrecvType].meanRtpJitter.push(result.jitter);
867
+
868
+ // Audio stats
969
869
 
970
870
  this.statsResults[mediaType][sendrecvType].audioLevel = result.audioLevel;
971
871
  this.statsResults[mediaType][sendrecvType].totalAudioEnergy = result.totalAudioEnergy;
@@ -974,6 +874,7 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
974
874
  this.statsResults[mediaType][sendrecvType].concealedSamples = result.concealedSamples || 0;
975
875
  }
976
876
  }
877
+
977
878
  /**
978
879
  * Processes remote and local candidate result and stores
979
880
  * @private
@@ -984,7 +885,6 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
984
885
  *
985
886
  * @returns {void}
986
887
  */
987
-
988
888
  }, {
989
889
  key: "processTrackResult",
990
890
  value:
@@ -1001,33 +901,31 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
1001
901
  if (!result || result.type !== 'track') {
1002
902
  return;
1003
903
  }
1004
-
1005
904
  if (result.type !== 'track') return;
1006
905
  var sendrecvType = result.remoteSource === true ? _constants.STATS.RECEIVE_DIRECTION : _constants.STATS.SEND_DIRECTION;
1007
-
1008
906
  if (result.frameWidth && result.frameHeight) {
1009
907
  this.statsResults.resolutions[mediaType][sendrecvType].width = result.frameWidth;
1010
908
  this.statsResults.resolutions[mediaType][sendrecvType].height = result.frameHeight;
1011
909
  this.statsResults.resolutions[mediaType][sendrecvType].framesSent = result.framesSent;
1012
910
  this.statsResults.resolutions[mediaType][sendrecvType].hugeFramesSent = result.hugeFramesSent;
1013
911
  }
1014
-
1015
912
  if (sendrecvType === _constants.STATS.RECEIVE_DIRECTION) {
1016
913
  this.statsResults.resolutions[mediaType][sendrecvType].framesReceived = result.framesReceived;
1017
914
  this.statsResults.resolutions[mediaType][sendrecvType].framesDecoded = result.framesDecoded;
1018
915
  this.statsResults.resolutions[mediaType][sendrecvType].framesDropped = result.framesDropped;
1019
916
  }
1020
-
1021
917
  if (result.trackIdentifier && mediaType !== _constants.STATS.AUDIO_CORRELATE) {
1022
918
  this.statsResults.resolutions[mediaType][sendrecvType].trackIdentifier = result.trackIdentifier;
1023
919
  var jitterBufferDelay = result && result.jitterBufferDelay;
1024
920
  var jitterBufferEmittedCount = result && result.jitterBufferEmittedCount;
1025
- this.statsResults.resolutions[mediaType][sendrecvType].avgJitterDelay = jitterBufferEmittedCount && +jitterBufferDelay / +jitterBufferEmittedCount; // Used to calculate the jitter
921
+ this.statsResults.resolutions[mediaType][sendrecvType].avgJitterDelay = jitterBufferEmittedCount && +jitterBufferDelay / +jitterBufferEmittedCount;
1026
922
 
923
+ // Used to calculate the jitter
1027
924
  this.statsResults.resolutions[mediaType][sendrecvType].jitterBufferDelay = result.jitterBufferDelay;
1028
925
  this.statsResults.resolutions[mediaType][sendrecvType].jitterBufferEmittedCount = result.jitterBufferEmittedCount;
1029
926
  }
1030
927
  }
928
+
1031
929
  /**
1032
930
  *
1033
931
  * @private
@@ -1036,20 +934,16 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
1036
934
  * @returns {void}
1037
935
  * @memberof StatsAnalyzer
1038
936
  */
1039
-
1040
937
  }, {
1041
938
  key: "compareSentAndReceived",
1042
939
  value: function compareSentAndReceived(result, type) {
1043
940
  if (!type) {
1044
941
  return;
1045
942
  }
1046
-
1047
943
  var mediaType = type;
1048
-
1049
944
  if (!this.statsResults.internal[mediaType].send.totalPacketsLostOnReceiver) {
1050
945
  this.statsResults.internal[mediaType].send.totalPacketsLostOnReceiver = result.packetsLost;
1051
946
  }
1052
-
1053
947
  var currentPacketLoss = result.packetsLost - this.statsResults.internal[mediaType].send.totalPacketsLostOnReceiver;
1054
948
  this.statsResults.internal[mediaType].send.totalPacketsLostOnReceiver = result.packetsLost;
1055
949
  this.statsResults[mediaType].send.packetsLostOnReceiver = currentPacketLoss;
@@ -1058,15 +952,14 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
1058
952
  this.statsResults[mediaType].send.meanRoundTripTime.push(result.roundTripTime);
1059
953
  this.statsResults[mediaType].send.timestamp = result.timestamp;
1060
954
  this.statsResults[mediaType].send.ssrc = result.ssrc;
1061
- this.statsResults[mediaType].send.reportsReceived = result.reportsReceived; // Total packloss ratio on this video section of the call
955
+ this.statsResults[mediaType].send.reportsReceived = result.reportsReceived;
1062
956
 
957
+ // Total packloss ratio on this video section of the call
1063
958
  this.statsResults[mediaType].send.overAllPacketLossRatio = this.statsResults[mediaType].send.totalPacketsLostOnReceiver > 0 ? this.statsResults[mediaType].send.totalPacketsLostOnReceiver / this.statsResults[mediaType].send.totalPacketsSent : 0;
1064
959
  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;
1065
-
1066
960
  if (this.statsResults[mediaType].send.maxPacketLossRatio < this.statsResults[mediaType].send.currentPacketLossRatio) {
1067
961
  this.statsResults[mediaType].send.maxPacketLossRatio = this.statsResults[mediaType].send.currentPacketLossRatio;
1068
962
  }
1069
-
1070
963
  if (result.type === 'remote-inbound-rtp') {
1071
964
  this.networkQualityMonitor.determineUplinkNetworkQuality({
1072
965
  mediaType: mediaType,
@@ -1078,6 +971,5 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
1078
971
  }]);
1079
972
  return StatsAnalyzer;
1080
973
  }(_eventsScope.default);
1081
-
1082
974
  exports.StatsAnalyzer = StatsAnalyzer;
1083
975
  //# sourceMappingURL=index.js.map