@webex/plugin-meetings 3.8.1-next.9 → 3.8.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 (230) hide show
  1. package/README.md +13 -26
  2. package/dist/annotation/annotation.types.d.ts +42 -0
  3. package/dist/annotation/constants.d.ts +31 -0
  4. package/dist/annotation/index.d.ts +117 -0
  5. package/dist/breakouts/breakout.d.ts +8 -0
  6. package/dist/breakouts/breakout.js +1 -1
  7. package/dist/breakouts/collection.d.ts +5 -0
  8. package/dist/breakouts/edit-lock-error.d.ts +15 -0
  9. package/dist/breakouts/events.d.ts +8 -0
  10. package/dist/breakouts/index.d.ts +5 -0
  11. package/dist/breakouts/index.js +1 -1
  12. package/dist/breakouts/request.d.ts +22 -0
  13. package/dist/breakouts/utils.d.ts +15 -0
  14. package/dist/common/browser-detection.d.ts +9 -0
  15. package/dist/common/collection.d.ts +48 -0
  16. package/dist/common/config.d.ts +2 -0
  17. package/dist/common/errors/captcha-error.d.ts +15 -0
  18. package/dist/common/errors/intent-to-join.d.ts +16 -0
  19. package/dist/common/errors/join-meeting.d.ts +17 -0
  20. package/dist/common/errors/media.d.ts +15 -0
  21. package/dist/common/errors/no-meeting-info.d.ts +14 -0
  22. package/dist/common/errors/parameter.d.ts +15 -0
  23. package/dist/common/errors/password-error.d.ts +15 -0
  24. package/dist/common/errors/permission.d.ts +14 -0
  25. package/dist/common/errors/reclaim-host-role-error.d.ts +60 -0
  26. package/dist/common/errors/reclaim-host-role-error.js +158 -0
  27. package/dist/common/errors/reclaim-host-role-error.js.map +1 -0
  28. package/dist/common/errors/reclaim-host-role-errors.d.ts +60 -0
  29. package/dist/common/errors/reconnection-in-progress.d.ts +9 -0
  30. package/dist/common/errors/reconnection-in-progress.js +35 -0
  31. package/dist/common/errors/reconnection-in-progress.js.map +1 -0
  32. package/dist/common/errors/reconnection.d.ts +15 -0
  33. package/dist/common/errors/stats.d.ts +15 -0
  34. package/dist/common/errors/webex-errors.d.ts +81 -0
  35. package/dist/common/errors/webex-meetings-error.d.ts +20 -0
  36. package/dist/common/events/events-scope.d.ts +17 -0
  37. package/dist/common/events/events.d.ts +12 -0
  38. package/dist/common/events/trigger-proxy.d.ts +2 -0
  39. package/dist/common/events/util.d.ts +2 -0
  40. package/dist/common/logs/logger-config.d.ts +2 -0
  41. package/dist/common/logs/logger-proxy.d.ts +2 -0
  42. package/dist/common/logs/request.d.ts +34 -0
  43. package/dist/common/queue.d.ts +32 -0
  44. package/dist/config.d.ts +73 -0
  45. package/dist/constants.d.ts +952 -0
  46. package/dist/constants.js +1 -8
  47. package/dist/constants.js.map +1 -1
  48. package/dist/controls-options-manager/constants.d.ts +4 -0
  49. package/dist/controls-options-manager/enums.d.ts +5 -0
  50. package/dist/controls-options-manager/enums.js +0 -1
  51. package/dist/controls-options-manager/enums.js.map +1 -1
  52. package/dist/controls-options-manager/index.d.ts +120 -0
  53. package/dist/controls-options-manager/types.d.ts +43 -0
  54. package/dist/controls-options-manager/types.js.map +1 -1
  55. package/dist/controls-options-manager/util.d.ts +7 -0
  56. package/dist/controls-options-manager/util.js +0 -26
  57. package/dist/controls-options-manager/util.js.map +1 -1
  58. package/dist/index.d.ts +4 -0
  59. package/dist/interceptors/index.d.ts +2 -0
  60. package/dist/interceptors/locusRetry.d.ts +27 -0
  61. package/dist/interpretation/collection.d.ts +5 -0
  62. package/dist/interpretation/index.d.ts +5 -0
  63. package/dist/interpretation/index.js +1 -1
  64. package/dist/interpretation/siLanguage.d.ts +5 -0
  65. package/dist/interpretation/siLanguage.js +1 -1
  66. package/dist/locus-info/controlsUtils.d.ts +2 -0
  67. package/dist/locus-info/controlsUtils.js +3 -11
  68. package/dist/locus-info/controlsUtils.js.map +1 -1
  69. package/dist/locus-info/embeddedAppsUtils.d.ts +2 -0
  70. package/dist/locus-info/fullState.d.ts +2 -0
  71. package/dist/locus-info/hostUtils.d.ts +2 -0
  72. package/dist/locus-info/index.d.ts +269 -0
  73. package/dist/locus-info/index.js +0 -30
  74. package/dist/locus-info/index.js.map +1 -1
  75. package/dist/locus-info/infoUtils.d.ts +2 -0
  76. package/dist/locus-info/mediaSharesUtils.d.ts +2 -0
  77. package/dist/locus-info/parser.d.ts +212 -0
  78. package/dist/locus-info/selfUtils.d.ts +2 -0
  79. package/dist/media/index.d.ts +32 -0
  80. package/dist/media/properties.d.ts +108 -0
  81. package/dist/media/util.d.ts +2 -0
  82. package/dist/mediaQualityMetrics/config.d.ts +233 -0
  83. package/dist/mediaQualityMetrics/config.js +513 -0
  84. package/dist/mediaQualityMetrics/config.js.map +1 -0
  85. package/dist/meeting/brbState.js +2 -3
  86. package/dist/meeting/brbState.js.map +1 -1
  87. package/dist/meeting/effectsState.d.ts +42 -0
  88. package/dist/meeting/effectsState.js +260 -0
  89. package/dist/meeting/effectsState.js.map +1 -0
  90. package/dist/meeting/in-meeting-actions.d.ts +79 -0
  91. package/dist/meeting/in-meeting-actions.js +1 -5
  92. package/dist/meeting/in-meeting-actions.js.map +1 -1
  93. package/dist/meeting/index.d.ts +1622 -0
  94. package/dist/meeting/index.js +66 -88
  95. package/dist/meeting/index.js.map +1 -1
  96. package/dist/meeting/locusMediaRequest.d.ts +74 -0
  97. package/dist/meeting/muteState.d.ts +116 -0
  98. package/dist/meeting/request.d.ts +257 -0
  99. package/dist/meeting/request.type.d.ts +11 -0
  100. package/dist/meeting/state.d.ts +9 -0
  101. package/dist/meeting/util.d.ts +2 -0
  102. package/dist/meeting/voicea-meeting.d.ts +16 -0
  103. package/dist/meeting-info/collection.d.ts +20 -0
  104. package/dist/meeting-info/index.d.ts +57 -0
  105. package/dist/meeting-info/meeting-info-v2.d.ts +93 -0
  106. package/dist/meeting-info/request.d.ts +22 -0
  107. package/dist/meeting-info/util.d.ts +2 -0
  108. package/dist/meeting-info/utilv2.d.ts +2 -0
  109. package/dist/meetings/collection.d.ts +23 -0
  110. package/dist/meetings/index.d.ts +296 -0
  111. package/dist/meetings/meetings.types.d.ts +4 -0
  112. package/dist/meetings/request.d.ts +27 -0
  113. package/dist/meetings/util.d.ts +18 -0
  114. package/dist/member/index.d.ts +148 -0
  115. package/dist/member/member.types.d.ts +11 -0
  116. package/dist/member/member.types.js +18 -0
  117. package/dist/member/member.types.js.map +1 -0
  118. package/dist/member/types.d.ts +32 -0
  119. package/dist/member/util.d.ts +2 -0
  120. package/dist/members/collection.d.ts +24 -0
  121. package/dist/members/index.d.ts +308 -0
  122. package/dist/members/request.d.ts +58 -0
  123. package/dist/members/types.d.ts +25 -0
  124. package/dist/members/util.d.ts +2 -0
  125. package/dist/metrics/config.d.ts +169 -0
  126. package/dist/metrics/config.js +289 -0
  127. package/dist/metrics/config.js.map +1 -0
  128. package/dist/metrics/constants.d.ts +59 -0
  129. package/dist/metrics/constants.js +0 -1
  130. package/dist/metrics/constants.js.map +1 -1
  131. package/dist/metrics/index.d.ts +152 -0
  132. package/dist/multistream/mediaRequestManager.d.ts +119 -0
  133. package/dist/multistream/receiveSlot.d.ts +68 -0
  134. package/dist/multistream/receiveSlotManager.d.ts +56 -0
  135. package/dist/multistream/remoteMedia.d.ts +72 -0
  136. package/dist/multistream/remoteMediaGroup.d.ts +49 -0
  137. package/dist/multistream/remoteMediaManager.d.ts +300 -0
  138. package/dist/multistream/sendSlotManager.d.ts +69 -0
  139. package/dist/networkQualityMonitor/index.d.ts +70 -0
  140. package/dist/networkQualityMonitor/index.js +226 -0
  141. package/dist/networkQualityMonitor/index.js.map +1 -0
  142. package/dist/peer-connection-manager/index.d.ts +6 -0
  143. package/dist/peer-connection-manager/index.js +671 -0
  144. package/dist/peer-connection-manager/index.js.map +1 -0
  145. package/dist/peer-connection-manager/util.d.ts +6 -0
  146. package/dist/peer-connection-manager/util.js +110 -0
  147. package/dist/peer-connection-manager/util.js.map +1 -0
  148. package/dist/personal-meeting-room/index.d.ts +47 -0
  149. package/dist/personal-meeting-room/request.d.ts +14 -0
  150. package/dist/personal-meeting-room/util.d.ts +2 -0
  151. package/dist/reachability/clusterReachability.d.ts +109 -0
  152. package/dist/reachability/index.d.ts +139 -0
  153. package/dist/reachability/index.js +10 -5
  154. package/dist/reachability/index.js.map +1 -1
  155. package/dist/reachability/request.d.ts +35 -0
  156. package/dist/reachability/util.d.ts +8 -0
  157. package/dist/reactions/constants.d.ts +3 -0
  158. package/dist/reactions/reactions.d.ts +4 -0
  159. package/dist/reactions/reactions.type.d.ts +32 -0
  160. package/dist/reconnection-manager/index.d.ts +112 -0
  161. package/dist/recording-controller/enums.d.ts +7 -0
  162. package/dist/recording-controller/index.d.ts +193 -0
  163. package/dist/recording-controller/util.d.ts +13 -0
  164. package/dist/roap/collection.d.ts +10 -0
  165. package/dist/roap/collection.js +63 -0
  166. package/dist/roap/collection.js.map +1 -0
  167. package/dist/roap/handler.d.ts +47 -0
  168. package/dist/roap/handler.js +279 -0
  169. package/dist/roap/handler.js.map +1 -0
  170. package/dist/roap/index.d.ts +116 -0
  171. package/dist/roap/request.d.ts +35 -0
  172. package/dist/roap/state.d.ts +9 -0
  173. package/dist/roap/state.js +127 -0
  174. package/dist/roap/state.js.map +1 -0
  175. package/dist/roap/turnDiscovery.d.ts +81 -0
  176. package/dist/roap/util.d.ts +2 -0
  177. package/dist/roap/util.js +76 -0
  178. package/dist/roap/util.js.map +1 -0
  179. package/dist/rtcMetrics/constants.d.ts +4 -0
  180. package/dist/rtcMetrics/constants.js +11 -0
  181. package/dist/rtcMetrics/constants.js.map +1 -0
  182. package/dist/rtcMetrics/index.d.ts +61 -0
  183. package/dist/rtcMetrics/index.js +197 -0
  184. package/dist/rtcMetrics/index.js.map +1 -0
  185. package/dist/statsAnalyzer/global.d.ts +118 -0
  186. package/dist/statsAnalyzer/global.js +127 -0
  187. package/dist/statsAnalyzer/global.js.map +1 -0
  188. package/dist/statsAnalyzer/index.d.ts +193 -0
  189. package/dist/statsAnalyzer/index.js +1019 -0
  190. package/dist/statsAnalyzer/index.js.map +1 -0
  191. package/dist/statsAnalyzer/mqaUtil.d.ts +22 -0
  192. package/dist/statsAnalyzer/mqaUtil.js +181 -0
  193. package/dist/statsAnalyzer/mqaUtil.js.map +1 -0
  194. package/dist/transcription/index.d.ts +64 -0
  195. package/dist/types/common/errors/reconnection-in-progress.d.ts +9 -0
  196. package/dist/types/constants.d.ts +0 -6
  197. package/dist/types/controls-options-manager/enums.d.ts +1 -2
  198. package/dist/types/controls-options-manager/types.d.ts +1 -4
  199. package/dist/types/mediaQualityMetrics/config.d.ts +241 -0
  200. package/dist/types/meeting/in-meeting-actions.d.ts +0 -4
  201. package/dist/types/metrics/constants.d.ts +0 -1
  202. package/dist/types/networkQualityMonitor/index.d.ts +70 -0
  203. package/dist/types/reachability/index.d.ts +2 -2
  204. package/dist/types/rtcMetrics/constants.d.ts +4 -0
  205. package/dist/types/rtcMetrics/index.d.ts +71 -0
  206. package/dist/types/statsAnalyzer/global.d.ts +36 -0
  207. package/dist/types/statsAnalyzer/index.d.ts +217 -0
  208. package/dist/types/statsAnalyzer/mqaUtil.d.ts +48 -0
  209. package/dist/webinar/collection.d.ts +16 -0
  210. package/dist/webinar/index.d.ts +5 -0
  211. package/dist/webinar/index.js +1 -1
  212. package/package.json +23 -23
  213. package/src/constants.ts +0 -9
  214. package/src/controls-options-manager/enums.ts +0 -1
  215. package/src/controls-options-manager/types.ts +1 -6
  216. package/src/controls-options-manager/util.ts +0 -31
  217. package/src/locus-info/controlsUtils.ts +0 -15
  218. package/src/locus-info/index.ts +0 -41
  219. package/src/meeting/brbState.ts +2 -4
  220. package/src/meeting/in-meeting-actions.ts +0 -8
  221. package/src/meeting/index.ts +29 -62
  222. package/src/metrics/constants.ts +0 -1
  223. package/src/reachability/index.ts +13 -5
  224. package/test/unit/spec/controls-options-manager/util.js +0 -58
  225. package/test/unit/spec/locus-info/controlsUtils.js +0 -52
  226. package/test/unit/spec/locus-info/index.js +0 -42
  227. package/test/unit/spec/meeting/brbState.ts +2 -21
  228. package/test/unit/spec/meeting/in-meeting-actions.ts +0 -4
  229. package/test/unit/spec/meeting/index.js +27 -130
  230. package/test/unit/spec/reachability/index.ts +6 -2
