@webex/internal-plugin-metrics 3.4.0 → 3.5.0-next.10

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 (69) 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 +169 -0
  4. package/dist/business-metrics.js.map +1 -0
  5. package/dist/call-diagnostic/call-diagnostic-metrics-latencies.js +1 -1
  6. package/dist/call-diagnostic/call-diagnostic-metrics-latencies.js.map +1 -1
  7. package/dist/call-diagnostic/call-diagnostic-metrics.js +27 -11
  8. package/dist/call-diagnostic/call-diagnostic-metrics.js.map +1 -1
  9. package/dist/call-diagnostic/call-diagnostic-metrics.util.js +14 -4
  10. package/dist/call-diagnostic/call-diagnostic-metrics.util.js.map +1 -1
  11. package/dist/call-diagnostic/config.js +13 -3
  12. package/dist/call-diagnostic/config.js.map +1 -1
  13. package/dist/{behavioral/behavioral-metrics.js → generic-metrics.js} +77 -92
  14. package/dist/generic-metrics.js.map +1 -0
  15. package/dist/index.js +22 -1
  16. package/dist/index.js.map +1 -1
  17. package/dist/metrics.js +1 -1
  18. package/dist/metrics.types.js.map +1 -1
  19. package/dist/new-metrics.js +124 -24
  20. package/dist/new-metrics.js.map +1 -1
  21. package/dist/operational-metrics.js +56 -0
  22. package/dist/operational-metrics.js.map +1 -0
  23. package/dist/rtcMetrics/constants.js +11 -0
  24. package/dist/rtcMetrics/constants.js.map +1 -0
  25. package/dist/rtcMetrics/index.js +202 -0
  26. package/dist/rtcMetrics/index.js.map +1 -0
  27. package/dist/types/behavioral-metrics.d.ts +25 -0
  28. package/dist/types/business-metrics.d.ts +47 -0
  29. package/dist/types/call-diagnostic/call-diagnostic-metrics.d.ts +27 -6
  30. package/dist/types/call-diagnostic/call-diagnostic-metrics.util.d.ts +2 -1
  31. package/dist/types/call-diagnostic/config.d.ts +3 -0
  32. package/dist/types/generic-metrics.d.ts +63 -0
  33. package/dist/types/index.d.ts +5 -2
  34. package/dist/types/metrics.types.d.ts +27 -14
  35. package/dist/types/new-metrics.d.ts +42 -9
  36. package/dist/types/operational-metrics.d.ts +19 -0
  37. package/dist/types/rtcMetrics/constants.d.ts +4 -0
  38. package/dist/types/rtcMetrics/index.d.ts +71 -0
  39. package/package.json +12 -12
  40. package/src/behavioral-metrics.ts +40 -0
  41. package/src/business-metrics.ts +118 -0
  42. package/src/call-diagnostic/call-diagnostic-metrics-latencies.ts +1 -1
  43. package/src/call-diagnostic/call-diagnostic-metrics.ts +30 -9
  44. package/src/call-diagnostic/call-diagnostic-metrics.util.ts +17 -4
  45. package/src/call-diagnostic/config.ts +12 -0
  46. package/src/generic-metrics.ts +146 -0
  47. package/src/index.ts +7 -1
  48. package/src/metrics.types.ts +32 -16
  49. package/src/new-metrics.ts +100 -13
  50. package/src/operational-metrics.ts +24 -0
  51. package/src/rtcMetrics/constants.ts +3 -0
  52. package/src/rtcMetrics/index.ts +186 -0
  53. package/test/unit/spec/behavioral/behavioral-metrics.ts +51 -10
  54. package/test/unit/spec/business/business-metrics.ts +182 -0
  55. package/test/unit/spec/call-diagnostic/call-diagnostic-metrics-batcher.ts +2 -1
  56. package/test/unit/spec/call-diagnostic/call-diagnostic-metrics-latencies.ts +4 -6
  57. package/test/unit/spec/call-diagnostic/call-diagnostic-metrics.ts +418 -12
  58. package/test/unit/spec/call-diagnostic/call-diagnostic-metrics.util.ts +22 -8
  59. package/test/unit/spec/new-metrics.ts +32 -3
  60. package/test/unit/spec/operational/operational-metrics.ts +115 -0
  61. package/test/unit/spec/prelogin-metrics-batcher.ts +3 -1
  62. package/test/unit/spec/rtcMetrics/index.ts +155 -0
  63. package/dist/behavioral/behavioral-metrics.js.map +0 -1
  64. package/dist/behavioral/config.js +0 -11
  65. package/dist/behavioral/config.js.map +0 -1
  66. package/dist/types/behavioral/behavioral-metrics.d.ts +0 -63
  67. package/dist/types/behavioral/config.d.ts +0 -1
  68. package/src/behavioral/behavioral-metrics.ts +0 -179
  69. package/src/behavioral/config.ts +0 -3
