@webex/internal-plugin-metrics 3.4.0 → 3.5.0-next.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 (50) hide show
  1. package/dist/behavioral-metrics.js +63 -0
  2. package/dist/behavioral-metrics.js.map +1 -0
  3. package/dist/business-metrics.js +62 -0
  4. package/dist/business-metrics.js.map +1 -0
  5. package/dist/call-diagnostic/call-diagnostic-metrics.js +15 -5
  6. package/dist/call-diagnostic/call-diagnostic-metrics.js.map +1 -1
  7. package/dist/call-diagnostic/call-diagnostic-metrics.util.js +8 -3
  8. package/dist/call-diagnostic/call-diagnostic-metrics.util.js.map +1 -1
  9. package/dist/{behavioral/behavioral-metrics.js → generic-metrics.js} +77 -92
  10. package/dist/generic-metrics.js.map +1 -0
  11. package/dist/index.js +15 -1
  12. package/dist/index.js.map +1 -1
  13. package/dist/metrics.js +1 -1
  14. package/dist/metrics.types.js.map +1 -1
  15. package/dist/new-metrics.js +122 -24
  16. package/dist/new-metrics.js.map +1 -1
  17. package/dist/operational-metrics.js +56 -0
  18. package/dist/operational-metrics.js.map +1 -0
  19. package/dist/types/behavioral-metrics.d.ts +25 -0
  20. package/dist/types/business-metrics.d.ts +19 -0
  21. package/dist/types/call-diagnostic/call-diagnostic-metrics.d.ts +21 -5
  22. package/dist/types/call-diagnostic/call-diagnostic-metrics.util.d.ts +2 -1
  23. package/dist/types/generic-metrics.d.ts +63 -0
  24. package/dist/types/index.d.ts +4 -2
  25. package/dist/types/metrics.types.d.ts +26 -14
  26. package/dist/types/new-metrics.d.ts +41 -9
  27. package/dist/types/operational-metrics.d.ts +19 -0
  28. package/package.json +12 -12
  29. package/src/behavioral-metrics.ts +40 -0
  30. package/src/business-metrics.ts +30 -0
  31. package/src/call-diagnostic/call-diagnostic-metrics.ts +19 -2
  32. package/src/call-diagnostic/call-diagnostic-metrics.util.ts +7 -0
  33. package/src/generic-metrics.ts +146 -0
  34. package/src/index.ts +5 -1
  35. package/src/metrics.types.ts +30 -16
  36. package/src/new-metrics.ts +95 -17
  37. package/src/operational-metrics.ts +24 -0
  38. package/test/unit/spec/behavioral/behavioral-metrics.ts +51 -10
  39. package/test/unit/spec/business/business-metrics.ts +120 -0
  40. package/test/unit/spec/call-diagnostic/call-diagnostic-metrics.ts +166 -1
  41. package/test/unit/spec/call-diagnostic/call-diagnostic-metrics.util.ts +15 -5
  42. package/test/unit/spec/new-metrics.ts +14 -0
  43. package/test/unit/spec/operational/operational-metrics.ts +115 -0
  44. package/dist/behavioral/behavioral-metrics.js.map +0 -1
  45. package/dist/behavioral/config.js +0 -11
  46. package/dist/behavioral/config.js.map +0 -1
  47. package/dist/types/behavioral/behavioral-metrics.d.ts +0 -63
  48. package/dist/types/behavioral/config.d.ts +0 -1
  49. package/src/behavioral/behavioral-metrics.ts +0 -179
  50. package/src/behavioral/config.ts +0 -3
@@ -19,7 +19,9 @@ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime-corejs2/he
19
19
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
20
20
  var _webexCore = require("@webex/webex-core");
21
21
  var _callDiagnosticMetrics = _interopRequireDefault(require("./call-diagnostic/call-diagnostic-metrics"));
22
- var _behavioralMetrics = _interopRequireDefault(require("./behavioral/behavioral-metrics"));
22
+ var _behavioralMetrics = _interopRequireDefault(require("./behavioral-metrics"));
23
+ var _operationalMetrics = _interopRequireDefault(require("./operational-metrics"));
24
+ var _businessMetrics = _interopRequireDefault(require("./business-metrics"));
23
25
  var _callDiagnosticMetricsLatencies = _interopRequireDefault(require("./call-diagnostic/call-diagnostic-metrics-latencies"));
24
26
  var _callDiagnosticMetrics2 = require("./call-diagnostic/call-diagnostic-metrics.util");
25
27
  var _utils = require("./utils");
@@ -58,6 +60,9 @@ var Metrics = /*#__PURE__*/function (_WebexPlugin) {
58
60
  // Helper classes to handle the different types of metrics
59
61
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "callDiagnosticMetrics", void 0);
60
62
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "behavioralMetrics", void 0);
63
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "operationalMetrics", void 0);
64
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "businessMetrics", void 0);
65
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "isReady", false);
61
66
  _this.callDiagnosticLatencies = new _callDiagnosticMetricsLatencies.default({}, {
62
67
  parent: _this.webex
63
68
  });
@@ -78,10 +83,7 @@ var Metrics = /*#__PURE__*/function (_WebexPlugin) {
78
83
  _this2.callDiagnosticMetrics = new _callDiagnosticMetrics.default({}, {
79
84
  parent: _this2.webex
80
85
  });
81
- // @ts-ignore
82
- _this2.behavioralMetrics = new _behavioralMetrics.default({}, {
83
- parent: _this2.webex
84
- });
86
+ _this2.isReady = true;
85
87
  });
86
88
  }
87
89
 
@@ -104,13 +106,79 @@ var Metrics = /*#__PURE__*/function (_WebexPlugin) {
104
106
  }
105
107
  }
106
108
 