@@ -0,0 +1,197 @@
1
+ "use strict";
2
+
3
+ var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
4
+ var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
5
+ _Object$defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+ var _stringify = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/json/stringify"));
10
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
11
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));
12
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
13
+ var _internalPluginMetrics = require("@webex/internal-plugin-metrics");
14
+ var _uuid = _interopRequireDefault(require("uuid"));
15
+ var _constants = _interopRequireDefault(require("./constants"));
16
+ /* eslint-disable class-methods-use-this */
17
+
18
+ var parseJsonPayload = function parseJsonPayload(payload) {
19
+ try {
20
+ if (payload && payload[0]) {
21
+ return JSON.parse(payload[0]);
22
+ }
23
+ return null;
24
+ } catch (_) {
25
+ return null;
26
+ }
27
+ };
28
+
29
+ /**
30
+ * Rtc Metrics
31
+ */
32
+ var RtcMetrics = exports.default = /*#__PURE__*/function () {
33
+ /**
34
+ * Initialize the interval.
35
+ *
36
+ * @param {object} webex - The main `webex` object.
37
+ * @param {string} meetingId - The meeting id.
38
+ * @param {string} correlationId - The correlation id.
39
+ */
40
+ function RtcMetrics(webex, meetingId, correlationId) {
41
+ (0, _classCallCheck2.default)(this, RtcMetrics);
42
+ /**
43
+ * Array of MetricData items to be sent to the metrics service.
44
+ */
45
+ (0, _defineProperty2.default)(this, "metricsQueue", []);
46
+ (0, _defineProperty2.default)(this, "intervalId", void 0);
47
+ (0, _defineProperty2.default)(this, "webex", void 0);
48
+ (0, _defineProperty2.default)(this, "meetingId", void 0);
49
+ (0, _defineProperty2.default)(this, "correlationId", void 0);
50
+ (0, _defineProperty2.default)(this, "connectionId", void 0);
51
+ (0, _defineProperty2.default)(this, "shouldSendMetricsOnNextStatsReport", void 0);
52
+ // `window` is used to prevent typescript from returning a NodeJS.Timer.
53
+ this.intervalId = window.setInterval(this.sendMetricsInQueue.bind(this), 30 * 1000);
54
+ this.meetingId = meetingId;
55
+ this.webex = webex;
56
+ this.correlationId = correlationId;
57
+ this.resetConnection();
58
+ }
59
+
60
+ /**
61
+ * Check to see if the metrics queue has any items.
62
+ *
63
+ * @returns {void}
64
+ */
65
+ (0, _createClass2.default)(RtcMetrics, [{
66
+ key: "sendMetricsInQueue",
67
+ value: function sendMetricsInQueue() {
68
+ if (this.metricsQueue.length) {
69
+ this.sendMetrics();
70
+ this.metricsQueue = [];
71
+ }
72
+ }
73
+
74
+ /**
75
+ * Forces sending metrics when we get the next stats-report
76
+ *
77
+ * This is useful for cases when something important happens that affects the media connection,
78
+ * for example when we move from lobby into the meeting.
79
+ *
80
+ * @returns {void}
81
+ */
82
+ }, {
83
+ key: "sendNextMetrics",
84
+ value: function sendNextMetrics() {
85
+ this.shouldSendMetricsOnNextStatsReport = true;
86
+ }
87
+
88
+ /**
89
+ * Add metrics items to the metrics queue.
90
+ *
91
+ * @param {object} data - An object with a payload array of metrics items.
92
+ *
93
+ * @returns {void}
94
+ */
95
+ }, {
96
+ key: "addMetrics",
97
+ value: function addMetrics(data) {
98
+ if (data.payload.length) {
99
+ if (data.name === 'stats-report') {
100
+ data.payload = data.payload.map(this.anonymizeIp);
101
+ }
102
+ this.metricsQueue.push(data);
103
+ if (this.shouldSendMetricsOnNextStatsReport && data.name === 'stats-report') {
104
+ // this is the first useful set of data (WCME gives it to us after 5s), send it out immediately
105
+ // in case the user is unhappy and closes the browser early
106
+ this.sendMetricsInQueue();
107
+ this.shouldSendMetricsOnNextStatsReport = false;
108
+ }
109
+ try {
110
+ // If a connection fails, send the rest of the metrics in queue and get a new connection id.
111
+ var parsedPayload = parseJsonPayload(data.payload);
112
+ if (data.name === 'onconnectionstatechange' && parsedPayload && parsedPayload.value === 'failed') {
113
+ this.sendMetricsInQueue();
114
+ this.resetConnection();
115
+ }
116
+ } catch (e) {
117
+ console.error(e);
118
+ }
119
+ }
120
+ }
121
+
122
+ /**
123
+ * Clear the metrics interval.
124
+ *
125
+ * @returns {void}
126
+ */
127
+ }, {
128
+ key: "closeMetrics",
129
+ value: function closeMetrics() {
130
+ this.sendMetricsInQueue();
131
+ clearInterval(this.intervalId);
132
+ }
133
+
134
+ /**
135
+ * Anonymize IP addresses.
136
+ *
137
+ * @param {array} stats - An RTCStatsReport organized into an array of strings.
138
+ * @returns {string}
139
+ */
140
+ }, {
141
+ key: "anonymizeIp",
142
+ value: function anonymizeIp(stats) {
143
+ var data = JSON.parse(stats);
144
+ // on local and remote candidates, anonymize the last 4 bits.
145
+ if (data.type === 'local-candidate' || data.type === 'remote-candidate') {
146
+ data.ip = _internalPluginMetrics.CallDiagnosticUtils.anonymizeIPAddress(data.ip) || undefined;
147
+ data.address = _internalPluginMetrics.CallDiagnosticUtils.anonymizeIPAddress(data.address) || undefined;
148
+ data.relatedAddress = _internalPluginMetrics.CallDiagnosticUtils.anonymizeIPAddress(data.relatedAddress) || undefined;
149
+ }
150
+ return (0, _stringify.default)(data);
151
+ }
152
+
153
+ /**
154
+ * Set a new connection id.
155
+ *
156
+ * @returns {void}
157
+ */
158
+ }, {
159
+ key: "resetConnection",
160
+ value: function resetConnection() {
161
+ this.connectionId = _uuid.default.v4();
162
+ this.shouldSendMetricsOnNextStatsReport = true;
163
+ }
164
+
165
+ /**
166
+ * Send metrics to the metrics service.
167
+ *
168
+ * @returns {void}
169
+ */
170
+ }, {
171
+ key: "sendMetrics",
172
+ value: function sendMetrics() {
173
+ this.webex.request({
174
+ method: 'POST',
175
+ service: 'unifiedTelemetry',
176
+ resource: 'metric/v2',
177
+ headers: {
178
+ type: 'webrtcMedia',
179
+ appId: _constants.default.APP_ID
180
+ },
181
+ body: {
182
+ metrics: [{
183
+ type: 'webrtc',
184
+ version: '1.1.0',
185
+ userId: this.webex.internal.device.userId,
186
+ meetingId: this.meetingId,
187
+ correlationId: this.correlationId,
188
+ connectionId: this.connectionId,
189
+ data: this.metricsQueue
190
+ }]
191
+ }
192
+ });
193
+ }
194
+ }]);
195
+ return RtcMetrics;
196
+ }();
197
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_internalPluginMetrics","require","_uuid","_interopRequireDefault","_constants","parseJsonPayload","payload","JSON","parse","_","RtcMetrics","exports","default","webex","meetingId","correlationId","_classCallCheck2","_defineProperty2","intervalId","window","setInterval","sendMetricsInQueue","bind","resetConnection","_createClass2","key","value","metricsQueue","length","sendMetrics","sendNextMetrics","shouldSendMetricsOnNextStatsReport","addMetrics","data","name","map","anonymizeIp","push","parsedPayload","e","console","error","closeMetrics","clearInterval","stats","type","ip","CallDiagnosticUtils","anonymizeIPAddress","undefined","address","relatedAddress","_stringify","connectionId","uuid","v4","request","method","service","resource","headers","appId","RTC_METRICS","APP_ID","body","metrics","version","userId","internal","device"],"sources":["index.ts"],"sourcesContent":["/* eslint-disable class-methods-use-this */\nimport {CallDiagnosticUtils} from '@webex/internal-plugin-metrics';\nimport uuid from 'uuid';\nimport RTC_METRICS from './constants';\n\nconst parseJsonPayload = (payload: any[]): any | null => {\n try {\n if (payload && payload[0]) {\n return JSON.parse(payload[0]);\n }\n\n return null;\n } catch (_) {\n return null;\n }\n};\n\n/**\n * Rtc Metrics\n */\nexport default class RtcMetrics {\n /**\n * Array of MetricData items to be sent to the metrics service.\n */\n metricsQueue = [];\n\n intervalId: number;\n\n webex: any;\n\n meetingId: string;\n\n correlationId: string;\n\n connectionId: string;\n\n shouldSendMetricsOnNextStatsReport: boolean;\n\n /**\n * Initialize the interval.\n *\n * @param {object} webex - The main `webex` object.\n * @param {string} meetingId - The meeting id.\n * @param {string} correlationId - The correlation id.\n */\n constructor(webex, meetingId, correlationId) {\n // `window` is used to prevent typescript from returning a NodeJS.Timer.\n this.intervalId = window.setInterval(this.sendMetricsInQueue.bind(this), 30 * 1000);\n this.meetingId = meetingId;\n this.webex = webex;\n this.correlationId = correlationId;\n this.resetConnection();\n }\n\n /**\n * Check to see if the metrics queue has any items.\n *\n * @returns {void}\n */\n public sendMetricsInQueue() {\n if (this.metricsQueue.length) {\n this.sendMetrics();\n this.metricsQueue = [];\n }\n }\n\n /**\n * Forces sending metrics when we get the next stats-report\n *\n * This is useful for cases when something important happens that affects the media connection,\n * for example when we move from lobby into the meeting.\n *\n * @returns {void}\n */\n public sendNextMetrics() {\n this.shouldSendMetricsOnNextStatsReport = true;\n }\n\n /**\n * Add metrics items to the metrics queue.\n *\n * @param {object} data - An object with a payload array of metrics items.\n *\n * @returns {void}\n */\n addMetrics(data) {\n if (data.payload.length) {\n if (data.name === 'stats-report') {\n data.payload = data.payload.map(this.anonymizeIp);\n }\n\n this.metricsQueue.push(data);\n\n if (this.shouldSendMetricsOnNextStatsReport && data.name === 'stats-report') {\n // this is the first useful set of data (WCME gives it to us after 5s), send it out immediately\n // in case the user is unhappy and closes the browser early\n this.sendMetricsInQueue();\n this.shouldSendMetricsOnNextStatsReport = false;\n }\n\n try {\n // If a connection fails, send the rest of the metrics in queue and get a new connection id.\n const parsedPayload = parseJsonPayload(data.payload);\n if (\n data.name === 'onconnectionstatechange' &&\n parsedPayload &&\n parsedPayload.value === 'failed'\n ) {\n this.sendMetricsInQueue();\n this.resetConnection();\n }\n } catch (e) {\n console.error(e);\n }\n }\n }\n\n /**\n * Clear the metrics interval.\n *\n * @returns {void}\n */\n closeMetrics() {\n this.sendMetricsInQueue();\n clearInterval(this.intervalId);\n }\n\n /**\n * Anonymize IP addresses.\n *\n * @param {array} stats - An RTCStatsReport organized into an array of strings.\n * @returns {string}\n */\n anonymizeIp(stats: string): string {\n const data = JSON.parse(stats);\n // on local and remote candidates, anonymize the last 4 bits.\n if (data.type === 'local-candidate' || data.type === 'remote-candidate') {\n data.ip = CallDiagnosticUtils.anonymizeIPAddress(data.ip) || undefined;\n data.address = CallDiagnosticUtils.anonymizeIPAddress(data.address) || undefined;\n data.relatedAddress =\n CallDiagnosticUtils.anonymizeIPAddress(data.relatedAddress) || undefined;\n }\n\n return JSON.stringify(data);\n }\n\n /**\n * Set a new connection id.\n *\n * @returns {void}\n */\n private resetConnection() {\n this.connectionId = uuid.v4();\n this.shouldSendMetricsOnNextStatsReport = true;\n }\n\n /**\n * Send metrics to the metrics service.\n *\n * @returns {void}\n */\n private sendMetrics() {\n this.webex.request({\n method: 'POST',\n service: 'unifiedTelemetry',\n resource: 'metric/v2',\n headers: {\n type: 'webrtcMedia',\n appId: RTC_METRICS.APP_ID,\n },\n body: {\n metrics: [\n {\n type: 'webrtc',\n version: '1.1.0',\n userId: this.webex.internal.device.userId,\n meetingId: this.meetingId,\n correlationId: this.correlationId,\n connectionId: this.connectionId,\n data: this.metricsQueue,\n },\n ],\n },\n });\n }\n}\n"],"mappings":"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"}
@@ -0,0 +1,118 @@
1
+ declare const STATS_DEFAULT: {
2
+ encryption: string;
3
+ audio: {
4
+ send: {
5
+ maxPacketLossRatio: number;
6
+ availableBandwidth: number;
7
+ bytesSent: number;
8
+ meanRemoteJitter: any[];
9
+ meanRoundTripTime: any[];
10
+ };
11
+ recv: {
12
+ availableBandwidth: number;
13
+ bytesReceived: number;
14
+ meanRtpJitter: any[];
15
+ meanRoundTripTime: any[];
16
+ };
17
+ };
18
+ video: {
19
+ send: {
20
+ maxPacketLossRatio: number;
21
+ availableBandwidth: number;
22
+ meanRemoteJitter: any[];
23
+ meanRoundTripTime: any[];
24
+ };
25
+ recv: {
26
+ availableBandwidth: number;
27
+ totalPacketsLost: number;
28
+ meanRtpJitter: any[];
29
+ meanRoundTripTime: any[];
30
+ };
31
+ latency: number;
32
+ packetsLost: number;
33
+ };
34
+ share: {
35
+ send: {
36
+ maxPacketLossRatio: number;
37
+ availableBandwidth: number;
38
+ totalPacketsLost: number;
39
+ meanRemoteJitter: any[];
40
+ meanRoundTripTime: any[];
41
+ };
42
+ recv: {
43
+ availableBandwidth: number;
44
+ meanRtpJitter: any[];
45
+ meanRoundTripTime: any[];
46
+ };
47
+ latency: number;
48
+ packetsLost: number;
49
+ };
50
+ bandwidth: {
51
+ systemBandwidth: number;
52
+ sentPerSecond: number;
53
+ encodedPerSecond: number;
54
+ helper: {
55
+ audioBytesSent: number;
56
+ videoBytestSent: number;
57
+ };
58
+ speed: number;
59
+ };
60
+ results: {};
61
+ connectionType: {
62
+ systemNetworkType: string;
63
+ systemIpAddress: string;
64
+ local: {
65
+ candidateType: any[];
66
+ transport: any[];
67
+ ipAddress: any[];
68
+ networkType: any[];
69
+ };
70
+ remote: {
71
+ candidateType: any[];
72
+ transport: any[];
73
+ ipAddress: any[];
74
+ networkType: any[];
75
+ };
76
+ };
77
+ resolutions: {
78
+ video: {
79
+ send: {
80
+ width: number;
81
+ height: number;
82
+ framesSent: number;
83
+ };
84
+ recv: {
85
+ width: number;
86
+ height: number;
87
+ };
88
+ };
89
+ share: {
90
+ send: {
91
+ width: number;
92
+ height: number;
93
+ framesSent: number;
94
+ };
95
+ recv: {
96
+ width: number;
97
+ height: number;
98
+ };
99
+ };
100
+ };
101
+ internal: {
102
+ audio: {
103
+ send: {};
104
+ recv: {};
105
+ };
106
+ video: {
107
+ send: {};
108
+ recv: {};
109
+ };
110
+ share: {
111
+ send: {};
112
+ recv: {};
113
+ };
114
+ remote: {};
115
+ candidates: {};
116
+ };
117
+ };
118
+ export default STATS_DEFAULT;
@@ -0,0 +1,127 @@
1
+ "use strict";
2
+
3
+ var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
4
+ _Object$defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ var STATS_DEFAULT = {
9
+ encryption: 'sha-256',
10
+ audio: {
11
+ send: {
12
+ maxPacketLossRatio: 0,
13
+ availableBandwidth: 0,
14
+ bytesSent: 0,
15
+ meanRemoteJitter: [],
16
+ meanRoundTripTime: []
17
+ },
18
+ recv: {
19
+ availableBandwidth: 0,
20
+ bytesReceived: 0,
21
+ meanRtpJitter: [],
22
+ meanRoundTripTime: []
23
+ }
24
+ },
25
+ video: {
26
+ send: {
27
+ maxPacketLossRatio: 0,
28
+ availableBandwidth: 0,
29
+ meanRemoteJitter: [],
30
+ meanRoundTripTime: []
31
+ },
32
+ recv: {
33
+ availableBandwidth: 0,
34
+ totalPacketsLost: 0,
35
+ meanRtpJitter: [],
36
+ meanRoundTripTime: []
37
+ },
38
+ latency: 0,
39
+ packetsLost: 0
40
+ },
41
+ share: {
42
+ send: {
43
+ maxPacketLossRatio: 0,
44
+ availableBandwidth: 0,
45
+ totalPacketsLost: 0,
46
+ meanRemoteJitter: [],
47
+ meanRoundTripTime: []
48
+ },
49
+ recv: {
50
+ availableBandwidth: 0,
51
+ meanRtpJitter: [],
52
+ meanRoundTripTime: []
53
+ },
54
+ latency: 0,
55
+ packetsLost: 0
56
+ },
57
+ bandwidth: {
58
+ systemBandwidth: 0,
59
+ sentPerSecond: 0,
60
+ encodedPerSecond: 0,
61
+ helper: {
62
+ audioBytesSent: 0,
63
+ videoBytestSent: 0
64
+ },
65
+ speed: 0
66
+ },
67
+ results: {},
68
+ connectionType: {
69
+ systemNetworkType: 'unknown',
70
+ systemIpAddress: '0.0.0.0',
71
+ local: {
72
+ candidateType: [],
73
+ transport: [],
74
+ ipAddress: [],
75
+ networkType: []
76
+ },
77
+ remote: {
78
+ candidateType: [],
79
+ transport: [],
80
+ ipAddress: [],
81
+ networkType: []
82
+ }
83
+ },
84
+ resolutions: {
85
+ video: {
86
+ send: {
87
+ width: 0,
88
+ height: 0,
89
+ framesSent: 0
90
+ },
91
+ recv: {
92
+ width: 0,
93
+ height: 0
94
+ }
95
+ },
96
+ share: {
97
+ send: {
98
+ width: 0,
99
+ height: 0,
100
+ framesSent: 0
101
+ },
102
+ recv: {
103
+ width: 0,
104
+ height: 0
105
+ }
106
+ }
107
+ },
108
+ internal: {
109
+ audio: {
110
+ send: {},
111
+ recv: {}
112
+ },
113
+ video: {
114
+ send: {},
115
+ recv: {}
116
+ },
117
+ share: {
118
+ send: {},
119
+ recv: {}
120
+ },
121
+ remote: {},
122
+ candidates: {}
123
+ }
124
+ };
125
+ var _default = STATS_DEFAULT;
126
+ exports.default = _default;
127
+ //# sourceMappingURL=global.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["STATS_DEFAULT","encryption","audio","send","maxPacketLossRatio","availableBandwidth","bytesSent","meanRemoteJitter","meanRoundTripTime","recv","bytesReceived","meanRtpJitter","video","totalPacketsLost","latency","packetsLost","share","bandwidth","systemBandwidth","sentPerSecond","encodedPerSecond","helper","audioBytesSent","videoBytestSent","speed","results","connectionType","systemNetworkType","systemIpAddress","local","candidateType","transport","ipAddress","networkType","remote","resolutions","width","height","framesSent","internal","candidates","_default","exports","default"],"sources":["global.ts"],"sourcesContent":["const STATS_DEFAULT = {\n encryption: 'sha-256',\n audio: {\n send: {\n maxPacketLossRatio: 0,\n availableBandwidth: 0,\n bytesSent: 0,\n meanRemoteJitter: [],\n meanRoundTripTime: [],\n },\n recv: {\n availableBandwidth: 0,\n bytesReceived: 0,\n meanRtpJitter: [],\n meanRoundTripTime: [],\n },\n },\n video: {\n send: {\n maxPacketLossRatio: 0,\n availableBandwidth: 0,\n meanRemoteJitter: [],\n meanRoundTripTime: [],\n },\n recv: {\n availableBandwidth: 0,\n totalPacketsLost: 0,\n meanRtpJitter: [],\n meanRoundTripTime: [],\n },\n latency: 0,\n packetsLost: 0,\n },\n share: {\n send: {\n maxPacketLossRatio: 0,\n availableBandwidth: 0,\n totalPacketsLost: 0,\n meanRemoteJitter: [],\n meanRoundTripTime: [],\n },\n recv: {\n availableBandwidth: 0,\n meanRtpJitter: [],\n meanRoundTripTime: [],\n },\n\n latency: 0,\n packetsLost: 0,\n },\n bandwidth: {\n systemBandwidth: 0,\n sentPerSecond: 0,\n encodedPerSecond: 0,\n helper: {\n audioBytesSent: 0,\n videoBytestSent: 0,\n },\n speed: 0,\n },\n results: {},\n connectionType: {\n systemNetworkType: 'unknown',\n systemIpAddress: '0.0.0.0',\n local: {\n candidateType: [],\n transport: [],\n ipAddress: [],\n networkType: [],\n },\n remote: {\n candidateType: [],\n transport: [],\n ipAddress: [],\n networkType: [],\n },\n },\n resolutions: {\n video: {\n send: {\n width: 0,\n height: 0,\n framesSent: 0,\n },\n recv: {\n width: 0,\n height: 0,\n },\n },\n share: {\n send: {\n width: 0,\n height: 0,\n framesSent: 0,\n },\n recv: {\n width: 0,\n height: 0,\n },\n },\n },\n internal: {\n audio: {\n send: {},\n recv: {},\n },\n video: {\n send: {},\n recv: {},\n },\n share: {\n send: {},\n recv: {},\n },\n remote: {},\n candidates: {},\n },\n};\n\nexport default STATS_DEFAULT;\n"],"mappings":"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"}
@@ -0,0 +1,193 @@
1
+ /// <reference types="node" />
2
+ import EventsScope from '../common/events/events-scope';
3
+ export declare const EVENTS: {
4
+ MEDIA_QUALITY: string;
5
+ NO_FRAMES_SENT: string;
6
+ NO_VIDEO_ENCODED: string;
7
+ LOCAL_MEDIA_STARTED: string;
8
+ LOCAL_MEDIA_STOPPED: string;
9
+ REMOTE_MEDIA_STARTED: string;
10
+ REMOTE_MEDIA_STOPPED: string;
11
+ };
12
+ /**
13
+ * Stats Analyzer class that will emit events based on detected quality
14
+ *
15
+ * @export
16
+ * @class StatsAnalyzer
17
+ * @extends {EventsScope}
18
+ */
19
+ export declare class StatsAnalyzer extends EventsScope {
20
+ config: any;
21
+ correlationId: any;
22
+ lastEmittedStartStopEvent: any;
23
+ lastMqaDataSent: any;
24
+ lastStatsResults: any;
25
+ localMQEStats: any;
26
+ meetingMediaStatus: any;
27
+ mqaInterval: NodeJS.Timeout;
28
+ mqaSentCount: any;
29
+ networkQualityMonitor: any;
30
+ peerConnection: any;
31
+ statsInterval: NodeJS.Timeout;
32
+ statsResults: any;
33
+ statsStarted: any;
34
+ /**
35
+ * Creates a new instance of StatsAnalyzer
36
+ * @constructor
37
+ * @public
38
+ * @param {Object} config SDK Configuration Object
39
+ * @param {Object} networkQualityMonitor class for assessing network characteristics (jitter, packetLoss, latency)
40
+ * @param {Object} statsResults Default properties for stats
41
+ */
42
+ constructor(config: any, networkQualityMonitor?: object, statsResults?: object);
43
+ populateResults(lastMqa: any): void;
44
+ resetStatsResults(): void;
45
+ /**
46
+ * sets mediaStatus status for analyzing metrics
47
+ *
48
+ * @public
49
+ * @param {Object} status for the audio and video
50
+ * @memberof StatsAnalyzer
51
+ * @returns {void}
52
+ */
53
+ updateMediaStatus(status: object): void;
54
+ /**
55
+ * captures MQA data from peerconnection
56
+ *
57
+ * @public
58
+ * @memberof StatsAnalyzer
59
+ * @returns {void}
60
+ */
61
+ sendMqaData(): void;
62
+ /**
63
+ * updated the peerconnection when changed
64
+ *
65
+ * @private
66
+ * @memberof updatePeerconnection
67
+ * @param {PeerConnection} peerConnection
68
+ * @returns {void}
69
+ */
70
+ updatePeerconnection(peerConnection: any): void;
71
+ /**
72
+ * Starts the stats analyzer on interval
73
+ *
74
+ * @public
75
+ * @memberof StatsAnalyzer
76
+ * @param {PeerConnection} peerConnection
77
+ * @returns {Promise}
78
+ */
79
+ startAnalyzer(peerConnection: any): Promise<void>;
80
+ /**
81
+ * Cleans up the analyzer when done
82
+ *
83
+ * @public
84
+ * @memberof StatsAnalyzer
85
+ * @returns {void}
86
+ */
87
+ stopAnalyzer(): Promise<void>;
88
+ /**
89
+ * Parse a single result of get stats
90
+ *
91
+ * @private
92
+ * @param {*} getStatsResult
93
+ * @param {String} type
94
+ * @param {boolean} isSender
95
+ * @returns {void}
96
+ * @memberof StatsAnalyzer
97
+ */
98
+ private parseGetStatsResult;
99
+ /**
100
+ * Filters the get stats results for types
101
+ * @private
102
+ * @param {Array} getStatsResults
103
+ * @param {String} type
104
+ * @param {boolean} isSender
105
+ * @returns {void}
106
+ */
107
+ private filterAndParseGetStatsResults;
108
+ /**
109
+ * parse the audio
110
+ * @param {String} result
111
+ * @param {boolean} type
112
+ * @returns {void}
113
+ */
114
+ parseAudioSource(result: any, type: any): void;
115
+ /**
116
+ * emits started/stopped events for local/remote media by checking
117
+ * if given values are increasing or not. The previousValue, currentValue
118
+ * params can be any numerical value like number of receive packets or
119
+ * decoded frames, etc.
120
+ *
121
+ * @private
122
+ * @param {string} mediaType
123
+ * @param {number} previousValue - value to compare
124
+ * @param {number} currentValue - value to compare (must be same type of value as previousValue)
125
+ * @param {boolean} isLocal - true if stats are for local media being sent out, false for remote media being received
126
+ * @memberof StatsAnalyzer
127
+ * @returns {void}
128
+ */
129
+ emitStartStopEvents: (mediaType: string, previousValue: number, currentValue: number, isLocal: boolean) => void;
130
+ /**
131
+ * compares current and previous stats to check if packets are not sent
132
+ *
133
+ * @private
134
+ * @memberof StatsAnalyzer
135
+ * @returns {void}
136
+ */
137
+ private compareLastStatsResult;
138
+ /**
139
+ * Does a `getStats` on all the transceivers and parses the results
140
+ *
141
+ * @private
142
+ * @memberof StatsAnalyzer
143
+ * @returns {Promise}
144
+ */
145
+ private getStatsAndParse;
146
+ /**
147
+ * Processes OutboundRTP stats result and stores
148
+ * @private
149
+ * @param {*} result
150
+ * @param {*} type
151
+ * @returns {void}
152
+ */
153
+ private processOutboundRTPResult;
154
+ /**
155
+ * Processes InboundRTP stats result and stores
156
+ * @private
157
+ * @param {*} result
158
+ * @param {*} type
159
+ * @returns {void}
160
+ */
161
+ private processInboundRTPResult;
162
+ /**
163
+ * Processes remote and local candidate result and stores
164
+ * @private
165
+ * @param {*} result
166
+ * @param {*} type
167
+ * @param {boolean} isSender
168
+ * @param {boolean} isRemote
169
+ *
170
+ * @returns {void}
171
+ */
172
+ parseCandidate: (result: any, type: any, isSender: boolean, isRemote: boolean) => void;
173
+ /**
174
+ * Process Track results
175
+ *
176
+ * @private
177
+ * @param {*} result
178
+ * @param {*} mediaType
179
+ * @param {*} sendrecvType
180
+ * @returns {void}
181
+ * @memberof StatsAnalyzer
182
+ */
183
+ private processTrackResult;
184
+ /**
185
+ *
186
+ * @private
187
+ * @param {*} result
188
+ * @param {*} type
189
+ * @returns {void}
190
+ * @memberof StatsAnalyzer
191
+ */
192
+ private compareSentAndReceived;
193
+ }