@webex/internal-plugin-metrics 3.3.0 → 3.3.1-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.
- package/dist/behavioral/behavioral-metrics.js +199 -0
- package/dist/behavioral/behavioral-metrics.js.map +1 -0
- package/dist/behavioral/config.js +11 -0
- package/dist/behavioral/config.js.map +1 -0
- package/dist/call-diagnostic/call-diagnostic-metrics.util.js +14 -11
- package/dist/call-diagnostic/call-diagnostic-metrics.util.js.map +1 -1
- package/dist/call-diagnostic/config.js +19 -13
- package/dist/call-diagnostic/config.js.map +1 -1
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -1
- package/dist/metrics.js +1 -1
- package/dist/metrics.types.js.map +1 -1
- package/dist/new-metrics.js +31 -6
- package/dist/new-metrics.js.map +1 -1
- package/dist/types/behavioral/behavioral-metrics.d.ts +63 -0
- package/dist/types/behavioral/config.d.ts +1 -0
- package/dist/types/call-diagnostic/call-diagnostic-metrics.util.d.ts +3 -2
- package/dist/types/call-diagnostic/config.d.ts +2 -0
- package/dist/types/index.d.ts +2 -1
- package/dist/types/metrics.types.d.ts +28 -7
- package/dist/types/new-metrics.d.ts +14 -6
- package/package.json +11 -11
- package/src/behavioral/behavioral-metrics.ts +179 -0
- package/src/behavioral/config.ts +3 -0
- package/src/call-diagnostic/call-diagnostic-metrics.util.ts +16 -17
- package/src/call-diagnostic/config.ts +9 -2
- package/src/index.ts +2 -0
- package/src/metrics.types.ts +56 -8
- package/src/new-metrics.ts +34 -8
- package/test/unit/spec/behavioral/behavioral-metrics.ts +164 -0
- package/test/unit/spec/call-diagnostic/call-diagnostic-metrics-batcher.ts +48 -52
- package/test/unit/spec/call-diagnostic/call-diagnostic-metrics-latencies.ts +1 -1
- package/test/unit/spec/call-diagnostic/call-diagnostic-metrics.util.ts +41 -22
- package/test/unit/spec/prelogin-metrics-batcher.ts +1 -1
|
@@ -0,0 +1,199 @@
|
|
|
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 _now = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/date/now"));
|
|
11
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
|
|
12
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));
|
|
13
|
+
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/assertThisInitialized"));
|
|
14
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/inherits"));
|
|
15
|
+
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/possibleConstructorReturn"));
|
|
16
|
+
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/getPrototypeOf"));
|
|
17
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
|
|
18
|
+
var _lodash = require("lodash");
|
|
19
|
+
var _common = require("@webex/common");
|
|
20
|
+
var _webexCore = require("@webex/webex-core");
|
|
21
|
+
var _metrics = require("../metrics");
|
|
22
|
+
var _config = require("./config");
|
|
23
|
+
var _clientMetricsBatcher = _interopRequireDefault(require("../client-metrics-batcher"));
|
|
24
|
+
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); }; }
|
|
25
|
+
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; } }
|
|
26
|
+
var _BrowserDetection = (0, _common.BrowserDetection)(),
|
|
27
|
+
getOSVersion = _BrowserDetection.getOSVersion,
|
|
28
|
+
getBrowserName = _BrowserDetection.getBrowserName,
|
|
29
|
+
getBrowserVersion = _BrowserDetection.getBrowserVersion;
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* @description Util class to handle Behavioral Metrics
|
|
33
|
+
* @export
|
|
34
|
+
* @class BehavioralMetrics
|
|
35
|
+
*/
|
|
36
|
+
var BehavioralMetrics = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
37
|
+
(0, _inherits2.default)(BehavioralMetrics, _StatelessWebexPlugin);
|
|
38
|
+
var _super = _createSuper(BehavioralMetrics);
|
|
39
|
+
/**
|
|
40
|
+
* Constructor
|
|
41
|
+
* @param {any[]} args
|
|
42
|
+
*/
|
|
43
|
+
function BehavioralMetrics() {
|
|
44
|
+
var _this;
|
|
45
|
+
(0, _classCallCheck2.default)(this, BehavioralMetrics);
|
|
46
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
47
|
+
args[_key] = arguments[_key];
|
|
48
|
+
}
|
|
49
|
+
_this = _super.call.apply(_super, [this].concat(args));
|
|
50
|
+
// @ts-ignore
|
|
51
|
+
// @ts-ignore
|
|
52
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "clientMetricsBatcher", void 0);
|
|
53
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "logger", void 0);
|
|
54
|
+
// to avoid adding @ts-ignore everywhere
|
|
55
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "device", void 0);
|
|
56
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "version", void 0);
|
|
57
|
+
_this.logger = _this.webex.logger;
|
|
58
|
+
// @ts-ignore
|
|
59
|
+
_this.device = _this.webex.internal.device;
|
|
60
|
+
// @ts-ignore
|
|
61
|
+
_this.version = _this.webex.version;
|
|
62
|
+
// @ts-ignore
|
|
63
|
+
_this.clientMetricsBatcher = new _clientMetricsBatcher.default({}, {
|
|
64
|
+
parent: _this.webex
|
|
65
|
+
});
|
|
66
|
+
return _this;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Returns the deviceId from our registration with WDM.
|
|
71
|
+
* @returns {string} deviceId or empty string
|
|
72
|
+
*/
|
|
73
|
+
(0, _createClass2.default)(BehavioralMetrics, [{
|
|
74
|
+
key: "getDeviceId",
|
|
75
|
+
value: function getDeviceId() {
|
|
76
|
+
var url = this.device.url;
|
|
77
|
+
if (url && url.length !== 0) {
|
|
78
|
+
var n = url.lastIndexOf('/');
|
|
79
|
+
if (n !== -1) {
|
|
80
|
+
return url.substring(n + 1);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
return '';
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* Returns the context object to be submitted with all behavioral metrics.
|
|
88
|
+
* @returns {BehavioralEventContext}
|
|
89
|
+
*/
|
|
90
|
+
}, {
|
|
91
|
+
key: "getContext",
|
|
92
|
+
value: function getContext() {
|
|
93
|
+
var context = {
|
|
94
|
+
app: {
|
|
95
|
+
version: this.version
|
|
96
|
+
},
|
|
97
|
+
device: {
|
|
98
|
+
id: this.getDeviceId()
|
|
99
|
+
},
|
|
100
|
+
locale: window.navigator.language,
|
|
101
|
+
os: {
|
|
102
|
+
name: (0, _metrics.getOSNameInternal)(),
|
|
103
|
+
version: getOSVersion()
|
|
104
|
+
}
|
|
105
|
+
};
|
|
106
|
+
return context;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* Returns the default tags to be included with all behavioral metrics.
|
|
111
|
+
* @returns {BehavioralEventPayload}
|
|
112
|
+
*/
|
|
113
|
+
}, {
|
|
114
|
+
key: "getDefaultTags",
|
|
115
|
+
value: function getDefaultTags() {
|
|
116
|
+
var tags = {
|
|
117
|
+
browser: getBrowserName(),
|
|
118
|
+
browserHeight: window.innerHeight,
|
|
119
|
+
browserVersion: getBrowserVersion(),
|
|
120
|
+
browserWidth: window.innerWidth,
|
|
121
|
+
domain: window.location.hostname,
|
|
122
|
+
inIframe: window.self !== window.top,
|
|
123
|
+
locale: window.navigator.language,
|
|
124
|
+
os: (0, _metrics.getOSNameInternal)()
|
|
125
|
+
};
|
|
126
|
+
return tags;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
/**
|
|
130
|
+
* Creates the object to send to our metrics endpoint for a behavioral event
|
|
131
|
+
* @param {MetricEventProduct} product
|
|
132
|
+
* @param {MetricEventAgent} agent
|
|
133
|
+
* @param {string} target
|
|
134
|
+
* @param {MetricEventVerb} verb
|
|
135
|
+
* @returns {BehavioralEventPayload}
|
|
136
|
+
*/
|
|
137
|
+
}, {
|
|
138
|
+
key: "createEventObject",
|
|
139
|
+
value: function createEventObject(_ref) {
|
|
140
|
+
var product = _ref.product,
|
|
141
|
+
agent = _ref.agent,
|
|
142
|
+
target = _ref.target,
|
|
143
|
+
verb = _ref.verb,
|
|
144
|
+
payload = _ref.payload;
|
|
145
|
+
var metricName = "".concat(product, ".").concat(agent, ".").concat(target, ".").concat(verb);
|
|
146
|
+
var allTags = payload;
|
|
147
|
+
allTags = (0, _lodash.merge)(allTags, this.getDefaultTags());
|
|
148
|
+
var event = {
|
|
149
|
+
context: this.getContext(),
|
|
150
|
+
metricName: metricName,
|
|
151
|
+
tags: allTags,
|
|
152
|
+
timestamp: (0, _now.default)(),
|
|
153
|
+
type: ['behavioral']
|
|
154
|
+
};
|
|
155
|
+
return event;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
/**
|
|
159
|
+
* Returns true once we're ready to submit behavioral metrics, after startup.
|
|
160
|
+
* @returns {boolean} true when deviceId is defined and non-empty
|
|
161
|
+
*/
|
|
162
|
+
}, {
|
|
163
|
+
key: "isReadyToSubmitBehavioralEvents",
|
|
164
|
+
value: function isReadyToSubmitBehavioralEvents() {
|
|
165
|
+
var deviceId = this.getDeviceId();
|
|
166
|
+
return deviceId && deviceId.length !== 0;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
/**
|
|
170
|
+
* Submit a behavioral metric to our metrics endpoint.
|
|
171
|
+
* @param {MetricEventProduct} product the product from which the metric is being submitted, e.g. 'webex' web client, 'wxcc_desktop'
|
|
172
|
+
* @param {MetricEventAgent} agent the source of the action for this metric
|
|
173
|
+
* @param {string} target the 'thing' that this metric includes information about
|
|
174
|
+
* @param {MetricEventVerb} verb the action that this metric includes information about
|
|
175
|
+
* @param {BehavioralEventPayload} payload information specific to this event. This should be flat, i.e. it should not include nested objects.
|
|
176
|
+
* @returns {Promise<any>}
|
|
177
|
+
*/
|
|
178
|
+
}, {
|
|
179
|
+
key: "submitBehavioralEvent",
|
|
180
|
+
value: function submitBehavioralEvent(_ref2) {
|
|
181
|
+
var product = _ref2.product,
|
|
182
|
+
agent = _ref2.agent,
|
|
183
|
+
target = _ref2.target,
|
|
184
|
+
verb = _ref2.verb,
|
|
185
|
+
payload = _ref2.payload;
|
|
186
|
+
this.logger.log(_config.BEHAVIORAL_LOG_IDENTIFIER, "BehavioralMetrics: @submitBehavioralEvent. Submit Behavioral event: ".concat(product, ".").concat(agent, ".").concat(target, ".").concat(verb));
|
|
187
|
+
var behavioralEvent = this.createEventObject({
|
|
188
|
+
product: product,
|
|
189
|
+
agent: agent,
|
|
190
|
+
target: target,
|
|
191
|
+
verb: verb,
|
|
192
|
+
payload: payload
|
|
193
|
+
});
|
|
194
|
+
return this.clientMetricsBatcher.request(behavioralEvent);
|
|
195
|
+
}
|
|
196
|
+
}]);
|
|
197
|
+
return BehavioralMetrics;
|
|
198
|
+
}(_webexCore.StatelessWebexPlugin);
|
|
199
|
+
//# sourceMappingURL=behavioral-metrics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_lodash","require","_common","_webexCore","_metrics","_config","_clientMetricsBatcher","_interopRequireDefault","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","default","result","NewTarget","constructor","_Reflect$construct","arguments","apply","_possibleConstructorReturn2","Reflect","sham","Proxy","Boolean","prototype","valueOf","call","e","_BrowserDetection","BrowserDetection","getOSVersion","getBrowserName","getBrowserVersion","BehavioralMetrics","exports","_StatelessWebexPlugin","_inherits2","_super","_this","_classCallCheck2","_len","length","args","Array","_key","concat","_defineProperty2","_assertThisInitialized2","logger","webex","device","internal","version","clientMetricsBatcher","ClientMetricsBatcher","parent","_createClass2","key","value","getDeviceId","url","n","lastIndexOf","substring","getContext","context","app","id","locale","window","navigator","language","os","name","getOSNameInternal","getDefaultTags","tags","browser","browserHeight","innerHeight","browserVersion","browserWidth","innerWidth","domain","location","hostname","inIframe","self","top","createEventObject","_ref","product","agent","target","verb","payload","metricName","allTags","merge","event","timestamp","_now","type","isReadyToSubmitBehavioralEvents","deviceId","submitBehavioralEvent","_ref2","log","BEHAVIORAL_LOG_IDENTIFIER","behavioralEvent","request","StatelessWebexPlugin"],"sources":["behavioral-metrics.ts"],"sourcesContent":["import {merge} from 'lodash';\nimport {BrowserDetection} from '@webex/common';\nimport {StatelessWebexPlugin} from '@webex/webex-core';\nimport {getOSNameInternal} from '../metrics';\nimport {BEHAVIORAL_LOG_IDENTIFIER} from './config';\nimport {\n MetricEventProduct,\n MetricEventAgent,\n MetricEventVerb,\n BehavioralEventContext,\n BehavioralEvent,\n BehavioralEventPayload,\n} from '../metrics.types';\nimport ClientMetricsBatcher from '../client-metrics-batcher';\n\nconst {getOSVersion, getBrowserName, getBrowserVersion} = BrowserDetection();\n\n/**\n * @description Util class to handle Behavioral Metrics\n * @export\n * @class BehavioralMetrics\n */\nexport default class BehavioralMetrics extends StatelessWebexPlugin {\n // @ts-ignore\n private clientMetricsBatcher: ClientMetricsBatcher;\n private logger: any; // to avoid adding @ts-ignore everywhere\n private device: any;\n private version: string;\n\n /**\n * Constructor\n * @param {any[]} args\n */\n constructor(...args) {\n super(...args);\n // @ts-ignore\n this.logger = this.webex.logger;\n // @ts-ignore\n this.device = this.webex.internal.device;\n // @ts-ignore\n this.version = this.webex.version;\n // @ts-ignore\n this.clientMetricsBatcher = new ClientMetricsBatcher({}, {parent: this.webex});\n }\n\n /**\n * Returns the deviceId from our registration with WDM.\n * @returns {string} deviceId or empty string\n */\n private getDeviceId(): string {\n const {url} = this.device;\n if (url && url.length !== 0) {\n const n = url.lastIndexOf('/');\n if (n !== -1) {\n return url.substring(n + 1);\n }\n }\n\n return '';\n }\n\n /**\n * Returns the context object to be submitted with all behavioral metrics.\n * @returns {BehavioralEventContext}\n */\n private getContext(): BehavioralEventContext {\n const context: BehavioralEventContext = {\n app: {\n version: this.version,\n },\n device: {\n id: this.getDeviceId(),\n },\n locale: window.navigator.language,\n os: {\n name: getOSNameInternal(),\n version: getOSVersion(),\n },\n };\n\n return context;\n }\n\n /**\n * Returns the default tags to be included with all behavioral metrics.\n * @returns {BehavioralEventPayload}\n */\n private getDefaultTags(): BehavioralEventPayload {\n const tags = {\n browser: getBrowserName(),\n browserHeight: window.innerHeight,\n browserVersion: getBrowserVersion(),\n browserWidth: window.innerWidth,\n domain: window.location.hostname,\n inIframe: window.self !== window.top,\n locale: window.navigator.language,\n os: getOSNameInternal(),\n };\n\n return tags;\n }\n\n /**\n * Creates the object to send to our metrics endpoint for a behavioral event\n * @param {MetricEventProduct} product\n * @param {MetricEventAgent} agent\n * @param {string} target\n * @param {MetricEventVerb} verb\n * @returns {BehavioralEventPayload}\n */\n private createEventObject({\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 }): BehavioralEvent {\n const metricName = `${product}.${agent}.${target}.${verb}`;\n let allTags: BehavioralEventPayload = payload;\n allTags = merge(allTags, this.getDefaultTags());\n\n const event: BehavioralEvent = {\n context: this.getContext(),\n metricName,\n tags: allTags,\n timestamp: Date.now(),\n type: ['behavioral'],\n };\n\n return event;\n }\n\n /**\n * Returns true once we're ready to submit behavioral metrics, after startup.\n * @returns {boolean} true when deviceId is defined and non-empty\n */\n public isReadyToSubmitBehavioralEvents(): boolean {\n const deviceId = this.getDeviceId();\n\n return deviceId && deviceId.length !== 0;\n }\n\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 {BehavioralEventPayload} 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?: BehavioralEventPayload;\n }) {\n this.logger.log(\n BEHAVIORAL_LOG_IDENTIFIER,\n `BehavioralMetrics: @submitBehavioralEvent. Submit Behavioral event: ${product}.${agent}.${target}.${verb}`\n );\n const behavioralEvent = this.createEventObject({product, agent, target, verb, payload});\n\n return this.clientMetricsBatcher.request(behavioralEvent);\n }\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
|
|
4
|
+
_Object$defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.BEHAVIORAL_LOG_IDENTIFIER = void 0;
|
|
8
|
+
/* eslint-disable import/prefer-default-export */
|
|
9
|
+
|
|
10
|
+
var BEHAVIORAL_LOG_IDENTIFIER = exports.BEHAVIORAL_LOG_IDENTIFIER = 'behavioral-events -> ';
|
|
11
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["BEHAVIORAL_LOG_IDENTIFIER","exports"],"sources":["config.ts"],"sourcesContent":["/* eslint-disable import/prefer-default-export */\n\nexport const BEHAVIORAL_LOG_IDENTIFIER = 'behavioral-events -> ';\n"],"mappings":";;;;;;;AAAA;;AAEO,IAAMA,yBAAyB,GAAAC,OAAA,CAAAD,yBAAA,GAAG,uBAAuB"}
|
|
@@ -201,7 +201,7 @@ var getBuildType = exports.getBuildType = function getBuildType(webClientDomain)
|
|
|
201
201
|
var prepareDiagnosticMetricItem = exports.prepareDiagnosticMetricItem = function prepareDiagnosticMetricItem(webex, item) {
|
|
202
202
|
var _item$eventPayload, _item$eventPayload$ev, _item$eventPayload$ev2, _item$eventPayload2, _item$eventPayload2$e, _item$eventPayload2$e2, _item$eventPayload3, _item$eventPayload3$e;
|
|
203
203
|
var origin = {
|
|
204
|
-
buildType:
|
|
204
|
+
buildType: getBuildType((_item$eventPayload = item.eventPayload) === null || _item$eventPayload === void 0 ? void 0 : (_item$eventPayload$ev = _item$eventPayload.event) === null || _item$eventPayload$ev === void 0 ? void 0 : (_item$eventPayload$ev2 = _item$eventPayload$ev.eventData) === null || _item$eventPayload$ev2 === void 0 ? void 0 : _item$eventPayload$ev2.webClientDomain, (_item$eventPayload2 = item.eventPayload) === null || _item$eventPayload2 === void 0 ? void 0 : (_item$eventPayload2$e = _item$eventPayload2.event) === null || _item$eventPayload2$e === void 0 ? void 0 : (_item$eventPayload2$e2 = _item$eventPayload2$e.eventData) === null || _item$eventPayload2$e2 === void 0 ? void 0 : _item$eventPayload2$e2.markAsTestEvent),
|
|
205
205
|
networkType: 'unknown'
|
|
206
206
|
};
|
|
207
207
|
|
|
@@ -251,6 +251,8 @@ var prepareDiagnosticMetricItem = exports.prepareDiagnosticMetricItem = function
|
|
|
251
251
|
break;
|
|
252
252
|
case 'client.media.rx.start':
|
|
253
253
|
joinTimes.localSDPGenRemoteSDPRecv = cdl.getLocalSDPGenRemoteSDPRecv();
|
|
254
|
+
audioSetupDelay.joinRespRxStart = cdl.getAudioJoinRespRxStart();
|
|
255
|
+
videoSetupDelay.joinRespRxStart = cdl.getVideoJoinRespRxStart();
|
|
254
256
|
break;
|
|
255
257
|
case 'client.media-engine.ready':
|
|
256
258
|
joinTimes.totalMediaJMT = cdl.getTotalMediaJMT();
|
|
@@ -258,10 +260,8 @@ var prepareDiagnosticMetricItem = exports.prepareDiagnosticMetricItem = function
|
|
|
258
260
|
joinTimes.callInitMediaEngineReady = cdl.getCallInitMediaEngineReady();
|
|
259
261
|
joinTimes.stayLobbyTime = cdl.getStayLobbyTime();
|
|
260
262
|
break;
|
|
261
|
-
case 'client.
|
|
262
|
-
audioSetupDelay.joinRespRxStart = cdl.getAudioJoinRespRxStart();
|
|
263
|
+
case 'client.media.tx.start':
|
|
263
264
|
audioSetupDelay.joinRespTxStart = cdl.getAudioJoinRespTxStart();
|
|
264
|
-
videoSetupDelay.joinRespRxStart = cdl.getVideoJoinRespRxStart();
|
|
265
265
|
videoSetupDelay.joinRespTxStart = cdl.getVideoJoinRespTxStart();
|
|
266
266
|
}
|
|
267
267
|
if (!(0, _lodash.isEmpty)(joinTimes)) {
|
|
@@ -280,8 +280,6 @@ var prepareDiagnosticMetricItem = exports.prepareDiagnosticMetricItem = function
|
|
|
280
280
|
});
|
|
281
281
|
}
|
|
282
282
|
item.eventPayload.origin = (0, _assign.default)(origin, item.eventPayload.origin);
|
|
283
|
-
|
|
284
|
-
// @ts-ignore
|
|
285
283
|
webex.logger.log("CallDiagnosticLatencies,prepareDiagnosticMetricItem: ".concat((0, _stringify.default)({
|
|
286
284
|
latencies: Object.fromEntries(cdl.latencyTimestamps),
|
|
287
285
|
event: item
|
|
@@ -334,19 +332,24 @@ var extractVersionMetadata = exports.extractVersionMetadata = function extractVe
|
|
|
334
332
|
*/
|
|
335
333
|
var generateClientErrorCodeForIceFailure = exports.generateClientErrorCodeForIceFailure = function generateClientErrorCodeForIceFailure(_ref2) {
|
|
336
334
|
var signalingState = _ref2.signalingState,
|
|
337
|
-
|
|
338
|
-
turnServerUsed = _ref2.turnServerUsed
|
|
335
|
+
iceConnected = _ref2.iceConnected,
|
|
336
|
+
turnServerUsed = _ref2.turnServerUsed,
|
|
337
|
+
unreachable = _ref2.unreachable;
|
|
339
338
|
var errorCode = _config.ICE_FAILURE_CLIENT_CODE; // default;
|
|
340
339
|
|
|
341
340
|
if (signalingState === 'have-local-offer') {
|
|
342
341
|
errorCode = _config.MISSING_ROAP_ANSWER_CLIENT_CODE;
|
|
343
342
|
}
|
|
344
|
-
if (signalingState === 'stable' &&
|
|
343
|
+
if (signalingState === 'stable' && iceConnected) {
|
|
345
344
|
errorCode = _config.DTLS_HANDSHAKE_FAILED_CLIENT_CODE;
|
|
346
345
|
}
|
|
347
|
-
if (signalingState !== 'have-local-offer' &&
|
|
346
|
+
if (signalingState !== 'have-local-offer' && !iceConnected) {
|
|
348
347
|
if (turnServerUsed) {
|
|
349
|
-
|
|
348
|
+
if (unreachable) {
|
|
349
|
+
errorCode = _config.ICE_AND_REACHABILITY_FAILED_CLIENT_CODE;
|
|
350
|
+
} else {
|
|
351
|
+
errorCode = _config.ICE_FAILED_WITH_TURN_TLS_CLIENT_CODE;
|
|
352
|
+
}
|
|
350
353
|
} else {
|
|
351
354
|
errorCode = _config.ICE_FAILED_WITHOUT_TURN_TLS_CLIENT_CODE;
|
|
352
355
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_ipAnonymize","_interopRequireDefault","require","_util","_common","_webexCore","_lodash","_config","_BrowserDetection","BrowserDetection","getOSName","getOSVersion","getBrowserName","getBrowserVersion","anonymizeIPAddress","exports","localIp","anonymize","userAgentToString","_ref","clientName","webexVersion","userAgentOption","browserInfo","clientInfo","util","format","concat","indexOf","toLowerCase","split","osInfo","process","env","NODE_ENV","clearEmptyKeysRecursively","obj","_keys","default","length","forEach","key","_typeof2","_isArray","isEmpty","_toConsumableArray2","filter","x","isLocusServiceErrorCode","errorCode","code","charAt","isMeetingInfoServiceError","rawError","_rawError$body","_rawError$body$data","_rawError$body2","_rawError$body2$url","body","data","meetingInfo","url","includes","WBX_APP_API_URL","isNetworkError","WebexHttpError","NetworkOrCORSError","isUnauthorizedError","Unauthorized","isSdpOfferCreationError","name","ERROR_DESCRIPTIONS","SDP_OFFER_CREATION_ERROR","isBrowserMediaErrorName","errorName","BROWSER_MEDIA_ERROR_NAME_TO_CLIENT_ERROR_CODES_MAP","getBuildType","webClientDomain","markAsTestEvent","arguments","undefined","prepareDiagnosticMetricItem","webex","item","_item$eventPayload","_item$eventPayload$ev","_item$eventPayload$ev2","_item$eventPayload2","_item$eventPayload2$e","_item$eventPayload2$e2","_item$eventPayload3","_item$eventPayload3$e","origin","buildType","eventPayload","event","eventData","networkType","eventName","joinTimes","audioSetupDelay","videoSetupDelay","cdl","internal","newMetrics","callDiagnosticLatencies","downloadTime","getDownloadTimeJMT","otherAppApiReqResp","getOtherAppApiReqResp","exchangeCITokenJMT","getExchangeCITokenJMT","meetingInfoReqResp","getMeetingInfoReqResp","clickToInterstitial","getClickToInterstitial","refreshCaptchaServiceReqResp","getRefreshCaptchaReqResp","downloadIntelligenceModelsReqResp","getDownloadIntelligenceModelsReqResp","showInterstitialTime","getShowInterstitialTime","registerWDMDeviceJMT","getRegisterWDMDeviceJMT","getU2CTime","getReachabilityClustersReqResp","callInitJoinReq","getCallInitJoinReq","joinReqResp","getJoinReqResp","pageJmt","getPageJMT","interstitialToJoinOK","getInterstitialToJoinOK","totalJmt","getTotalJMT","clientJmt","getClientJMT","ICESetupTime","getICESetupTime","audioICESetupTime","getAudioICESetupTime","videoICESetupTime","getVideoICESetupTime","shareICESetupTime","getShareICESetupTime","localSDPGenRemoteSDPRecv","getLocalSDPGenRemoteSDPRecv","totalMediaJMT","getTotalMediaJMT","interstitialToMediaOKJMT","getInterstitialToMediaOKJMT","callInitMediaEngineReady","getCallInitMediaEngineReady","stayLobbyTime","getStayLobbyTime","joinRespRxStart","getAudioJoinRespRxStart","joinRespTxStart","getAudioJoinRespTxStart","getVideoJoinRespRxStart","getVideoJoinRespTxStart","merge","_assign","logger","log","_stringify","latencies","Object","fromEntries","latencyTimestamps","setMetricTimings","options","json","_body$metrics","JSON","parse","now","Date","toISOString","metrics","metric","originTime","triggered","sent","extractVersionMetadata","version","_version$split","_version$split2","_slicedToArray2","majorVersion","minorVersion","_parseInt2","generateClientErrorCodeForIceFailure","_ref2","signalingState","iceConnectionState","turnServerUsed","ICE_FAILURE_CLIENT_CODE","MISSING_ROAP_ANSWER_CLIENT_CODE","DTLS_HANDSHAKE_FAILED_CLIENT_CODE","ICE_FAILED_WITH_TURN_TLS_CLIENT_CODE","ICE_FAILED_WITHOUT_TURN_TLS_CLIENT_CODE"],"sources":["call-diagnostic-metrics.util.ts"],"sourcesContent":["/* eslint-disable valid-jsdoc */\nimport anonymize from 'ip-anonymize';\nimport util from 'util';\n\nimport {BrowserDetection} from '@webex/common';\nimport {WebexHttpError} from '@webex/webex-core';\nimport {isEmpty, merge} from 'lodash';\nimport {\n ClientEvent,\n Event,\n MediaQualityEventAudioSetupDelayPayload,\n MediaQualityEventVideoSetupDelayPayload,\n MetricEventNames,\n} from '../metrics.types';\nimport {\n BROWSER_MEDIA_ERROR_NAME_TO_CLIENT_ERROR_CODES_MAP,\n DTLS_HANDSHAKE_FAILED_CLIENT_CODE,\n ICE_FAILED_WITHOUT_TURN_TLS_CLIENT_CODE,\n ICE_FAILED_WITH_TURN_TLS_CLIENT_CODE,\n ICE_FAILURE_CLIENT_CODE,\n MISSING_ROAP_ANSWER_CLIENT_CODE,\n WBX_APP_API_URL,\n ERROR_DESCRIPTIONS,\n} from './config';\n\nconst {getOSName, getOSVersion, getBrowserName, getBrowserVersion} = BrowserDetection();\n\nexport const anonymizeIPAddress = (localIp) => anonymize(localIp, 28, 96);\n\n/**\n * Returns a formated string of the user agent.\n *\n * @returns {string} formatted user agent information\n */\nexport const userAgentToString = ({clientName, webexVersion}) => {\n let userAgentOption;\n let browserInfo;\n const clientInfo = util.format('client=%s', `${clientName}`);\n\n if (\n ['chrome', 'firefox', 'msie', 'msedge', 'safari'].indexOf(getBrowserName().toLowerCase()) !== -1\n ) {\n browserInfo = util.format(\n 'browser=%s',\n `${getBrowserName().toLowerCase()}/${getBrowserVersion().split('.')[0]}`\n );\n }\n const osInfo = util.format('os=%s', `${getOSName()}/${getOSVersion().split('.')[0]}`);\n\n if (browserInfo) {\n userAgentOption = `(${browserInfo}`;\n }\n if (osInfo) {\n userAgentOption = userAgentOption\n ? `${userAgentOption}; ${clientInfo}; ${osInfo}`\n : `${clientInfo}; (${osInfo}`;\n }\n if (userAgentOption) {\n userAgentOption += ')';\n\n return util.format(\n 'webex-js-sdk/%s %s',\n `${process.env.NODE_ENV}-${webexVersion}`,\n userAgentOption\n );\n }\n\n return util.format('webex-js-sdk/%s', `${process.env.NODE_ENV}-${webexVersion}`);\n};\n\n/**\n * Iterates object recursively and removes any\n * property that returns isEmpty for it's associated value\n * isEmpty = implementation from Lodash.\n *\n * It modifies the object in place (mutable)\n *\n * @param obj - input\n * @returns\n */\nexport const clearEmptyKeysRecursively = (obj: any) => {\n // Check if the object is empty\n if (Object.keys(obj).length === 0) {\n return;\n }\n\n Object.keys(obj).forEach((key) => {\n if (\n (typeof obj[key] === 'object' || typeof obj[key] === 'string' || Array.isArray(obj[key])) &&\n isEmpty(obj[key])\n ) {\n delete obj[key];\n }\n if (Array.isArray(obj[key])) {\n obj[key] = [...obj[key].filter((x) => !!x)];\n }\n if (typeof obj[key] === 'object') {\n clearEmptyKeysRecursively(obj[key]);\n }\n });\n};\n\n/**\n * Locus error codes start with 2. The next three digits are the\n * HTTP status code related to the error code (like 400, 403, 502, etc.)\n * The remaining three digits are just an increasing integer.\n * If it is 7 digits and starts with a 2, it is locus.\n *\n * @param errorCode\n * @returns {boolean}\n */\nexport const isLocusServiceErrorCode = (errorCode: string | number) => {\n const code = `${errorCode}`;\n\n if (code.length === 7 && code.charAt(0) === '2') {\n return true;\n }\n\n return false;\n};\n\n/**\n * MeetingInfo errors sometimes has body.data.meetingInfo object\n * MeetingInfo errors come with a wbxappapi url\n *\n * @param {Object} rawError\n * @returns {boolean}\n */\nexport const isMeetingInfoServiceError = (rawError: any) => {\n if (rawError.body?.data?.meetingInfo || rawError.body?.url?.includes(WBX_APP_API_URL)) {\n return true;\n }\n\n return false;\n};\n\n/**\n * Returns true if the raw error is a network related error\n *\n * @param {Object} rawError\n * @returns {boolean}\n */\nexport const isNetworkError = (rawError: any) => {\n if (rawError instanceof WebexHttpError.NetworkOrCORSError) {\n return true;\n }\n\n return false;\n};\n\n/**\n * Returns true if the error is an unauthorized error\n *\n * @param {Object} rawError\n * @returns {boolean}\n */\nexport const isUnauthorizedError = (rawError: any) => {\n if (rawError instanceof WebexHttpError.Unauthorized) {\n return true;\n }\n\n return false;\n};\n\n/**\n * Returns true if the error is an SdpOfferCreation error\n *\n * @param {Object} rawError\n * @returns {boolean}\n */\nexport const isSdpOfferCreationError = (rawError: any) => {\n // would LIKE to do rawError instanceof Errors.SdpOfferCreationError\n // but including internal-media-core in plugin-metrics breaks meetings and metrics unit tests\n if (rawError.name === ERROR_DESCRIPTIONS.SDP_OFFER_CREATION_ERROR) {\n return true;\n }\n\n return false;\n};\n\n/**\n * MDN Media Devices getUserMedia() method returns a name if it errs\n * Documentation can be found here: https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getUserMedia\n *\n * @param errorCode\n * @returns\n */\nexport const isBrowserMediaErrorName = (errorName: any) => {\n if (BROWSER_MEDIA_ERROR_NAME_TO_CLIENT_ERROR_CODES_MAP[errorName]) {\n return true;\n }\n\n return false;\n};\n\n/**\n * @param webClientDomain\n * @returns\n */\nexport const getBuildType = (\n webClientDomain,\n markAsTestEvent = false\n): Event['origin']['buildType'] => {\n // used temporary to test pre join in production without creating noise data, SPARK-468456\n if (markAsTestEvent) {\n return 'test';\n }\n\n if (\n webClientDomain?.includes('localhost') ||\n webClientDomain?.includes('127.0.0.1') ||\n process.env.NODE_ENV !== 'production'\n ) {\n return 'test';\n }\n\n return 'prod';\n};\n\n/**\n * Prepare metric item for submission.\n * @param {Object} webex sdk instance\n * @param {Object} item\n * @returns {Object} prepared item\n */\nexport const prepareDiagnosticMetricItem = (webex: any, item: any) => {\n const origin: Partial<Event['origin']> = {\n buildType: exports.getBuildType(\n item.eventPayload?.event?.eventData?.webClientDomain,\n item.eventPayload?.event?.eventData?.markAsTestEvent\n ),\n networkType: 'unknown',\n };\n\n // check event names and append latencies?\n const eventName = item.eventPayload?.event?.name as MetricEventNames;\n const joinTimes: ClientEvent['payload']['joinTimes'] = {};\n const audioSetupDelay: MediaQualityEventAudioSetupDelayPayload = {};\n const videoSetupDelay: MediaQualityEventVideoSetupDelayPayload = {};\n\n const cdl = webex.internal.newMetrics.callDiagnosticLatencies;\n\n switch (eventName) {\n case 'client.webexapp.launched':\n joinTimes.downloadTime = cdl.getDownloadTimeJMT();\n break;\n case 'client.login.end':\n joinTimes.otherAppApiReqResp = cdl.getOtherAppApiReqResp();\n joinTimes.exchangeCITokenJMT = cdl.getExchangeCITokenJMT();\n break;\n case 'client.interstitial-window.launched':\n joinTimes.meetingInfoReqResp = cdl.getMeetingInfoReqResp();\n joinTimes.clickToInterstitial = cdl.getClickToInterstitial();\n joinTimes.refreshCaptchaServiceReqResp = cdl.getRefreshCaptchaReqResp();\n joinTimes.downloadIntelligenceModelsReqResp = cdl.getDownloadIntelligenceModelsReqResp();\n break;\n\n case 'client.call.initiated':\n joinTimes.meetingInfoReqResp = cdl.getMeetingInfoReqResp();\n joinTimes.showInterstitialTime = cdl.getShowInterstitialTime();\n joinTimes.registerWDMDeviceJMT = cdl.getRegisterWDMDeviceJMT();\n joinTimes.getU2CTime = cdl.getU2CTime();\n joinTimes.getReachabilityClustersReqResp = cdl.getReachabilityClustersReqResp();\n break;\n\n case 'client.locus.join.response':\n joinTimes.meetingInfoReqResp = cdl.getMeetingInfoReqResp();\n joinTimes.callInitJoinReq = cdl.getCallInitJoinReq();\n joinTimes.joinReqResp = cdl.getJoinReqResp();\n joinTimes.pageJmt = cdl.getPageJMT();\n joinTimes.clickToInterstitial = cdl.getClickToInterstitial();\n joinTimes.interstitialToJoinOK = cdl.getInterstitialToJoinOK();\n joinTimes.totalJmt = cdl.getTotalJMT();\n joinTimes.clientJmt = cdl.getClientJMT();\n joinTimes.downloadTime = cdl.getDownloadTimeJMT();\n break;\n\n case 'client.ice.end':\n joinTimes.ICESetupTime = cdl.getICESetupTime();\n joinTimes.audioICESetupTime = cdl.getAudioICESetupTime();\n joinTimes.videoICESetupTime = cdl.getVideoICESetupTime();\n joinTimes.shareICESetupTime = cdl.getShareICESetupTime();\n break;\n\n case 'client.media.rx.start':\n joinTimes.localSDPGenRemoteSDPRecv = cdl.getLocalSDPGenRemoteSDPRecv();\n break;\n\n case 'client.media-engine.ready':\n joinTimes.totalMediaJMT = cdl.getTotalMediaJMT();\n joinTimes.interstitialToMediaOKJMT = cdl.getInterstitialToMediaOKJMT();\n joinTimes.callInitMediaEngineReady = cdl.getCallInitMediaEngineReady();\n joinTimes.stayLobbyTime = cdl.getStayLobbyTime();\n break;\n\n case 'client.mediaquality.event':\n audioSetupDelay.joinRespRxStart = cdl.getAudioJoinRespRxStart();\n audioSetupDelay.joinRespTxStart = cdl.getAudioJoinRespTxStart();\n videoSetupDelay.joinRespRxStart = cdl.getVideoJoinRespRxStart();\n videoSetupDelay.joinRespTxStart = cdl.getVideoJoinRespTxStart();\n }\n\n if (!isEmpty(joinTimes)) {\n item.eventPayload.event = merge(item.eventPayload.event, {joinTimes});\n }\n\n if (!isEmpty(audioSetupDelay)) {\n item.eventPayload.event = merge(item.eventPayload.event, {audioSetupDelay});\n }\n\n if (!isEmpty(videoSetupDelay)) {\n item.eventPayload.event = merge(item.eventPayload.event, {videoSetupDelay});\n }\n\n item.eventPayload.origin = Object.assign(origin, item.eventPayload.origin);\n\n // @ts-ignore\n webex.logger.log(\n `CallDiagnosticLatencies,prepareDiagnosticMetricItem: ${JSON.stringify({\n latencies: Object.fromEntries(cdl.latencyTimestamps),\n event: item,\n })}`\n );\n\n return item;\n};\n\n/**\n * Sets the originTime value(s) before the request/fetch.\n * This function is only useful if you are about to submit a metrics\n * request using pre-built fetch options;\n *\n * @param {any} options\n * @returns {any} the updated options object\n */\nexport const setMetricTimings = (options) => {\n if (options.body && options.json) {\n const body = JSON.parse(options.body);\n\n const now = new Date().toISOString();\n body.metrics?.forEach((metric) => {\n if (metric.eventPayload) {\n // The event will effectively be triggered and sent at the same time.\n // The existing triggered time is from when the options were built.\n metric.eventPayload.originTime = {\n triggered: now,\n sent: now,\n };\n }\n });\n options.body = JSON.stringify(body);\n }\n\n return options;\n};\n\nexport const extractVersionMetadata = (version: string) => {\n // extract major and minor version\n const [majorVersion, minorVersion] = version.split('.');\n\n return {\n majorVersion: parseInt(majorVersion, 10),\n minorVersion: parseInt(minorVersion, 10),\n };\n};\n\n/**\n * Generates client error codes for specific ice failures\n * that happen when trying to add media in a meeting.\n */\nexport const generateClientErrorCodeForIceFailure = ({\n signalingState,\n iceConnectionState,\n turnServerUsed,\n}: {\n signalingState: RTCPeerConnection['signalingState'];\n iceConnectionState: RTCPeerConnection['iceConnectionState'];\n turnServerUsed: boolean;\n}) => {\n let errorCode = ICE_FAILURE_CLIENT_CODE; // default;\n\n if (signalingState === 'have-local-offer') {\n errorCode = MISSING_ROAP_ANSWER_CLIENT_CODE;\n }\n\n if (\n signalingState === 'stable' &&\n (iceConnectionState === 'connected' || iceConnectionState === 'disconnected')\n ) {\n errorCode = DTLS_HANDSHAKE_FAILED_CLIENT_CODE;\n }\n\n if (\n signalingState !== 'have-local-offer' &&\n iceConnectionState !== 'connected' &&\n iceConnectionState !== 'disconnected'\n ) {\n if (turnServerUsed) {\n errorCode = ICE_FAILED_WITH_TURN_TLS_CLIENT_CODE;\n } else {\n errorCode = ICE_FAILED_WITHOUT_TURN_TLS_CLIENT_CODE;\n }\n }\n\n return errorCode;\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_ipAnonymize","_interopRequireDefault","require","_util","_common","_webexCore","_lodash","_config","_BrowserDetection","BrowserDetection","getOSName","getOSVersion","getBrowserName","getBrowserVersion","anonymizeIPAddress","exports","localIp","anonymize","userAgentToString","_ref","clientName","webexVersion","userAgentOption","browserInfo","clientInfo","util","format","concat","indexOf","toLowerCase","split","osInfo","process","env","NODE_ENV","clearEmptyKeysRecursively","obj","_keys","default","length","forEach","key","_typeof2","_isArray","isEmpty","_toConsumableArray2","filter","x","isLocusServiceErrorCode","errorCode","code","charAt","isMeetingInfoServiceError","rawError","_rawError$body","_rawError$body$data","_rawError$body2","_rawError$body2$url","body","data","meetingInfo","url","includes","WBX_APP_API_URL","isNetworkError","WebexHttpError","NetworkOrCORSError","isUnauthorizedError","Unauthorized","isSdpOfferCreationError","name","ERROR_DESCRIPTIONS","SDP_OFFER_CREATION_ERROR","isBrowserMediaErrorName","errorName","BROWSER_MEDIA_ERROR_NAME_TO_CLIENT_ERROR_CODES_MAP","getBuildType","webClientDomain","markAsTestEvent","arguments","undefined","prepareDiagnosticMetricItem","webex","item","_item$eventPayload","_item$eventPayload$ev","_item$eventPayload$ev2","_item$eventPayload2","_item$eventPayload2$e","_item$eventPayload2$e2","_item$eventPayload3","_item$eventPayload3$e","origin","buildType","eventPayload","event","eventData","networkType","eventName","joinTimes","audioSetupDelay","videoSetupDelay","cdl","internal","newMetrics","callDiagnosticLatencies","downloadTime","getDownloadTimeJMT","otherAppApiReqResp","getOtherAppApiReqResp","exchangeCITokenJMT","getExchangeCITokenJMT","meetingInfoReqResp","getMeetingInfoReqResp","clickToInterstitial","getClickToInterstitial","refreshCaptchaServiceReqResp","getRefreshCaptchaReqResp","downloadIntelligenceModelsReqResp","getDownloadIntelligenceModelsReqResp","showInterstitialTime","getShowInterstitialTime","registerWDMDeviceJMT","getRegisterWDMDeviceJMT","getU2CTime","getReachabilityClustersReqResp","callInitJoinReq","getCallInitJoinReq","joinReqResp","getJoinReqResp","pageJmt","getPageJMT","interstitialToJoinOK","getInterstitialToJoinOK","totalJmt","getTotalJMT","clientJmt","getClientJMT","ICESetupTime","getICESetupTime","audioICESetupTime","getAudioICESetupTime","videoICESetupTime","getVideoICESetupTime","shareICESetupTime","getShareICESetupTime","localSDPGenRemoteSDPRecv","getLocalSDPGenRemoteSDPRecv","joinRespRxStart","getAudioJoinRespRxStart","getVideoJoinRespRxStart","totalMediaJMT","getTotalMediaJMT","interstitialToMediaOKJMT","getInterstitialToMediaOKJMT","callInitMediaEngineReady","getCallInitMediaEngineReady","stayLobbyTime","getStayLobbyTime","joinRespTxStart","getAudioJoinRespTxStart","getVideoJoinRespTxStart","merge","_assign","logger","log","_stringify","latencies","Object","fromEntries","latencyTimestamps","setMetricTimings","options","json","_body$metrics","JSON","parse","now","Date","toISOString","metrics","metric","originTime","triggered","sent","extractVersionMetadata","version","_version$split","_version$split2","_slicedToArray2","majorVersion","minorVersion","_parseInt2","generateClientErrorCodeForIceFailure","_ref2","signalingState","iceConnected","turnServerUsed","unreachable","ICE_FAILURE_CLIENT_CODE","MISSING_ROAP_ANSWER_CLIENT_CODE","DTLS_HANDSHAKE_FAILED_CLIENT_CODE","ICE_AND_REACHABILITY_FAILED_CLIENT_CODE","ICE_FAILED_WITH_TURN_TLS_CLIENT_CODE","ICE_FAILED_WITHOUT_TURN_TLS_CLIENT_CODE"],"sources":["call-diagnostic-metrics.util.ts"],"sourcesContent":["/* eslint-disable valid-jsdoc */\nimport anonymize from 'ip-anonymize';\nimport util from 'util';\n\nimport {BrowserDetection} from '@webex/common';\nimport {WebexHttpError} from '@webex/webex-core';\nimport {isEmpty, merge} from 'lodash';\nimport {\n ClientEvent,\n Event,\n MediaQualityEventAudioSetupDelayPayload,\n MediaQualityEventVideoSetupDelayPayload,\n MetricEventNames,\n} from '../metrics.types';\nimport {\n BROWSER_MEDIA_ERROR_NAME_TO_CLIENT_ERROR_CODES_MAP,\n DTLS_HANDSHAKE_FAILED_CLIENT_CODE,\n ICE_FAILED_WITHOUT_TURN_TLS_CLIENT_CODE,\n ICE_FAILED_WITH_TURN_TLS_CLIENT_CODE,\n ICE_FAILURE_CLIENT_CODE,\n MISSING_ROAP_ANSWER_CLIENT_CODE,\n WBX_APP_API_URL,\n ERROR_DESCRIPTIONS,\n ICE_AND_REACHABILITY_FAILED_CLIENT_CODE,\n} from './config';\n\nconst {getOSName, getOSVersion, getBrowserName, getBrowserVersion} = BrowserDetection();\n\nexport const anonymizeIPAddress = (localIp) => anonymize(localIp, 28, 96);\n\n/**\n * Returns a formated string of the user agent.\n *\n * @returns {string} formatted user agent information\n */\nexport const userAgentToString = ({clientName, webexVersion}) => {\n let userAgentOption;\n let browserInfo;\n const clientInfo = util.format('client=%s', `${clientName}`);\n\n if (\n ['chrome', 'firefox', 'msie', 'msedge', 'safari'].indexOf(getBrowserName().toLowerCase()) !== -1\n ) {\n browserInfo = util.format(\n 'browser=%s',\n `${getBrowserName().toLowerCase()}/${getBrowserVersion().split('.')[0]}`\n );\n }\n const osInfo = util.format('os=%s', `${getOSName()}/${getOSVersion().split('.')[0]}`);\n\n if (browserInfo) {\n userAgentOption = `(${browserInfo}`;\n }\n if (osInfo) {\n userAgentOption = userAgentOption\n ? `${userAgentOption}; ${clientInfo}; ${osInfo}`\n : `${clientInfo}; (${osInfo}`;\n }\n if (userAgentOption) {\n userAgentOption += ')';\n\n return util.format(\n 'webex-js-sdk/%s %s',\n `${process.env.NODE_ENV}-${webexVersion}`,\n userAgentOption\n );\n }\n\n return util.format('webex-js-sdk/%s', `${process.env.NODE_ENV}-${webexVersion}`);\n};\n\n/**\n * Iterates object recursively and removes any\n * property that returns isEmpty for it's associated value\n * isEmpty = implementation from Lodash.\n *\n * It modifies the object in place (mutable)\n *\n * @param obj - input\n * @returns\n */\nexport const clearEmptyKeysRecursively = (obj: any) => {\n // Check if the object is empty\n if (Object.keys(obj).length === 0) {\n return;\n }\n\n Object.keys(obj).forEach((key) => {\n if (\n (typeof obj[key] === 'object' || typeof obj[key] === 'string' || Array.isArray(obj[key])) &&\n isEmpty(obj[key])\n ) {\n delete obj[key];\n }\n if (Array.isArray(obj[key])) {\n obj[key] = [...obj[key].filter((x) => !!x)];\n }\n if (typeof obj[key] === 'object') {\n clearEmptyKeysRecursively(obj[key]);\n }\n });\n};\n\n/**\n * Locus error codes start with 2. The next three digits are the\n * HTTP status code related to the error code (like 400, 403, 502, etc.)\n * The remaining three digits are just an increasing integer.\n * If it is 7 digits and starts with a 2, it is locus.\n *\n * @param errorCode\n * @returns {boolean}\n */\nexport const isLocusServiceErrorCode = (errorCode: string | number) => {\n const code = `${errorCode}`;\n\n if (code.length === 7 && code.charAt(0) === '2') {\n return true;\n }\n\n return false;\n};\n\n/**\n * MeetingInfo errors sometimes has body.data.meetingInfo object\n * MeetingInfo errors come with a wbxappapi url\n *\n * @param {Object} rawError\n * @returns {boolean}\n */\nexport const isMeetingInfoServiceError = (rawError: any) => {\n if (rawError.body?.data?.meetingInfo || rawError.body?.url?.includes(WBX_APP_API_URL)) {\n return true;\n }\n\n return false;\n};\n\n/**\n * Returns true if the raw error is a network related error\n *\n * @param {Object} rawError\n * @returns {boolean}\n */\nexport const isNetworkError = (rawError: any) => {\n if (rawError instanceof WebexHttpError.NetworkOrCORSError) {\n return true;\n }\n\n return false;\n};\n\n/**\n * Returns true if the error is an unauthorized error\n *\n * @param {Object} rawError\n * @returns {boolean}\n */\nexport const isUnauthorizedError = (rawError: any) => {\n if (rawError instanceof WebexHttpError.Unauthorized) {\n return true;\n }\n\n return false;\n};\n\n/**\n * Returns true if the error is an SdpOfferCreation error\n *\n * @param {Object} rawError\n * @returns {boolean}\n */\nexport const isSdpOfferCreationError = (rawError: any) => {\n // would LIKE to do rawError instanceof Errors.SdpOfferCreationError\n // but including internal-media-core in plugin-metrics breaks meetings and metrics unit tests\n if (rawError.name === ERROR_DESCRIPTIONS.SDP_OFFER_CREATION_ERROR) {\n return true;\n }\n\n return false;\n};\n\n/**\n * MDN Media Devices getUserMedia() method returns a name if it errs\n * Documentation can be found here: https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getUserMedia\n *\n * @param errorCode\n * @returns\n */\nexport const isBrowserMediaErrorName = (errorName: any) => {\n if (BROWSER_MEDIA_ERROR_NAME_TO_CLIENT_ERROR_CODES_MAP[errorName]) {\n return true;\n }\n\n return false;\n};\n\n/**\n * @param webClientDomain\n * @returns\n */\nexport const getBuildType = (\n webClientDomain,\n markAsTestEvent = false\n): Event['origin']['buildType'] => {\n // used temporary to test pre join in production without creating noise data, SPARK-468456\n if (markAsTestEvent) {\n return 'test';\n }\n\n if (\n webClientDomain?.includes('localhost') ||\n webClientDomain?.includes('127.0.0.1') ||\n process.env.NODE_ENV !== 'production'\n ) {\n return 'test';\n }\n\n return 'prod';\n};\n\n/**\n * Prepare metric item for submission.\n * @param {Object} webex sdk instance\n * @param {Object} item\n * @returns {Object} prepared item\n */\nexport const prepareDiagnosticMetricItem = (webex: any, item: any) => {\n const origin: Partial<Event['origin']> = {\n buildType: getBuildType(\n item.eventPayload?.event?.eventData?.webClientDomain,\n item.eventPayload?.event?.eventData?.markAsTestEvent\n ),\n networkType: 'unknown',\n };\n\n // check event names and append latencies?\n const eventName = item.eventPayload?.event?.name as MetricEventNames;\n const joinTimes: ClientEvent['payload']['joinTimes'] = {};\n const audioSetupDelay: MediaQualityEventAudioSetupDelayPayload = {};\n const videoSetupDelay: MediaQualityEventVideoSetupDelayPayload = {};\n\n const cdl = webex.internal.newMetrics.callDiagnosticLatencies;\n\n switch (eventName) {\n case 'client.webexapp.launched':\n joinTimes.downloadTime = cdl.getDownloadTimeJMT();\n break;\n case 'client.login.end':\n joinTimes.otherAppApiReqResp = cdl.getOtherAppApiReqResp();\n joinTimes.exchangeCITokenJMT = cdl.getExchangeCITokenJMT();\n break;\n case 'client.interstitial-window.launched':\n joinTimes.meetingInfoReqResp = cdl.getMeetingInfoReqResp();\n joinTimes.clickToInterstitial = cdl.getClickToInterstitial();\n joinTimes.refreshCaptchaServiceReqResp = cdl.getRefreshCaptchaReqResp();\n joinTimes.downloadIntelligenceModelsReqResp = cdl.getDownloadIntelligenceModelsReqResp();\n break;\n\n case 'client.call.initiated':\n joinTimes.meetingInfoReqResp = cdl.getMeetingInfoReqResp();\n joinTimes.showInterstitialTime = cdl.getShowInterstitialTime();\n joinTimes.registerWDMDeviceJMT = cdl.getRegisterWDMDeviceJMT();\n joinTimes.getU2CTime = cdl.getU2CTime();\n joinTimes.getReachabilityClustersReqResp = cdl.getReachabilityClustersReqResp();\n break;\n\n case 'client.locus.join.response':\n joinTimes.meetingInfoReqResp = cdl.getMeetingInfoReqResp();\n joinTimes.callInitJoinReq = cdl.getCallInitJoinReq();\n joinTimes.joinReqResp = cdl.getJoinReqResp();\n joinTimes.pageJmt = cdl.getPageJMT();\n joinTimes.clickToInterstitial = cdl.getClickToInterstitial();\n joinTimes.interstitialToJoinOK = cdl.getInterstitialToJoinOK();\n joinTimes.totalJmt = cdl.getTotalJMT();\n joinTimes.clientJmt = cdl.getClientJMT();\n joinTimes.downloadTime = cdl.getDownloadTimeJMT();\n break;\n\n case 'client.ice.end':\n joinTimes.ICESetupTime = cdl.getICESetupTime();\n joinTimes.audioICESetupTime = cdl.getAudioICESetupTime();\n joinTimes.videoICESetupTime = cdl.getVideoICESetupTime();\n joinTimes.shareICESetupTime = cdl.getShareICESetupTime();\n break;\n\n case 'client.media.rx.start':\n joinTimes.localSDPGenRemoteSDPRecv = cdl.getLocalSDPGenRemoteSDPRecv();\n audioSetupDelay.joinRespRxStart = cdl.getAudioJoinRespRxStart();\n videoSetupDelay.joinRespRxStart = cdl.getVideoJoinRespRxStart();\n break;\n\n case 'client.media-engine.ready':\n joinTimes.totalMediaJMT = cdl.getTotalMediaJMT();\n joinTimes.interstitialToMediaOKJMT = cdl.getInterstitialToMediaOKJMT();\n joinTimes.callInitMediaEngineReady = cdl.getCallInitMediaEngineReady();\n joinTimes.stayLobbyTime = cdl.getStayLobbyTime();\n break;\n\n case 'client.media.tx.start':\n audioSetupDelay.joinRespTxStart = cdl.getAudioJoinRespTxStart();\n videoSetupDelay.joinRespTxStart = cdl.getVideoJoinRespTxStart();\n }\n\n if (!isEmpty(joinTimes)) {\n item.eventPayload.event = merge(item.eventPayload.event, {joinTimes});\n }\n\n if (!isEmpty(audioSetupDelay)) {\n item.eventPayload.event = merge(item.eventPayload.event, {audioSetupDelay});\n }\n\n if (!isEmpty(videoSetupDelay)) {\n item.eventPayload.event = merge(item.eventPayload.event, {videoSetupDelay});\n }\n\n item.eventPayload.origin = Object.assign(origin, item.eventPayload.origin);\n\n webex.logger.log(\n `CallDiagnosticLatencies,prepareDiagnosticMetricItem: ${JSON.stringify({\n latencies: Object.fromEntries(cdl.latencyTimestamps),\n event: item,\n })}`\n );\n\n return item;\n};\n\n/**\n * Sets the originTime value(s) before the request/fetch.\n * This function is only useful if you are about to submit a metrics\n * request using pre-built fetch options;\n *\n * @param {any} options\n * @returns {any} the updated options object\n */\nexport const setMetricTimings = (options) => {\n if (options.body && options.json) {\n const body = JSON.parse(options.body);\n\n const now = new Date().toISOString();\n body.metrics?.forEach((metric) => {\n if (metric.eventPayload) {\n // The event will effectively be triggered and sent at the same time.\n // The existing triggered time is from when the options were built.\n metric.eventPayload.originTime = {\n triggered: now,\n sent: now,\n };\n }\n });\n options.body = JSON.stringify(body);\n }\n\n return options;\n};\n\nexport const extractVersionMetadata = (version: string) => {\n // extract major and minor version\n const [majorVersion, minorVersion] = version.split('.');\n\n return {\n majorVersion: parseInt(majorVersion, 10),\n minorVersion: parseInt(minorVersion, 10),\n };\n};\n\n/**\n * Generates client error codes for specific ice failures\n * that happen when trying to add media in a meeting.\n */\nexport const generateClientErrorCodeForIceFailure = ({\n signalingState,\n iceConnected,\n turnServerUsed,\n unreachable,\n}: {\n signalingState: RTCPeerConnection['signalingState'];\n iceConnected: boolean;\n turnServerUsed: boolean;\n unreachable: boolean;\n}) => {\n let errorCode = ICE_FAILURE_CLIENT_CODE; // default;\n\n if (signalingState === 'have-local-offer') {\n errorCode = MISSING_ROAP_ANSWER_CLIENT_CODE;\n }\n\n if (signalingState === 'stable' && iceConnected) {\n errorCode = DTLS_HANDSHAKE_FAILED_CLIENT_CODE;\n }\n\n if (signalingState !== 'have-local-offer' && !iceConnected) {\n if (turnServerUsed) {\n if (unreachable) {\n errorCode = ICE_AND_REACHABILITY_FAILED_CLIENT_CODE;\n } else {\n errorCode = ICE_FAILED_WITH_TURN_TLS_CLIENT_CODE;\n }\n } else {\n errorCode = ICE_FAILED_WITHOUT_TURN_TLS_CLIENT_CODE;\n }\n }\n\n return errorCode;\n};\n"],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequ
|
|
|
5
5
|
_Object$defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
-
exports.WEBEX_SUB_SERVICE_TYPES = exports.WBX_APP_API_URL = exports.UNKNOWN_ERROR = exports.SERVICE_ERROR_CODES_TO_CLIENT_ERROR_CODES_MAP = exports.SDP_OFFER_CREATION_ERROR_MAP = exports.NEW_LOCUS_ERROR_CLIENT_CODE = exports.NETWORK_ERROR = exports.MISSING_ROAP_ANSWER_CLIENT_CODE = exports.MEETING_INFO_LOOKUP_ERROR_CLIENT_CODE = exports.ICE_FAILURE_CLIENT_CODE = exports.ICE_FAILED_WITH_TURN_TLS_CLIENT_CODE = exports.ICE_FAILED_WITHOUT_TURN_TLS_CLIENT_CODE = exports.ERROR_DESCRIPTIONS = exports.DTLS_HANDSHAKE_FAILED_CLIENT_CODE = exports.CLIENT_ERROR_CODE_TO_ERROR_PAYLOAD = exports.CALL_DIAGNOSTIC_LOG_IDENTIFIER = exports.CALL_DIAGNOSTIC_EVENT_FAILED_TO_SEND = exports.BROWSER_MEDIA_ERROR_NAME_TO_CLIENT_ERROR_CODES_MAP = exports.AUTHENTICATION_FAILED_CODE = void 0;
|
|
8
|
+
exports.WEBEX_SUB_SERVICE_TYPES = exports.WBX_APP_API_URL = exports.UNKNOWN_ERROR = exports.SERVICE_ERROR_CODES_TO_CLIENT_ERROR_CODES_MAP = exports.SDP_OFFER_CREATION_ERROR_MAP = exports.NEW_LOCUS_ERROR_CLIENT_CODE = exports.NETWORK_ERROR = exports.MISSING_ROAP_ANSWER_CLIENT_CODE = exports.MEETING_INFO_LOOKUP_ERROR_CLIENT_CODE = exports.ICE_FAILURE_CLIENT_CODE = exports.ICE_FAILED_WITH_TURN_TLS_CLIENT_CODE = exports.ICE_FAILED_WITHOUT_TURN_TLS_CLIENT_CODE = exports.ICE_AND_REACHABILITY_FAILED_CLIENT_CODE = exports.ERROR_DESCRIPTIONS = exports.DTLS_HANDSHAKE_FAILED_CLIENT_CODE = exports.CLIENT_ERROR_CODE_TO_ERROR_PAYLOAD = exports.CALL_DIAGNOSTIC_LOG_IDENTIFIER = exports.CALL_DIAGNOSTIC_EVENT_FAILED_TO_SEND = exports.BROWSER_MEDIA_ERROR_NAME_TO_CLIENT_ERROR_CODES_MAP = exports.AUTHENTICATION_FAILED_CODE = void 0;
|
|
9
9
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
|
|
10
10
|
var _CLIENT_ERROR_CODE_TO;
|
|
11
11
|
/* eslint-disable import/prefer-default-export */
|
|
@@ -23,6 +23,7 @@ var MISSING_ROAP_ANSWER_CLIENT_CODE = exports.MISSING_ROAP_ANSWER_CLIENT_CODE =
|
|
|
23
23
|
var DTLS_HANDSHAKE_FAILED_CLIENT_CODE = exports.DTLS_HANDSHAKE_FAILED_CLIENT_CODE = 2008;
|
|
24
24
|
var ICE_FAILED_WITH_TURN_TLS_CLIENT_CODE = exports.ICE_FAILED_WITH_TURN_TLS_CLIENT_CODE = 2010;
|
|
25
25
|
var ICE_FAILED_WITHOUT_TURN_TLS_CLIENT_CODE = exports.ICE_FAILED_WITHOUT_TURN_TLS_CLIENT_CODE = 2009;
|
|
26
|
+
var ICE_AND_REACHABILITY_FAILED_CLIENT_CODE = exports.ICE_AND_REACHABILITY_FAILED_CLIENT_CODE = 2011;
|
|
26
27
|
var WBX_APP_API_URL = exports.WBX_APP_API_URL = 'wbxappapi'; // MeetingInfo WebexAppApi response object normally contains a body.url that includes the string 'wbxappapi'
|
|
27
28
|
|
|
28
29
|
var WEBEX_SUB_SERVICE_TYPES = exports.WEBEX_SUB_SERVICE_TYPES = {
|
|
@@ -120,6 +121,7 @@ var ERROR_DESCRIPTIONS = exports.ERROR_DESCRIPTIONS = {
|
|
|
120
121
|
DTLS_HANDSHAKE_FAILED: 'DTLSHandshakeFailed',
|
|
121
122
|
ICE_FAILED_WITHOUT_TURN_TLS: 'ICEFailedWithoutTURN_TLS',
|
|
122
123
|
ICE_FAILED_WITH_TURN_TLS: 'ICEFailedWithTURN_TLS',
|
|
124
|
+
ICE_AND_REACHABILITY_FAILED: 'ICEAndReachabilityFailed',
|
|
123
125
|
SDP_OFFER_CREATION_ERROR: 'SdpOfferCreationError',
|
|
124
126
|
SDP_OFFER_CREATION_ERROR_MISSING_CODEC: 'SdpOfferCreationErrorMissingCodec'
|
|
125
127
|
};
|
|
@@ -361,7 +363,7 @@ var CLIENT_ERROR_CODE_TO_ERROR_PAYLOAD = exports.CLIENT_ERROR_CODE_TO_ERROR_PAYL
|
|
|
361
363
|
fatal: true
|
|
362
364
|
}), MISSING_ROAP_ANSWER_CLIENT_CODE, {
|
|
363
365
|
errorDescription: ERROR_DESCRIPTIONS.MISSING_ROAP_ANSWER,
|
|
364
|
-
category: '
|
|
366
|
+
category: 'media',
|
|
365
367
|
fatal: true
|
|
366
368
|
}), DTLS_HANDSHAKE_FAILED_CLIENT_CODE, {
|
|
367
369
|
errorDescription: ERROR_DESCRIPTIONS.DTLS_HANDSHAKE_FAILED,
|
|
@@ -373,7 +375,11 @@ var CLIENT_ERROR_CODE_TO_ERROR_PAYLOAD = exports.CLIENT_ERROR_CODE_TO_ERROR_PAYL
|
|
|
373
375
|
fatal: true
|
|
374
376
|
}), ICE_FAILED_WITH_TURN_TLS_CLIENT_CODE, {
|
|
375
377
|
errorDescription: ERROR_DESCRIPTIONS.ICE_FAILED_WITH_TURN_TLS,
|
|
376
|
-
category: '
|
|
378
|
+
category: 'media',
|
|
379
|
+
fatal: true
|
|
380
|
+
}), ICE_AND_REACHABILITY_FAILED_CLIENT_CODE, {
|
|
381
|
+
errorDescription: ERROR_DESCRIPTIONS.ICE_AND_REACHABILITY_FAILED,
|
|
382
|
+
category: 'expected',
|
|
377
383
|
fatal: true
|
|
378
384
|
}), 2050, {
|
|
379
385
|
errorDescription: ERROR_DESCRIPTIONS.SDP_OFFER_CREATION_ERROR,
|
|
@@ -405,11 +411,11 @@ var CLIENT_ERROR_CODE_TO_ERROR_PAYLOAD = exports.CLIENT_ERROR_CODE_TO_ERROR_PAYL
|
|
|
405
411
|
errorDescription: ERROR_DESCRIPTIONS.CLOUDBERRY_UNAVAILABLE,
|
|
406
412
|
category: 'expected',
|
|
407
413
|
fatal: true
|
|
408
|
-
}), 3007, {
|
|
414
|
+
}), (0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)(_CLIENT_ERROR_CODE_TO, 3007, {
|
|
409
415
|
errorDescription: ERROR_DESCRIPTIONS.STREAM_ERROR_NO_MEDIA,
|
|
410
416
|
category: 'expected',
|
|
411
417
|
fatal: true
|
|
412
|
-
}),
|
|
418
|
+
}), 3013, {
|
|
413
419
|
errorDescription: ERROR_DESCRIPTIONS.ROOM_TOO_LARGE_FREE_ACCOUNT,
|
|
414
420
|
category: 'expected',
|
|
415
421
|
fatal: false
|
|
@@ -447,11 +453,11 @@ var CLIENT_ERROR_CODE_TO_ERROR_PAYLOAD = exports.CLIENT_ERROR_CODE_TO_ERROR_PAYL
|
|
|
447
453
|
errorDescription: ERROR_DESCRIPTIONS.NEW_LOCUS_ERROR,
|
|
448
454
|
category: 'signaling',
|
|
449
455
|
fatal: true
|
|
450
|
-
}), 4009, {
|
|
456
|
+
}), (0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)(_CLIENT_ERROR_CODE_TO, 4009, {
|
|
451
457
|
errorDescription: ERROR_DESCRIPTIONS.NETWORK_UNAVAILABLE,
|
|
452
458
|
category: 'network',
|
|
453
459
|
fatal: true
|
|
454
|
-
}),
|
|
460
|
+
}), 4010, {
|
|
455
461
|
errorDescription: ERROR_DESCRIPTIONS.MEETING_UNAVAILABLE,
|
|
456
462
|
category: 'expected',
|
|
457
463
|
fatal: true
|
|
@@ -490,11 +496,11 @@ var CLIENT_ERROR_CODE_TO_ERROR_PAYLOAD = exports.CLIENT_ERROR_CODE_TO_ERROR_PAYL
|
|
|
490
496
|
category: 'expected',
|
|
491
497
|
fatal: true,
|
|
492
498
|
name: 'locus.response'
|
|
493
|
-
}), 4019, {
|
|
499
|
+
}), (0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)(_CLIENT_ERROR_CODE_TO, 4019, {
|
|
494
500
|
errorDescription: ERROR_DESCRIPTIONS.ONE_ON_ONE_TO_SELF_NOT_ALLOWED,
|
|
495
501
|
category: 'expected',
|
|
496
502
|
fatal: true
|
|
497
|
-
}),
|
|
503
|
+
}), 4020, {
|
|
498
504
|
errorDescription: ERROR_DESCRIPTIONS.REMOVED_PARTICIPANT,
|
|
499
505
|
category: 'expected',
|
|
500
506
|
fatal: true
|
|
@@ -530,11 +536,11 @@ var CLIENT_ERROR_CODE_TO_ERROR_PAYLOAD = exports.CLIENT_ERROR_CODE_TO_ERROR_PAYL
|
|
|
530
536
|
errorDescription: ERROR_DESCRIPTIONS.CONVERSATION_NOT_FOUND,
|
|
531
537
|
category: 'expected',
|
|
532
538
|
fatal: true
|
|
533
|
-
}), 4029, {
|
|
539
|
+
}), (0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)(_CLIENT_ERROR_CODE_TO, 4029, {
|
|
534
540
|
errorDescription: ERROR_DESCRIPTIONS.START_RECORDING_FAILED,
|
|
535
541
|
category: 'expected',
|
|
536
542
|
fatal: true
|
|
537
|
-
}),
|
|
543
|
+
}), 4030, {
|
|
538
544
|
errorDescription: ERROR_DESCRIPTIONS.RECORDING_IN_PROGRESS_FAILED,
|
|
539
545
|
category: 'expected',
|
|
540
546
|
fatal: true
|
|
@@ -570,11 +576,11 @@ var CLIENT_ERROR_CODE_TO_ERROR_PAYLOAD = exports.CLIENT_ERROR_CODE_TO_ERROR_PAYL
|
|
|
570
576
|
errorDescription: ERROR_DESCRIPTIONS.USER_NEEDS_ACTIVATION,
|
|
571
577
|
category: 'expected',
|
|
572
578
|
fatal: true
|
|
573
|
-
}), 4103, {
|
|
579
|
+
}), (0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)(_CLIENT_ERROR_CODE_TO, 4103, {
|
|
574
580
|
errorDescription: ERROR_DESCRIPTIONS.SIGN_UP_INVALID_EMAIL,
|
|
575
581
|
category: 'expected',
|
|
576
582
|
fatal: true
|
|
577
|
-
}),
|
|
583
|
+
}), 2729, {
|
|
578
584
|
errorDescription: ERROR_DESCRIPTIONS.NO_MEDIA_FOUND,
|
|
579
585
|
category: 'expected',
|
|
580
586
|
fatal: false
|