@@ -0,0 +1,63 @@
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 Behavioral Metrics
20
+ * @export
21
+ * @class BehavioralMetrics
22
+ */
23
+ var BehavioralMetrics = exports.default = /*#__PURE__*/function (_GenericMetrics) {
24
+ (0, _inherits2.default)(BehavioralMetrics, _GenericMetrics);
25
+ var _super = _createSuper(BehavioralMetrics);
26
+ function BehavioralMetrics() {
27
+ (0, _classCallCheck2.default)(this, BehavioralMetrics);
28
+ return _super.apply(this, arguments);
29
+ }
30
+ (0, _createClass2.default)(BehavioralMetrics, [{
31
+ key: "submitBehavioralEvent",
32
+ value:
33
+ /**
34
+ * Submit a behavioral metric to our metrics endpoint.
35
+ * @param {MetricEventProduct} product the product from which the metric is being submitted, e.g. 'webex' web client, 'wxcc_desktop'
36
+ * @param {MetricEventAgent} agent the source of the action for this metric
37
+ * @param {string} target the 'thing' that this metric includes information about
38
+ * @param {MetricEventVerb} verb the action that this metric includes information about
39
+ * @param {EventPayload} payload information specific to this event. This should be flat, i.e. it should not include nested objects.
40
+ * @returns {Promise<any>}
41
+ */
42
+ function submitBehavioralEvent(_ref) {
43
+ var product = _ref.product,
44
+ agent = _ref.agent,
45
+ target = _ref.target,
46
+ verb = _ref.verb,
47
+ payload = _ref.payload;
48
+ var name = "".concat(product, ".").concat(agent, ".").concat(target, ".").concat(verb);
49
+ var event = this.createTaggedEventObject({
50
+ type: ['behavioral'],
51
+ name: name,
52
+ payload: payload
53
+ });
54
+ this.submitEvent({
55
+ kind: 'behavioral-events -> ',
56
+ name: name,
57
+ event: event
58
+ });
59
+ }
60
+ }]);
61
+ return BehavioralMetrics;
62
+ }(_genericMetrics.default);
63
+ //# sourceMappingURL=behavioral-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","BehavioralMetrics","exports","_GenericMetrics","_inherits2","_super","_classCallCheck2","_createClass2","key","value","submitBehavioralEvent","_ref","product","agent","target","verb","payload","name","concat","event","createTaggedEventObject","type","submitEvent","kind","GenericMetrics"],"sources":["behavioral-metrics.ts"],"sourcesContent":["import {MetricEventProduct, MetricEventAgent, MetricEventVerb, EventPayload} from './metrics.types';\nimport GenericMetrics from './generic-metrics';\n\n/**\n * @description Util class to handle Behavioral Metrics\n * @export\n * @class BehavioralMetrics\n */\nexport default class BehavioralMetrics extends GenericMetrics {\n /**\n * Submit a behavioral metric to our metrics endpoint.\n * @param {MetricEventProduct} product the product from which the metric is being submitted, e.g. 'webex' web client, 'wxcc_desktop'\n * @param {MetricEventAgent} agent the source of the action for this metric\n * @param {string} target the 'thing' that this metric includes information about\n * @param {MetricEventVerb} verb the action that this metric includes information about\n * @param {EventPayload} payload information specific to this event. This should be flat, i.e. it should not include nested objects.\n * @returns {Promise<any>}\n */\n public 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 const name = `${product}.${agent}.${target}.${verb}`;\n const event = this.createTaggedEventObject({\n type: ['behavioral'],\n name,\n payload,\n });\n this.submitEvent({kind: 'behavioral-events -> ', name, event});\n }\n}\n"],"mappings":";;;;;;;;;;;;;;AACA,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;AAE/C;AACA;AACA;AACA;AACA;AAJA,IAKqBC,iBAAiB,GAAAC,OAAA,CAAAjB,OAAA,0BAAAkB,eAAA;EAAA,IAAAC,UAAA,CAAAnB,OAAA,EAAAgB,iBAAA,EAAAE,eAAA;EAAA,IAAAE,MAAA,GAAA3B,YAAA,CAAAuB,iBAAA;EAAA,SAAAA,kBAAA;IAAA,IAAAK,gBAAA,CAAArB,OAAA,QAAAgB,iBAAA;IAAA,OAAAI,MAAA,CAAAd,KAAA,OAAAD,SAAA;EAAA;EAAA,IAAAiB,aAAA,CAAAtB,OAAA,EAAAgB,iBAAA;IAAAO,GAAA;IAAAC,KAAA;IACpC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACE,SAAAC,sBAAAC,IAAA,EAYG;MAAA,IAXDC,OAAO,GAAAD,IAAA,CAAPC,OAAO;QACPC,KAAK,GAAAF,IAAA,CAALE,KAAK;QACLC,MAAM,GAAAH,IAAA,CAANG,MAAM;QACNC,IAAI,GAAAJ,IAAA,CAAJI,IAAI;QACJC,OAAO,GAAAL,IAAA,CAAPK,OAAO;MAQP,IAAMC,IAAI,MAAAC,MAAA,CAAMN,OAAO,OAAAM,MAAA,CAAIL,KAAK,OAAAK,MAAA,CAAIJ,MAAM,OAAAI,MAAA,CAAIH,IAAI,CAAE;MACpD,IAAMI,KAAK,GAAG,IAAI,CAACC,uBAAuB,CAAC;QACzCC,IAAI,EAAE,CAAC,YAAY,CAAC;QACpBJ,IAAI,EAAJA,IAAI;QACJD,OAAO,EAAPA;MACF,CAAC,CAAC;MACF,IAAI,CAACM,WAAW,CAAC;QAACC,IAAI,EAAE,uBAAuB;QAAEN,IAAI,EAAJA,IAAI;QAAEE,KAAK,EAALA;MAAK,CAAC,CAAC;IAChE;EAAC;EAAA,OAAAlB,iBAAA;AAAA,EA9B4CuB,uBAAc"}
@@ -0,0 +1,169 @@
1
+ "use strict";
2
+
3
+ var _Reflect$construct = require("@babel/runtime-corejs2/core-js/reflect/construct");
4
+ var _Object$keys = require("@babel/runtime-corejs2/core-js/object/keys");
5
+ var _Object$getOwnPropertySymbols = require("@babel/runtime-corejs2/core-js/object/get-own-property-symbols");
6
+ var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptor");
7
+ var _Object$getOwnPropertyDescriptors = require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptors");
8
+ var _Object$defineProperties = require("@babel/runtime-corejs2/core-js/object/define-properties");
9
+ var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
10
+ var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
11
+ _Object$defineProperty(exports, "__esModule", {
12
+ value: true
13
+ });
14
+ exports.default = void 0;
15
+ var _now = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/date/now"));
16
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
17
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
18
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));
19
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/inherits"));
20
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/possibleConstructorReturn"));
21
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/getPrototypeOf"));
22
+ var _genericMetrics = _interopRequireDefault(require("./generic-metrics"));
23
+ function ownKeys(e, r) { var t = _Object$keys(e); if (_Object$getOwnPropertySymbols) { var o = _Object$getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return _Object$getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
24
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(e, _Object$getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { _Object$defineProperty(e, r, _Object$getOwnPropertyDescriptor(t, r)); }); } return e; }
25
+ 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); }; }
26
+ 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; } }
27
+ /**
28
+ * @description Util class to handle Buisness Metrics
29
+ * @export
30
+ * @class BusinessMetrics
31
+ */
32
+ var BusinessMetrics = exports.default = /*#__PURE__*/function (_GenericMetrics) {
33
+ (0, _inherits2.default)(BusinessMetrics, _GenericMetrics);
34
+ var _super = _createSuper(BusinessMetrics);
35
+ function BusinessMetrics() {
36
+ (0, _classCallCheck2.default)(this, BusinessMetrics);
37
+ return _super.apply(this, arguments);
38
+ }
39
+ (0, _createClass2.default)(BusinessMetrics, [{
40
+ key: "submitCallEndEvent",
41
+ value:
42
+ /**
43
+ * unfortunately, the pinot team does not allow changes to the schema of wbxapp_callend_metrics
44
+ * so we have to shim this layer specifically for this
45
+ * @param {EventPayload} payload payload of the metric
46
+ * @returns {Promise<any>}
47
+ */
48
+ function submitCallEndEvent(_ref) {
49
+ var payload = _ref.payload;
50
+ var event = {
51
+ type: ['business'],
52
+ eventPayload: {
53
+ key: 'callEnd',
54
+ client_timestamp: (0, _now.default)(),
55
+ appType: 'Web Client',
56
+ value: _objectSpread({}, payload)
57
+ }
58
+ };
59
+ return this.submitEvent({
60
+ kind: 'buisness-events:wbxapp_callend_metrics -> ',
61
+ name: 'wbxapp_callend_metrics',
62
+ event: event
63
+ });
64
+ }
65
+
66
+ /**
67
+ * Submit a buisness metric to our metrics endpoint, going to the default business_ucf table
68
+ * all event payload keys are converted into a hex string value
69
+ * unfortunately, the pinot team does not allow changes to the schema of business_metrics
70
+ * so we have to shim this layer specifically for this
71
+ * @param {string} name of the metric
72
+ * @param {EventPayload} payload payload of the metric
73
+ * @returns {Promise<any>}
74
+ */
75
+ }, {
76
+ key: "submitBusinessMetricsEvent",
77
+ value: function submitBusinessMetricsEvent(_ref2) {
78
+ var name = _ref2.name,
79
+ payload = _ref2.payload;
80
+ var event = {
81
+ type: ['business'],
82
+ eventPayload: {
83
+ key: name,
84
+ client_timestamp: (0, _now.default)(),
85
+ appType: 'Web Client',
86
+ value: _objectSpread(_objectSpread(_objectSpread({}, this.getContext()), this.getBrowserDetails()), payload)
87
+ }
88
+ };
89
+ return this.submitEvent({
90
+ kind: 'buisness-events:business_metrics -> ',
91
+ name: name,
92
+ event: event
93
+ });
94
+ }
95
+
96
+ /**
97
+ * Submit a buisness metric to our metrics endpoint, going to the default business_ucf table
98
+ * all event payload keys are converted into a hex string value
99
+ * @param {string} name of the metric
100
+ * @param {EventPayload} user payload of the metric
101
+ * @returns {Promise<any>}
102
+ */
103
+ }, {
104
+ key: "submitDefaultEvent",
105
+ value: function submitDefaultEvent(_ref3) {
106
+ var name = _ref3.name,
107
+ payload = _ref3.payload;
108
+ var event = {
109
+ type: ['business'],
110
+ eventPayload: {
111
+ key: name,
112
+ appType: 'Web Client',
113
+ client_timestamp: (0, _now.default)(),
114
+ context: this.getContext(),
115
+ browserDetails: this.getBrowserDetails(),
116
+ value: payload
117
+ }
118
+ };
119
+ return this.submitEvent({
120
+ kind: 'buisness-events:default -> ',
121
+ name: name,
122
+ event: event
123
+ });
124
+ }
125
+
126
+ /**
127
+ * Submit a buisness metric to our metrics endpoint.
128
+ * routes to the correct table with the correct schema payload by table
129
+ * @param {string} name of the metric, ignored if going to wbxapp_callend_metrics
130
+ * @param {EventPayload} payload user payload of the metric
131
+ * @param {Table} table optional - to submit the metric to and adapt the sent schema
132
+ * @returns {Promise<any>}
133
+ */
134
+ }, {
135
+ key: "submitBusinessEvent",
136
+ value: function submitBusinessEvent(_ref4) {
137
+ var name = _ref4.name,
138
+ payload = _ref4.payload,
139
+ table = _ref4.table;
140
+ if (!table) {
141
+ table = 'default';
142
+ }
143
+ switch (table) {
144
+ case 'wbxapp_callend_metrics':
145
+ return this.submitCallEndEvent({
146
+ payload: payload
147
+ });
148
+ case 'business_metrics':
149
+ return this.submitBusinessMetricsEvent({
150
+ name: name,
151
+ payload: payload
152
+ });
153
+ case 'business_ucf':
154
+ return this.submitDefaultEvent({
155
+ name: name,
156
+ payload: payload
157
+ });
158
+ case 'default':
159
+ default:
160
+ return this.submitDefaultEvent({
161
+ name: name,
162
+ payload: payload
163
+ });
164
+ }
165
+ }
166
+ }]);
167
+ return BusinessMetrics;
168
+ }(_genericMetrics.default);
169
+ //# sourceMappingURL=business-metrics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_genericMetrics","_interopRequireDefault","require","ownKeys","e","r","t","_Object$keys","_Object$getOwnPropertySymbols","o","filter","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","Object","forEach","_defineProperty2","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","result","NewTarget","constructor","_Reflect$construct","_possibleConstructorReturn2","Reflect","sham","Proxy","Boolean","prototype","valueOf","call","BusinessMetrics","exports","_GenericMetrics","_inherits2","_super","_classCallCheck2","_createClass2","key","value","submitCallEndEvent","_ref","payload","event","type","eventPayload","client_timestamp","_now","appType","submitEvent","kind","name","submitBusinessMetricsEvent","_ref2","getContext","getBrowserDetails","submitDefaultEvent","_ref3","context","browserDetails","submitBusinessEvent","_ref4","table","GenericMetrics"],"sources":["business-metrics.ts"],"sourcesContent":["import GenericMetrics from './generic-metrics';\nimport {EventPayload, Table} from './metrics.types';\n\n/**\n * @description Util class to handle Buisness Metrics\n * @export\n * @class BusinessMetrics\n */\nexport default class BusinessMetrics extends GenericMetrics {\n /**\n * unfortunately, the pinot team does not allow changes to the schema of wbxapp_callend_metrics\n * so we have to shim this layer specifically for this\n * @param {EventPayload} payload payload of the metric\n * @returns {Promise<any>}\n */\n private submitCallEndEvent({payload}: {payload: EventPayload}) {\n const event = {\n type: ['business'],\n eventPayload: {\n key: 'callEnd',\n client_timestamp: Date.now(),\n appType: 'Web Client',\n value: {\n ...payload,\n },\n },\n };\n\n return this.submitEvent({\n kind: 'buisness-events:wbxapp_callend_metrics -> ',\n name: 'wbxapp_callend_metrics',\n event,\n });\n }\n\n /**\n * Submit a buisness metric to our metrics endpoint, going to the default business_ucf table\n * all event payload keys are converted into a hex string value\n * unfortunately, the pinot team does not allow changes to the schema of business_metrics\n * so we have to shim this layer specifically for this\n * @param {string} name of the metric\n * @param {EventPayload} payload payload of the metric\n * @returns {Promise<any>}\n */\n private submitBusinessMetricsEvent({name, payload}: {name: string; payload: EventPayload}) {\n const event = {\n type: ['business'],\n eventPayload: {\n key: name,\n client_timestamp: Date.now(),\n appType: 'Web Client',\n value: {\n ...this.getContext(),\n ...this.getBrowserDetails(),\n ...payload,\n },\n },\n };\n\n return this.submitEvent({kind: 'buisness-events:business_metrics -> ', name, event});\n }\n\n /**\n * Submit a buisness metric to our metrics endpoint, going to the default business_ucf table\n * all event payload keys are converted into a hex string value\n * @param {string} name of the metric\n * @param {EventPayload} user payload of the metric\n * @returns {Promise<any>}\n */\n private submitDefaultEvent({name, payload}: {name: string; payload: EventPayload}) {\n const event = {\n type: ['business'],\n eventPayload: {\n key: name,\n appType: 'Web Client',\n client_timestamp: Date.now(),\n context: this.getContext(),\n browserDetails: this.getBrowserDetails(),\n value: payload,\n },\n };\n\n return this.submitEvent({kind: 'buisness-events:default -> ', name, event});\n }\n\n /**\n * Submit a buisness metric to our metrics endpoint.\n * routes to the correct table with the correct schema payload by table\n * @param {string} name of the metric, ignored if going to wbxapp_callend_metrics\n * @param {EventPayload} payload user payload of the metric\n * @param {Table} table optional - to submit the metric to and adapt the sent schema\n * @returns {Promise<any>}\n */\n public submitBusinessEvent({\n name,\n payload,\n table,\n }: {\n name: string;\n payload: EventPayload;\n table?: Table;\n }): Promise<void> {\n if (!table) {\n table = 'default';\n }\n switch (table) {\n case 'wbxapp_callend_metrics':\n return this.submitCallEndEvent({payload});\n case 'business_metrics':\n return this.submitBusinessMetricsEvent({name, payload});\n case 'business_ucf':\n return this.submitDefaultEvent({name, payload});\n case 'default':\n default:\n return this.submitDefaultEvent({name, payload});\n }\n }\n}\n"],"mappings":"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"}
@@ -75,7 +75,7 @@ var CallDiagnosticLatencies = exports.default = /*#__PURE__*/function (_WebexPlu
75
75
  value: function getMeeting() {
76
76
  if (this.meetingId) {
77
77
  // @ts-ignore
78
- return this.webex.meetings.meetingCollection.get(this.meetingId);
78
+ return this.webex.meetings.getBasicMeetingInformation(this.meetingId);
79
79
  }
80
80
  return undefined;
81
81
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_webexCore","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","CallDiagnosticLatencies","exports","_WebexPlugin","_inherits2","_super","_this","_classCallCheck2","_len","length","args","Array","_key","concat","_defineProperty2","_assertThisInitialized2","latencyTimestamps","_map","precomputedLatencies","_createClass2","key","value","clearTimestamps","clear","setMeetingId","meetingId","getMeeting","webex","meetings","meetingCollection","get","undefined","saveTimestamp","_ref","_ref$value","Date","getTime","_ref$options","options","saveFirstTimestampOnly","set","saveLatency","accumulate","existingValue","measureLatency","callback","_this2","start","performance","now","finally","has","getDiffBetweenTimestamps","a","b","end","getMeetingInfoReqResp","getShowInterstitialTime","getU2CTime","u2cLatency","Math","floor","getRegisterWDMDeviceJMT","getCallInitJoinReq","getJoinReqResp","getTurnDiscoveryTime","getLocalSDPGenRemoteSDPRecv","getICESetupTime","getAudioICESetupTime","getVideoICESetupTime","getShareICESetupTime","getStayLobbyTime","getPageJMT","getDownloadTimeJMT","getClickToInterstitial","getInterstitialToJoinOK","getCallInitMediaEngineReady","getInterstitialToMediaOKJMT","interstitialJoinClickTimestamp","connectedMedia","lobbyTime","getTotalJMT","clickToInterstitial","interstitialToJoinOk","getJoinConfJMT","joinReqResp","ICESetupTime","getTotalMediaJMT","joinConfJMT","_this$getMeeting","totalMediaJMT","allowMediaInLobby","getClientJMT","getAudioJoinRespRxStart","getVideoJoinRespRxStart","getReachabilityClustersReqResp","reachablityClusterReqResp","getAudioJoinRespTxStart","getVideoJoinRespTxStart","getExchangeCITokenJMT","exchangeCITokenJMT","getRefreshCaptchaReqResp","refreshCaptchaReqResp","getDownloadIntelligenceModelsReqResp","downloadIntelligenceModelsReqResp","getOtherAppApiReqResp","otherAppApiJMT","WebexPlugin"],"sources":["call-diagnostic-metrics-latencies.ts"],"sourcesContent":["/* eslint-disable class-methods-use-this */\n/* eslint-disable valid-jsdoc */\nimport {WebexPlugin} from '@webex/webex-core';\n\nimport {MetricEventNames, PreComputedLatencies} from '../metrics.types';\n\n// we only care about client event and feature event for now\n\n/**\n * @description Helper class to store latencies timestamp and to calculate various latencies for CA.\n * @exports\n * @class CallDiagnosticLatencies\n */\nexport default class CallDiagnosticLatencies extends WebexPlugin {\n latencyTimestamps: Map<MetricEventNames, number>;\n precomputedLatencies: Map<PreComputedLatencies, number>;\n // meetingId that the current latencies are for\n private meetingId?: string;\n\n /**\n * @constructor\n */\n constructor(...args) {\n super(...args);\n this.latencyTimestamps = new Map();\n this.precomputedLatencies = new Map();\n }\n\n /**\n * Clear timestamps\n */\n public clearTimestamps() {\n this.latencyTimestamps.clear();\n this.precomputedLatencies.clear();\n }\n\n /**\n * Associate current latencies with a meeting id\n * @param meetingId\n */\n private setMeetingId(meetingId: string) {\n this.meetingId = meetingId;\n }\n\n /**\n * Returns the meeting object associated with current latencies\n * @returns meeting object\n */\n private getMeeting() {\n if (this.meetingId) {\n // @ts-ignore\n return this.webex.meetings.meetingCollection.get(this.meetingId);\n }\n\n return undefined;\n }\n\n /**\n * Store timestamp value\n * @param key - key\n * @param value - value\n * @param options - store options\n * @throws\n * @returns\n */\n public saveTimestamp({\n key,\n value = new Date().getTime(),\n options = {},\n }: {\n key: MetricEventNames;\n value?: number;\n options?: {meetingId?: string};\n }) {\n // save the meetingId so we can use the meeting object in latency calculations if needed\n const {meetingId} = options;\n if (meetingId) {\n this.setMeetingId(meetingId);\n }\n // for some events we're only interested in the first timestamp not last\n // as these events can happen multiple times\n if (\n key === 'client.media.rx.start' ||\n key === 'client.media.tx.start' ||\n key === 'internal.client.meetinginfo.request' ||\n key === 'internal.client.meetinginfo.response'\n ) {\n this.saveFirstTimestampOnly(key, value);\n } else {\n this.latencyTimestamps.set(key, value);\n }\n }\n\n /**\n * Store precomputed latency value\n * @param key - key\n * @param value - value\n * @param accumulate - when it is true, it overwrites existing value with sum of the current value and the new measurement otherwise just store the new measurement\n * @throws\n * @returns\n */\n public saveLatency(key: PreComputedLatencies, value: number, accumulate = false) {\n const existingValue = accumulate ? this.precomputedLatencies.get(key) || 0 : 0;\n this.precomputedLatencies.set(key, value + existingValue);\n }\n\n /**\n * Measure latency for a request\n * @param callback - callback for which you would like to measure latency\n * @param key - key\n * @param accumulate - when it is true, it overwrites existing value with sum of the current value and the new measurement otherwise just store the new measurement\n * @returns\n */\n public measureLatency(\n callback: () => Promise<unknown>,\n key: PreComputedLatencies,\n accumulate = false\n ) {\n const start = performance.now();\n\n return callback().finally(() => {\n this.saveLatency(key, performance.now() - start, accumulate);\n });\n }\n\n /**\n * Store only the first timestamp value for the given key\n * @param key - key\n * @param value -value\n * @throws\n * @returns\n */\n saveFirstTimestampOnly(key: MetricEventNames, value: number = new Date().getTime()) {\n if (this.latencyTimestamps.has(key)) {\n return;\n }\n this.latencyTimestamps.set(key, value);\n }\n\n /**\n * Helper to calculate end - start\n * @param a start\n * @param b end\n * @returns latency\n */\n public getDiffBetweenTimestamps(a: MetricEventNames, b: MetricEventNames) {\n const start = this.latencyTimestamps.get(a);\n const end = this.latencyTimestamps.get(b);\n if (start && end) {\n return end - start;\n }\n\n return undefined;\n }\n\n /**\n * Meeting Info Request\n * @note Meeting Info request happen not just in the join phase. CA requires\n * metrics around meeting info request that are only part of join phase.\n * This internal.* event is used to track the real timestamps\n * (when the actual request/response happen). This is because the actual CA event is\n * sent inside the join method on the meeting object based on some logic, but that's not exactly when\n * those events are actually fired. The logic only confirms that they have happened, and we send them over.\n * @returns - latency\n */\n public getMeetingInfoReqResp() {\n return this.getDiffBetweenTimestamps(\n 'internal.client.meetinginfo.request',\n 'internal.client.meetinginfo.response'\n );\n }\n\n /**\n * Interstitial Time\n * @returns - latency\n */\n public getShowInterstitialTime() {\n return this.getDiffBetweenTimestamps(\n 'client.interstitial-window.start-launch',\n 'internal.client.interstitial-window.click.joinbutton'\n );\n }\n\n /**\n * getU2CTime\n * @returns - latency\n */\n public getU2CTime() {\n const u2cLatency = this.precomputedLatencies.get('internal.get.u2c.time');\n\n return u2cLatency ? Math.floor(u2cLatency) : undefined;\n }\n\n /**\n * Device Register Time\n * @returns - latency\n */\n public getRegisterWDMDeviceJMT() {\n return this.getDiffBetweenTimestamps(\n 'internal.register.device.request',\n 'internal.register.device.response'\n );\n }\n\n /**\n * Call Init Join Request\n * @returns - latency\n */\n public getCallInitJoinReq() {\n return this.getDiffBetweenTimestamps(\n 'internal.client.interstitial-window.click.joinbutton',\n 'client.locus.join.request'\n );\n }\n\n /**\n * Locus Join Request\n * @returns - latency\n */\n public getJoinReqResp() {\n return this.getDiffBetweenTimestamps('client.locus.join.request', 'client.locus.join.response');\n }\n\n /**\n * Time taken to do turn discovery\n * @returns - latency\n */\n public getTurnDiscoveryTime() {\n return this.getDiffBetweenTimestamps(\n 'internal.client.add-media.turn-discovery.start',\n 'internal.client.add-media.turn-discovery.end'\n );\n }\n\n /**\n * Local SDP Generated Remote SDP REceived\n * @returns - latency\n */\n public getLocalSDPGenRemoteSDPRecv() {\n return this.getDiffBetweenTimestamps(\n 'client.media-engine.local-sdp-generated',\n 'client.media-engine.remote-sdp-received'\n );\n }\n\n /**\n * ICE Setup Time\n * @returns - latency\n */\n public getICESetupTime() {\n return this.getDiffBetweenTimestamps('client.ice.start', 'client.ice.end');\n }\n\n /**\n * Audio ICE time\n * @returns - latency\n */\n public getAudioICESetupTime() {\n return this.getDiffBetweenTimestamps('client.ice.start', 'client.ice.end');\n }\n\n /**\n * Video ICE Time\n * @returns - latency\n */\n public getVideoICESetupTime() {\n return this.getDiffBetweenTimestamps('client.ice.start', 'client.ice.end');\n }\n\n /**\n * Share ICE Time\n * @returns - latency\n */\n public getShareICESetupTime() {\n return this.getDiffBetweenTimestamps('client.ice.start', 'client.ice.end');\n }\n\n /**\n * Stay Lobby Time\n * @returns - latency\n */\n public getStayLobbyTime() {\n return this.getDiffBetweenTimestamps(\n 'client.locus.join.response',\n 'internal.host.meeting.participant.admitted'\n );\n }\n\n /**\n * Page JMT\n * @returns - latency\n */\n public getPageJMT() {\n return this.precomputedLatencies.get('internal.client.pageJMT') || undefined;\n }\n\n /**\n * Download Time JMT\n * @returns - latency\n */\n public getDownloadTimeJMT() {\n return this.precomputedLatencies.get('internal.download.time') || undefined;\n }\n\n /**\n * Click To Interstitial\n * @returns - latency\n */\n public getClickToInterstitial() {\n // for normal join (where green join button exists before interstitial, i.e reminder, space list etc)\n if (this.latencyTimestamps.get('internal.client.meeting.click.joinbutton')) {\n return this.getDiffBetweenTimestamps(\n 'internal.client.meeting.click.joinbutton',\n 'internal.client.meeting.interstitial-window.showed'\n );\n }\n\n // for cross launch and guest flows\n return this.precomputedLatencies.get('internal.click.to.interstitial') || undefined;\n }\n\n /**\n * Interstitial To Join Ok\n * @returns - latency\n */\n public getInterstitialToJoinOK() {\n return this.getDiffBetweenTimestamps(\n 'internal.client.interstitial-window.click.joinbutton',\n 'client.locus.join.response'\n );\n }\n\n /**\n * Call Init To MediaEngineReady\n * @returns - latency\n */\n public getCallInitMediaEngineReady() {\n return this.getDiffBetweenTimestamps(\n 'internal.client.interstitial-window.click.joinbutton',\n 'client.media-engine.ready'\n );\n }\n\n /**\n * Interstitial To Media Ok\n * @returns - latency\n */\n public getInterstitialToMediaOKJMT() {\n const interstitialJoinClickTimestamp = this.latencyTimestamps.get(\n 'internal.client.interstitial-window.click.joinbutton'\n );\n\n // get the first timestamp\n const connectedMedia = this.latencyTimestamps.get('client.ice.end');\n\n const lobbyTime = this.getStayLobbyTime() || 0;\n\n if (interstitialJoinClickTimestamp && connectedMedia) {\n return connectedMedia - interstitialJoinClickTimestamp - lobbyTime;\n }\n\n return undefined;\n }\n\n /**\n * Total JMT\n * @returns - latency\n */\n public getTotalJMT() {\n const clickToInterstitial = this.getClickToInterstitial();\n const interstitialToJoinOk = this.getInterstitialToJoinOK();\n\n if (clickToInterstitial && interstitialToJoinOk) {\n return clickToInterstitial + interstitialToJoinOk;\n }\n\n return undefined;\n }\n\n /**\n * Join Conf JMT\n * @returns - latency\n */\n public getJoinConfJMT() {\n const joinReqResp = this.getJoinReqResp();\n const ICESetupTime = this.getICESetupTime();\n\n if (joinReqResp && ICESetupTime) {\n return joinReqResp + ICESetupTime;\n }\n\n return undefined;\n }\n\n /**\n * Total Media JMT\n * @returns - latency\n */\n public getTotalMediaJMT() {\n const clickToInterstitial = this.getClickToInterstitial();\n const interstitialToJoinOk = this.getInterstitialToJoinOK();\n const joinConfJMT = this.getJoinConfJMT();\n const lobbyTime = this.getStayLobbyTime();\n\n if (clickToInterstitial && interstitialToJoinOk && joinConfJMT) {\n const totalMediaJMT = clickToInterstitial + interstitialToJoinOk + joinConfJMT;\n if (this.getMeeting()?.allowMediaInLobby) {\n return totalMediaJMT;\n }\n\n return totalMediaJMT - lobbyTime;\n }\n\n return undefined;\n }\n\n /**\n * Client JMT\n * @returns - latency\n */\n public getClientJMT() {\n const interstitialToJoinOk = this.getInterstitialToJoinOK();\n const joinConfJMT = this.getJoinConfJMT();\n\n if (interstitialToJoinOk && joinConfJMT) {\n return interstitialToJoinOk - joinConfJMT;\n }\n\n return undefined;\n }\n\n /**\n * Audio setup delay receive\n */\n public getAudioJoinRespRxStart() {\n return this.getDiffBetweenTimestamps('client.locus.join.response', 'client.media.rx.start');\n }\n\n /**\n * Video setup delay receive\n */\n public getVideoJoinRespRxStart() {\n return this.getDiffBetweenTimestamps('client.locus.join.response', 'client.media.rx.start');\n }\n\n /**\n * Total latency for all get cluster request.\n */\n public getReachabilityClustersReqResp() {\n const reachablityClusterReqResp = this.precomputedLatencies.get('internal.get.cluster.time');\n\n return reachablityClusterReqResp ? Math.floor(reachablityClusterReqResp) : undefined;\n }\n\n /**\n * Audio setup delay transmit\n */\n public getAudioJoinRespTxStart() {\n return this.getDiffBetweenTimestamps('client.locus.join.response', 'client.media.tx.start');\n }\n\n /**\n * Video setup delay transmit\n */\n public getVideoJoinRespTxStart() {\n return this.getDiffBetweenTimestamps('client.locus.join.response', 'client.media.tx.start');\n }\n\n /**\n * Total latency for all exchange ci token.\n */\n public getExchangeCITokenJMT() {\n const exchangeCITokenJMT = this.precomputedLatencies.get('internal.exchange.ci.token.time');\n\n return exchangeCITokenJMT ? Math.floor(exchangeCITokenJMT) : undefined;\n }\n\n /**\n * Total latency for all refresh captcha requests.\n */\n public getRefreshCaptchaReqResp() {\n const refreshCaptchaReqResp = this.precomputedLatencies.get('internal.refresh.captcha.time');\n\n return refreshCaptchaReqResp ? Math.floor(refreshCaptchaReqResp) : undefined;\n }\n\n /**\n * Get the latency for downloading intelligence models.\n * @returns - latency\n */\n public getDownloadIntelligenceModelsReqResp() {\n const downloadIntelligenceModelsReqResp = this.precomputedLatencies.get(\n 'internal.api.fetch.intelligence.models'\n );\n\n return downloadIntelligenceModelsReqResp\n ? Math.floor(downloadIntelligenceModelsReqResp)\n : undefined;\n }\n\n /**\n * Get the total latency for all other app API requests.\n * Excludes meeting info, because it's measured separately.\n * @returns - latency\n */\n public getOtherAppApiReqResp() {\n const otherAppApiJMT = this.precomputedLatencies.get('internal.other.app.api.time');\n\n return otherAppApiJMT > 0 ? Math.floor(otherAppApiJMT) : undefined;\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["_webexCore","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","CallDiagnosticLatencies","exports","_WebexPlugin","_inherits2","_super","_this","_classCallCheck2","_len","length","args","Array","_key","concat","_defineProperty2","_assertThisInitialized2","latencyTimestamps","_map","precomputedLatencies","_createClass2","key","value","clearTimestamps","clear","setMeetingId","meetingId","getMeeting","webex","meetings","getBasicMeetingInformation","undefined","saveTimestamp","_ref","_ref$value","Date","getTime","_ref$options","options","saveFirstTimestampOnly","set","saveLatency","accumulate","existingValue","get","measureLatency","callback","_this2","start","performance","now","finally","has","getDiffBetweenTimestamps","a","b","end","getMeetingInfoReqResp","getShowInterstitialTime","getU2CTime","u2cLatency","Math","floor","getRegisterWDMDeviceJMT","getCallInitJoinReq","getJoinReqResp","getTurnDiscoveryTime","getLocalSDPGenRemoteSDPRecv","getICESetupTime","getAudioICESetupTime","getVideoICESetupTime","getShareICESetupTime","getStayLobbyTime","getPageJMT","getDownloadTimeJMT","getClickToInterstitial","getInterstitialToJoinOK","getCallInitMediaEngineReady","getInterstitialToMediaOKJMT","interstitialJoinClickTimestamp","connectedMedia","lobbyTime","getTotalJMT","clickToInterstitial","interstitialToJoinOk","getJoinConfJMT","joinReqResp","ICESetupTime","getTotalMediaJMT","joinConfJMT","_this$getMeeting","totalMediaJMT","allowMediaInLobby","getClientJMT","getAudioJoinRespRxStart","getVideoJoinRespRxStart","getReachabilityClustersReqResp","reachablityClusterReqResp","getAudioJoinRespTxStart","getVideoJoinRespTxStart","getExchangeCITokenJMT","exchangeCITokenJMT","getRefreshCaptchaReqResp","refreshCaptchaReqResp","getDownloadIntelligenceModelsReqResp","downloadIntelligenceModelsReqResp","getOtherAppApiReqResp","otherAppApiJMT","WebexPlugin"],"sources":["call-diagnostic-metrics-latencies.ts"],"sourcesContent":["/* eslint-disable class-methods-use-this */\n/* eslint-disable valid-jsdoc */\nimport {WebexPlugin} from '@webex/webex-core';\n\nimport {MetricEventNames, PreComputedLatencies} from '../metrics.types';\n\n// we only care about client event and feature event for now\n\n/**\n * @description Helper class to store latencies timestamp and to calculate various latencies for CA.\n * @exports\n * @class CallDiagnosticLatencies\n */\nexport default class CallDiagnosticLatencies extends WebexPlugin {\n latencyTimestamps: Map<MetricEventNames, number>;\n precomputedLatencies: Map<PreComputedLatencies, number>;\n // meetingId that the current latencies are for\n private meetingId?: string;\n\n /**\n * @constructor\n */\n constructor(...args) {\n super(...args);\n this.latencyTimestamps = new Map();\n this.precomputedLatencies = new Map();\n }\n\n /**\n * Clear timestamps\n */\n public clearTimestamps() {\n this.latencyTimestamps.clear();\n this.precomputedLatencies.clear();\n }\n\n /**\n * Associate current latencies with a meeting id\n * @param meetingId\n */\n private setMeetingId(meetingId: string) {\n this.meetingId = meetingId;\n }\n\n /**\n * Returns the meeting object associated with current latencies\n * @returns meeting object\n */\n private getMeeting() {\n if (this.meetingId) {\n // @ts-ignore\n return this.webex.meetings.getBasicMeetingInformation(this.meetingId);\n }\n\n return undefined;\n }\n\n /**\n * Store timestamp value\n * @param key - key\n * @param value - value\n * @param options - store options\n * @throws\n * @returns\n */\n public saveTimestamp({\n key,\n value = new Date().getTime(),\n options = {},\n }: {\n key: MetricEventNames;\n value?: number;\n options?: {meetingId?: string};\n }) {\n // save the meetingId so we can use the meeting object in latency calculations if needed\n const {meetingId} = options;\n if (meetingId) {\n this.setMeetingId(meetingId);\n }\n // for some events we're only interested in the first timestamp not last\n // as these events can happen multiple times\n if (\n key === 'client.media.rx.start' ||\n key === 'client.media.tx.start' ||\n key === 'internal.client.meetinginfo.request' ||\n key === 'internal.client.meetinginfo.response'\n ) {\n this.saveFirstTimestampOnly(key, value);\n } else {\n this.latencyTimestamps.set(key, value);\n }\n }\n\n /**\n * Store precomputed latency value\n * @param key - key\n * @param value - value\n * @param accumulate - when it is true, it overwrites existing value with sum of the current value and the new measurement otherwise just store the new measurement\n * @throws\n * @returns\n */\n public saveLatency(key: PreComputedLatencies, value: number, accumulate = false) {\n const existingValue = accumulate ? this.precomputedLatencies.get(key) || 0 : 0;\n this.precomputedLatencies.set(key, value + existingValue);\n }\n\n /**\n * Measure latency for a request\n * @param callback - callback for which you would like to measure latency\n * @param key - key\n * @param accumulate - when it is true, it overwrites existing value with sum of the current value and the new measurement otherwise just store the new measurement\n * @returns\n */\n public measureLatency(\n callback: () => Promise<unknown>,\n key: PreComputedLatencies,\n accumulate = false\n ) {\n const start = performance.now();\n\n return callback().finally(() => {\n this.saveLatency(key, performance.now() - start, accumulate);\n });\n }\n\n /**\n * Store only the first timestamp value for the given key\n * @param key - key\n * @param value -value\n * @throws\n * @returns\n */\n saveFirstTimestampOnly(key: MetricEventNames, value: number = new Date().getTime()) {\n if (this.latencyTimestamps.has(key)) {\n return;\n }\n this.latencyTimestamps.set(key, value);\n }\n\n /**\n * Helper to calculate end - start\n * @param a start\n * @param b end\n * @returns latency\n */\n public getDiffBetweenTimestamps(a: MetricEventNames, b: MetricEventNames) {\n const start = this.latencyTimestamps.get(a);\n const end = this.latencyTimestamps.get(b);\n if (start && end) {\n return end - start;\n }\n\n return undefined;\n }\n\n /**\n * Meeting Info Request\n * @note Meeting Info request happen not just in the join phase. CA requires\n * metrics around meeting info request that are only part of join phase.\n * This internal.* event is used to track the real timestamps\n * (when the actual request/response happen). This is because the actual CA event is\n * sent inside the join method on the meeting object based on some logic, but that's not exactly when\n * those events are actually fired. The logic only confirms that they have happened, and we send them over.\n * @returns - latency\n */\n public getMeetingInfoReqResp() {\n return this.getDiffBetweenTimestamps(\n 'internal.client.meetinginfo.request',\n 'internal.client.meetinginfo.response'\n );\n }\n\n /**\n * Interstitial Time\n * @returns - latency\n */\n public getShowInterstitialTime() {\n return this.getDiffBetweenTimestamps(\n 'client.interstitial-window.start-launch',\n 'internal.client.interstitial-window.click.joinbutton'\n );\n }\n\n /**\n * getU2CTime\n * @returns - latency\n */\n public getU2CTime() {\n const u2cLatency = this.precomputedLatencies.get('internal.get.u2c.time');\n\n return u2cLatency ? Math.floor(u2cLatency) : undefined;\n }\n\n /**\n * Device Register Time\n * @returns - latency\n */\n public getRegisterWDMDeviceJMT() {\n return this.getDiffBetweenTimestamps(\n 'internal.register.device.request',\n 'internal.register.device.response'\n );\n }\n\n /**\n * Call Init Join Request\n * @returns - latency\n */\n public getCallInitJoinReq() {\n return this.getDiffBetweenTimestamps(\n 'internal.client.interstitial-window.click.joinbutton',\n 'client.locus.join.request'\n );\n }\n\n /**\n * Locus Join Request\n * @returns - latency\n */\n public getJoinReqResp() {\n return this.getDiffBetweenTimestamps('client.locus.join.request', 'client.locus.join.response');\n }\n\n /**\n * Time taken to do turn discovery\n * @returns - latency\n */\n public getTurnDiscoveryTime() {\n return this.getDiffBetweenTimestamps(\n 'internal.client.add-media.turn-discovery.start',\n 'internal.client.add-media.turn-discovery.end'\n );\n }\n\n /**\n * Local SDP Generated Remote SDP REceived\n * @returns - latency\n */\n public getLocalSDPGenRemoteSDPRecv() {\n return this.getDiffBetweenTimestamps(\n 'client.media-engine.local-sdp-generated',\n 'client.media-engine.remote-sdp-received'\n );\n }\n\n /**\n * ICE Setup Time\n * @returns - latency\n */\n public getICESetupTime() {\n return this.getDiffBetweenTimestamps('client.ice.start', 'client.ice.end');\n }\n\n /**\n * Audio ICE time\n * @returns - latency\n */\n public getAudioICESetupTime() {\n return this.getDiffBetweenTimestamps('client.ice.start', 'client.ice.end');\n }\n\n /**\n * Video ICE Time\n * @returns - latency\n */\n public getVideoICESetupTime() {\n return this.getDiffBetweenTimestamps('client.ice.start', 'client.ice.end');\n }\n\n /**\n * Share ICE Time\n * @returns - latency\n */\n public getShareICESetupTime() {\n return this.getDiffBetweenTimestamps('client.ice.start', 'client.ice.end');\n }\n\n /**\n * Stay Lobby Time\n * @returns - latency\n */\n public getStayLobbyTime() {\n return this.getDiffBetweenTimestamps(\n 'client.locus.join.response',\n 'internal.host.meeting.participant.admitted'\n );\n }\n\n /**\n * Page JMT\n * @returns - latency\n */\n public getPageJMT() {\n return this.precomputedLatencies.get('internal.client.pageJMT') || undefined;\n }\n\n /**\n * Download Time JMT\n * @returns - latency\n */\n public getDownloadTimeJMT() {\n return this.precomputedLatencies.get('internal.download.time') || undefined;\n }\n\n /**\n * Click To Interstitial\n * @returns - latency\n */\n public getClickToInterstitial() {\n // for normal join (where green join button exists before interstitial, i.e reminder, space list etc)\n if (this.latencyTimestamps.get('internal.client.meeting.click.joinbutton')) {\n return this.getDiffBetweenTimestamps(\n 'internal.client.meeting.click.joinbutton',\n 'internal.client.meeting.interstitial-window.showed'\n );\n }\n\n // for cross launch and guest flows\n return this.precomputedLatencies.get('internal.click.to.interstitial') || undefined;\n }\n\n /**\n * Interstitial To Join Ok\n * @returns - latency\n */\n public getInterstitialToJoinOK() {\n return this.getDiffBetweenTimestamps(\n 'internal.client.interstitial-window.click.joinbutton',\n 'client.locus.join.response'\n );\n }\n\n /**\n * Call Init To MediaEngineReady\n * @returns - latency\n */\n public getCallInitMediaEngineReady() {\n return this.getDiffBetweenTimestamps(\n 'internal.client.interstitial-window.click.joinbutton',\n 'client.media-engine.ready'\n );\n }\n\n /**\n * Interstitial To Media Ok\n * @returns - latency\n */\n public getInterstitialToMediaOKJMT() {\n const interstitialJoinClickTimestamp = this.latencyTimestamps.get(\n 'internal.client.interstitial-window.click.joinbutton'\n );\n\n // get the first timestamp\n const connectedMedia = this.latencyTimestamps.get('client.ice.end');\n\n const lobbyTime = this.getStayLobbyTime() || 0;\n\n if (interstitialJoinClickTimestamp && connectedMedia) {\n return connectedMedia - interstitialJoinClickTimestamp - lobbyTime;\n }\n\n return undefined;\n }\n\n /**\n * Total JMT\n * @returns - latency\n */\n public getTotalJMT() {\n const clickToInterstitial = this.getClickToInterstitial();\n const interstitialToJoinOk = this.getInterstitialToJoinOK();\n\n if (clickToInterstitial && interstitialToJoinOk) {\n return clickToInterstitial + interstitialToJoinOk;\n }\n\n return undefined;\n }\n\n /**\n * Join Conf JMT\n * @returns - latency\n */\n public getJoinConfJMT() {\n const joinReqResp = this.getJoinReqResp();\n const ICESetupTime = this.getICESetupTime();\n\n if (joinReqResp && ICESetupTime) {\n return joinReqResp + ICESetupTime;\n }\n\n return undefined;\n }\n\n /**\n * Total Media JMT\n * @returns - latency\n */\n public getTotalMediaJMT() {\n const clickToInterstitial = this.getClickToInterstitial();\n const interstitialToJoinOk = this.getInterstitialToJoinOK();\n const joinConfJMT = this.getJoinConfJMT();\n const lobbyTime = this.getStayLobbyTime();\n\n if (clickToInterstitial && interstitialToJoinOk && joinConfJMT) {\n const totalMediaJMT = clickToInterstitial + interstitialToJoinOk + joinConfJMT;\n if (this.getMeeting()?.allowMediaInLobby) {\n return totalMediaJMT;\n }\n\n return totalMediaJMT - lobbyTime;\n }\n\n return undefined;\n }\n\n /**\n * Client JMT\n * @returns - latency\n */\n public getClientJMT() {\n const interstitialToJoinOk = this.getInterstitialToJoinOK();\n const joinConfJMT = this.getJoinConfJMT();\n\n if (interstitialToJoinOk && joinConfJMT) {\n return interstitialToJoinOk - joinConfJMT;\n }\n\n return undefined;\n }\n\n /**\n * Audio setup delay receive\n */\n public getAudioJoinRespRxStart() {\n return this.getDiffBetweenTimestamps('client.locus.join.response', 'client.media.rx.start');\n }\n\n /**\n * Video setup delay receive\n */\n public getVideoJoinRespRxStart() {\n return this.getDiffBetweenTimestamps('client.locus.join.response', 'client.media.rx.start');\n }\n\n /**\n * Total latency for all get cluster request.\n */\n public getReachabilityClustersReqResp() {\n const reachablityClusterReqResp = this.precomputedLatencies.get('internal.get.cluster.time');\n\n return reachablityClusterReqResp ? Math.floor(reachablityClusterReqResp) : undefined;\n }\n\n /**\n * Audio setup delay transmit\n */\n public getAudioJoinRespTxStart() {\n return this.getDiffBetweenTimestamps('client.locus.join.response', 'client.media.tx.start');\n }\n\n /**\n * Video setup delay transmit\n */\n public getVideoJoinRespTxStart() {\n return this.getDiffBetweenTimestamps('client.locus.join.response', 'client.media.tx.start');\n }\n\n /**\n * Total latency for all exchange ci token.\n */\n public getExchangeCITokenJMT() {\n const exchangeCITokenJMT = this.precomputedLatencies.get('internal.exchange.ci.token.time');\n\n return exchangeCITokenJMT ? Math.floor(exchangeCITokenJMT) : undefined;\n }\n\n /**\n * Total latency for all refresh captcha requests.\n */\n public getRefreshCaptchaReqResp() {\n const refreshCaptchaReqResp = this.precomputedLatencies.get('internal.refresh.captcha.time');\n\n return refreshCaptchaReqResp ? Math.floor(refreshCaptchaReqResp) : undefined;\n }\n\n /**\n * Get the latency for downloading intelligence models.\n * @returns - latency\n */\n public getDownloadIntelligenceModelsReqResp() {\n const downloadIntelligenceModelsReqResp = this.precomputedLatencies.get(\n 'internal.api.fetch.intelligence.models'\n );\n\n return downloadIntelligenceModelsReqResp\n ? Math.floor(downloadIntelligenceModelsReqResp)\n : undefined;\n }\n\n /**\n * Get the total latency for all other app API requests.\n * Excludes meeting info, because it's measured separately.\n * @returns - latency\n */\n public getOtherAppApiReqResp() {\n const otherAppApiJMT = this.precomputedLatencies.get('internal.other.app.api.time');\n\n return otherAppApiJMT > 0 ? Math.floor(otherAppApiJMT) : undefined;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAEA,IAAAA,UAAA,GAAAC,OAAA;AAA8C,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,sBAF9C,4CACA;AAKA;AAEA;AACA;AACA;AACA;AACA;AAJA,IAKqBC,uBAAuB,GAAAC,OAAA,CAAAjB,OAAA,0BAAAkB,YAAA;EAAA,IAAAC,UAAA,CAAAnB,OAAA,EAAAgB,uBAAA,EAAAE,YAAA;EAAA,IAAAE,MAAA,GAAA3B,YAAA,CAAAuB,uBAAA;EAM1C;AACF;AACA;EACE,SAAAA,wBAAA,EAAqB;IAAA,IAAAK,KAAA;IAAA,IAAAC,gBAAA,CAAAtB,OAAA,QAAAgB,uBAAA;IAAA,SAAAO,IAAA,GAAAlB,SAAA,CAAAmB,MAAA,EAANC,IAAI,OAAAC,KAAA,CAAAH,IAAA,GAAAI,IAAA,MAAAA,IAAA,GAAAJ,IAAA,EAAAI,IAAA;MAAJF,IAAI,CAAAE,IAAA,IAAAtB,SAAA,CAAAsB,IAAA;IAAA;IACjBN,KAAA,GAAAD,MAAA,CAAAN,IAAA,CAAAR,KAAA,CAAAc,MAAA,SAAAQ,MAAA,CAASH,IAAI;IAAE,IAAAI,gBAAA,CAAA7B,OAAA,MAAA8B,uBAAA,CAAA9B,OAAA,EAAAqB,KAAA;IAAA,IAAAQ,gBAAA,CAAA7B,OAAA,MAAA8B,uBAAA,CAAA9B,OAAA,EAAAqB,KAAA;IAPjB;IAAA,IAAAQ,gBAAA,CAAA7B,OAAA,MAAA8B,uBAAA,CAAA9B,OAAA,EAAAqB,KAAA;IAQEA,KAAA,CAAKU,iBAAiB,GAAG,IAAAC,IAAA,CAAAhC,OAAA,CAAQ,CAAC;IAClCqB,KAAA,CAAKY,oBAAoB,GAAG,IAAAD,IAAA,CAAAhC,OAAA,CAAQ,CAAC;IAAC,OAAAqB,KAAA;EACxC;;EAEA;AACF;AACA;EAFE,IAAAa,aAAA,CAAAlC,OAAA,EAAAgB,uBAAA;IAAAmB,GAAA;IAAAC,KAAA,EAGA,SAAAC,gBAAA,EAAyB;MACvB,IAAI,CAACN,iBAAiB,CAACO,KAAK,CAAC,CAAC;MAC9B,IAAI,CAACL,oBAAoB,CAACK,KAAK,CAAC,CAAC;IACnC;;IAEA;AACF;AACA;AACA;EAHE;IAAAH,GAAA;IAAAC,KAAA,EAIA,SAAAG,aAAqBC,SAAiB,EAAE;MACtC,IAAI,CAACA,SAAS,GAAGA,SAAS;IAC5B;;IAEA;AACF;AACA;AACA;EAHE;IAAAL,GAAA;IAAAC,KAAA,EAIA,SAAAK,WAAA,EAAqB;MACnB,IAAI,IAAI,CAACD,SAAS,EAAE;QAClB;QACA,OAAO,IAAI,CAACE,KAAK,CAACC,QAAQ,CAACC,0BAA0B,CAAC,IAAI,CAACJ,SAAS,CAAC;MACvE;MAEA,OAAOK,SAAS;IAClB;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EAPE;IAAAV,GAAA;IAAAC,KAAA,EAQA,SAAAU,cAAAC,IAAA,EAQG;MAAA,IAPDZ,GAAG,GAAAY,IAAA,CAAHZ,GAAG;QAAAa,UAAA,GAAAD,IAAA,CACHX,KAAK;QAALA,KAAK,GAAAY,UAAA,cAAG,IAAIC,IAAI,CAAC,CAAC,CAACC,OAAO,CAAC,CAAC,GAAAF,UAAA;QAAAG,YAAA,GAAAJ,IAAA,CAC5BK,OAAO;QAAPA,OAAO,GAAAD,YAAA,cAAG,CAAC,CAAC,GAAAA,YAAA;MAMZ;MACA,IAAOX,SAAS,GAAIY,OAAO,CAApBZ,SAAS;MAChB,IAAIA,SAAS,EAAE;QACb,IAAI,CAACD,YAAY,CAACC,SAAS,CAAC;MAC9B;MACA;MACA;MACA,IACEL,GAAG,KAAK,uBAAuB,IAC/BA,GAAG,KAAK,uBAAuB,IAC/BA,GAAG,KAAK,qCAAqC,IAC7CA,GAAG,KAAK,sCAAsC,EAC9C;QACA,IAAI,CAACkB,sBAAsB,CAAClB,GAAG,EAAEC,KAAK,CAAC;MACzC,CAAC,MAAM;QACL,IAAI,CAACL,iBAAiB,CAACuB,GAAG,CAACnB,GAAG,EAAEC,KAAK,CAAC;MACxC;IACF;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EAPE;IAAAD,GAAA;IAAAC,KAAA,EAQA,SAAAmB,YAAmBpB,GAAyB,EAAEC,KAAa,EAAsB;MAAA,IAApBoB,UAAU,GAAAnD,SAAA,CAAAmB,MAAA,QAAAnB,SAAA,QAAAwC,SAAA,GAAAxC,SAAA,MAAG,KAAK;MAC7E,IAAMoD,aAAa,GAAGD,UAAU,GAAG,IAAI,CAACvB,oBAAoB,CAACyB,GAAG,CAACvB,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;MAC9E,IAAI,CAACF,oBAAoB,CAACqB,GAAG,CAACnB,GAAG,EAAEC,KAAK,GAAGqB,aAAa,CAAC;IAC3D;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAAtB,GAAA;IAAAC,KAAA,EAOA,SAAAuB,eACEC,QAAgC,EAChCzB,GAAyB,EAEzB;MAAA,IAAA0B,MAAA;MAAA,IADAL,UAAU,GAAAnD,SAAA,CAAAmB,MAAA,QAAAnB,SAAA,QAAAwC,SAAA,GAAAxC,SAAA,MAAG,KAAK;MAElB,IAAMyD,KAAK,GAAGC,WAAW,CAACC,GAAG,CAAC,CAAC;MAE/B,OAAOJ,QAAQ,CAAC,CAAC,CAACK,OAAO,CAAC,YAAM;QAC9BJ,MAAI,CAACN,WAAW,CAACpB,GAAG,EAAE4B,WAAW,CAACC,GAAG,CAAC,CAAC,GAAGF,KAAK,EAAEN,UAAU,CAAC;MAC9D,CAAC,CAAC;IACJ;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAArB,GAAA;IAAAC,KAAA,EAOA,SAAAiB,uBAAuBlB,GAAqB,EAAwC;MAAA,IAAtCC,KAAa,GAAA/B,SAAA,CAAAmB,MAAA,QAAAnB,SAAA,QAAAwC,SAAA,GAAAxC,SAAA,MAAG,IAAI4C,IAAI,CAAC,CAAC,CAACC,OAAO,CAAC,CAAC;MAChF,IAAI,IAAI,CAACnB,iBAAiB,CAACmC,GAAG,CAAC/B,GAAG,CAAC,EAAE;QACnC;MACF;MACA,IAAI,CAACJ,iBAAiB,CAACuB,GAAG,CAACnB,GAAG,EAAEC,KAAK,CAAC;IACxC;;IAEA;AACF;AACA;AACA;AACA;AACA;EALE;IAAAD,GAAA;IAAAC,KAAA,EAMA,SAAA+B,yBAAgCC,CAAmB,EAAEC,CAAmB,EAAE;MACxE,IAAMP,KAAK,GAAG,IAAI,CAAC/B,iBAAiB,CAAC2B,GAAG,CAACU,CAAC,CAAC;MAC3C,IAAME,GAAG,GAAG,IAAI,CAACvC,iBAAiB,CAAC2B,GAAG,CAACW,CAAC,CAAC;MACzC,IAAIP,KAAK,IAAIQ,GAAG,EAAE;QAChB,OAAOA,GAAG,GAAGR,KAAK;MACpB;MAEA,OAAOjB,SAAS;IAClB;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EATE;IAAAV,GAAA;IAAAC,KAAA,EAUA,SAAAmC,sBAAA,EAA+B;MAC7B,OAAO,IAAI,CAACJ,wBAAwB,CAClC,qCAAqC,EACrC,sCACF,CAAC;IACH;;IAEA;AACF;AACA;AACA;EAHE;IAAAhC,GAAA;IAAAC,KAAA,EAIA,SAAAoC,wBAAA,EAAiC;MAC/B,OAAO,IAAI,CAACL,wBAAwB,CAClC,yCAAyC,EACzC,sDACF,CAAC;IACH;;IAEA;AACF;AACA;AACA;EAHE;IAAAhC,GAAA;IAAAC,KAAA,EAIA,SAAAqC,WAAA,EAAoB;MAClB,IAAMC,UAAU,GAAG,IAAI,CAACzC,oBAAoB,CAACyB,GAAG,CAAC,uBAAuB,CAAC;MAEzE,OAAOgB,UAAU,GAAGC,IAAI,CAACC,KAAK,CAACF,UAAU,CAAC,GAAG7B,SAAS;IACxD;;IAEA;AACF;AACA;AACA;EAHE;IAAAV,GAAA;IAAAC,KAAA,EAIA,SAAAyC,wBAAA,EAAiC;MAC/B,OAAO,IAAI,CAACV,wBAAwB,CAClC,kCAAkC,EAClC,mCACF,CAAC;IACH;;IAEA;AACF;AACA;AACA;EAHE;IAAAhC,GAAA;IAAAC,KAAA,EAIA,SAAA0C,mBAAA,EAA4B;MAC1B,OAAO,IAAI,CAACX,wBAAwB,CAClC,sDAAsD,EACtD,2BACF,CAAC;IACH;;IAEA;AACF;AACA;AACA;EAHE;IAAAhC,GAAA;IAAAC,KAAA,EAIA,SAAA2C,eAAA,EAAwB;MACtB,OAAO,IAAI,CAACZ,wBAAwB,CAAC,2BAA2B,EAAE,4BAA4B,CAAC;IACjG;;IAEA;AACF;AACA;AACA;EAHE;IAAAhC,GAAA;IAAAC,KAAA,EAIA,SAAA4C,qBAAA,EAA8B;MAC5B,OAAO,IAAI,CAACb,wBAAwB,CAClC,gDAAgD,EAChD,8CACF,CAAC;IACH;;IAEA;AACF;AACA;AACA;EAHE;IAAAhC,GAAA;IAAAC,KAAA,EAIA,SAAA6C,4BAAA,EAAqC;MACnC,OAAO,IAAI,CAACd,wBAAwB,CAClC,yCAAyC,EACzC,yCACF,CAAC;IACH;;IAEA;AACF;AACA;AACA;EAHE;IAAAhC,GAAA;IAAAC,KAAA,EAIA,SAAA8C,gBAAA,EAAyB;MACvB,OAAO,IAAI,CAACf,wBAAwB,CAAC,kBAAkB,EAAE,gBAAgB,CAAC;IAC5E;;IAEA;AACF;AACA;AACA;EAHE;IAAAhC,GAAA;IAAAC,KAAA,EAIA,SAAA+C,qBAAA,EAA8B;MAC5B,OAAO,IAAI,CAAChB,wBAAwB,CAAC,kBAAkB,EAAE,gBAAgB,CAAC;IAC5E;;IAEA;AACF;AACA;AACA;EAHE;IAAAhC,GAAA;IAAAC,KAAA,EAIA,SAAAgD,qBAAA,EAA8B;MAC5B,OAAO,IAAI,CAACjB,wBAAwB,CAAC,kBAAkB,EAAE,gBAAgB,CAAC;IAC5E;;IAEA;AACF;AACA;AACA;EAHE;IAAAhC,GAAA;IAAAC,KAAA,EAIA,SAAAiD,qBAAA,EAA8B;MAC5B,OAAO,IAAI,CAAClB,wBAAwB,CAAC,kBAAkB,EAAE,gBAAgB,CAAC;IAC5E;;IAEA;AACF;AACA;AACA;EAHE;IAAAhC,GAAA;IAAAC,KAAA,EAIA,SAAAkD,iBAAA,EAA0B;MACxB,OAAO,IAAI,CAACnB,wBAAwB,CAClC,4BAA4B,EAC5B,4CACF,CAAC;IACH;;IAEA;AACF;AACA;AACA;EAHE;IAAAhC,GAAA;IAAAC,KAAA,EAIA,SAAAmD,WAAA,EAAoB;MAClB,OAAO,IAAI,CAACtD,oBAAoB,CAACyB,GAAG,CAAC,yBAAyB,CAAC,IAAIb,SAAS;IAC9E;;IAEA;AACF;AACA;AACA;EAHE;IAAAV,GAAA;IAAAC,KAAA,EAIA,SAAAoD,mBAAA,EAA4B;MAC1B,OAAO,IAAI,CAACvD,oBAAoB,CAACyB,GAAG,CAAC,wBAAwB,CAAC,IAAIb,SAAS;IAC7E;;IAEA;AACF;AACA;AACA;EAHE;IAAAV,GAAA;IAAAC,KAAA,EAIA,SAAAqD,uBAAA,EAAgC;MAC9B;MACA,IAAI,IAAI,CAAC1D,iBAAiB,CAAC2B,GAAG,CAAC,0CAA0C,CAAC,EAAE;QAC1E,OAAO,IAAI,CAACS,wBAAwB,CAClC,0CAA0C,EAC1C,oDACF,CAAC;MACH;;MAEA;MACA,OAAO,IAAI,CAAClC,oBAAoB,CAACyB,GAAG,CAAC,gCAAgC,CAAC,IAAIb,SAAS;IACrF;;IAEA;AACF;AACA;AACA;EAHE;IAAAV,GAAA;IAAAC,KAAA,EAIA,SAAAsD,wBAAA,EAAiC;MAC/B,OAAO,IAAI,CAACvB,wBAAwB,CAClC,sDAAsD,EACtD,4BACF,CAAC;IACH;;IAEA;AACF;AACA;AACA;EAHE;IAAAhC,GAAA;IAAAC,KAAA,EAIA,SAAAuD,4BAAA,EAAqC;MACnC,OAAO,IAAI,CAACxB,wBAAwB,CAClC,sDAAsD,EACtD,2BACF,CAAC;IACH;;IAEA;AACF;AACA;AACA;EAHE;IAAAhC,GAAA;IAAAC,KAAA,EAIA,SAAAwD,4BAAA,EAAqC;MACnC,IAAMC,8BAA8B,GAAG,IAAI,CAAC9D,iBAAiB,CAAC2B,GAAG,CAC/D,sDACF,CAAC;;MAED;MACA,IAAMoC,cAAc,GAAG,IAAI,CAAC/D,iBAAiB,CAAC2B,GAAG,CAAC,gBAAgB,CAAC;MAEnE,IAAMqC,SAAS,GAAG,IAAI,CAACT,gBAAgB,CAAC,CAAC,IAAI,CAAC;MAE9C,IAAIO,8BAA8B,IAAIC,cAAc,EAAE;QACpD,OAAOA,cAAc,GAAGD,8BAA8B,GAAGE,SAAS;MACpE;MAEA,OAAOlD,SAAS;IAClB;;IAEA;AACF;AACA;AACA;EAHE;IAAAV,GAAA;IAAAC,KAAA,EAIA,SAAA4D,YAAA,EAAqB;MACnB,IAAMC,mBAAmB,GAAG,IAAI,CAACR,sBAAsB,CAAC,CAAC;MACzD,IAAMS,oBAAoB,GAAG,IAAI,CAACR,uBAAuB,CAAC,CAAC;MAE3D,IAAIO,mBAAmB,IAAIC,oBAAoB,EAAE;QAC/C,OAAOD,mBAAmB,GAAGC,oBAAoB;MACnD;MAEA,OAAOrD,SAAS;IAClB;;IAEA;AACF;AACA;AACA;EAHE;IAAAV,GAAA;IAAAC,KAAA,EAIA,SAAA+D,eAAA,EAAwB;MACtB,IAAMC,WAAW,GAAG,IAAI,CAACrB,cAAc,CAAC,CAAC;MACzC,IAAMsB,YAAY,GAAG,IAAI,CAACnB,eAAe,CAAC,CAAC;MAE3C,IAAIkB,WAAW,IAAIC,YAAY,EAAE;QAC/B,OAAOD,WAAW,GAAGC,YAAY;MACnC;MAEA,OAAOxD,SAAS;IAClB;;IAEA;AACF;AACA;AACA;EAHE;IAAAV,GAAA;IAAAC,KAAA,EAIA,SAAAkE,iBAAA,EAA0B;MACxB,IAAML,mBAAmB,GAAG,IAAI,CAACR,sBAAsB,CAAC,CAAC;MACzD,IAAMS,oBAAoB,GAAG,IAAI,CAACR,uBAAuB,CAAC,CAAC;MAC3D,IAAMa,WAAW,GAAG,IAAI,CAACJ,cAAc,CAAC,CAAC;MACzC,IAAMJ,SAAS,GAAG,IAAI,CAACT,gBAAgB,CAAC,CAAC;MAEzC,IAAIW,mBAAmB,IAAIC,oBAAoB,IAAIK,WAAW,EAAE;QAAA,IAAAC,gBAAA;QAC9D,IAAMC,aAAa,GAAGR,mBAAmB,GAAGC,oBAAoB,GAAGK,WAAW;QAC9E,KAAAC,gBAAA,GAAI,IAAI,CAAC/D,UAAU,CAAC,CAAC,cAAA+D,gBAAA,eAAjBA,gBAAA,CAAmBE,iBAAiB,EAAE;UACxC,OAAOD,aAAa;QACtB;QAEA,OAAOA,aAAa,GAAGV,SAAS;MAClC;MAEA,OAAOlD,SAAS;IAClB;;IAEA;AACF;AACA;AACA;EAHE;IAAAV,GAAA;IAAAC,KAAA,EAIA,SAAAuE,aAAA,EAAsB;MACpB,IAAMT,oBAAoB,GAAG,IAAI,CAACR,uBAAuB,CAAC,CAAC;MAC3D,IAAMa,WAAW,GAAG,IAAI,CAACJ,cAAc,CAAC,CAAC;MAEzC,IAAID,oBAAoB,IAAIK,WAAW,EAAE;QACvC,OAAOL,oBAAoB,GAAGK,WAAW;MAC3C;MAEA,OAAO1D,SAAS;IAClB;;IAEA;AACF;AACA;EAFE;IAAAV,GAAA;IAAAC,KAAA,EAGA,SAAAwE,wBAAA,EAAiC;MAC/B,OAAO,IAAI,CAACzC,wBAAwB,CAAC,4BAA4B,EAAE,uBAAuB,CAAC;IAC7F;;IAEA;AACF;AACA;EAFE;IAAAhC,GAAA;IAAAC,KAAA,EAGA,SAAAyE,wBAAA,EAAiC;MAC/B,OAAO,IAAI,CAAC1C,wBAAwB,CAAC,4BAA4B,EAAE,uBAAuB,CAAC;IAC7F;;IAEA;AACF;AACA;EAFE;IAAAhC,GAAA;IAAAC,KAAA,EAGA,SAAA0E,+BAAA,EAAwC;MACtC,IAAMC,yBAAyB,GAAG,IAAI,CAAC9E,oBAAoB,CAACyB,GAAG,CAAC,2BAA2B,CAAC;MAE5F,OAAOqD,yBAAyB,GAAGpC,IAAI,CAACC,KAAK,CAACmC,yBAAyB,CAAC,GAAGlE,SAAS;IACtF;;IAEA;AACF;AACA;EAFE;IAAAV,GAAA;IAAAC,KAAA,EAGA,SAAA4E,wBAAA,EAAiC;MAC/B,OAAO,IAAI,CAAC7C,wBAAwB,CAAC,4BAA4B,EAAE,uBAAuB,CAAC;IAC7F;;IAEA;AACF;AACA;EAFE;IAAAhC,GAAA;IAAAC,KAAA,EAGA,SAAA6E,wBAAA,EAAiC;MAC/B,OAAO,IAAI,CAAC9C,wBAAwB,CAAC,4BAA4B,EAAE,uBAAuB,CAAC;IAC7F;;IAEA;AACF;AACA;EAFE;IAAAhC,GAAA;IAAAC,KAAA,EAGA,SAAA8E,sBAAA,EAA+B;MAC7B,IAAMC,kBAAkB,GAAG,IAAI,CAAClF,oBAAoB,CAACyB,GAAG,CAAC,iCAAiC,CAAC;MAE3F,OAAOyD,kBAAkB,GAAGxC,IAAI,CAACC,KAAK,CAACuC,kBAAkB,CAAC,GAAGtE,SAAS;IACxE;;IAEA;AACF;AACA;EAFE;IAAAV,GAAA;IAAAC,KAAA,EAGA,SAAAgF,yBAAA,EAAkC;MAChC,IAAMC,qBAAqB,GAAG,IAAI,CAACpF,oBAAoB,CAACyB,GAAG,CAAC,+BAA+B,CAAC;MAE5F,OAAO2D,qBAAqB,GAAG1C,IAAI,CAACC,KAAK,CAACyC,qBAAqB,CAAC,GAAGxE,SAAS;IAC9E;;IAEA;AACF;AACA;AACA;EAHE;IAAAV,GAAA;IAAAC,KAAA,EAIA,SAAAkF,qCAAA,EAA8C;MAC5C,IAAMC,iCAAiC,GAAG,IAAI,CAACtF,oBAAoB,CAACyB,GAAG,CACrE,wCACF,CAAC;MAED,OAAO6D,iCAAiC,GACpC5C,IAAI,CAACC,KAAK,CAAC2C,iCAAiC,CAAC,GAC7C1E,SAAS;IACf;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAAV,GAAA;IAAAC,KAAA,EAKA,SAAAoF,sBAAA,EAA+B;MAC7B,IAAMC,cAAc,GAAG,IAAI,CAACxF,oBAAoB,CAACyB,GAAG,CAAC,6BAA6B,CAAC;MAEnF,OAAO+D,cAAc,GAAG,CAAC,GAAG9C,IAAI,CAACC,KAAK,CAAC6C,cAAc,CAAC,GAAG5E,SAAS;IACpE;EAAC;EAAA,OAAA7B,uBAAA;AAAA,EAhfkD0G,sBAAW"}
@@ -130,7 +130,7 @@ var CallDiagnosticMetrics = exports.default = /*#__PURE__*/function (_StatelessW
130
130
  if (meetingId) {
131
131
  var _meeting$meetingInfo;
132
132
  // @ts-ignore
133
- var meeting = this.webex.meetings.meetingCollection.get(meetingId);
133
+ var meeting = this.webex.meetings.getBasicMeetingInformation(meetingId);
134
134
  return meeting === null || meeting === void 0 ? void 0 : (_meeting$meetingInfo = meeting.meetingInfo) === null || _meeting$meetingInfo === void 0 ? void 0 : _meeting$meetingInfo.enableConvergedArchitecture;
135
135
  }
136
136
  return undefined;
@@ -220,7 +220,7 @@ var CallDiagnosticMetrics = exports.default = /*#__PURE__*/function (_StatelessW
220
220
  };
221
221
  if (meetingId) {
222
222
  // @ts-ignore
223
- var meeting = this.webex.meetings.meetingCollection.get(meetingId);
223
+ var meeting = this.webex.meetings.getBasicMeetingInformation(meetingId);
224
224
  if (meeting !== null && meeting !== void 0 && meeting.environment) {
225
225
  origin.environment = meeting.environment;
226
226
  }
@@ -256,16 +256,27 @@ var CallDiagnosticMetrics = exports.default = /*#__PURE__*/function (_StatelessW
256
256
  correlationId = options.correlationId,
257
257
  webexConferenceIdStr = options.webexConferenceIdStr,
258
258
  globalMeetingId = options.globalMeetingId,
259
- preLoginId = options.preLoginId;
259
+ preLoginId = options.preLoginId,
260
+ sessionCorrelationId = options.sessionCorrelationId;
260
261
  var identifiers = {
261
- correlationId: 'unknown'
262
+ correlationId: 'unknown' // concerned with setting this to unknown. This will fail diagnostic events parsing because it's not a uuid pattern
262
263
  };
264
+
263
265
  if (meeting) {
264
266
  identifiers.correlationId = meeting.correlationId;
267
+ if (meeting.sessionCorrelationId) {
268
+ identifiers.sessionCorrelationId = meeting.sessionCorrelationId;
269
+ }
270
+ }
271
+ if (sessionCorrelationId) {
272
+ identifiers.sessionCorrelationId = sessionCorrelationId;
265
273
  }
266
274
  if (correlationId) {
267
275
  identifiers.correlationId = correlationId;
268
276
  }
277
+
278
+ // TODO: should we use patterns.uuid to validate correlationId and session correlation id? they will fail the diagnostic events validation pipeline if improperly formatted
279
+
269
280
  if (this.device) {
270
281
  var device = this.device;
271
282
  var _ref2 = (device === null || device === void 0 ? void 0 : device.config) || {},
@@ -381,7 +392,7 @@ var CallDiagnosticMetrics = exports.default = /*#__PURE__*/function (_StatelessW
381
392
  // events that will most likely happen in join phase
382
393
  if (meetingId) {
383
394
  // @ts-ignore
384
- var meeting = this.webex.meetings.meetingCollection.get(meetingId);
395
+ var meeting = this.webex.meetings.getBasicMeetingInformation(meetingId);
385
396
  if (!meeting) {
386
397
  console.warn('Attempt to send MQE but no meeting was found...', "event: ".concat(name, ", meetingId: ").concat(meetingId));
387
398
  // @ts-ignore
@@ -570,10 +581,11 @@ var CallDiagnosticMetrics = exports.default = /*#__PURE__*/function (_StatelessW
570
581
  });
571
582
  }
572
583
 
573
- // otherwise return unkown error
584
+ // otherwise return unkown error but passing serviceErrorCode and serviceErrorName so that we know the issue
574
585
  return this.getErrorPayloadForClientErrorCode({
575
586
  clientErrorCode: _config2.UNKNOWN_ERROR,
576
- serviceErrorCode: _config2.UNKNOWN_ERROR,
587
+ serviceErrorCode: serviceErrorCode || _config2.UNKNOWN_ERROR,
588
+ serviceErrorName: rawError === null || rawError === void 0 ? void 0 : rawError.name,
577
589
  payloadOverrides: rawError.payloadOverrides,
578
590
  rawErrorMessage: rawErrorMessage,
579
591
  httpStatusCode: httpStatusCode
@@ -596,10 +608,11 @@ var CallDiagnosticMetrics = exports.default = /*#__PURE__*/function (_StatelessW
596
608
  var meetingId = options.meetingId,
597
609
  mediaConnections = options.mediaConnections,
598
610
  globalMeetingId = options.globalMeetingId,
599
- webexConferenceIdStr = options.webexConferenceIdStr;
611
+ webexConferenceIdStr = options.webexConferenceIdStr,
612
+ sessionCorrelationId = options.sessionCorrelationId;
600
613
 
601
614
  // @ts-ignore
602
- var meeting = this.webex.meetings.meetingCollection.get(meetingId);
615
+ var meeting = this.webex.meetings.getBasicMeetingInformation(meetingId);
603
616
  if (!meeting) {
604
617
  console.warn('Attempt to send client event but no meeting was found...', "name: ".concat(name, ", meetingId: ").concat(meetingId));
605
618
  // @ts-ignore
@@ -617,7 +630,8 @@ var CallDiagnosticMetrics = exports.default = /*#__PURE__*/function (_StatelessW
617
630
  meeting: meeting,
618
631
  mediaConnections: (meeting === null || meeting === void 0 ? void 0 : meeting.mediaConnections) || mediaConnections,
619
632
  webexConferenceIdStr: webexConferenceIdStr,
620
- globalMeetingId: globalMeetingId
633
+ globalMeetingId: globalMeetingId,
634
+ sessionCorrelationId: sessionCorrelationId
621
635
  });
622
636
 
623
637
  // create client event object
@@ -655,11 +669,13 @@ var CallDiagnosticMetrics = exports.default = /*#__PURE__*/function (_StatelessW
655
669
  var correlationId = options.correlationId,
656
670
  globalMeetingId = options.globalMeetingId,
657
671
  webexConferenceIdStr = options.webexConferenceIdStr,
658
- preLoginId = options.preLoginId;
672
+ preLoginId = options.preLoginId,
673
+ sessionCorrelationId = options.sessionCorrelationId;
659
674
 
660
675
  // grab identifiers
661
676
  var identifiers = this.getIdentifiers({
662
677
  correlationId: correlationId,
678
+ sessionCorrelationId: sessionCorrelationId,
663
679
  preLoginId: preLoginId,
664
680
  globalMeetingId: globalMeetingId,
665
681
  webexConferenceIdStr: webexConferenceIdStr