109
+ /**
110
+ * if webex metrics is ready, build behavioral metric backend if not already done.
111
+ */
112
+ }, {
113
+ key: "lazyBuildBehavioralMetrics",
114
+ value: function lazyBuildBehavioralMetrics() {
115
+ if (this.isReady && !this.behavioralMetrics) {
116
+ // @ts-ignore
117
+ this.behavioralMetrics = new _behavioralMetrics.default({}, {
118
+ parent: this.webex
119
+ });
120
+ }
121
+ }
122
+
123
+ /**
124
+ * if webex metrics is ready, build operational metric backend if not already done.
125
+ */
126
+ }, {
127
+ key: "lazyBuildOperationalMetrics",
128
+ value: function lazyBuildOperationalMetrics() {
129
+ if (this.isReady && !this.operationalMetrics) {
130
+ // @ts-ignore
131
+ this.operationalMetrics = new _operationalMetrics.default({}, {
132
+ parent: this.webex
133
+ });
134
+ }
135
+ }
136
+
137
+ /**
138
+ * if webex metrics is ready, build business metric backend if not already done.
139
+ */
140
+ }, {
141
+ key: "lazyBuildBusinessMetrics",
142
+ value: function lazyBuildBusinessMetrics() {
143
+ if (this.isReady && !this.businessMetrics) {
144
+ // @ts-ignore
145
+ this.businessMetrics = new _businessMetrics.default({}, {
146
+ parent: this.webex
147
+ });
148
+ }
149
+ }
150
+
107
151
  /**
108
152
  * @returns true once we have the deviceId we need to submit behavioral events to Amplitude
109
153
  */
110
154
  }, {
111
155
  key: "isReadyToSubmitBehavioralEvents",
112
156
  value: function isReadyToSubmitBehavioralEvents() {
113
- return this.behavioralMetrics.isReadyToSubmitBehavioralEvents();
157
+ var _this$behavioralMetri, _this$behavioralMetri2;
158
+ this.lazyBuildBehavioralMetrics();
159
+ return (_this$behavioralMetri = (_this$behavioralMetri2 = this.behavioralMetrics) === null || _this$behavioralMetri2 === void 0 ? void 0 : _this$behavioralMetri2.isReadyToSubmitEvents()) !== null && _this$behavioralMetri !== void 0 ? _this$behavioralMetri : false;
160
+ }
161
+
162
+ /**
163
+ * @returns true once we have the deviceId we need to submit operational events
164
+ */
165
+ }, {
166
+ key: "isReadyToSubmitOperationalEvents",
167
+ value: function isReadyToSubmitOperationalEvents() {
168
+ var _this$operationalMetr, _this$operationalMetr2;
169
+ this.lazyBuildOperationalMetrics();
170
+ return (_this$operationalMetr = (_this$operationalMetr2 = this.operationalMetrics) === null || _this$operationalMetr2 === void 0 ? void 0 : _this$operationalMetr2.isReadyToSubmitEvents()) !== null && _this$operationalMetr !== void 0 ? _this$operationalMetr : false;
171
+ }
172
+
173
+ /**
174
+ * @returns true once we have the deviceId we need to submit buisness events
175
+ */
176
+ }, {
177
+ key: "isReadyToSubmitBusinessEvents",
178
+ value: function isReadyToSubmitBusinessEvents() {
179
+ var _this$businessMetrics, _this$businessMetrics2;
180
+ this.lazyBuildBusinessMetrics();
181
+ return (_this$businessMetrics = (_this$businessMetrics2 = this.businessMetrics) === null || _this$businessMetrics2 === void 0 ? void 0 : _this$businessMetrics2.isReadyToSubmitEvents()) !== null && _this$businessMetrics !== void 0 ? _this$businessMetrics : false;
114
182
  }
115
183
 
116
184
  /**
@@ -125,11 +193,12 @@ var Metrics = /*#__PURE__*/function (_WebexPlugin) {
125
193
  target = _ref2.target,
126
194
  verb = _ref2.verb,
127
195
  payload = _ref2.payload;
128
- if (!this.behavioralMetrics) {
196
+ if (!this.isReady) {
129
197
  // @ts-ignore
130
198
  this.webex.logger.log("NewMetrics: @submitBehavioralEvent. Attempted to submit before webex.ready: ".concat(product, ".").concat(agent, ".").concat(target, ".").concat(verb));
131
199
  return _promise.default.resolve();
132
200
  }
201
+ this.lazyBuildBehavioralMetrics();
133
202
  return this.behavioralMetrics.submitBehavioralEvent({
134
203
  product: product,
135
204
  agent: agent,
@@ -147,9 +216,38 @@ var Metrics = /*#__PURE__*/function (_WebexPlugin) {
147
216
  key: "submitOperationalEvent",
148
217
  value: function submitOperationalEvent(_ref3) {
149
218
  var name = _ref3.name,
150
- payload = _ref3.payload,
151
- options = _ref3.options;
152
- throw new Error('Not implemented.');
219
+ payload = _ref3.payload;
220
+ if (!this.isReady) {
221
+ // @ts-ignore
222
+ this.webex.logger.log("NewMetrics: @submitOperationalEvent. Attempted to submit before webex.ready: ".concat(name));
223
+ return _promise.default.resolve();
224
+ }
225
+ this.lazyBuildOperationalMetrics();
226
+ return this.operationalMetrics.submitOperationalEvent({
227
+ name: name,
228
+ payload: payload
229
+ });
230
+ }
231
+
232
+ /**
233
+ * Buisness event
234
+ * @param args
235
+ */
236
+ }, {
237
+ key: "submitBusinessEvent",
238
+ value: function submitBusinessEvent(_ref4) {
239
+ var name = _ref4.name,
240
+ payload = _ref4.payload;
241
+ if (!this.isReady) {
242
+ // @ts-ignore
243
+ this.webex.logger.log("NewMetrics: @submitBusinessEvent. Attempted to submit before webex.ready: ".concat(name));
244
+ return _promise.default.resolve();
245
+ }
246
+ this.lazyBuildBusinessMetrics();
247
+ return this.businessMetrics.submitBusinessEvent({
248
+ name: name,
249
+ payload: payload
250
+ });
153
251
  }
154
252
 
155
253
  /**
@@ -158,10 +256,10 @@ var Metrics = /*#__PURE__*/function (_WebexPlugin) {
158
256
  */
159
257
  }, {
160
258
  key: "submitMQE",
161
- value: function submitMQE(_ref4) {
162
- var name = _ref4.name,
163
- payload = _ref4.payload,
164
- options = _ref4.options;
259
+ value: function submitMQE(_ref5) {
260
+ var name = _ref5.name,
261
+ payload = _ref5.payload,
262
+ options = _ref5.options;
165
263
  this.callDiagnosticLatencies.saveTimestamp({
166
264
  key: name
167
265
  });
@@ -178,10 +276,10 @@ var Metrics = /*#__PURE__*/function (_WebexPlugin) {
178
276
  */
179
277
  }, {
180
278
  key: "submitFeatureEvent",
181
- value: function submitFeatureEvent(_ref5) {
182
- var name = _ref5.name,
183
- payload = _ref5.payload,
184
- options = _ref5.options;
279
+ value: function submitFeatureEvent(_ref6) {
280
+ var name = _ref6.name,
281
+ payload = _ref6.payload,
282
+ options = _ref6.options;
185
283
  throw new Error('Not implemented.');
186
284
  }
187
285
 
@@ -192,10 +290,10 @@ var Metrics = /*#__PURE__*/function (_WebexPlugin) {
192
290
  */
193
291
  }, {
194
292
  key: "submitClientEvent",
195
- value: function submitClientEvent(_ref6) {
196
- var name = _ref6.name,
197
- payload = _ref6.payload,
198
- options = _ref6.options;
293
+ value: function submitClientEvent(_ref7) {
294
+ var name = _ref7.name,
295
+ payload = _ref7.payload,
296
+ options = _ref7.options;
199
297
  if (!this.callDiagnosticLatencies || !this.callDiagnosticMetrics) {
200
298
  // @ts-ignore
201
299
  this.webex.logger.log("NewMetrics: @submitClientEvent. Attempted to submit before webex.ready. Event name: ".concat(name));
@@ -271,12 +369,12 @@ var Metrics = /*#__PURE__*/function (_WebexPlugin) {
271
369
  }, {
272
370
  key: "buildClientEventFetchRequestOptions",
273
371
  value: (function () {
274
- var _buildClientEventFetchRequestOptions = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(_ref7) {
372
+ var _buildClientEventFetchRequestOptions = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(_ref8) {
275
373
  var name, payload, options;
276
374
  return _regenerator.default.wrap(function _callee$(_context) {
277
375
  while (1) switch (_context.prev = _context.next) {
278
376
  case 0:
279
- name = _ref7.name, payload = _ref7.payload, options = _ref7.options;
377
+ name = _ref8.name, payload = _ref8.payload, options = _ref8.options;
280
378
  return _context.abrupt("return", this.callDiagnosticMetrics.buildClientEventFetchRequestOptions({
281
379
  name: name,
282
380
  payload: payload,
@@ -1 +1 @@
1
- {"version":3,"names":["_webexCore","require","_callDiagnosticMetrics","_interopRequireDefault","_behavioralMetrics","_callDiagnosticMetricsLatencies","_callDiagnosticMetrics2","_utils","_class","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","default","result","NewTarget","constructor","_Reflect$construct","arguments","apply","_possibleConstructorReturn2","Reflect","sham","Proxy","Boolean","prototype","valueOf","call","e","Metrics","_WebexPlugin","_inherits2","_super","_this","_classCallCheck2","_len","length","args","Array","_key","concat","_defineProperty2","_assertThisInitialized2","callDiagnosticLatencies","CallDiagnosticLatencies","parent","webex","onReady","_createClass2","key","value","_this2","once","callDiagnosticMetrics","CallDiagnosticMetrics","behavioralMetrics","BehavioralMetrics","submitInternalEvent","_ref","name","payload","options","clearTimestamps","saveTimestamp","isReadyToSubmitBehavioralEvents","submitBehavioralEvent","_ref2","product","agent","target","verb","logger","log","_promise","resolve","submitOperationalEvent","_ref3","Error","submitMQE","_ref4","submitFeatureEvent","_ref5","submitClientEvent","_ref6","meetingId","clientMetricsAliasUser","preLoginId","_this3","request","method","api","resource","headers","body","qs","alias","then","res","catch","err","error","generateCommonErrorMetadata","reject","_buildClientEventFetchRequestOptions","_asyncToGenerator2","_regenerator","mark","_callee","_ref7","wrap","_callee$","_context","prev","next","abrupt","buildClientEventFetchRequestOptions","stop","_x","setMetricTimingsAndFetch","setTimingsAndFetch","setMetricTimings","isServiceErrorExpected","serviceErrorCode","WebexPlugin","_default","exports"],"sources":["new-metrics.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-unused-vars */\n/* eslint-disable class-methods-use-this */\n/* eslint-disable valid-jsdoc */\n\n// @ts-ignore\nimport {WebexPlugin} from '@webex/webex-core';\n\nimport CallDiagnosticMetrics from './call-diagnostic/call-diagnostic-metrics';\nimport BehavioralMetrics from './behavioral/behavioral-metrics';\nimport {\n RecursivePartial,\n MetricEventProduct,\n MetricEventAgent,\n MetricEventVerb,\n ClientEvent,\n FeatureEvent,\n BehavioralEventPayload,\n OperationalEvent,\n MediaQualityEvent,\n InternalEvent,\n SubmitClientEventOptions,\n} from './metrics.types';\nimport CallDiagnosticLatencies from './call-diagnostic/call-diagnostic-metrics-latencies';\nimport {setMetricTimings} from './call-diagnostic/call-diagnostic-metrics.util';\nimport {generateCommonErrorMetadata} from './utils';\n\n/**\n * Metrics plugin to centralize all types of metrics.\n * @class\n */\nclass Metrics extends WebexPlugin {\n // eslint-disable-next-line no-use-before-define\n static instance: Metrics;\n\n // Call Diagnostic latencies\n callDiagnosticLatencies: CallDiagnosticLatencies;\n // Helper classes to handle the different types of metrics\n callDiagnosticMetrics: CallDiagnosticMetrics;\n behavioralMetrics: BehavioralMetrics;\n\n /**\n * Constructor\n * @param args\n * @constructor\n * @private\n * @returns\n */\n constructor(...args) {\n super(...args);\n\n // @ts-ignore\n this.callDiagnosticLatencies = new CallDiagnosticLatencies({}, {parent: this.webex});\n this.onReady();\n }\n\n /**\n * On Ready\n */\n private onReady() {\n // @ts-ignore\n this.webex.once('ready', () => {\n // @ts-ignore\n this.callDiagnosticMetrics = new CallDiagnosticMetrics({}, {parent: this.webex});\n // @ts-ignore\n this.behavioralMetrics = new BehavioralMetrics({}, {parent: this.webex});\n });\n }\n\n /**\n * Used for internal purposes only\n * @param args\n */\n submitInternalEvent({\n name,\n payload,\n options,\n }: {\n name: InternalEvent['name'];\n payload?: RecursivePartial<InternalEvent['payload']>;\n options?: any;\n }) {\n if (name === 'internal.reset.join.latencies') {\n this.callDiagnosticLatencies.clearTimestamps();\n } else {\n this.callDiagnosticLatencies.saveTimestamp({key: name});\n }\n }\n\n /**\n * @returns true once we have the deviceId we need to submit behavioral events to Amplitude\n */\n isReadyToSubmitBehavioralEvents() {\n return this.behavioralMetrics.isReadyToSubmitBehavioralEvents();\n }\n\n /**\n * Behavioral event\n * @param args\n */\n submitBehavioralEvent({\n product,\n agent,\n target,\n verb,\n payload,\n }: {\n product: MetricEventProduct;\n agent: MetricEventAgent;\n target: string;\n verb: MetricEventVerb;\n payload?: BehavioralEventPayload;\n }) {\n if (!this.behavioralMetrics) {\n // @ts-ignore\n this.webex.logger.log(\n `NewMetrics: @submitBehavioralEvent. Attempted to submit before webex.ready: ${product}.${agent}.${target}.${verb}`\n );\n\n return Promise.resolve();\n }\n\n return this.behavioralMetrics.submitBehavioralEvent({product, agent, target, verb, payload});\n }\n\n /**\n * Operational event\n * @param args\n */\n submitOperationalEvent({\n name,\n payload,\n options,\n }: {\n name: OperationalEvent['name'];\n payload?: RecursivePartial<OperationalEvent['payload']>;\n options?: any;\n }) {\n throw new Error('Not implemented.');\n }\n\n /**\n * Call Analyzer: Media Quality Event\n * @param args\n */\n submitMQE({\n name,\n payload,\n options,\n }: {\n name: MediaQualityEvent['name'];\n payload: RecursivePartial<MediaQualityEvent['payload']> & {\n intervals: MediaQualityEvent['payload']['intervals'];\n };\n options: any;\n }) {\n this.callDiagnosticLatencies.saveTimestamp({key: name});\n this.callDiagnosticMetrics.submitMQE({name, payload, options});\n }\n\n /**\n * Call Analyzer: Feature Usage Event\n * @param args\n */\n submitFeatureEvent({\n name,\n payload,\n options,\n }: {\n name: FeatureEvent['name'];\n payload?: RecursivePartial<FeatureEvent['payload']>;\n options: any;\n }) {\n throw new Error('Not implemented.');\n }\n\n /**\n * Call Analyzer: Client Event\n * @public\n * @param args\n */\n public submitClientEvent({\n name,\n payload,\n options,\n }: {\n name: ClientEvent['name'];\n payload?: RecursivePartial<ClientEvent['payload']>;\n options?: SubmitClientEventOptions;\n }): Promise<any> {\n if (!this.callDiagnosticLatencies || !this.callDiagnosticMetrics) {\n // @ts-ignore\n this.webex.logger.log(\n `NewMetrics: @submitClientEvent. Attempted to submit before webex.ready. Event name: ${name}`\n );\n\n return Promise.resolve();\n }\n this.callDiagnosticLatencies.saveTimestamp({\n key: name,\n options: {meetingId: options?.meetingId},\n });\n\n return this.callDiagnosticMetrics.submitClientEvent({name, payload, options});\n }\n\n /**\n * Issue request to alias a user's pre-login ID with their CI UUID\n * @param {string} preLoginId\n * @returns {Object} HttpResponse object\n */\n public clientMetricsAliasUser(preLoginId: string) {\n // @ts-ignore\n return this.webex\n .request({\n method: 'POST',\n api: 'metrics',\n resource: 'clientmetrics',\n headers: {\n 'x-prelogin-userid': preLoginId,\n },\n body: {},\n qs: {\n alias: true,\n },\n })\n .then((res) => {\n // @ts-ignore\n this.webex.logger.log(`NewMetrics: @clientMetricsAliasUser. Request successful.`);\n\n return res;\n })\n .catch((err) => {\n // @ts-ignore\n this.logger.error(\n `NewMetrics: @clientMetricsAliasUser. Request failed:`,\n `err: ${generateCommonErrorMetadata(err)}`\n );\n\n return Promise.reject(err);\n });\n }\n\n /**\n * Returns a promise that will resolve to fetch options for submitting a metric.\n *\n * This is to support quickly submitting metrics when the browser/tab is closing.\n * Calling submitClientEvent will not work because there some async steps that will\n * not complete before the browser is closed. Instead, we pre-gather all the\n * information/options needed for the request(s), and then simply and quickly\n * fire the fetch(es) when beforeUnload is triggered.\n *\n * We must use fetch instead of request because fetch has a keepalive option that\n * allows the request it to outlive the page.\n *\n * Note: the timings values will be wrong, but setMetricTimingsAndFetch() will\n * properly adjust them before submitting.\n *\n * @public\n * @param {Object} arg\n * @param {String} arg.name - event name\n * @param {Object} arg.payload - event payload\n * @param {Object} arg.options - other options\n * @returns {Promise} promise that resolves to options to be used with fetch\n */\n public async buildClientEventFetchRequestOptions({\n name,\n payload,\n options,\n }: {\n name: ClientEvent['name'];\n payload?: RecursivePartial<ClientEvent['payload']>;\n options?: SubmitClientEventOptions;\n }): Promise<any> {\n return this.callDiagnosticMetrics.buildClientEventFetchRequestOptions({\n name,\n payload,\n options,\n });\n }\n\n /**\n * Submits a metric from pre-built request options via the fetch API. Updates\n * the \"$timings\" and \"originTime\" values to Date.now() since the existing times\n * were set when the options were built (not submitted).\n\n * @param {any} options - the pre-built request options for submitting a metric\n * @returns {Promise} promise that resolves to the response object\n */\n public setMetricTimingsAndFetch(options: any): Promise<any> {\n // @ts-ignore\n return this.webex.setTimingsAndFetch(setMetricTimings(options));\n }\n\n /**\n * Returns true if the specified serviceErrorCode maps to an expected error.\n * @param {number} serviceErrorCode the service error code\n * @returns {boolean}\n */\n public isServiceErrorExpected(serviceErrorCode: number): boolean {\n return this.callDiagnosticMetrics.isServiceErrorExpected(serviceErrorCode);\n }\n}\n\nexport default Metrics;\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAKA,IAAAA,UAAA,GAAAC,OAAA;AAEA,IAAAC,sBAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,kBAAA,GAAAD,sBAAA,CAAAF,OAAA;AAcA,IAAAI,+BAAA,GAAAF,sBAAA,CAAAF,OAAA;AACA,IAAAK,uBAAA,GAAAL,OAAA;AACA,IAAAM,MAAA,GAAAN,OAAA;AAAoD,IAAAO,MAAA;AAxBpD;AACA;AACA;AAEA;AAAA,SAAAC,aAAAC,OAAA,QAAAC,yBAAA,GAAAC,yBAAA,oBAAAC,qBAAA,QAAAC,KAAA,OAAAC,gBAAA,CAAAC,OAAA,EAAAN,OAAA,GAAAO,MAAA,MAAAN,yBAAA,QAAAO,SAAA,OAAAH,gBAAA,CAAAC,OAAA,QAAAG,WAAA,EAAAF,MAAA,GAAAG,kBAAA,CAAAN,KAAA,EAAAO,SAAA,EAAAH,SAAA,YAAAD,MAAA,GAAAH,KAAA,CAAAQ,KAAA,OAAAD,SAAA,gBAAAE,2BAAA,CAAAP,OAAA,QAAAC,MAAA;AAAA,SAAAL,0BAAA,eAAAY,OAAA,qBAAAJ,kBAAA,oBAAAA,kBAAA,CAAAK,IAAA,2BAAAC,KAAA,oCAAAC,OAAA,CAAAC,SAAA,CAAAC,OAAA,CAAAC,IAAA,CAAAV,kBAAA,CAAAO,OAAA,8CAAAI,CAAA;AAsBA;AACA;AACA;AACA;AAHA,IAIMC,OAAO,0BAAAC,YAAA;EAAA,IAAAC,UAAA,CAAAlB,OAAA,EAAAgB,OAAA,EAAAC,YAAA;EAAA,IAAAE,MAAA,GAAA1B,YAAA,CAAAuB,OAAA;EAUX;AACF;AACA;AACA;AACA;AACA;AACA;EACE,SAAAA,QAAA,EAAqB;IAAA,IAAAI,KAAA;IAAA,IAAAC,gBAAA,CAAArB,OAAA,QAAAgB,OAAA;IAAA,SAAAM,IAAA,GAAAjB,SAAA,CAAAkB,MAAA,EAANC,IAAI,OAAAC,KAAA,CAAAH,IAAA,GAAAI,IAAA,MAAAA,IAAA,GAAAJ,IAAA,EAAAI,IAAA;MAAJF,IAAI,CAAAE,IAAA,IAAArB,SAAA,CAAAqB,IAAA;IAAA;IACjBN,KAAA,GAAAD,MAAA,CAAAL,IAAA,CAAAR,KAAA,CAAAa,MAAA,SAAAQ,MAAA,CAASH,IAAI;;IAEb;IAhBF;IAAA,IAAAI,gBAAA,CAAA5B,OAAA,MAAA6B,uBAAA,CAAA7B,OAAA,EAAAoB,KAAA;IAEA;IAAA,IAAAQ,gBAAA,CAAA5B,OAAA,MAAA6B,uBAAA,CAAA7B,OAAA,EAAAoB,KAAA;IAAA,IAAAQ,gBAAA,CAAA5B,OAAA,MAAA6B,uBAAA,CAAA7B,OAAA,EAAAoB,KAAA;IAeEA,KAAA,CAAKU,uBAAuB,GAAG,IAAIC,uCAAuB,CAAC,CAAC,CAAC,EAAE;MAACC,MAAM,EAAEZ,KAAA,CAAKa;IAAK,CAAC,CAAC;IACpFb,KAAA,CAAKc,OAAO,CAAC,CAAC;IAAC,OAAAd,KAAA;EACjB;;EAEA;AACF;AACA;EAFE,IAAAe,aAAA,CAAAnC,OAAA,EAAAgB,OAAA;IAAAoB,GAAA;IAAAC,KAAA,EAGA,SAAAH,QAAA,EAAkB;MAAA,IAAAI,MAAA;MAChB;MACA,IAAI,CAACL,KAAK,CAACM,IAAI,CAAC,OAAO,EAAE,YAAM;QAC7B;QACAD,MAAI,CAACE,qBAAqB,GAAG,IAAIC,8BAAqB,CAAC,CAAC,CAAC,EAAE;UAACT,MAAM,EAAEM,MAAI,CAACL;QAAK,CAAC,CAAC;QAChF;QACAK,MAAI,CAACI,iBAAiB,GAAG,IAAIC,0BAAiB,CAAC,CAAC,CAAC,EAAE;UAACX,MAAM,EAAEM,MAAI,CAACL;QAAK,CAAC,CAAC;MAC1E,CAAC,CAAC;IACJ;;IAEA;AACF;AACA;AACA;EAHE;IAAAG,GAAA;IAAAC,KAAA,EAIA,SAAAO,oBAAAC,IAAA,EAQG;MAAA,IAPDC,IAAI,GAAAD,IAAA,CAAJC,IAAI;QACJC,OAAO,GAAAF,IAAA,CAAPE,OAAO;QACPC,OAAO,GAAAH,IAAA,CAAPG,OAAO;MAMP,IAAIF,IAAI,KAAK,+BAA+B,EAAE;QAC5C,IAAI,CAAChB,uBAAuB,CAACmB,eAAe,CAAC,CAAC;MAChD,CAAC,MAAM;QACL,IAAI,CAACnB,uBAAuB,CAACoB,aAAa,CAAC;UAACd,GAAG,EAAEU;QAAI,CAAC,CAAC;MACzD;IACF;;IAEA;AACF;AACA;EAFE;IAAAV,GAAA;IAAAC,KAAA,EAGA,SAAAc,gCAAA,EAAkC;MAChC,OAAO,IAAI,CAACT,iBAAiB,CAACS,+BAA+B,CAAC,CAAC;IACjE;;IAEA;AACF;AACA;AACA;EAHE;IAAAf,GAAA;IAAAC,KAAA,EAIA,SAAAe,sBAAAC,KAAA,EAYG;MAAA,IAXDC,OAAO,GAAAD,KAAA,CAAPC,OAAO;QACPC,KAAK,GAAAF,KAAA,CAALE,KAAK;QACLC,MAAM,GAAAH,KAAA,CAANG,MAAM;QACNC,IAAI,GAAAJ,KAAA,CAAJI,IAAI;QACJV,OAAO,GAAAM,KAAA,CAAPN,OAAO;MAQP,IAAI,CAAC,IAAI,CAACL,iBAAiB,EAAE;QAC3B;QACA,IAAI,CAACT,KAAK,CAACyB,MAAM,CAACC,GAAG,gFAAAhC,MAAA,CAC4D2B,OAAO,OAAA3B,MAAA,CAAI4B,KAAK,OAAA5B,MAAA,CAAI6B,MAAM,OAAA7B,MAAA,CAAI8B,IAAI,CACnH,CAAC;QAED,OAAOG,QAAA,CAAA5D,OAAA,CAAQ6D,OAAO,CAAC,CAAC;MAC1B;MAEA,OAAO,IAAI,CAACnB,iBAAiB,CAACU,qBAAqB,CAAC;QAACE,OAAO,EAAPA,OAAO;QAAEC,KAAK,EAALA,KAAK;QAAEC,MAAM,EAANA,MAAM;QAAEC,IAAI,EAAJA,IAAI;QAAEV,OAAO,EAAPA;MAAO,CAAC,CAAC;IAC9F;;IAEA;AACF;AACA;AACA;EAHE;IAAAX,GAAA;IAAAC,KAAA,EAIA,SAAAyB,uBAAAC,KAAA,EAQG;MAAA,IAPDjB,IAAI,GAAAiB,KAAA,CAAJjB,IAAI;QACJC,OAAO,GAAAgB,KAAA,CAAPhB,OAAO;QACPC,OAAO,GAAAe,KAAA,CAAPf,OAAO;MAMP,MAAM,IAAIgB,KAAK,CAAC,kBAAkB,CAAC;IACrC;;IAEA;AACF;AACA;AACA;EAHE;IAAA5B,GAAA;IAAAC,KAAA,EAIA,SAAA4B,UAAAC,KAAA,EAUG;MAAA,IATDpB,IAAI,GAAAoB,KAAA,CAAJpB,IAAI;QACJC,OAAO,GAAAmB,KAAA,CAAPnB,OAAO;QACPC,OAAO,GAAAkB,KAAA,CAAPlB,OAAO;MAQP,IAAI,CAAClB,uBAAuB,CAACoB,aAAa,CAAC;QAACd,GAAG,EAAEU;MAAI,CAAC,CAAC;MACvD,IAAI,CAACN,qBAAqB,CAACyB,SAAS,CAAC;QAACnB,IAAI,EAAJA,IAAI;QAAEC,OAAO,EAAPA,OAAO;QAAEC,OAAO,EAAPA;MAAO,CAAC,CAAC;IAChE;;IAEA;AACF;AACA;AACA;EAHE;IAAAZ,GAAA;IAAAC,KAAA,EAIA,SAAA8B,mBAAAC,KAAA,EAQG;MAAA,IAPDtB,IAAI,GAAAsB,KAAA,CAAJtB,IAAI;QACJC,OAAO,GAAAqB,KAAA,CAAPrB,OAAO;QACPC,OAAO,GAAAoB,KAAA,CAAPpB,OAAO;MAMP,MAAM,IAAIgB,KAAK,CAAC,kBAAkB,CAAC;IACrC;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAA5B,GAAA;IAAAC,KAAA,EAKA,SAAAgC,kBAAAC,KAAA,EAQiB;MAAA,IAPfxB,IAAI,GAAAwB,KAAA,CAAJxB,IAAI;QACJC,OAAO,GAAAuB,KAAA,CAAPvB,OAAO;QACPC,OAAO,GAAAsB,KAAA,CAAPtB,OAAO;MAMP,IAAI,CAAC,IAAI,CAAClB,uBAAuB,IAAI,CAAC,IAAI,CAACU,qBAAqB,EAAE;QAChE;QACA,IAAI,CAACP,KAAK,CAACyB,MAAM,CAACC,GAAG,wFAAAhC,MAAA,CACoEmB,IAAI,CAC7F,CAAC;QAED,OAAOc,QAAA,CAAA5D,OAAA,CAAQ6D,OAAO,CAAC,CAAC;MAC1B;MACA,IAAI,CAAC/B,uBAAuB,CAACoB,aAAa,CAAC;QACzCd,GAAG,EAAEU,IAAI;QACTE,OAAO,EAAE;UAACuB,SAAS,EAAEvB,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEuB;QAAS;MACzC,CAAC,CAAC;MAEF,OAAO,IAAI,CAAC/B,qBAAqB,CAAC6B,iBAAiB,CAAC;QAACvB,IAAI,EAAJA,IAAI;QAAEC,OAAO,EAAPA,OAAO;QAAEC,OAAO,EAAPA;MAAO,CAAC,CAAC;IAC/E;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAAZ,GAAA;IAAAC,KAAA,EAKA,SAAAmC,uBAA8BC,UAAkB,EAAE;MAAA,IAAAC,MAAA;MAChD;MACA,OAAO,IAAI,CAACzC,KAAK,CACd0C,OAAO,CAAC;QACPC,MAAM,EAAE,MAAM;QACdC,GAAG,EAAE,SAAS;QACdC,QAAQ,EAAE,eAAe;QACzBC,OAAO,EAAE;UACP,mBAAmB,EAAEN;QACvB,CAAC;QACDO,IAAI,EAAE,CAAC,CAAC;QACRC,EAAE,EAAE;UACFC,KAAK,EAAE;QACT;MACF,CAAC,CAAC,CACDC,IAAI,CAAC,UAACC,GAAG,EAAK;QACb;QACAV,MAAI,CAACzC,KAAK,CAACyB,MAAM,CAACC,GAAG,2DAA2D,CAAC;QAEjF,OAAOyB,GAAG;MACZ,CAAC,CAAC,CACDC,KAAK,CAAC,UAACC,GAAG,EAAK;QACd;QACAZ,MAAI,CAAChB,MAAM,CAAC6B,KAAK,iEAAA5D,MAAA,CAEP,IAAA6D,kCAA2B,EAACF,GAAG,CAAC,CAC1C,CAAC;QAED,OAAO1B,QAAA,CAAA5D,OAAA,CAAQyF,MAAM,CAACH,GAAG,CAAC;MAC5B,CAAC,CAAC;IACN;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EArBE;IAAAlD,GAAA;IAAAC,KAAA;MAAA,IAAAqD,oCAAA,OAAAC,kBAAA,CAAA3F,OAAA,gBAAA4F,YAAA,CAAA5F,OAAA,CAAA6F,IAAA,CAsBA,SAAAC,QAAAC,KAAA;QAAA,IAAAjD,IAAA,EAAAC,OAAA,EAAAC,OAAA;QAAA,OAAA4C,YAAA,CAAA5F,OAAA,CAAAgG,IAAA,UAAAC,SAAAC,QAAA;UAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;YAAA;cACEtD,IAAI,GAAAiD,KAAA,CAAJjD,IAAI,EACJC,OAAO,GAAAgD,KAAA,CAAPhD,OAAO,EACPC,OAAO,GAAA+C,KAAA,CAAP/C,OAAO;cAAA,OAAAkD,QAAA,CAAAG,MAAA,WAMA,IAAI,CAAC7D,qBAAqB,CAAC8D,mCAAmC,CAAC;gBACpExD,IAAI,EAAJA,IAAI;gBACJC,OAAO,EAAPA,OAAO;gBACPC,OAAO,EAAPA;cACF,CAAC,CAAC;YAAA;YAAA;cAAA,OAAAkD,QAAA,CAAAK,IAAA;UAAA;QAAA,GAAAT,OAAA;MAAA,CACH;MAAA,SAAAQ,oCAAAE,EAAA;QAAA,OAAAd,oCAAA,CAAApF,KAAA,OAAAD,SAAA;MAAA;MAAA,OAAAiG,mCAAA;IAAA;IAED;AACF;AACA;AACA;AACA;AACA;AACA;IANE;EAAA;IAAAlE,GAAA;IAAAC,KAAA,EAQA,SAAAoE,yBAAgCzD,OAAY,EAAgB;MAC1D;MACA,OAAO,IAAI,CAACf,KAAK,CAACyE,kBAAkB,CAAC,IAAAC,wCAAgB,EAAC3D,OAAO,CAAC,CAAC;IACjE;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAAZ,GAAA;IAAAC,KAAA,EAKA,SAAAuE,uBAA8BC,gBAAwB,EAAW;MAC/D,OAAO,IAAI,CAACrE,qBAAqB,CAACoE,sBAAsB,CAACC,gBAAgB,CAAC;IAC5E;EAAC;EAAA,OAAA7F,OAAA;AAAA,EA9QmB8F,sBAAW;AAAAtH,MAAA,GAA3BwB,OAAO;AACX;AAAA,IAAAY,gBAAA,CAAA5B,OAAA,EADIgB,OAAO;AAAA,IAAA+F,QAAA,GAAAC,OAAA,CAAAhH,OAAA,GAiREgB,OAAO"}
1
+ {"version":3,"names":["_webexCore","require","_callDiagnosticMetrics","_interopRequireDefault","_behavioralMetrics","_operationalMetrics","_businessMetrics","_callDiagnosticMetricsLatencies","_callDiagnosticMetrics2","_utils","_class","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","default","result","NewTarget","constructor","_Reflect$construct","arguments","apply","_possibleConstructorReturn2","Reflect","sham","Proxy","Boolean","prototype","valueOf","call","e","Metrics","_WebexPlugin","_inherits2","_super","_this","_classCallCheck2","_len","length","args","Array","_key","concat","_defineProperty2","_assertThisInitialized2","callDiagnosticLatencies","CallDiagnosticLatencies","parent","webex","onReady","_createClass2","key","value","_this2","once","callDiagnosticMetrics","CallDiagnosticMetrics","isReady","submitInternalEvent","_ref","name","payload","options","clearTimestamps","saveTimestamp","lazyBuildBehavioralMetrics","behavioralMetrics","BehavioralMetrics","lazyBuildOperationalMetrics","operationalMetrics","OperationalMetrics","lazyBuildBusinessMetrics","businessMetrics","BusinessMetrics","isReadyToSubmitBehavioralEvents","_this$behavioralMetri","_this$behavioralMetri2","isReadyToSubmitEvents","isReadyToSubmitOperationalEvents","_this$operationalMetr","_this$operationalMetr2","isReadyToSubmitBusinessEvents","_this$businessMetrics","_this$businessMetrics2","submitBehavioralEvent","_ref2","product","agent","target","verb","logger","log","_promise","resolve","submitOperationalEvent","_ref3","submitBusinessEvent","_ref4","submitMQE","_ref5","submitFeatureEvent","_ref6","Error","submitClientEvent","_ref7","meetingId","clientMetricsAliasUser","preLoginId","_this3","request","method","api","resource","headers","body","qs","alias","then","res","catch","err","error","generateCommonErrorMetadata","reject","_buildClientEventFetchRequestOptions","_asyncToGenerator2","_regenerator","mark","_callee","_ref8","wrap","_callee$","_context","prev","next","abrupt","buildClientEventFetchRequestOptions","stop","_x","setMetricTimingsAndFetch","setTimingsAndFetch","setMetricTimings","isServiceErrorExpected","serviceErrorCode","WebexPlugin","_default","exports"],"sources":["new-metrics.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-unused-vars */\n/* eslint-disable class-methods-use-this */\n/* eslint-disable valid-jsdoc */\n\n// @ts-ignore\nimport {WebexPlugin} from '@webex/webex-core';\n\nimport CallDiagnosticMetrics from './call-diagnostic/call-diagnostic-metrics';\nimport BehavioralMetrics from './behavioral-metrics';\nimport OperationalMetrics from './operational-metrics';\nimport BusinessMetrics from './business-metrics';\nimport {\n RecursivePartial,\n MetricEventProduct,\n MetricEventAgent,\n MetricEventVerb,\n ClientEvent,\n FeatureEvent,\n EventPayload,\n OperationalEvent,\n MediaQualityEvent,\n InternalEvent,\n SubmitClientEventOptions,\n} from './metrics.types';\nimport CallDiagnosticLatencies from './call-diagnostic/call-diagnostic-metrics-latencies';\nimport {setMetricTimings} from './call-diagnostic/call-diagnostic-metrics.util';\nimport {generateCommonErrorMetadata} from './utils';\n\n/**\n * Metrics plugin to centralize all types of metrics.\n * @class\n */\nclass Metrics extends WebexPlugin {\n // eslint-disable-next-line no-use-before-define\n static instance: Metrics;\n\n // Call Diagnostic latencies\n callDiagnosticLatencies: CallDiagnosticLatencies;\n // Helper classes to handle the different types of metrics\n callDiagnosticMetrics: CallDiagnosticMetrics;\n behavioralMetrics: BehavioralMetrics;\n operationalMetrics: OperationalMetrics;\n businessMetrics: BusinessMetrics;\n isReady = false;\n\n /**\n * Constructor\n * @param args\n * @constructor\n * @private\n * @returns\n */\n constructor(...args) {\n super(...args);\n\n // @ts-ignore\n this.callDiagnosticLatencies = new CallDiagnosticLatencies({}, {parent: this.webex});\n this.onReady();\n }\n\n /**\n * On Ready\n */\n private onReady() {\n // @ts-ignore\n this.webex.once('ready', () => {\n // @ts-ignore\n this.callDiagnosticMetrics = new CallDiagnosticMetrics({}, {parent: this.webex});\n this.isReady = true;\n });\n }\n\n /**\n * Used for internal purposes only\n * @param args\n */\n submitInternalEvent({\n name,\n payload,\n options,\n }: {\n name: InternalEvent['name'];\n payload?: RecursivePartial<InternalEvent['payload']>;\n options?: any;\n }) {\n if (name === 'internal.reset.join.latencies') {\n this.callDiagnosticLatencies.clearTimestamps();\n } else {\n this.callDiagnosticLatencies.saveTimestamp({key: name});\n }\n }\n\n /**\n * if webex metrics is ready, build behavioral metric backend if not already done.\n */\n private lazyBuildBehavioralMetrics() {\n if (this.isReady && !this.behavioralMetrics) {\n // @ts-ignore\n this.behavioralMetrics = new BehavioralMetrics({}, {parent: this.webex});\n }\n }\n\n /**\n * if webex metrics is ready, build operational metric backend if not already done.\n */\n private lazyBuildOperationalMetrics() {\n if (this.isReady && !this.operationalMetrics) {\n // @ts-ignore\n this.operationalMetrics = new OperationalMetrics({}, {parent: this.webex});\n }\n }\n\n /**\n * if webex metrics is ready, build business metric backend if not already done.\n */\n private lazyBuildBusinessMetrics() {\n if (this.isReady && !this.businessMetrics) {\n // @ts-ignore\n this.businessMetrics = new BusinessMetrics({}, {parent: this.webex});\n }\n }\n\n /**\n * @returns true once we have the deviceId we need to submit behavioral events to Amplitude\n */\n isReadyToSubmitBehavioralEvents() {\n this.lazyBuildBehavioralMetrics();\n\n return this.behavioralMetrics?.isReadyToSubmitEvents() ?? false;\n }\n\n /**\n * @returns true once we have the deviceId we need to submit operational events\n */\n isReadyToSubmitOperationalEvents() {\n this.lazyBuildOperationalMetrics();\n\n return this.operationalMetrics?.isReadyToSubmitEvents() ?? false;\n }\n\n /**\n * @returns true once we have the deviceId we need to submit buisness events\n */\n isReadyToSubmitBusinessEvents() {\n this.lazyBuildBusinessMetrics();\n\n return this.businessMetrics?.isReadyToSubmitEvents() ?? false;\n }\n\n /**\n * Behavioral event\n * @param args\n */\n submitBehavioralEvent({\n product,\n agent,\n target,\n verb,\n payload,\n }: {\n product: MetricEventProduct;\n agent: MetricEventAgent;\n target: string;\n verb: MetricEventVerb;\n payload?: EventPayload;\n }) {\n if (!this.isReady) {\n // @ts-ignore\n this.webex.logger.log(\n `NewMetrics: @submitBehavioralEvent. Attempted to submit before webex.ready: ${product}.${agent}.${target}.${verb}`\n );\n\n return Promise.resolve();\n }\n\n this.lazyBuildBehavioralMetrics();\n\n return this.behavioralMetrics.submitBehavioralEvent({product, agent, target, verb, payload});\n }\n\n /**\n * Operational event\n * @param args\n */\n submitOperationalEvent({name, payload}: {name: string; payload?: EventPayload}) {\n if (!this.isReady) {\n // @ts-ignore\n this.webex.logger.log(\n `NewMetrics: @submitOperationalEvent. Attempted to submit before webex.ready: ${name}`\n );\n\n return Promise.resolve();\n }\n\n this.lazyBuildOperationalMetrics();\n\n return this.operationalMetrics.submitOperationalEvent({name, payload});\n }\n\n /**\n * Buisness event\n * @param args\n */\n submitBusinessEvent({name, payload}: {name: string; payload: EventPayload}) {\n if (!this.isReady) {\n // @ts-ignore\n this.webex.logger.log(\n `NewMetrics: @submitBusinessEvent. Attempted to submit before webex.ready: ${name}`\n );\n\n return Promise.resolve();\n }\n\n this.lazyBuildBusinessMetrics();\n\n return this.businessMetrics.submitBusinessEvent({name, payload});\n }\n\n /**\n * Call Analyzer: Media Quality Event\n * @param args\n */\n submitMQE({\n name,\n payload,\n options,\n }: {\n name: MediaQualityEvent['name'];\n payload: RecursivePartial<MediaQualityEvent['payload']> & {\n intervals: MediaQualityEvent['payload']['intervals'];\n };\n options: any;\n }) {\n this.callDiagnosticLatencies.saveTimestamp({key: name});\n this.callDiagnosticMetrics.submitMQE({name, payload, options});\n }\n\n /**\n * Call Analyzer: Feature Usage Event\n * @param args\n */\n submitFeatureEvent({\n name,\n payload,\n options,\n }: {\n name: FeatureEvent['name'];\n payload?: RecursivePartial<FeatureEvent['payload']>;\n options: any;\n }) {\n throw new Error('Not implemented.');\n }\n\n /**\n * Call Analyzer: Client Event\n * @public\n * @param args\n */\n public submitClientEvent({\n name,\n payload,\n options,\n }: {\n name: ClientEvent['name'];\n payload?: RecursivePartial<ClientEvent['payload']>;\n options?: SubmitClientEventOptions;\n }): Promise<any> {\n if (!this.callDiagnosticLatencies || !this.callDiagnosticMetrics) {\n // @ts-ignore\n this.webex.logger.log(\n `NewMetrics: @submitClientEvent. Attempted to submit before webex.ready. Event name: ${name}`\n );\n\n return Promise.resolve();\n }\n this.callDiagnosticLatencies.saveTimestamp({\n key: name,\n options: {meetingId: options?.meetingId},\n });\n\n return this.callDiagnosticMetrics.submitClientEvent({name, payload, options});\n }\n\n /**\n * Issue request to alias a user's pre-login ID with their CI UUID\n * @param {string} preLoginId\n * @returns {Object} HttpResponse object\n */\n public clientMetricsAliasUser(preLoginId: string) {\n // @ts-ignore\n return this.webex\n .request({\n method: 'POST',\n api: 'metrics',\n resource: 'clientmetrics',\n headers: {\n 'x-prelogin-userid': preLoginId,\n },\n body: {},\n qs: {\n alias: true,\n },\n })\n .then((res) => {\n // @ts-ignore\n this.webex.logger.log(`NewMetrics: @clientMetricsAliasUser. Request successful.`);\n\n return res;\n })\n .catch((err) => {\n // @ts-ignore\n this.logger.error(\n `NewMetrics: @clientMetricsAliasUser. Request failed:`,\n `err: ${generateCommonErrorMetadata(err)}`\n );\n\n return Promise.reject(err);\n });\n }\n\n /**\n * Returns a promise that will resolve to fetch options for submitting a metric.\n *\n * This is to support quickly submitting metrics when the browser/tab is closing.\n * Calling submitClientEvent will not work because there some async steps that will\n * not complete before the browser is closed. Instead, we pre-gather all the\n * information/options needed for the request(s), and then simply and quickly\n * fire the fetch(es) when beforeUnload is triggered.\n *\n * We must use fetch instead of request because fetch has a keepalive option that\n * allows the request it to outlive the page.\n *\n * Note: the timings values will be wrong, but setMetricTimingsAndFetch() will\n * properly adjust them before submitting.\n *\n * @public\n * @param {Object} arg\n * @param {String} arg.name - event name\n * @param {Object} arg.payload - event payload\n * @param {Object} arg.options - other options\n * @returns {Promise} promise that resolves to options to be used with fetch\n */\n public async buildClientEventFetchRequestOptions({\n name,\n payload,\n options,\n }: {\n name: ClientEvent['name'];\n payload?: RecursivePartial<ClientEvent['payload']>;\n options?: SubmitClientEventOptions;\n }): Promise<any> {\n return this.callDiagnosticMetrics.buildClientEventFetchRequestOptions({\n name,\n payload,\n options,\n });\n }\n\n /**\n * Submits a metric from pre-built request options via the fetch API. Updates\n * the \"$timings\" and \"originTime\" values to Date.now() since the existing times\n * were set when the options were built (not submitted).\n\n * @param {any} options - the pre-built request options for submitting a metric\n * @returns {Promise} promise that resolves to the response object\n */\n public setMetricTimingsAndFetch(options: any): Promise<any> {\n // @ts-ignore\n return this.webex.setTimingsAndFetch(setMetricTimings(options));\n }\n\n /**\n * Returns true if the specified serviceErrorCode maps to an expected error.\n * @param {number} serviceErrorCode the service error code\n * @returns {boolean}\n */\n public isServiceErrorExpected(serviceErrorCode: number): boolean {\n return this.callDiagnosticMetrics.isServiceErrorExpected(serviceErrorCode);\n }\n}\n\nexport default Metrics;\n"],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+
3
+ var _Reflect$construct = require("@babel/runtime-corejs2/core-js/reflect/construct");
4
+ var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
5
+ var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
6
+ _Object$defineProperty(exports, "__esModule", {
7
+ value: true
8
+ });
9
+ exports.default = void 0;
10
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
11
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));
12
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/inherits"));
13
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/possibleConstructorReturn"));
14
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/getPrototypeOf"));
15
+ var _genericMetrics = _interopRequireDefault(require("./generic-metrics"));
16
+ 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); }; }
17
+ 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; } }
18
+ /**
19
+ * @description Util class to handle Operational Metrics
20
+ * @export
21
+ * @class OperationalMetrics
22
+ */
23
+ var OperationalMetrics = exports.default = /*#__PURE__*/function (_GenericMetrics) {
24
+ (0, _inherits2.default)(OperationalMetrics, _GenericMetrics);
25
+ var _super = _createSuper(OperationalMetrics);
26
+ function OperationalMetrics() {
27
+ (0, _classCallCheck2.default)(this, OperationalMetrics);
28
+ return _super.apply(this, arguments);
29
+ }
30
+ (0, _createClass2.default)(OperationalMetrics, [{
31
+ key: "submitOperationalEvent",
32
+ value:
33
+ /**
34
+ * Submit an operational metric to our metrics endpoint.
35
+ * @param {string} name of the metric
36
+ * @param {EventPayload} user payload of the metric
37
+ * @returns {Promise<any>}
38
+ */
39
+ function submitOperationalEvent(_ref) {
40
+ var name = _ref.name,
41
+ payload = _ref.payload;
42
+ var event = this.createTaggedEventObject({
43
+ type: ['operational'],
44
+ name: name,
45
+ payload: payload
46
+ });
47
+ this.submitEvent({
48
+ kind: 'operational-events -> ',
49
+ name: name,
50
+ event: event
51
+ });
52
+ }
53
+ }]);
54
+ return OperationalMetrics;
55
+ }(_genericMetrics.default);
56
+ //# sourceMappingURL=operational-metrics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_genericMetrics","_interopRequireDefault","require","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","default","result","NewTarget","constructor","_Reflect$construct","arguments","apply","_possibleConstructorReturn2","Reflect","sham","Proxy","Boolean","prototype","valueOf","call","e","OperationalMetrics","exports","_GenericMetrics","_inherits2","_super","_classCallCheck2","_createClass2","key","value","submitOperationalEvent","_ref","name","payload","event","createTaggedEventObject","type","submitEvent","kind","GenericMetrics"],"sources":["operational-metrics.ts"],"sourcesContent":["import GenericMetrics from './generic-metrics';\nimport {EventPayload} from './metrics.types';\n\n/**\n * @description Util class to handle Operational Metrics\n * @export\n * @class OperationalMetrics\n */\nexport default class OperationalMetrics extends GenericMetrics {\n /**\n * Submit an operational metric to our metrics endpoint.\n * @param {string} name of the metric\n * @param {EventPayload} user payload of the metric\n * @returns {Promise<any>}\n */\n public submitOperationalEvent({name, payload}: {name: string; payload: EventPayload}) {\n const event = this.createTaggedEventObject({\n type: ['operational'],\n name,\n payload,\n });\n this.submitEvent({kind: 'operational-events -> ', name, event});\n }\n}\n"],"mappings":";;;;;;;;;;;;;;AAAA,IAAAA,eAAA,GAAAC,sBAAA,CAAAC,OAAA;AAA+C,SAAAC,aAAAC,OAAA,QAAAC,yBAAA,GAAAC,yBAAA,oBAAAC,qBAAA,QAAAC,KAAA,OAAAC,gBAAA,CAAAC,OAAA,EAAAN,OAAA,GAAAO,MAAA,MAAAN,yBAAA,QAAAO,SAAA,OAAAH,gBAAA,CAAAC,OAAA,QAAAG,WAAA,EAAAF,MAAA,GAAAG,kBAAA,CAAAN,KAAA,EAAAO,SAAA,EAAAH,SAAA,YAAAD,MAAA,GAAAH,KAAA,CAAAQ,KAAA,OAAAD,SAAA,gBAAAE,2BAAA,CAAAP,OAAA,QAAAC,MAAA;AAAA,SAAAL,0BAAA,eAAAY,OAAA,qBAAAJ,kBAAA,oBAAAA,kBAAA,CAAAK,IAAA,2BAAAC,KAAA,oCAAAC,OAAA,CAAAC,SAAA,CAAAC,OAAA,CAAAC,IAAA,CAAAV,kBAAA,CAAAO,OAAA,8CAAAI,CAAA;AAG/C;AACA;AACA;AACA;AACA;AAJA,IAKqBC,kBAAkB,GAAAC,OAAA,CAAAjB,OAAA,0BAAAkB,eAAA;EAAA,IAAAC,UAAA,CAAAnB,OAAA,EAAAgB,kBAAA,EAAAE,eAAA;EAAA,IAAAE,MAAA,GAAA3B,YAAA,CAAAuB,kBAAA;EAAA,SAAAA,mBAAA;IAAA,IAAAK,gBAAA,CAAArB,OAAA,QAAAgB,kBAAA;IAAA,OAAAI,MAAA,CAAAd,KAAA,OAAAD,SAAA;EAAA;EAAA,IAAAiB,aAAA,CAAAtB,OAAA,EAAAgB,kBAAA;IAAAO,GAAA;IAAAC,KAAA;IACrC;AACF;AACA;AACA;AACA;AACA;IACE,SAAAC,uBAAAC,IAAA,EAAsF;MAAA,IAAvDC,IAAI,GAAAD,IAAA,CAAJC,IAAI;QAAEC,OAAO,GAAAF,IAAA,CAAPE,OAAO;MAC1C,IAAMC,KAAK,GAAG,IAAI,CAACC,uBAAuB,CAAC;QACzCC,IAAI,EAAE,CAAC,aAAa,CAAC;QACrBJ,IAAI,EAAJA,IAAI;QACJC,OAAO,EAAPA;MACF,CAAC,CAAC;MACF,IAAI,CAACI,WAAW,CAAC;QAACC,IAAI,EAAE,wBAAwB;QAAEN,IAAI,EAAJA,IAAI;QAAEE,KAAK,EAALA;MAAK,CAAC,CAAC;IACjE;EAAC;EAAA,OAAAb,kBAAA;AAAA,EAd6CkB,uBAAc"}
@@ -0,0 +1,25 @@
1
+ import { MetricEventProduct, MetricEventAgent, MetricEventVerb, EventPayload } from './metrics.types';
2
+ import GenericMetrics from './generic-metrics';
3
+ /**
4
+ * @description Util class to handle Behavioral Metrics
5
+ * @export
6
+ * @class BehavioralMetrics
7
+ */
8
+ export default class BehavioralMetrics extends GenericMetrics {
9
+ /**
10
+ * Submit a behavioral metric to our metrics endpoint.
11
+ * @param {MetricEventProduct} product the product from which the metric is being submitted, e.g. 'webex' web client, 'wxcc_desktop'
12
+ * @param {MetricEventAgent} agent the source of the action for this metric
13
+ * @param {string} target the 'thing' that this metric includes information about
14
+ * @param {MetricEventVerb} verb the action that this metric includes information about
15
+ * @param {EventPayload} payload information specific to this event. This should be flat, i.e. it should not include nested objects.
16
+ * @returns {Promise<any>}
17
+ */
18
+ submitBehavioralEvent({ product, agent, target, verb, payload, }: {
19
+ product: MetricEventProduct;
20
+ agent: MetricEventAgent;
21
+ target: string;
22
+ verb: MetricEventVerb;
23
+ payload?: EventPayload;
24
+ }): void;
25
+ }
@@ -0,0 +1,19 @@
1
+ import GenericMetrics from './generic-metrics';
2
+ import { EventPayload } from './metrics.types';
3
+ /**
4
+ * @description Util class to handle Buisness Metrics
5
+ * @export
6
+ * @class BusinessMetrics
7
+ */
8
+ export default class BusinessMetrics extends GenericMetrics {
9
+ /**
10
+ * Submit a buisness metric to our metrics endpoint.
11
+ * @param {string} name of the metric
12
+ * @param {EventPayload} user payload of the metric
13
+ * @returns {Promise<any>}
14
+ */
15
+ submitBusinessEvent({ name, payload }: {
16
+ name: string;
17
+ payload: EventPayload;
18
+ }): void;
19
+ }
@@ -13,6 +13,7 @@ type GetIdentifiersOptions = {
13
13
  meeting?: any;
14
14
  mediaConnections?: any[];
15
15
  correlationId?: string;
16
+ sessionCorrelationId?: string;
16
17
  preLoginId?: string;
17
18
  globalMeetingId?: string;
18
19
  webexConferenceIdStr?: string;
@@ -65,7 +66,7 @@ export default class CallDiagnosticMetrics extends StatelessWebexPlugin {
65
66
  * @returns
66
67
  */
67
68
  getOrigin(options: GetOriginOptions, meetingId?: string): {
68
- name: "endpoint" | "antares" | "beech" | "breakout" | "cb" | "cloudproxy" | "edonus" | "givr" | "hecate" | "hedge" | "hesiod" | "homer" | "superhomer" | "l2sip" | "linus" | "locus" | "mcc" | "mcs" | "mercury" | "mes" | "mjs" | "mmp" | "mygdon" | "orpheus" | "page" | "poros" | "rhesos" | "terminus" | "tpgw" | "ucc" | "wdm" | "webexivr";
69
+ name: "endpoint" | "addin" | "antares" | "appapi" | "beech" | "breakout" | "calendar" | "cb" | "cca" | "ccc" | "cloudproxy" | "edonus" | "givr" | "hecate" | "hedge" | "hesiod" | "homer" | "superhomer" | "l2sip" | "linus" | "locus" | "mbs" | "mcc" | "mcs" | "mercury" | "mes" | "mjs" | "mmp" | "mygdon" | "ngservice" | "orpheus" | "page" | "poros" | "publicapi" | "rhesos" | "terminus" | "tpgw" | "ucc" | "wdm" | "webexivr";
69
70
  userAgent: string;
70
71
  buildType?: "debug" | "test" | "prod" | "tap" | "analyzer-test";
71
72
  upgradeChannel?: string;
@@ -77,7 +78,7 @@ export default class CallDiagnosticMetrics extends StatelessWebexPlugin {
77
78
  environment?: string;
78
79
  newEnvironment?: string;
79
80
  clientInfo?: {
80
- os?: "other" | "chrome" | "windows" | "mac" | "ios" | "android" | "linux" | "android-x64" | "android-arm64" | "uwp-arm64";
81
+ os?: "windows" | "mac" | "ios" | "android" | "chrome" | "linux" | "other" | "android-x64" | "android-arm64" | "uwp-arm64";
81
82
  osVersion?: string;
82
83
  localIP?: string;
83
84
  gatewayIP?: string;
@@ -89,7 +90,8 @@ export default class CallDiagnosticMetrics extends StatelessWebexPlugin {
89
90
  browser?: string;
90
91
  browserVersion?: string;
91
92
  clientType?: "MEETING_CENTER" | "EVENT_CENTER" | "TRAINING_CENTER" | "TEAMS_CLIENT" | "TEAMS_DEVICE" | "TEAMS_SHARE" | "SIP" | "RECORDING" | "CLOUD_AWARE_SIP" | "TEAMS_WXC_CLIENT" | "WXC_CLIENT" | "WXC_DEVICE" | "WEBEX_JS_SDK" | "VOICEA_CLIENT" | "CISCO_SIP_GW" | "WEBEX_SDK" | "CPAAS_THIRD_PARTY_SDK" | "WXC_THIRD_PARTY" | "WXCC";
92
- subClientType?: "TEAMS_DEVICE" | "DESKTOP_APP" | "DESKTOP_APP_VDI" | "DEVICE_CURRENT" | "DEVICE_LEGACY_2020" | "HOLOGRAM_HEADSET_APP" | "HVDI_APP" | "MIXED" | "MOBILE_APP" | "MOBILE_NETWORK" | "PAGE" | "VDI_APP" | "WEB_APP";
93
+ subClientType?: "TEAMS_DEVICE" | "AUTOMOTIVE_APP" | "DESKTOP_APP" | "DESKTOP_APP_VDI" | "DEVICE_CURRENT" | "DEVICE_LEGACY_2020" | "HOLOGRAM_HEADSET_APP" | "HVDI_APP" | "MIXED" | "MOBILE_APP" | "MOBILE_NETWORK" | "PAGE" | "VDI_APP" | "WEB_APP";
94
+ schedulingClientType?: "TEAMS_CLIENT" | "GOOGLE_ADDON" | "PT" | "PUBLIC_API" | "UNIFIED_PAGE" | "WEBEX_PAGE" | "GOOGLE_NOTIFICATION_CALENDAR" | "MSFT_NOTIFICATION_ADDIN" | "MSFT_NOTIFICATION_CALENDAR" | "OUTLOOK_ADDIN";
93
95
  clientVersion?: string;
94
96
  clientVersionStatus?: "CURRENT" | "LEGACY" | "UNSUPPORTED";
95
97
  localClientVersion?: string;
@@ -113,10 +115,10 @@ export default class CallDiagnosticMetrics extends StatelessWebexPlugin {
113
115
  isValidClientVersion?: boolean;
114
116
  cpuInfo?: {
115
117
  description: string;
116
- clockSpeedGigaHertz: number;
117
118
  numberOfCores: number;
118
119
  architecture: "unknown" | "intel32" | "intel64" | "amd32" | "amd64" | "arm32" | "arm64";
119
120
  staticPerformance?: string;
121
+ clockSpeedGigaHertz?: number;
120
122
  additionalProperties?: false;
121
123
  };
122
124
  shareType?: "cb-normal-share" | "ce-airplay-share" | "ce-direct-share" | "ce-gui-loopback-share" | "ce-input-source-share" | "ce-input-source-share-hdmi" | "ce-input-source-share-usbc" | "ce-jpg-share" | "ce-miracast-share" | "mcs-normal-share" | "mcs-normal-audio-share" | "mcs-hfps-share" | "mcs-hfps-audio-share";
@@ -147,6 +149,7 @@ export default class CallDiagnosticMetrics extends StatelessWebexPlugin {
147
149
  breakoutGroupId?: string;
148
150
  breakoutMoveId?: string;
149
151
  breakoutSessionId?: string;
152
+ ciExchangeTokenUrl?: string;
150
153
  confluenceId?: string;
151
154
  cpaasIdentifiers?: {
152
155
  imiTenantId: string;
@@ -164,11 +167,14 @@ export default class CallDiagnosticMetrics extends StatelessWebexPlugin {
164
167
  destinationVenueId?: string;
165
168
  deviceId?: string;
166
169
  globalMeetingId?: string;
170
+ installationId?: string;
171
+ webexMeetingUUID?: string;
167
172
  ivrCallId?: string;
168
173
  ivrDialogId?: string;
169
174
  ivrId?: string;
170
175
  callId?: string;
171
176
  locusId?: string;
177
+ locusJoinUrl?: string;
172
178
  locusSessionId?: string;
173
179
  locusStartTime?: string;
174
180
  locusUrl?: string;
@@ -179,6 +185,7 @@ export default class CallDiagnosticMetrics extends StatelessWebexPlugin {
179
185
  meetingInstanceId?: string;
180
186
  meetingLookupUrl?: string;
181
187
  meetingOrgId?: string;
188
+ metricServiceUrl?: string;
182
189
  msteamsTenantGuid?: string;
183
190
  msteamsConferenceId?: string;
184
191
  msteamsMeetingId?: string;
@@ -186,6 +193,7 @@ export default class CallDiagnosticMetrics extends StatelessWebexPlugin {
186
193
  orgId?: string;
187
194
  provisionalCorrelationId?: string;
188
195
  roomId?: string;
196
+ sessionCorrelationId?: string;
189
197
  sipCallId?: string;
190
198
  sipSessionId?: {
191
199
  local?: string;
@@ -200,6 +208,7 @@ export default class CallDiagnosticMetrics extends StatelessWebexPlugin {
200
208
  venueId?: string;
201
209
  venueUrl?: string;
202
210
  whiteboardUrl?: string;
211
+ wdmDeviceRegistrationUrl?: string;
203
212
  webexConferenceId?: number;
204
213
  webexClusterName?: string;
205
214
  webexConferenceIdStr?: string;
@@ -219,6 +228,7 @@ export default class CallDiagnosticMetrics extends StatelessWebexPlugin {
219
228
  breakoutGroupId?: string;
220
229
  breakoutMoveId?: string;
221
230
  breakoutSessionId?: string;
231
+ ciExchangeTokenUrl?: string;
222
232
  confluenceId?: string;
223
233
  cpaasIdentifiers?: {
224
234
  imiTenantId: string;
@@ -236,11 +246,14 @@ export default class CallDiagnosticMetrics extends StatelessWebexPlugin {
236
246
  destinationVenueId?: string;
237
247
  deviceId?: string;
238
248
  globalMeetingId?: string;
249
+ installationId?: string;
250
+ webexMeetingUUID?: string;
239
251
  ivrCallId?: string;
240
252
  ivrDialogId?: string;
241
253
  ivrId?: string;
242
254
  callId?: string;
243
255
  locusId?: string;
256
+ locusJoinUrl?: string;
244
257
  locusSessionId?: string;
245
258
  locusStartTime?: string;
246
259
  locusUrl?: string;
@@ -251,6 +264,7 @@ export default class CallDiagnosticMetrics extends StatelessWebexPlugin {
251
264
  meetingInstanceId?: string;
252
265
  meetingLookupUrl?: string;
253
266
  meetingOrgId?: string;
267
+ metricServiceUrl?: string;
254
268
  msteamsTenantGuid?: string;
255
269
  msteamsConferenceId?: string;
256
270
  msteamsMeetingId?: string;
@@ -258,6 +272,7 @@ export default class CallDiagnosticMetrics extends StatelessWebexPlugin {
258
272
  orgId?: string;
259
273
  provisionalCorrelationId?: string;
260
274
  roomId?: string;
275
+ sessionCorrelationId?: string;
261
276
  sipCallId?: string;
262
277
  sipSessionId?: {
263
278
  local?: string;
@@ -272,6 +287,7 @@ export default class CallDiagnosticMetrics extends StatelessWebexPlugin {
272
287
  venueId?: string;
273
288
  venueUrl?: string;
274
289
  whiteboardUrl?: string;
290
+ wdmDeviceRegistrationUrl?: string;
275
291
  webexConferenceId?: number;
276
292
  webexClusterName?: string;
277
293
  webexConferenceIdStr?: string;
@@ -336,7 +352,7 @@ export default class CallDiagnosticMetrics extends StatelessWebexPlugin {
336
352
  */
337
353
  generateClientEventErrorPayload(rawError: any): {
338
354
  fatal: boolean;
339
- category: "signaling" | "media" | "network" | "other" | "expected";
355
+ category: "other" | "signaling" | "media" | "network" | "expected";
340
356
  errorDescription?: string;
341
357
  errorCode?: number;
342
358
  errorCodeStr?: string;
@@ -68,10 +68,11 @@ export declare const isSdpOfferCreationError: (rawError: any) => boolean;
68
68
  */
69
69
  export declare const isBrowserMediaErrorName: (errorName: any) => boolean;
70
70
  /**
71
+ * @param {Object} webex sdk instance
71
72
  * @param webClientDomain
72
73
  * @returns
73
74
  */
74
- export declare const getBuildType: (webClientDomain: any, markAsTestEvent?: boolean) => Event['origin']['buildType'];
75
+ export declare const getBuildType: (webex: any, webClientDomain: any, markAsTestEvent?: boolean) => Event['origin']['buildType'];
75
76
  /**
76
77
  * Prepare metric item for submission.
77
78
  * @param {Object} webex sdk instance