@webex/calling 3.9.0-multi-llms.3 → 3.9.0-multi-llms.5
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/CallingClient/registration/register.js +435 -365
- package/dist/CallingClient/registration/register.js.map +1 -1
- package/dist/CallingClient/registration/register.test.js +96 -24
- package/dist/CallingClient/registration/register.test.js.map +1 -1
- package/dist/CallingClient/registration/webWorker.js +20 -6
- package/dist/CallingClient/registration/webWorker.js.map +1 -1
- package/dist/CallingClient/registration/webWorker.test.js +71 -24
- package/dist/CallingClient/registration/webWorker.test.js.map +1 -1
- package/dist/CallingClient/registration/webWorkerStr.js +1 -1
- package/dist/CallingClient/registration/webWorkerStr.js.map +1 -1
- package/dist/Metrics/index.js +85 -50
- package/dist/Metrics/index.js.map +1 -1
- package/dist/Metrics/index.test.js +54 -25
- package/dist/Metrics/index.test.js.map +1 -1
- package/dist/common/Utils.js.map +1 -1
- package/dist/module/CallingClient/registration/register.js +23 -2
- package/dist/module/CallingClient/registration/webWorker.js +15 -2
- package/dist/module/CallingClient/registration/webWorkerStr.js +19 -3
- package/dist/module/Metrics/index.js +56 -23
- package/dist/types/CallingClient/registration/register.d.ts +1 -0
- package/dist/types/CallingClient/registration/register.d.ts.map +1 -1
- package/dist/types/CallingClient/registration/webWorker.d.ts.map +1 -1
- package/dist/types/CallingClient/registration/webWorkerStr.d.ts +1 -1
- package/dist/types/CallingClient/registration/webWorkerStr.d.ts.map +1 -1
- package/dist/types/Metrics/index.d.ts.map +1 -1
- package/dist/types/common/Utils.d.ts.map +1 -1
- package/package.json +3 -3
|
@@ -23,16 +23,15 @@ var webex = (0, _testUtil.getTestUtilsWebex)();
|
|
|
23
23
|
describe('CALLING: Metric tests', function () {
|
|
24
24
|
var metricManager = (0, _index.getMetricManager)(webex, _types3.ServiceIndicator.CALLING);
|
|
25
25
|
var mockDeviceInfo = (0, _testUtil.getMockDeviceInfo)();
|
|
26
|
-
var
|
|
26
|
+
var submitClientMetricSpy = jest.spyOn(webex.internal.metrics, 'submitClientMetrics');
|
|
27
27
|
var MOCK_VERSION_NUMBER = '1.0.0';
|
|
28
28
|
var originalEnv = process.env;
|
|
29
|
-
webex.internal.metrics.submitClientMetrics = mockSubmitClientMetric;
|
|
30
29
|
var mockCallId = '123456';
|
|
31
30
|
var mockCorrelationId = '0931237';
|
|
32
31
|
var mockCallAction = 'S_SEND_CALL_SETUP';
|
|
33
32
|
var mockMediaAction = 'S_SEND_ROAP_OFFER';
|
|
34
33
|
beforeEach(function () {
|
|
35
|
-
|
|
34
|
+
submitClientMetricSpy.mockClear();
|
|
36
35
|
process.env = _objectSpread(_objectSpread({}, originalEnv), {}, {
|
|
37
36
|
CALLING_SDK_VERSION: MOCK_VERSION_NUMBER
|
|
38
37
|
});
|
|
@@ -66,7 +65,7 @@ describe('CALLING: Metric tests', function () {
|
|
|
66
65
|
type: _types.METRIC_TYPE.BEHAVIORAL
|
|
67
66
|
};
|
|
68
67
|
metricManager.submitRegistrationMetric(_types.METRIC_EVENT.REGISTRATION, _types.REG_ACTION.REGISTER, _types.METRIC_TYPE.BEHAVIORAL, _constants.REGISTRATION_UTIL, 'PRIMARY', 'webex-js-sdk_06bafdd0-2f9b-4cd7-b438-9c0d95ecec9b_15', undefined, undefined);
|
|
69
|
-
expect(
|
|
68
|
+
expect(submitClientMetricSpy).toBeCalledOnceWith(_types.METRIC_EVENT.REGISTRATION, expectedData);
|
|
70
69
|
});
|
|
71
70
|
it('submit registration failure metric', function () {
|
|
72
71
|
metricManager.setDeviceInfo(mockDeviceInfo);
|
|
@@ -95,12 +94,42 @@ describe('CALLING: Metric tests', function () {
|
|
|
95
94
|
type: _types.METRIC_TYPE.BEHAVIORAL
|
|
96
95
|
};
|
|
97
96
|
metricManager.submitRegistrationMetric(_types.METRIC_EVENT.REGISTRATION_ERROR, _types.REG_ACTION.REGISTER, _types.METRIC_TYPE.BEHAVIORAL, _constants.REGISTRATION_UTIL, 'BACKUP', 'webex-js-sdk_06bafdd0-2f9b-4cd7-b438-9c0d95ecec9b_15', undefined, clientError);
|
|
98
|
-
expect(
|
|
97
|
+
expect(submitClientMetricSpy).toBeCalledOnceWith(_types.METRIC_EVENT.REGISTRATION_ERROR, expectedData);
|
|
98
|
+
});
|
|
99
|
+
it('submit keepalive failure metric', function () {
|
|
100
|
+
metricManager.setDeviceInfo(mockDeviceInfo);
|
|
101
|
+
var clientError = (0, _CallingDeviceError.createClientError)('', {}, _types2.ERROR_TYPE.DEFAULT, _types3.RegistrationStatus.INACTIVE);
|
|
102
|
+
var err = {};
|
|
103
|
+
err.context = {};
|
|
104
|
+
err.message = 'Unknown Error';
|
|
105
|
+
err.type = _types2.ERROR_TYPE.NOT_FOUND;
|
|
106
|
+
clientError.setError(err);
|
|
107
|
+
var expectedData = {
|
|
108
|
+
tags: {
|
|
109
|
+
action: _types.REG_ACTION.KEEPALIVE_FAILURE,
|
|
110
|
+
device_id: mockDeviceInfo.device.deviceId,
|
|
111
|
+
service_indicator: _types3.ServiceIndicator.CALLING
|
|
112
|
+
},
|
|
113
|
+
fields: {
|
|
114
|
+
device_url: mockDeviceInfo.device.clientDeviceUri,
|
|
115
|
+
mobius_url: mockDeviceInfo.device.uri,
|
|
116
|
+
calling_sdk_version: MOCK_VERSION_NUMBER,
|
|
117
|
+
reg_source: _constants.REGISTRATION_UTIL,
|
|
118
|
+
server_type: 'BACKUP',
|
|
119
|
+
trackingId: 'webex-js-sdk_06bafdd0-2f9b-4cd7-b438-9c0d95ecec9b_15',
|
|
120
|
+
keepalive_count: 1,
|
|
121
|
+
error: clientError.getError().message,
|
|
122
|
+
error_type: clientError.getError().type
|
|
123
|
+
},
|
|
124
|
+
type: _types.METRIC_TYPE.BEHAVIORAL
|
|
125
|
+
};
|
|
126
|
+
metricManager.submitRegistrationMetric(_types.METRIC_EVENT.KEEPALIVE_ERROR, _types.REG_ACTION.KEEPALIVE_FAILURE, _types.METRIC_TYPE.BEHAVIORAL, _constants.REGISTRATION_UTIL, 'BACKUP', 'webex-js-sdk_06bafdd0-2f9b-4cd7-b438-9c0d95ecec9b_15', 1, clientError);
|
|
127
|
+
expect(submitClientMetricSpy).toHaveBeenCalledWith(_types.METRIC_EVENT.KEEPALIVE_ERROR, expectedData);
|
|
99
128
|
});
|
|
100
129
|
it('submit unknown registration metric', function () {
|
|
101
130
|
var logSpy = jest.spyOn(_Logger.default, 'warn');
|
|
102
131
|
metricManager.submitRegistrationMetric('invalidMetricName', _types.REG_ACTION.REGISTER, _types.METRIC_TYPE.OPERATIONAL, _constants.REGISTRATION_UTIL, 'PRIMARY', undefined, undefined, undefined);
|
|
103
|
-
expect(
|
|
132
|
+
expect(submitClientMetricSpy).not.toBeCalled();
|
|
104
133
|
expect(logSpy).toBeCalledOnceWith('Invalid metric name received. Rejecting request to submit metric.', {
|
|
105
134
|
file: 'metric',
|
|
106
135
|
method: 'submitRegistrationMetric'
|
|
@@ -128,7 +157,7 @@ describe('CALLING: Metric tests', function () {
|
|
|
128
157
|
type: _types.METRIC_TYPE.BEHAVIORAL
|
|
129
158
|
};
|
|
130
159
|
metricManager.submitCallMetric(_types.METRIC_EVENT.CALL, mockCallAction, _types.METRIC_TYPE.BEHAVIORAL, mockCallId, mockCorrelationId);
|
|
131
|
-
expect(
|
|
160
|
+
expect(submitClientMetricSpy).toBeCalledOnceWith(_types.METRIC_EVENT.CALL, expectedData);
|
|
132
161
|
});
|
|
133
162
|
it('submit call failure metric', function () {
|
|
134
163
|
var callError = (0, _CallError.createCallError)('', {}, _types2.ERROR_TYPE.DEFAULT, mockCorrelationId, _types2.ERROR_LAYER.CALL_CONTROL);
|
|
@@ -155,12 +184,12 @@ describe('CALLING: Metric tests', function () {
|
|
|
155
184
|
type: _types.METRIC_TYPE.BEHAVIORAL
|
|
156
185
|
};
|
|
157
186
|
metricManager.submitCallMetric(_types.METRIC_EVENT.CALL_ERROR, mockCallAction, _types.METRIC_TYPE.BEHAVIORAL, mockCallId, mockCorrelationId, callError);
|
|
158
|
-
expect(
|
|
187
|
+
expect(submitClientMetricSpy).toBeCalledOnceWith(_types.METRIC_EVENT.CALL_ERROR, expectedData);
|
|
159
188
|
});
|
|
160
189
|
it('submit unknown call metric', function () {
|
|
161
190
|
var logSpy = jest.spyOn(_Logger.default, 'warn');
|
|
162
191
|
metricManager.submitCallMetric('invalidMetricName', mockCallAction, _types.METRIC_TYPE.OPERATIONAL, mockCallId, mockCorrelationId);
|
|
163
|
-
expect(
|
|
192
|
+
expect(submitClientMetricSpy).not.toBeCalled();
|
|
164
193
|
expect(logSpy).toBeCalledOnceWith('Invalid metric name received. Rejecting request to submit metric.', {
|
|
165
194
|
file: 'metric',
|
|
166
195
|
method: 'submitCallMetric'
|
|
@@ -191,7 +220,7 @@ describe('CALLING: Metric tests', function () {
|
|
|
191
220
|
type: _types.METRIC_TYPE.BEHAVIORAL
|
|
192
221
|
};
|
|
193
222
|
metricManager.submitMediaMetric(_types.METRIC_EVENT.MEDIA, mockMediaAction, _types.METRIC_TYPE.BEHAVIORAL, mockCallId, mockCorrelationId, mockSdp, mockSdp);
|
|
194
|
-
expect(
|
|
223
|
+
expect(submitClientMetricSpy).toBeCalledOnceWith(_types.METRIC_EVENT.MEDIA, expectedData);
|
|
195
224
|
});
|
|
196
225
|
it('submit media failure metric', function () {
|
|
197
226
|
var callError = (0, _CallError.createCallError)('', {}, _types2.ERROR_TYPE.DEFAULT, mockCorrelationId, _types2.ERROR_LAYER.MEDIA);
|
|
@@ -220,12 +249,12 @@ describe('CALLING: Metric tests', function () {
|
|
|
220
249
|
type: _types.METRIC_TYPE.BEHAVIORAL
|
|
221
250
|
};
|
|
222
251
|
metricManager.submitMediaMetric(_types.METRIC_EVENT.MEDIA_ERROR, mockMediaAction, _types.METRIC_TYPE.BEHAVIORAL, mockCallId, mockCorrelationId, mockSdp, mockSdp, callError);
|
|
223
|
-
expect(
|
|
252
|
+
expect(submitClientMetricSpy).toBeCalledOnceWith(_types.METRIC_EVENT.MEDIA_ERROR, expectedData);
|
|
224
253
|
});
|
|
225
254
|
it('submit unknown media metric', function () {
|
|
226
255
|
var logSpy = jest.spyOn(_Logger.default, 'warn');
|
|
227
256
|
metricManager.submitMediaMetric('invalidMetricName', mockMediaAction, _types.METRIC_TYPE.OPERATIONAL, mockCallId, mockCorrelationId, mockSdp, mockSdp);
|
|
228
|
-
expect(
|
|
257
|
+
expect(submitClientMetricSpy).not.toBeCalled();
|
|
229
258
|
expect(logSpy).toBeCalledOnceWith('Invalid metric name received. Rejecting request to submit metric.', {
|
|
230
259
|
file: 'metric',
|
|
231
260
|
method: 'submitMediaMetric'
|
|
@@ -252,7 +281,7 @@ describe('CALLING: Metric tests', function () {
|
|
|
252
281
|
type: _types.METRIC_TYPE.BEHAVIORAL
|
|
253
282
|
};
|
|
254
283
|
metricManager.submitBNRMetric(_types.METRIC_EVENT.BNR_ENABLED, _types.METRIC_TYPE.BEHAVIORAL, mockCallId, mockCorrelationId);
|
|
255
|
-
expect(
|
|
284
|
+
expect(submitClientMetricSpy).toBeCalledOnceWith(_types.METRIC_EVENT.BNR_ENABLED, expectedData);
|
|
256
285
|
});
|
|
257
286
|
it('submit bnr disabled metric', function () {
|
|
258
287
|
var expectedData = {
|
|
@@ -270,12 +299,12 @@ describe('CALLING: Metric tests', function () {
|
|
|
270
299
|
type: _types.METRIC_TYPE.BEHAVIORAL
|
|
271
300
|
};
|
|
272
301
|
metricManager.submitBNRMetric(_types.METRIC_EVENT.BNR_DISABLED, _types.METRIC_TYPE.BEHAVIORAL, mockCallId, mockCorrelationId);
|
|
273
|
-
expect(
|
|
302
|
+
expect(submitClientMetricSpy).toBeCalledOnceWith(_types.METRIC_EVENT.BNR_DISABLED, expectedData);
|
|
274
303
|
});
|
|
275
304
|
it('submit unknown bnr metric', function () {
|
|
276
305
|
var logSpy = jest.spyOn(_Logger.default, 'warn');
|
|
277
306
|
metricManager.submitBNRMetric('invalidMetricName', _types.METRIC_TYPE.BEHAVIORAL, mockCallId, mockCorrelationId);
|
|
278
|
-
expect(
|
|
307
|
+
expect(submitClientMetricSpy).not.toBeCalled();
|
|
279
308
|
expect(logSpy).toBeCalledOnceWith('Invalid metric name received. Rejecting request to submit metric.', {
|
|
280
309
|
file: 'metric',
|
|
281
310
|
method: 'submitBNRMetric'
|
|
@@ -299,8 +328,8 @@ describe('CALLING: Metric tests', function () {
|
|
|
299
328
|
type: _types.METRIC_TYPE.BEHAVIORAL
|
|
300
329
|
};
|
|
301
330
|
metricManager.submitVoicemailMetric(_types.METRIC_EVENT.VOICEMAIL, _types.VOICEMAIL_ACTION.GET_VOICEMAILS, _types.METRIC_TYPE.BEHAVIORAL);
|
|
302
|
-
expect(
|
|
303
|
-
|
|
331
|
+
expect(submitClientMetricSpy).toBeCalledOnceWith(_types.METRIC_EVENT.VOICEMAIL, expectedData1);
|
|
332
|
+
submitClientMetricSpy.mockClear();
|
|
304
333
|
var expectedData2 = _objectSpread(_objectSpread({}, expectedData1), {}, {
|
|
305
334
|
tags: _objectSpread(_objectSpread({}, expectedData1.tags), {}, {
|
|
306
335
|
message_id: 'messageId',
|
|
@@ -308,7 +337,7 @@ describe('CALLING: Metric tests', function () {
|
|
|
308
337
|
})
|
|
309
338
|
});
|
|
310
339
|
metricManager.submitVoicemailMetric(_types.METRIC_EVENT.VOICEMAIL, _types.VOICEMAIL_ACTION.DELETE, _types.METRIC_TYPE.BEHAVIORAL, 'messageId');
|
|
311
|
-
expect(
|
|
340
|
+
expect(submitClientMetricSpy).toBeCalledOnceWith(_types.METRIC_EVENT.VOICEMAIL, expectedData2);
|
|
312
341
|
});
|
|
313
342
|
it('submit voicemail failure metric', function () {
|
|
314
343
|
var errorMessage = 'User is not authenticated';
|
|
@@ -327,8 +356,8 @@ describe('CALLING: Metric tests', function () {
|
|
|
327
356
|
type: _types.METRIC_TYPE.BEHAVIORAL
|
|
328
357
|
};
|
|
329
358
|
metricManager.submitVoicemailMetric(_types.METRIC_EVENT.VOICEMAIL_ERROR, _types.VOICEMAIL_ACTION.GET_VOICEMAILS, _types.METRIC_TYPE.BEHAVIORAL, undefined, errorMessage, 401);
|
|
330
|
-
expect(
|
|
331
|
-
|
|
359
|
+
expect(submitClientMetricSpy).toBeCalledOnceWith(_types.METRIC_EVENT.VOICEMAIL_ERROR, expectedData1);
|
|
360
|
+
submitClientMetricSpy.mockClear();
|
|
332
361
|
var expectedData2 = _objectSpread(_objectSpread({}, expectedData1), {}, {
|
|
333
362
|
tags: _objectSpread(_objectSpread({}, expectedData1.tags), {}, {
|
|
334
363
|
message_id: 'messageId',
|
|
@@ -336,12 +365,12 @@ describe('CALLING: Metric tests', function () {
|
|
|
336
365
|
})
|
|
337
366
|
});
|
|
338
367
|
metricManager.submitVoicemailMetric(_types.METRIC_EVENT.VOICEMAIL_ERROR, _types.VOICEMAIL_ACTION.DELETE, _types.METRIC_TYPE.BEHAVIORAL, 'messageId', errorMessage, 401);
|
|
339
|
-
expect(
|
|
368
|
+
expect(submitClientMetricSpy).toBeCalledOnceWith(_types.METRIC_EVENT.VOICEMAIL_ERROR, expectedData2);
|
|
340
369
|
});
|
|
341
370
|
it('submit unknown voicemail metric', function () {
|
|
342
371
|
var logSpy = jest.spyOn(_Logger.default, 'warn');
|
|
343
372
|
metricManager.submitVoicemailMetric('invalidMetricName', _types.VOICEMAIL_ACTION.GET_VOICEMAILS, _types.METRIC_TYPE.BEHAVIORAL);
|
|
344
|
-
expect(
|
|
373
|
+
expect(submitClientMetricSpy).not.toBeCalled();
|
|
345
374
|
expect(logSpy).toBeCalledOnceWith('Invalid metric name received. Rejecting request to submit metric.', {
|
|
346
375
|
file: 'metric',
|
|
347
376
|
method: 'submitVoicemailMetric'
|
|
@@ -367,7 +396,7 @@ describe('CALLING: Metric tests', function () {
|
|
|
367
396
|
type: _types.METRIC_TYPE.BEHAVIORAL
|
|
368
397
|
};
|
|
369
398
|
metricManager.submitBNRMetric(_types.METRIC_EVENT.BNR_ENABLED, _types.METRIC_TYPE.BEHAVIORAL, mockCallId, mockCorrelationId);
|
|
370
|
-
expect(
|
|
399
|
+
expect(submitClientMetricSpy).toBeCalledOnceWith(_types.METRIC_EVENT.BNR_ENABLED, expectedData);
|
|
371
400
|
});
|
|
372
401
|
});
|
|
373
402
|
describe('Upload Logs metric tests', function () {
|
|
@@ -399,7 +428,7 @@ describe('CALLING: Metric tests', function () {
|
|
|
399
428
|
type: _types.METRIC_TYPE.BEHAVIORAL
|
|
400
429
|
};
|
|
401
430
|
metricManager.submitUploadLogsMetric(_types.METRIC_EVENT.UPLOAD_LOGS_SUCCESS, _types.UPLOAD_LOGS_ACTION, _types.METRIC_TYPE.BEHAVIORAL, trackingId, feedbackId, correlationId, undefined, callId, broadworksCorrelationInfo);
|
|
402
|
-
expect(
|
|
431
|
+
expect(submitClientMetricSpy).toBeCalledOnceWith(_types.METRIC_EVENT.UPLOAD_LOGS_SUCCESS, expectedData);
|
|
403
432
|
});
|
|
404
433
|
it('submit upload logs failure metric includes error and broadworksCorrelationInfo', function () {
|
|
405
434
|
var feedbackId = 'feed-456';
|
|
@@ -427,7 +456,7 @@ describe('CALLING: Metric tests', function () {
|
|
|
427
456
|
type: _types.METRIC_TYPE.BEHAVIORAL
|
|
428
457
|
};
|
|
429
458
|
metricManager.submitUploadLogsMetric(_types.METRIC_EVENT.UPLOAD_LOGS_FAILED, _types.UPLOAD_LOGS_ACTION, _types.METRIC_TYPE.BEHAVIORAL, undefined, feedbackId, correlationId, errorStack, callId, broadworksCorrelationInfo);
|
|
430
|
-
expect(
|
|
459
|
+
expect(submitClientMetricSpy).toBeCalledOnceWith(_types.METRIC_EVENT.UPLOAD_LOGS_FAILED, expectedData);
|
|
431
460
|
});
|
|
432
461
|
});
|
|
433
462
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_testUtil","require","_index","_types","_constants","_CallingDeviceError","_types2","_types3","_Logger","_interopRequireDefault","_CallError","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","webex","getTestUtilsWebex","describe","metricManager","getMetricManager","ServiceIndicator","CALLING","mockDeviceInfo","getMockDeviceInfo","mockSubmitClientMetric","jest","fn","MOCK_VERSION_NUMBER","originalEnv","process","env","internal","metrics","submitClientMetrics","mockCallId","mockCorrelationId","mockCallAction","mockMediaAction","beforeEach","mockClear","CALLING_SDK_VERSION","it","expect","not","toBeNull","toBeUndefined","setDeviceInfo","toEqual","expectedData","tags","action","REG_ACTION","REGISTER","device_id","device","deviceId","service_indicator","fields","device_url","clientDeviceUri","mobius_url","uri","calling_sdk_version","reg_source","REGISTRATION_UTIL","server_type","trackingId","type","METRIC_TYPE","BEHAVIORAL","submitRegistrationMetric","METRIC_EVENT","REGISTRATION","undefined","toBeCalledOnceWith","clientError","createClientError","ERROR_TYPE","DEFAULT","RegistrationStatus","INACTIVE","err","context","message","SERVICE_UNAVAILABLE","setError","error","getError","error_type","REGISTRATION_ERROR","logSpy","spyOn","log","OPERATIONAL","toBeCalled","file","method","beforeAll","call_id","correlation_id","submitCallMetric","CALL","callError","createCallError","ERROR_LAYER","CALL_CONTROL","FORBIDDEN_ERROR","setCallError","getCallError","CALL_ERROR","mockSdp","local_media_details","remote_media_details","submitMediaMetric","MEDIA","MEDIA_ERROR","submitBNRMetric","BNR_ENABLED","BNR_DISABLED","expectedData1","VOICEMAIL_ACTION","GET_VOICEMAILS","submitVoicemailMetric","VOICEMAIL","expectedData2","message_id","DELETE","errorMessage","status_code","VOICEMAIL_ERROR","VERSION","feedbackId","correlationId","callId","broadworksCorrelationInfo","UPLOAD_LOGS_ACTION","tracking_id","feedback_id","submitUploadLogsMetric","UPLOAD_LOGS_SUCCESS","errorStack","UPLOAD_LOGS_FAILED"],"sources":["index.test.ts"],"sourcesContent":["/* eslint-disable dot-notation */\nimport {getMockDeviceInfo, getTestUtilsWebex} from '../common/testUtil';\nimport {getMetricManager} from './index';\nimport {METRIC_TYPE, METRIC_EVENT, REG_ACTION, VOICEMAIL_ACTION, UPLOAD_LOGS_ACTION} from './types';\nimport {REGISTRATION_UTIL, VERSION} from '../CallingClient/constants';\nimport {createClientError} from '../Errors/catalog/CallingDeviceError';\nimport {CallErrorObject, ErrorObject, ERROR_LAYER, ERROR_TYPE} from '../Errors/types';\nimport {RegistrationStatus, ServiceIndicator} from '../common/types';\nimport log from '../Logger';\nimport {createCallError} from '../Errors/catalog/CallError';\n\nconst webex = getTestUtilsWebex();\n\ndescribe('CALLING: Metric tests', () => {\n const metricManager = getMetricManager(webex, ServiceIndicator.CALLING);\n const mockDeviceInfo = getMockDeviceInfo();\n const mockSubmitClientMetric = jest.fn();\n const MOCK_VERSION_NUMBER = '1.0.0';\n const originalEnv = process.env;\n\n webex.internal.metrics.submitClientMetrics = mockSubmitClientMetric;\n\n const mockCallId = '123456';\n const mockCorrelationId = '0931237';\n const mockCallAction = 'S_SEND_CALL_SETUP';\n const mockMediaAction = 'S_SEND_ROAP_OFFER';\n\n beforeEach(() => {\n mockSubmitClientMetric.mockClear();\n process.env = {\n ...originalEnv,\n CALLING_SDK_VERSION: MOCK_VERSION_NUMBER,\n };\n });\n\n it('initialize metric manager', () => {\n expect(metricManager).not.toBeNull();\n expect(metricManager['deviceInfo']).toBeUndefined();\n });\n\n it('update deviceInfo in metric manager', () => {\n expect(metricManager['deviceInfo']).toBeUndefined();\n metricManager.setDeviceInfo(mockDeviceInfo);\n expect(metricManager['deviceInfo']).toEqual(mockDeviceInfo);\n });\n\n describe('CallingClient metric tests', () => {\n it('submit registration success metric', () => {\n metricManager.setDeviceInfo(mockDeviceInfo);\n\n const expectedData = {\n tags: {\n action: REG_ACTION.REGISTER,\n device_id: mockDeviceInfo.device.deviceId,\n service_indicator: ServiceIndicator.CALLING,\n },\n fields: {\n device_url: mockDeviceInfo.device.clientDeviceUri,\n mobius_url: mockDeviceInfo.device.uri,\n calling_sdk_version: MOCK_VERSION_NUMBER,\n reg_source: REGISTRATION_UTIL,\n server_type: 'PRIMARY',\n trackingId: 'webex-js-sdk_06bafdd0-2f9b-4cd7-b438-9c0d95ecec9b_15',\n },\n type: METRIC_TYPE.BEHAVIORAL,\n };\n\n metricManager.submitRegistrationMetric(\n METRIC_EVENT.REGISTRATION,\n REG_ACTION.REGISTER,\n METRIC_TYPE.BEHAVIORAL,\n REGISTRATION_UTIL,\n 'PRIMARY',\n 'webex-js-sdk_06bafdd0-2f9b-4cd7-b438-9c0d95ecec9b_15',\n undefined,\n undefined\n );\n expect(mockSubmitClientMetric).toBeCalledOnceWith(METRIC_EVENT.REGISTRATION, expectedData);\n });\n\n it('submit registration failure metric', () => {\n metricManager.setDeviceInfo(mockDeviceInfo);\n\n const clientError = createClientError(\n '',\n {},\n ERROR_TYPE.DEFAULT,\n RegistrationStatus.INACTIVE\n );\n const err = <ErrorObject>{};\n\n err.context = {};\n err.message = 'Unknown Error';\n err.type = ERROR_TYPE.SERVICE_UNAVAILABLE;\n\n clientError.setError(err);\n\n const expectedData = {\n tags: {\n action: REG_ACTION.REGISTER,\n device_id: mockDeviceInfo.device.deviceId,\n service_indicator: ServiceIndicator.CALLING,\n },\n fields: {\n device_url: mockDeviceInfo.device.clientDeviceUri,\n mobius_url: mockDeviceInfo.device.uri,\n calling_sdk_version: MOCK_VERSION_NUMBER,\n reg_source: REGISTRATION_UTIL,\n server_type: 'BACKUP',\n trackingId: 'webex-js-sdk_06bafdd0-2f9b-4cd7-b438-9c0d95ecec9b_15',\n error: clientError.getError().message,\n error_type: clientError.getError().type,\n },\n type: METRIC_TYPE.BEHAVIORAL,\n };\n\n metricManager.submitRegistrationMetric(\n METRIC_EVENT.REGISTRATION_ERROR,\n REG_ACTION.REGISTER,\n METRIC_TYPE.BEHAVIORAL,\n REGISTRATION_UTIL,\n 'BACKUP',\n 'webex-js-sdk_06bafdd0-2f9b-4cd7-b438-9c0d95ecec9b_15',\n undefined,\n clientError\n );\n expect(mockSubmitClientMetric).toBeCalledOnceWith(\n METRIC_EVENT.REGISTRATION_ERROR,\n expectedData\n );\n });\n\n it('submit unknown registration metric', () => {\n const logSpy = jest.spyOn(log, 'warn');\n\n metricManager.submitRegistrationMetric(\n 'invalidMetricName' as unknown as METRIC_EVENT,\n REG_ACTION.REGISTER,\n METRIC_TYPE.OPERATIONAL,\n REGISTRATION_UTIL,\n 'PRIMARY',\n undefined,\n undefined,\n undefined\n );\n\n expect(mockSubmitClientMetric).not.toBeCalled();\n expect(logSpy).toBeCalledOnceWith(\n 'Invalid metric name received. Rejecting request to submit metric.',\n {\n file: 'metric',\n method: 'submitRegistrationMetric',\n }\n );\n });\n });\n\n describe('Call Metric tests', () => {\n beforeAll(() => {\n metricManager.setDeviceInfo(mockDeviceInfo);\n });\n\n it('submit call success metric', () => {\n const expectedData = {\n tags: {\n action: mockCallAction,\n device_id: mockDeviceInfo.device.deviceId,\n service_indicator: ServiceIndicator.CALLING,\n },\n fields: {\n device_url: mockDeviceInfo.device.clientDeviceUri,\n mobius_url: mockDeviceInfo.device.uri,\n calling_sdk_version: MOCK_VERSION_NUMBER,\n call_id: mockCallId,\n correlation_id: mockCorrelationId,\n },\n type: METRIC_TYPE.BEHAVIORAL,\n };\n\n metricManager.submitCallMetric(\n METRIC_EVENT.CALL,\n mockCallAction,\n METRIC_TYPE.BEHAVIORAL,\n mockCallId,\n mockCorrelationId\n );\n expect(mockSubmitClientMetric).toBeCalledOnceWith(METRIC_EVENT.CALL, expectedData);\n });\n\n it('submit call failure metric', () => {\n const callError = createCallError(\n '',\n {},\n ERROR_TYPE.DEFAULT,\n mockCorrelationId,\n ERROR_LAYER.CALL_CONTROL\n );\n\n const err = <CallErrorObject>{};\n\n err.context = {};\n err.message =\n 'An invalid status update has been received for the call. Wait a moment and try again.';\n err.type = ERROR_TYPE.FORBIDDEN_ERROR;\n\n callError.setCallError(err);\n\n const expectedData = {\n tags: {\n action: mockCallAction,\n device_id: mockDeviceInfo.device.deviceId,\n service_indicator: ServiceIndicator.CALLING,\n },\n fields: {\n device_url: mockDeviceInfo.device.clientDeviceUri,\n mobius_url: mockDeviceInfo.device.uri,\n calling_sdk_version: MOCK_VERSION_NUMBER,\n call_id: mockCallId,\n correlation_id: mockCorrelationId,\n error: callError.getCallError().message,\n error_type: callError.getCallError().type,\n },\n type: METRIC_TYPE.BEHAVIORAL,\n };\n\n metricManager.submitCallMetric(\n METRIC_EVENT.CALL_ERROR,\n mockCallAction,\n METRIC_TYPE.BEHAVIORAL,\n mockCallId,\n mockCorrelationId,\n callError\n );\n expect(mockSubmitClientMetric).toBeCalledOnceWith(METRIC_EVENT.CALL_ERROR, expectedData);\n });\n\n it('submit unknown call metric', () => {\n const logSpy = jest.spyOn(log, 'warn');\n\n metricManager.submitCallMetric(\n 'invalidMetricName' as unknown as METRIC_EVENT,\n mockCallAction,\n METRIC_TYPE.OPERATIONAL,\n mockCallId,\n mockCorrelationId\n );\n\n expect(mockSubmitClientMetric).not.toBeCalled();\n expect(logSpy).toBeCalledOnceWith(\n 'Invalid metric name received. Rejecting request to submit metric.',\n {\n file: 'metric',\n method: 'submitCallMetric',\n }\n );\n });\n });\n\n describe('Media Metric tests', () => {\n const mockSdp = 'sdpInformation';\n\n beforeAll(() => {\n metricManager.setDeviceInfo(mockDeviceInfo);\n });\n\n it('submit media success metric', () => {\n const expectedData = {\n tags: {\n action: mockMediaAction,\n device_id: mockDeviceInfo.device.deviceId,\n service_indicator: ServiceIndicator.CALLING,\n },\n fields: {\n device_url: mockDeviceInfo.device.clientDeviceUri,\n mobius_url: mockDeviceInfo.device.uri,\n calling_sdk_version: MOCK_VERSION_NUMBER,\n call_id: mockCallId,\n correlation_id: mockCorrelationId,\n local_media_details: mockSdp,\n remote_media_details: mockSdp,\n },\n type: METRIC_TYPE.BEHAVIORAL,\n };\n\n metricManager.submitMediaMetric(\n METRIC_EVENT.MEDIA,\n mockMediaAction,\n METRIC_TYPE.BEHAVIORAL,\n mockCallId,\n mockCorrelationId,\n mockSdp,\n mockSdp\n );\n expect(mockSubmitClientMetric).toBeCalledOnceWith(METRIC_EVENT.MEDIA, expectedData);\n });\n\n it('submit media failure metric', () => {\n const callError = createCallError(\n '',\n {},\n ERROR_TYPE.DEFAULT,\n mockCorrelationId,\n ERROR_LAYER.MEDIA\n );\n\n const err = <CallErrorObject>{};\n\n err.context = {};\n err.message =\n 'An error occurred while parsing the provided information. Wait a moment and try again.';\n err.type = ERROR_TYPE.SERVICE_UNAVAILABLE;\n\n callError.setCallError(err);\n\n const expectedData = {\n tags: {\n action: mockMediaAction,\n device_id: mockDeviceInfo.device.deviceId,\n service_indicator: ServiceIndicator.CALLING,\n },\n fields: {\n device_url: mockDeviceInfo.device.clientDeviceUri,\n mobius_url: mockDeviceInfo.device.uri,\n calling_sdk_version: MOCK_VERSION_NUMBER,\n call_id: mockCallId,\n correlation_id: mockCorrelationId,\n local_media_details: mockSdp,\n remote_media_details: mockSdp,\n error: callError.getCallError().message,\n error_type: callError.getCallError().type,\n },\n type: METRIC_TYPE.BEHAVIORAL,\n };\n\n metricManager.submitMediaMetric(\n METRIC_EVENT.MEDIA_ERROR,\n mockMediaAction,\n METRIC_TYPE.BEHAVIORAL,\n mockCallId,\n mockCorrelationId,\n mockSdp,\n mockSdp,\n callError\n );\n expect(mockSubmitClientMetric).toBeCalledOnceWith(METRIC_EVENT.MEDIA_ERROR, expectedData);\n });\n\n it('submit unknown media metric', () => {\n const logSpy = jest.spyOn(log, 'warn');\n\n metricManager.submitMediaMetric(\n 'invalidMetricName' as unknown as METRIC_EVENT,\n mockMediaAction,\n METRIC_TYPE.OPERATIONAL,\n mockCallId,\n mockCorrelationId,\n mockSdp,\n mockSdp\n );\n\n expect(mockSubmitClientMetric).not.toBeCalled();\n expect(logSpy).toBeCalledOnceWith(\n 'Invalid metric name received. Rejecting request to submit metric.',\n {\n file: 'metric',\n method: 'submitMediaMetric',\n }\n );\n });\n });\n\n describe('BNR metric tests', () => {\n beforeAll(() => {\n metricManager.setDeviceInfo(mockDeviceInfo);\n });\n\n it('submit bnr enabled metric', () => {\n const expectedData = {\n tags: {\n device_id: mockDeviceInfo.device.deviceId,\n service_indicator: ServiceIndicator.CALLING,\n },\n fields: {\n device_url: mockDeviceInfo.device.clientDeviceUri,\n mobius_url: mockDeviceInfo.device.uri,\n calling_sdk_version: MOCK_VERSION_NUMBER,\n call_id: mockCallId,\n correlation_id: mockCorrelationId,\n },\n type: METRIC_TYPE.BEHAVIORAL,\n };\n\n metricManager.submitBNRMetric(\n METRIC_EVENT.BNR_ENABLED,\n METRIC_TYPE.BEHAVIORAL,\n mockCallId,\n mockCorrelationId\n );\n\n expect(mockSubmitClientMetric).toBeCalledOnceWith(METRIC_EVENT.BNR_ENABLED, expectedData);\n });\n\n it('submit bnr disabled metric', () => {\n const expectedData = {\n tags: {\n device_id: mockDeviceInfo.device.deviceId,\n service_indicator: ServiceIndicator.CALLING,\n },\n fields: {\n device_url: mockDeviceInfo.device.clientDeviceUri,\n mobius_url: mockDeviceInfo.device.uri,\n calling_sdk_version: MOCK_VERSION_NUMBER,\n call_id: mockCallId,\n correlation_id: mockCorrelationId,\n },\n type: METRIC_TYPE.BEHAVIORAL,\n };\n\n metricManager.submitBNRMetric(\n METRIC_EVENT.BNR_DISABLED,\n METRIC_TYPE.BEHAVIORAL,\n mockCallId,\n mockCorrelationId\n );\n\n expect(mockSubmitClientMetric).toBeCalledOnceWith(METRIC_EVENT.BNR_DISABLED, expectedData);\n });\n\n it('submit unknown bnr metric', () => {\n const logSpy = jest.spyOn(log, 'warn');\n\n metricManager.submitBNRMetric(\n 'invalidMetricName' as unknown as METRIC_EVENT,\n METRIC_TYPE.BEHAVIORAL,\n mockCallId,\n mockCorrelationId\n );\n\n expect(mockSubmitClientMetric).not.toBeCalled();\n expect(logSpy).toBeCalledOnceWith(\n 'Invalid metric name received. Rejecting request to submit metric.',\n {\n file: 'metric',\n method: 'submitBNRMetric',\n }\n );\n });\n });\n\n describe('Voicemail metric tests', () => {\n beforeAll(() => metricManager.setDeviceInfo(mockDeviceInfo));\n\n it('submit voicemail success metric', () => {\n const expectedData1 = {\n tags: {\n action: VOICEMAIL_ACTION.GET_VOICEMAILS,\n device_id: mockDeviceInfo.device.deviceId,\n },\n fields: {\n device_url: mockDeviceInfo.device.clientDeviceUri,\n calling_sdk_version: MOCK_VERSION_NUMBER,\n },\n type: METRIC_TYPE.BEHAVIORAL,\n };\n\n metricManager.submitVoicemailMetric(\n METRIC_EVENT.VOICEMAIL,\n VOICEMAIL_ACTION.GET_VOICEMAILS,\n METRIC_TYPE.BEHAVIORAL\n );\n expect(mockSubmitClientMetric).toBeCalledOnceWith(METRIC_EVENT.VOICEMAIL, expectedData1);\n\n mockSubmitClientMetric.mockClear();\n\n const expectedData2 = {\n ...expectedData1,\n tags: {...expectedData1.tags, message_id: 'messageId', action: VOICEMAIL_ACTION.DELETE},\n };\n\n metricManager.submitVoicemailMetric(\n METRIC_EVENT.VOICEMAIL,\n VOICEMAIL_ACTION.DELETE,\n METRIC_TYPE.BEHAVIORAL,\n 'messageId'\n );\n\n expect(mockSubmitClientMetric).toBeCalledOnceWith(METRIC_EVENT.VOICEMAIL, expectedData2);\n });\n\n it('submit voicemail failure metric', () => {\n const errorMessage = 'User is not authenticated';\n const expectedData1 = {\n tags: {\n action: VOICEMAIL_ACTION.GET_VOICEMAILS,\n device_id: mockDeviceInfo.device.deviceId,\n message_id: undefined,\n error: errorMessage,\n status_code: 401,\n },\n fields: {\n device_url: mockDeviceInfo.device.clientDeviceUri,\n calling_sdk_version: MOCK_VERSION_NUMBER,\n },\n type: METRIC_TYPE.BEHAVIORAL,\n };\n\n metricManager.submitVoicemailMetric(\n METRIC_EVENT.VOICEMAIL_ERROR,\n VOICEMAIL_ACTION.GET_VOICEMAILS,\n METRIC_TYPE.BEHAVIORAL,\n undefined,\n errorMessage,\n 401\n );\n expect(mockSubmitClientMetric).toBeCalledOnceWith(\n METRIC_EVENT.VOICEMAIL_ERROR,\n expectedData1\n );\n\n mockSubmitClientMetric.mockClear();\n\n const expectedData2 = {\n ...expectedData1,\n tags: {...expectedData1.tags, message_id: 'messageId', action: VOICEMAIL_ACTION.DELETE},\n };\n\n metricManager.submitVoicemailMetric(\n METRIC_EVENT.VOICEMAIL_ERROR,\n VOICEMAIL_ACTION.DELETE,\n METRIC_TYPE.BEHAVIORAL,\n 'messageId',\n errorMessage,\n 401\n );\n\n expect(mockSubmitClientMetric).toBeCalledOnceWith(\n METRIC_EVENT.VOICEMAIL_ERROR,\n expectedData2\n );\n });\n\n it('submit unknown voicemail metric', () => {\n const logSpy = jest.spyOn(log, 'warn');\n\n metricManager.submitVoicemailMetric(\n 'invalidMetricName' as unknown as METRIC_EVENT,\n VOICEMAIL_ACTION.GET_VOICEMAILS,\n METRIC_TYPE.BEHAVIORAL\n );\n\n expect(mockSubmitClientMetric).not.toBeCalled();\n expect(logSpy).toBeCalledOnceWith(\n 'Invalid metric name received. Rejecting request to submit metric.',\n {\n file: 'metric',\n method: 'submitVoicemailMetric',\n }\n );\n });\n });\n\n describe('Calling_Sdk_Version fallback test', () => {\n it('submit metric with fallback version', () => {\n process.env = {};\n metricManager.setDeviceInfo(mockDeviceInfo);\n const expectedData = {\n tags: {\n device_id: mockDeviceInfo.device.deviceId,\n service_indicator: ServiceIndicator.CALLING,\n },\n fields: {\n device_url: mockDeviceInfo.device.clientDeviceUri,\n mobius_url: mockDeviceInfo.device.uri,\n calling_sdk_version: VERSION,\n call_id: mockCallId,\n correlation_id: mockCorrelationId,\n },\n type: METRIC_TYPE.BEHAVIORAL,\n };\n\n metricManager.submitBNRMetric(\n METRIC_EVENT.BNR_ENABLED,\n METRIC_TYPE.BEHAVIORAL,\n mockCallId,\n mockCorrelationId\n );\n\n expect(mockSubmitClientMetric).toBeCalledOnceWith(METRIC_EVENT.BNR_ENABLED, expectedData);\n });\n });\n\n describe('Upload Logs metric tests', () => {\n beforeAll(() => metricManager.setDeviceInfo(mockDeviceInfo));\n\n it('submit upload logs success metric includes broadworksCorrelationInfo', () => {\n const trackingId = 'track-123';\n const feedbackId = 'feed-456';\n const correlationId = 'corr-789';\n const callId = 'call-123';\n const broadworksCorrelationInfo = 'bw-corr-abc';\n\n const expectedData = {\n tags: {\n action: UPLOAD_LOGS_ACTION,\n device_id: mockDeviceInfo.device.deviceId,\n service_indicator: ServiceIndicator.CALLING,\n },\n fields: {\n device_url: mockDeviceInfo.device.clientDeviceUri,\n mobius_url: mockDeviceInfo.device.uri,\n calling_sdk_version: MOCK_VERSION_NUMBER,\n correlation_id: correlationId,\n broadworksCorrelationInfo,\n tracking_id: trackingId,\n feedback_id: feedbackId,\n call_id: callId,\n },\n type: METRIC_TYPE.BEHAVIORAL,\n };\n\n metricManager.submitUploadLogsMetric(\n METRIC_EVENT.UPLOAD_LOGS_SUCCESS,\n UPLOAD_LOGS_ACTION,\n METRIC_TYPE.BEHAVIORAL,\n trackingId,\n feedbackId,\n correlationId,\n undefined,\n callId,\n broadworksCorrelationInfo\n );\n\n expect(mockSubmitClientMetric).toBeCalledOnceWith(\n METRIC_EVENT.UPLOAD_LOGS_SUCCESS,\n expectedData\n );\n });\n\n it('submit upload logs failure metric includes error and broadworksCorrelationInfo', () => {\n const feedbackId = 'feed-456';\n const correlationId = 'corr-789';\n const callId = 'call-123';\n const broadworksCorrelationInfo = 'bw-corr-abc';\n const errorStack = 'some error stack';\n\n const expectedData = {\n tags: {\n action: UPLOAD_LOGS_ACTION,\n device_id: mockDeviceInfo.device.deviceId,\n service_indicator: ServiceIndicator.CALLING,\n },\n fields: {\n device_url: mockDeviceInfo.device.clientDeviceUri,\n mobius_url: mockDeviceInfo.device.uri,\n calling_sdk_version: MOCK_VERSION_NUMBER,\n correlation_id: correlationId,\n broadworksCorrelationInfo,\n tracking_id: undefined,\n feedback_id: feedbackId,\n call_id: callId,\n error: errorStack,\n },\n type: METRIC_TYPE.BEHAVIORAL,\n };\n\n metricManager.submitUploadLogsMetric(\n METRIC_EVENT.UPLOAD_LOGS_FAILED,\n UPLOAD_LOGS_ACTION,\n METRIC_TYPE.BEHAVIORAL,\n undefined,\n feedbackId,\n correlationId,\n errorStack,\n callId,\n broadworksCorrelationInfo\n );\n\n expect(mockSubmitClientMetric).toBeCalledOnceWith(\n METRIC_EVENT.UPLOAD_LOGS_FAILED,\n expectedData\n );\n });\n });\n});\n"],"mappings":";;;;;;;;;;AACA,IAAAA,SAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,MAAA,GAAAF,OAAA;AACA,IAAAG,UAAA,GAAAH,OAAA;AACA,IAAAI,mBAAA,GAAAJ,OAAA;AACA,IAAAK,OAAA,GAAAL,OAAA;AACA,IAAAM,OAAA,GAAAN,OAAA;AACA,IAAAO,OAAA,GAAAC,sBAAA,CAAAR,OAAA;AACA,IAAAS,UAAA,GAAAT,OAAA;AAA4D,SAAAU,QAAAC,CAAA,EAAAC,CAAA,QAAAC,CAAA,GAAAC,YAAA,CAAAH,CAAA,OAAAI,6BAAA,QAAAC,CAAA,GAAAD,6BAAA,CAAAJ,CAAA,GAAAC,CAAA,KAAAI,CAAA,GAAAA,CAAA,CAAAC,MAAA,WAAAL,CAAA,WAAAM,gCAAA,CAAAP,CAAA,EAAAC,CAAA,EAAAO,UAAA,OAAAN,CAAA,CAAAO,IAAA,CAAAC,KAAA,CAAAR,CAAA,EAAAG,CAAA,YAAAH,CAAA;AAAA,SAAAS,cAAAX,CAAA,aAAAC,CAAA,MAAAA,CAAA,GAAAW,SAAA,CAAAC,MAAA,EAAAZ,CAAA,UAAAC,CAAA,WAAAU,SAAA,CAAAX,CAAA,IAAAW,SAAA,CAAAX,CAAA,QAAAA,CAAA,OAAAF,OAAA,CAAAe,MAAA,CAAAZ,CAAA,OAAAa,OAAA,WAAAd,CAAA,QAAAe,gBAAA,CAAAC,OAAA,EAAAjB,CAAA,EAAAC,CAAA,EAAAC,CAAA,CAAAD,CAAA,SAAAiB,iCAAA,GAAAC,wBAAA,CAAAnB,CAAA,EAAAkB,iCAAA,CAAAhB,CAAA,KAAAH,OAAA,CAAAe,MAAA,CAAAZ,CAAA,GAAAa,OAAA,WAAAd,CAAA,IAAAmB,sBAAA,CAAApB,CAAA,EAAAC,CAAA,EAAAM,gCAAA,CAAAL,CAAA,EAAAD,CAAA,iBAAAD,CAAA,IAT5D;AAWA,IAAMqB,KAAK,GAAG,IAAAC,2BAAiB,EAAC,CAAC;AAEjCC,QAAQ,CAAC,uBAAuB,EAAE,YAAM;EACtC,IAAMC,aAAa,GAAG,IAAAC,uBAAgB,EAACJ,KAAK,EAAEK,wBAAgB,CAACC,OAAO,CAAC;EACvE,IAAMC,cAAc,GAAG,IAAAC,2BAAiB,EAAC,CAAC;EAC1C,IAAMC,sBAAsB,GAAGC,IAAI,CAACC,EAAE,CAAC,CAAC;EACxC,IAAMC,mBAAmB,GAAG,OAAO;EACnC,IAAMC,WAAW,GAAGC,OAAO,CAACC,GAAG;EAE/Bf,KAAK,CAACgB,QAAQ,CAACC,OAAO,CAACC,mBAAmB,GAAGT,sBAAsB;EAEnE,IAAMU,UAAU,GAAG,QAAQ;EAC3B,IAAMC,iBAAiB,GAAG,SAAS;EACnC,IAAMC,cAAc,GAAG,mBAAmB;EAC1C,IAAMC,eAAe,GAAG,mBAAmB;EAE3CC,UAAU,CAAC,YAAM;IACfd,sBAAsB,CAACe,SAAS,CAAC,CAAC;IAClCV,OAAO,CAACC,GAAG,GAAAzB,aAAA,CAAAA,aAAA,KACNuB,WAAW;MACdY,mBAAmB,EAAEb;IAAmB,EACzC;EACH,CAAC,CAAC;EAEFc,EAAE,CAAC,2BAA2B,EAAE,YAAM;IACpCC,MAAM,CAACxB,aAAa,CAAC,CAACyB,GAAG,CAACC,QAAQ,CAAC,CAAC;IACpCF,MAAM,CAACxB,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC2B,aAAa,CAAC,CAAC;EACrD,CAAC,CAAC;EAEFJ,EAAE,CAAC,qCAAqC,EAAE,YAAM;IAC9CC,MAAM,CAACxB,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC2B,aAAa,CAAC,CAAC;IACnD3B,aAAa,CAAC4B,aAAa,CAACxB,cAAc,CAAC;IAC3CoB,MAAM,CAACxB,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC6B,OAAO,CAACzB,cAAc,CAAC;EAC7D,CAAC,CAAC;EAEFL,QAAQ,CAAC,4BAA4B,EAAE,YAAM;IAC3CwB,EAAE,CAAC,oCAAoC,EAAE,YAAM;MAC7CvB,aAAa,CAAC4B,aAAa,CAACxB,cAAc,CAAC;MAE3C,IAAM0B,YAAY,GAAG;QACnBC,IAAI,EAAE;UACJC,MAAM,EAAEC,iBAAU,CAACC,QAAQ;UAC3BC,SAAS,EAAE/B,cAAc,CAACgC,MAAM,CAACC,QAAQ;UACzCC,iBAAiB,EAAEpC,wBAAgB,CAACC;QACtC,CAAC;QACDoC,MAAM,EAAE;UACNC,UAAU,EAAEpC,cAAc,CAACgC,MAAM,CAACK,eAAe;UACjDC,UAAU,EAAEtC,cAAc,CAACgC,MAAM,CAACO,GAAG;UACrCC,mBAAmB,EAAEnC,mBAAmB;UACxCoC,UAAU,EAAEC,4BAAiB;UAC7BC,WAAW,EAAE,SAAS;UACtBC,UAAU,EAAE;QACd,CAAC;QACDC,IAAI,EAAEC,kBAAW,CAACC;MACpB,CAAC;MAEDnD,aAAa,CAACoD,wBAAwB,CACpCC,mBAAY,CAACC,YAAY,EACzBrB,iBAAU,CAACC,QAAQ,EACnBgB,kBAAW,CAACC,UAAU,EACtBL,4BAAiB,EACjB,SAAS,EACT,sDAAsD,EACtDS,SAAS,EACTA,SACF,CAAC;MACD/B,MAAM,CAAClB,sBAAsB,CAAC,CAACkD,kBAAkB,CAACH,mBAAY,CAACC,YAAY,EAAExB,YAAY,CAAC;IAC5F,CAAC,CAAC;IAEFP,EAAE,CAAC,oCAAoC,EAAE,YAAM;MAC7CvB,aAAa,CAAC4B,aAAa,CAACxB,cAAc,CAAC;MAE3C,IAAMqD,WAAW,GAAG,IAAAC,qCAAiB,EACnC,EAAE,EACF,CAAC,CAAC,EACFC,kBAAU,CAACC,OAAO,EAClBC,0BAAkB,CAACC,QACrB,CAAC;MACD,IAAMC,GAAG,GAAgB,CAAC,CAAC;MAE3BA,GAAG,CAACC,OAAO,GAAG,CAAC,CAAC;MAChBD,GAAG,CAACE,OAAO,GAAG,eAAe;MAC7BF,GAAG,CAACd,IAAI,GAAGU,kBAAU,CAACO,mBAAmB;MAEzCT,WAAW,CAACU,QAAQ,CAACJ,GAAG,CAAC;MAEzB,IAAMjC,YAAY,GAAG;QACnBC,IAAI,EAAE;UACJC,MAAM,EAAEC,iBAAU,CAACC,QAAQ;UAC3BC,SAAS,EAAE/B,cAAc,CAACgC,MAAM,CAACC,QAAQ;UACzCC,iBAAiB,EAAEpC,wBAAgB,CAACC;QACtC,CAAC;QACDoC,MAAM,EAAE;UACNC,UAAU,EAAEpC,cAAc,CAACgC,MAAM,CAACK,eAAe;UACjDC,UAAU,EAAEtC,cAAc,CAACgC,MAAM,CAACO,GAAG;UACrCC,mBAAmB,EAAEnC,mBAAmB;UACxCoC,UAAU,EAAEC,4BAAiB;UAC7BC,WAAW,EAAE,QAAQ;UACrBC,UAAU,EAAE,sDAAsD;UAClEoB,KAAK,EAAEX,WAAW,CAACY,QAAQ,CAAC,CAAC,CAACJ,OAAO;UACrCK,UAAU,EAAEb,WAAW,CAACY,QAAQ,CAAC,CAAC,CAACpB;QACrC,CAAC;QACDA,IAAI,EAAEC,kBAAW,CAACC;MACpB,CAAC;MAEDnD,aAAa,CAACoD,wBAAwB,CACpCC,mBAAY,CAACkB,kBAAkB,EAC/BtC,iBAAU,CAACC,QAAQ,EACnBgB,kBAAW,CAACC,UAAU,EACtBL,4BAAiB,EACjB,QAAQ,EACR,sDAAsD,EACtDS,SAAS,EACTE,WACF,CAAC;MACDjC,MAAM,CAAClB,sBAAsB,CAAC,CAACkD,kBAAkB,CAC/CH,mBAAY,CAACkB,kBAAkB,EAC/BzC,YACF,CAAC;IACH,CAAC,CAAC;IAEFP,EAAE,CAAC,oCAAoC,EAAE,YAAM;MAC7C,IAAMiD,MAAM,GAAGjE,IAAI,CAACkE,KAAK,CAACC,eAAG,EAAE,MAAM,CAAC;MAEtC1E,aAAa,CAACoD,wBAAwB,CACpC,mBAAmB,EACnBnB,iBAAU,CAACC,QAAQ,EACnBgB,kBAAW,CAACyB,WAAW,EACvB7B,4BAAiB,EACjB,SAAS,EACTS,SAAS,EACTA,SAAS,EACTA,SACF,CAAC;MAED/B,MAAM,CAAClB,sBAAsB,CAAC,CAACmB,GAAG,CAACmD,UAAU,CAAC,CAAC;MAC/CpD,MAAM,CAACgD,MAAM,CAAC,CAAChB,kBAAkB,CAC/B,mEAAmE,EACnE;QACEqB,IAAI,EAAE,QAAQ;QACdC,MAAM,EAAE;MACV,CACF,CAAC;IACH,CAAC,CAAC;EACJ,CAAC,CAAC;EAEF/E,QAAQ,CAAC,mBAAmB,EAAE,YAAM;IAClCgF,SAAS,CAAC,YAAM;MACd/E,aAAa,CAAC4B,aAAa,CAACxB,cAAc,CAAC;IAC7C,CAAC,CAAC;IAEFmB,EAAE,CAAC,4BAA4B,EAAE,YAAM;MACrC,IAAMO,YAAY,GAAG;QACnBC,IAAI,EAAE;UACJC,MAAM,EAAEd,cAAc;UACtBiB,SAAS,EAAE/B,cAAc,CAACgC,MAAM,CAACC,QAAQ;UACzCC,iBAAiB,EAAEpC,wBAAgB,CAACC;QACtC,CAAC;QACDoC,MAAM,EAAE;UACNC,UAAU,EAAEpC,cAAc,CAACgC,MAAM,CAACK,eAAe;UACjDC,UAAU,EAAEtC,cAAc,CAACgC,MAAM,CAACO,GAAG;UACrCC,mBAAmB,EAAEnC,mBAAmB;UACxCuE,OAAO,EAAEhE,UAAU;UACnBiE,cAAc,EAAEhE;QAClB,CAAC;QACDgC,IAAI,EAAEC,kBAAW,CAACC;MACpB,CAAC;MAEDnD,aAAa,CAACkF,gBAAgB,CAC5B7B,mBAAY,CAAC8B,IAAI,EACjBjE,cAAc,EACdgC,kBAAW,CAACC,UAAU,EACtBnC,UAAU,EACVC,iBACF,CAAC;MACDO,MAAM,CAAClB,sBAAsB,CAAC,CAACkD,kBAAkB,CAACH,mBAAY,CAAC8B,IAAI,EAAErD,YAAY,CAAC;IACpF,CAAC,CAAC;IAEFP,EAAE,CAAC,4BAA4B,EAAE,YAAM;MACrC,IAAM6D,SAAS,GAAG,IAAAC,0BAAe,EAC/B,EAAE,EACF,CAAC,CAAC,EACF1B,kBAAU,CAACC,OAAO,EAClB3C,iBAAiB,EACjBqE,mBAAW,CAACC,YACd,CAAC;MAED,IAAMxB,GAAG,GAAoB,CAAC,CAAC;MAE/BA,GAAG,CAACC,OAAO,GAAG,CAAC,CAAC;MAChBD,GAAG,CAACE,OAAO,GACT,uFAAuF;MACzFF,GAAG,CAACd,IAAI,GAAGU,kBAAU,CAAC6B,eAAe;MAErCJ,SAAS,CAACK,YAAY,CAAC1B,GAAG,CAAC;MAE3B,IAAMjC,YAAY,GAAG;QACnBC,IAAI,EAAE;UACJC,MAAM,EAAEd,cAAc;UACtBiB,SAAS,EAAE/B,cAAc,CAACgC,MAAM,CAACC,QAAQ;UACzCC,iBAAiB,EAAEpC,wBAAgB,CAACC;QACtC,CAAC;QACDoC,MAAM,EAAE;UACNC,UAAU,EAAEpC,cAAc,CAACgC,MAAM,CAACK,eAAe;UACjDC,UAAU,EAAEtC,cAAc,CAACgC,MAAM,CAACO,GAAG;UACrCC,mBAAmB,EAAEnC,mBAAmB;UACxCuE,OAAO,EAAEhE,UAAU;UACnBiE,cAAc,EAAEhE,iBAAiB;UACjCmD,KAAK,EAAEgB,SAAS,CAACM,YAAY,CAAC,CAAC,CAACzB,OAAO;UACvCK,UAAU,EAAEc,SAAS,CAACM,YAAY,CAAC,CAAC,CAACzC;QACvC,CAAC;QACDA,IAAI,EAAEC,kBAAW,CAACC;MACpB,CAAC;MAEDnD,aAAa,CAACkF,gBAAgB,CAC5B7B,mBAAY,CAACsC,UAAU,EACvBzE,cAAc,EACdgC,kBAAW,CAACC,UAAU,EACtBnC,UAAU,EACVC,iBAAiB,EACjBmE,SACF,CAAC;MACD5D,MAAM,CAAClB,sBAAsB,CAAC,CAACkD,kBAAkB,CAACH,mBAAY,CAACsC,UAAU,EAAE7D,YAAY,CAAC;IAC1F,CAAC,CAAC;IAEFP,EAAE,CAAC,4BAA4B,EAAE,YAAM;MACrC,IAAMiD,MAAM,GAAGjE,IAAI,CAACkE,KAAK,CAACC,eAAG,EAAE,MAAM,CAAC;MAEtC1E,aAAa,CAACkF,gBAAgB,CAC5B,mBAAmB,EACnBhE,cAAc,EACdgC,kBAAW,CAACyB,WAAW,EACvB3D,UAAU,EACVC,iBACF,CAAC;MAEDO,MAAM,CAAClB,sBAAsB,CAAC,CAACmB,GAAG,CAACmD,UAAU,CAAC,CAAC;MAC/CpD,MAAM,CAACgD,MAAM,CAAC,CAAChB,kBAAkB,CAC/B,mEAAmE,EACnE;QACEqB,IAAI,EAAE,QAAQ;QACdC,MAAM,EAAE;MACV,CACF,CAAC;IACH,CAAC,CAAC;EACJ,CAAC,CAAC;EAEF/E,QAAQ,CAAC,oBAAoB,EAAE,YAAM;IACnC,IAAM6F,OAAO,GAAG,gBAAgB;IAEhCb,SAAS,CAAC,YAAM;MACd/E,aAAa,CAAC4B,aAAa,CAACxB,cAAc,CAAC;IAC7C,CAAC,CAAC;IAEFmB,EAAE,CAAC,6BAA6B,EAAE,YAAM;MACtC,IAAMO,YAAY,GAAG;QACnBC,IAAI,EAAE;UACJC,MAAM,EAAEb,eAAe;UACvBgB,SAAS,EAAE/B,cAAc,CAACgC,MAAM,CAACC,QAAQ;UACzCC,iBAAiB,EAAEpC,wBAAgB,CAACC;QACtC,CAAC;QACDoC,MAAM,EAAE;UACNC,UAAU,EAAEpC,cAAc,CAACgC,MAAM,CAACK,eAAe;UACjDC,UAAU,EAAEtC,cAAc,CAACgC,MAAM,CAACO,GAAG;UACrCC,mBAAmB,EAAEnC,mBAAmB;UACxCuE,OAAO,EAAEhE,UAAU;UACnBiE,cAAc,EAAEhE,iBAAiB;UACjC4E,mBAAmB,EAAED,OAAO;UAC5BE,oBAAoB,EAAEF;QACxB,CAAC;QACD3C,IAAI,EAAEC,kBAAW,CAACC;MACpB,CAAC;MAEDnD,aAAa,CAAC+F,iBAAiB,CAC7B1C,mBAAY,CAAC2C,KAAK,EAClB7E,eAAe,EACf+B,kBAAW,CAACC,UAAU,EACtBnC,UAAU,EACVC,iBAAiB,EACjB2E,OAAO,EACPA,OACF,CAAC;MACDpE,MAAM,CAAClB,sBAAsB,CAAC,CAACkD,kBAAkB,CAACH,mBAAY,CAAC2C,KAAK,EAAElE,YAAY,CAAC;IACrF,CAAC,CAAC;IAEFP,EAAE,CAAC,6BAA6B,EAAE,YAAM;MACtC,IAAM6D,SAAS,GAAG,IAAAC,0BAAe,EAC/B,EAAE,EACF,CAAC,CAAC,EACF1B,kBAAU,CAACC,OAAO,EAClB3C,iBAAiB,EACjBqE,mBAAW,CAACU,KACd,CAAC;MAED,IAAMjC,GAAG,GAAoB,CAAC,CAAC;MAE/BA,GAAG,CAACC,OAAO,GAAG,CAAC,CAAC;MAChBD,GAAG,CAACE,OAAO,GACT,wFAAwF;MAC1FF,GAAG,CAACd,IAAI,GAAGU,kBAAU,CAACO,mBAAmB;MAEzCkB,SAAS,CAACK,YAAY,CAAC1B,GAAG,CAAC;MAE3B,IAAMjC,YAAY,GAAG;QACnBC,IAAI,EAAE;UACJC,MAAM,EAAEb,eAAe;UACvBgB,SAAS,EAAE/B,cAAc,CAACgC,MAAM,CAACC,QAAQ;UACzCC,iBAAiB,EAAEpC,wBAAgB,CAACC;QACtC,CAAC;QACDoC,MAAM,EAAE;UACNC,UAAU,EAAEpC,cAAc,CAACgC,MAAM,CAACK,eAAe;UACjDC,UAAU,EAAEtC,cAAc,CAACgC,MAAM,CAACO,GAAG;UACrCC,mBAAmB,EAAEnC,mBAAmB;UACxCuE,OAAO,EAAEhE,UAAU;UACnBiE,cAAc,EAAEhE,iBAAiB;UACjC4E,mBAAmB,EAAED,OAAO;UAC5BE,oBAAoB,EAAEF,OAAO;UAC7BxB,KAAK,EAAEgB,SAAS,CAACM,YAAY,CAAC,CAAC,CAACzB,OAAO;UACvCK,UAAU,EAAEc,SAAS,CAACM,YAAY,CAAC,CAAC,CAACzC;QACvC,CAAC;QACDA,IAAI,EAAEC,kBAAW,CAACC;MACpB,CAAC;MAEDnD,aAAa,CAAC+F,iBAAiB,CAC7B1C,mBAAY,CAAC4C,WAAW,EACxB9E,eAAe,EACf+B,kBAAW,CAACC,UAAU,EACtBnC,UAAU,EACVC,iBAAiB,EACjB2E,OAAO,EACPA,OAAO,EACPR,SACF,CAAC;MACD5D,MAAM,CAAClB,sBAAsB,CAAC,CAACkD,kBAAkB,CAACH,mBAAY,CAAC4C,WAAW,EAAEnE,YAAY,CAAC;IAC3F,CAAC,CAAC;IAEFP,EAAE,CAAC,6BAA6B,EAAE,YAAM;MACtC,IAAMiD,MAAM,GAAGjE,IAAI,CAACkE,KAAK,CAACC,eAAG,EAAE,MAAM,CAAC;MAEtC1E,aAAa,CAAC+F,iBAAiB,CAC7B,mBAAmB,EACnB5E,eAAe,EACf+B,kBAAW,CAACyB,WAAW,EACvB3D,UAAU,EACVC,iBAAiB,EACjB2E,OAAO,EACPA,OACF,CAAC;MAEDpE,MAAM,CAAClB,sBAAsB,CAAC,CAACmB,GAAG,CAACmD,UAAU,CAAC,CAAC;MAC/CpD,MAAM,CAACgD,MAAM,CAAC,CAAChB,kBAAkB,CAC/B,mEAAmE,EACnE;QACEqB,IAAI,EAAE,QAAQ;QACdC,MAAM,EAAE;MACV,CACF,CAAC;IACH,CAAC,CAAC;EACJ,CAAC,CAAC;EAEF/E,QAAQ,CAAC,kBAAkB,EAAE,YAAM;IACjCgF,SAAS,CAAC,YAAM;MACd/E,aAAa,CAAC4B,aAAa,CAACxB,cAAc,CAAC;IAC7C,CAAC,CAAC;IAEFmB,EAAE,CAAC,2BAA2B,EAAE,YAAM;MACpC,IAAMO,YAAY,GAAG;QACnBC,IAAI,EAAE;UACJI,SAAS,EAAE/B,cAAc,CAACgC,MAAM,CAACC,QAAQ;UACzCC,iBAAiB,EAAEpC,wBAAgB,CAACC;QACtC,CAAC;QACDoC,MAAM,EAAE;UACNC,UAAU,EAAEpC,cAAc,CAACgC,MAAM,CAACK,eAAe;UACjDC,UAAU,EAAEtC,cAAc,CAACgC,MAAM,CAACO,GAAG;UACrCC,mBAAmB,EAAEnC,mBAAmB;UACxCuE,OAAO,EAAEhE,UAAU;UACnBiE,cAAc,EAAEhE;QAClB,CAAC;QACDgC,IAAI,EAAEC,kBAAW,CAACC;MACpB,CAAC;MAEDnD,aAAa,CAACkG,eAAe,CAC3B7C,mBAAY,CAAC8C,WAAW,EACxBjD,kBAAW,CAACC,UAAU,EACtBnC,UAAU,EACVC,iBACF,CAAC;MAEDO,MAAM,CAAClB,sBAAsB,CAAC,CAACkD,kBAAkB,CAACH,mBAAY,CAAC8C,WAAW,EAAErE,YAAY,CAAC;IAC3F,CAAC,CAAC;IAEFP,EAAE,CAAC,4BAA4B,EAAE,YAAM;MACrC,IAAMO,YAAY,GAAG;QACnBC,IAAI,EAAE;UACJI,SAAS,EAAE/B,cAAc,CAACgC,MAAM,CAACC,QAAQ;UACzCC,iBAAiB,EAAEpC,wBAAgB,CAACC;QACtC,CAAC;QACDoC,MAAM,EAAE;UACNC,UAAU,EAAEpC,cAAc,CAACgC,MAAM,CAACK,eAAe;UACjDC,UAAU,EAAEtC,cAAc,CAACgC,MAAM,CAACO,GAAG;UACrCC,mBAAmB,EAAEnC,mBAAmB;UACxCuE,OAAO,EAAEhE,UAAU;UACnBiE,cAAc,EAAEhE;QAClB,CAAC;QACDgC,IAAI,EAAEC,kBAAW,CAACC;MACpB,CAAC;MAEDnD,aAAa,CAACkG,eAAe,CAC3B7C,mBAAY,CAAC+C,YAAY,EACzBlD,kBAAW,CAACC,UAAU,EACtBnC,UAAU,EACVC,iBACF,CAAC;MAEDO,MAAM,CAAClB,sBAAsB,CAAC,CAACkD,kBAAkB,CAACH,mBAAY,CAAC+C,YAAY,EAAEtE,YAAY,CAAC;IAC5F,CAAC,CAAC;IAEFP,EAAE,CAAC,2BAA2B,EAAE,YAAM;MACpC,IAAMiD,MAAM,GAAGjE,IAAI,CAACkE,KAAK,CAACC,eAAG,EAAE,MAAM,CAAC;MAEtC1E,aAAa,CAACkG,eAAe,CAC3B,mBAAmB,EACnBhD,kBAAW,CAACC,UAAU,EACtBnC,UAAU,EACVC,iBACF,CAAC;MAEDO,MAAM,CAAClB,sBAAsB,CAAC,CAACmB,GAAG,CAACmD,UAAU,CAAC,CAAC;MAC/CpD,MAAM,CAACgD,MAAM,CAAC,CAAChB,kBAAkB,CAC/B,mEAAmE,EACnE;QACEqB,IAAI,EAAE,QAAQ;QACdC,MAAM,EAAE;MACV,CACF,CAAC;IACH,CAAC,CAAC;EACJ,CAAC,CAAC;EAEF/E,QAAQ,CAAC,wBAAwB,EAAE,YAAM;IACvCgF,SAAS,CAAC;MAAA,OAAM/E,aAAa,CAAC4B,aAAa,CAACxB,cAAc,CAAC;IAAA,EAAC;IAE5DmB,EAAE,CAAC,iCAAiC,EAAE,YAAM;MAC1C,IAAM8E,aAAa,GAAG;QACpBtE,IAAI,EAAE;UACJC,MAAM,EAAEsE,uBAAgB,CAACC,cAAc;UACvCpE,SAAS,EAAE/B,cAAc,CAACgC,MAAM,CAACC;QACnC,CAAC;QACDE,MAAM,EAAE;UACNC,UAAU,EAAEpC,cAAc,CAACgC,MAAM,CAACK,eAAe;UACjDG,mBAAmB,EAAEnC;QACvB,CAAC;QACDwC,IAAI,EAAEC,kBAAW,CAACC;MACpB,CAAC;MAEDnD,aAAa,CAACwG,qBAAqB,CACjCnD,mBAAY,CAACoD,SAAS,EACtBH,uBAAgB,CAACC,cAAc,EAC/BrD,kBAAW,CAACC,UACd,CAAC;MACD3B,MAAM,CAAClB,sBAAsB,CAAC,CAACkD,kBAAkB,CAACH,mBAAY,CAACoD,SAAS,EAAEJ,aAAa,CAAC;MAExF/F,sBAAsB,CAACe,SAAS,CAAC,CAAC;MAElC,IAAMqF,aAAa,GAAAvH,aAAA,CAAAA,aAAA,KACdkH,aAAa;QAChBtE,IAAI,EAAA5C,aAAA,CAAAA,aAAA,KAAMkH,aAAa,CAACtE,IAAI;UAAE4E,UAAU,EAAE,WAAW;UAAE3E,MAAM,EAAEsE,uBAAgB,CAACM;QAAM;MAAC,EACxF;MAED5G,aAAa,CAACwG,qBAAqB,CACjCnD,mBAAY,CAACoD,SAAS,EACtBH,uBAAgB,CAACM,MAAM,EACvB1D,kBAAW,CAACC,UAAU,EACtB,WACF,CAAC;MAED3B,MAAM,CAAClB,sBAAsB,CAAC,CAACkD,kBAAkB,CAACH,mBAAY,CAACoD,SAAS,EAAEC,aAAa,CAAC;IAC1F,CAAC,CAAC;IAEFnF,EAAE,CAAC,iCAAiC,EAAE,YAAM;MAC1C,IAAMsF,YAAY,GAAG,2BAA2B;MAChD,IAAMR,aAAa,GAAG;QACpBtE,IAAI,EAAE;UACJC,MAAM,EAAEsE,uBAAgB,CAACC,cAAc;UACvCpE,SAAS,EAAE/B,cAAc,CAACgC,MAAM,CAACC,QAAQ;UACzCsE,UAAU,EAAEpD,SAAS;UACrBa,KAAK,EAAEyC,YAAY;UACnBC,WAAW,EAAE;QACf,CAAC;QACDvE,MAAM,EAAE;UACNC,UAAU,EAAEpC,cAAc,CAACgC,MAAM,CAACK,eAAe;UACjDG,mBAAmB,EAAEnC;QACvB,CAAC;QACDwC,IAAI,EAAEC,kBAAW,CAACC;MACpB,CAAC;MAEDnD,aAAa,CAACwG,qBAAqB,CACjCnD,mBAAY,CAAC0D,eAAe,EAC5BT,uBAAgB,CAACC,cAAc,EAC/BrD,kBAAW,CAACC,UAAU,EACtBI,SAAS,EACTsD,YAAY,EACZ,GACF,CAAC;MACDrF,MAAM,CAAClB,sBAAsB,CAAC,CAACkD,kBAAkB,CAC/CH,mBAAY,CAAC0D,eAAe,EAC5BV,aACF,CAAC;MAED/F,sBAAsB,CAACe,SAAS,CAAC,CAAC;MAElC,IAAMqF,aAAa,GAAAvH,aAAA,CAAAA,aAAA,KACdkH,aAAa;QAChBtE,IAAI,EAAA5C,aAAA,CAAAA,aAAA,KAAMkH,aAAa,CAACtE,IAAI;UAAE4E,UAAU,EAAE,WAAW;UAAE3E,MAAM,EAAEsE,uBAAgB,CAACM;QAAM;MAAC,EACxF;MAED5G,aAAa,CAACwG,qBAAqB,CACjCnD,mBAAY,CAAC0D,eAAe,EAC5BT,uBAAgB,CAACM,MAAM,EACvB1D,kBAAW,CAACC,UAAU,EACtB,WAAW,EACX0D,YAAY,EACZ,GACF,CAAC;MAEDrF,MAAM,CAAClB,sBAAsB,CAAC,CAACkD,kBAAkB,CAC/CH,mBAAY,CAAC0D,eAAe,EAC5BL,aACF,CAAC;IACH,CAAC,CAAC;IAEFnF,EAAE,CAAC,iCAAiC,EAAE,YAAM;MAC1C,IAAMiD,MAAM,GAAGjE,IAAI,CAACkE,KAAK,CAACC,eAAG,EAAE,MAAM,CAAC;MAEtC1E,aAAa,CAACwG,qBAAqB,CACjC,mBAAmB,EACnBF,uBAAgB,CAACC,cAAc,EAC/BrD,kBAAW,CAACC,UACd,CAAC;MAED3B,MAAM,CAAClB,sBAAsB,CAAC,CAACmB,GAAG,CAACmD,UAAU,CAAC,CAAC;MAC/CpD,MAAM,CAACgD,MAAM,CAAC,CAAChB,kBAAkB,CAC/B,mEAAmE,EACnE;QACEqB,IAAI,EAAE,QAAQ;QACdC,MAAM,EAAE;MACV,CACF,CAAC;IACH,CAAC,CAAC;EACJ,CAAC,CAAC;EAEF/E,QAAQ,CAAC,mCAAmC,EAAE,YAAM;IAClDwB,EAAE,CAAC,qCAAqC,EAAE,YAAM;MAC9CZ,OAAO,CAACC,GAAG,GAAG,CAAC,CAAC;MAChBZ,aAAa,CAAC4B,aAAa,CAACxB,cAAc,CAAC;MAC3C,IAAM0B,YAAY,GAAG;QACnBC,IAAI,EAAE;UACJI,SAAS,EAAE/B,cAAc,CAACgC,MAAM,CAACC,QAAQ;UACzCC,iBAAiB,EAAEpC,wBAAgB,CAACC;QACtC,CAAC;QACDoC,MAAM,EAAE;UACNC,UAAU,EAAEpC,cAAc,CAACgC,MAAM,CAACK,eAAe;UACjDC,UAAU,EAAEtC,cAAc,CAACgC,MAAM,CAACO,GAAG;UACrCC,mBAAmB,EAAEoE,kBAAO;UAC5BhC,OAAO,EAAEhE,UAAU;UACnBiE,cAAc,EAAEhE;QAClB,CAAC;QACDgC,IAAI,EAAEC,kBAAW,CAACC;MACpB,CAAC;MAEDnD,aAAa,CAACkG,eAAe,CAC3B7C,mBAAY,CAAC8C,WAAW,EACxBjD,kBAAW,CAACC,UAAU,EACtBnC,UAAU,EACVC,iBACF,CAAC;MAEDO,MAAM,CAAClB,sBAAsB,CAAC,CAACkD,kBAAkB,CAACH,mBAAY,CAAC8C,WAAW,EAAErE,YAAY,CAAC;IAC3F,CAAC,CAAC;EACJ,CAAC,CAAC;EAEF/B,QAAQ,CAAC,0BAA0B,EAAE,YAAM;IACzCgF,SAAS,CAAC;MAAA,OAAM/E,aAAa,CAAC4B,aAAa,CAACxB,cAAc,CAAC;IAAA,EAAC;IAE5DmB,EAAE,CAAC,sEAAsE,EAAE,YAAM;MAC/E,IAAMyB,UAAU,GAAG,WAAW;MAC9B,IAAMiE,UAAU,GAAG,UAAU;MAC7B,IAAMC,aAAa,GAAG,UAAU;MAChC,IAAMC,MAAM,GAAG,UAAU;MACzB,IAAMC,yBAAyB,GAAG,aAAa;MAE/C,IAAMtF,YAAY,GAAG;QACnBC,IAAI,EAAE;UACJC,MAAM,EAAEqF,yBAAkB;UAC1BlF,SAAS,EAAE/B,cAAc,CAACgC,MAAM,CAACC,QAAQ;UACzCC,iBAAiB,EAAEpC,wBAAgB,CAACC;QACtC,CAAC;QACDoC,MAAM,EAAE;UACNC,UAAU,EAAEpC,cAAc,CAACgC,MAAM,CAACK,eAAe;UACjDC,UAAU,EAAEtC,cAAc,CAACgC,MAAM,CAACO,GAAG;UACrCC,mBAAmB,EAAEnC,mBAAmB;UACxCwE,cAAc,EAAEiC,aAAa;UAC7BE,yBAAyB,EAAzBA,yBAAyB;UACzBE,WAAW,EAAEtE,UAAU;UACvBuE,WAAW,EAAEN,UAAU;UACvBjC,OAAO,EAAEmC;QACX,CAAC;QACDlE,IAAI,EAAEC,kBAAW,CAACC;MACpB,CAAC;MAEDnD,aAAa,CAACwH,sBAAsB,CAClCnE,mBAAY,CAACoE,mBAAmB,EAChCJ,yBAAkB,EAClBnE,kBAAW,CAACC,UAAU,EACtBH,UAAU,EACViE,UAAU,EACVC,aAAa,EACb3D,SAAS,EACT4D,MAAM,EACNC,yBACF,CAAC;MAED5F,MAAM,CAAClB,sBAAsB,CAAC,CAACkD,kBAAkB,CAC/CH,mBAAY,CAACoE,mBAAmB,EAChC3F,YACF,CAAC;IACH,CAAC,CAAC;IAEFP,EAAE,CAAC,gFAAgF,EAAE,YAAM;MACzF,IAAM0F,UAAU,GAAG,UAAU;MAC7B,IAAMC,aAAa,GAAG,UAAU;MAChC,IAAMC,MAAM,GAAG,UAAU;MACzB,IAAMC,yBAAyB,GAAG,aAAa;MAC/C,IAAMM,UAAU,GAAG,kBAAkB;MAErC,IAAM5F,YAAY,GAAG;QACnBC,IAAI,EAAE;UACJC,MAAM,EAAEqF,yBAAkB;UAC1BlF,SAAS,EAAE/B,cAAc,CAACgC,MAAM,CAACC,QAAQ;UACzCC,iBAAiB,EAAEpC,wBAAgB,CAACC;QACtC,CAAC;QACDoC,MAAM,EAAE;UACNC,UAAU,EAAEpC,cAAc,CAACgC,MAAM,CAACK,eAAe;UACjDC,UAAU,EAAEtC,cAAc,CAACgC,MAAM,CAACO,GAAG;UACrCC,mBAAmB,EAAEnC,mBAAmB;UACxCwE,cAAc,EAAEiC,aAAa;UAC7BE,yBAAyB,EAAzBA,yBAAyB;UACzBE,WAAW,EAAE/D,SAAS;UACtBgE,WAAW,EAAEN,UAAU;UACvBjC,OAAO,EAAEmC,MAAM;UACf/C,KAAK,EAAEsD;QACT,CAAC;QACDzE,IAAI,EAAEC,kBAAW,CAACC;MACpB,CAAC;MAEDnD,aAAa,CAACwH,sBAAsB,CAClCnE,mBAAY,CAACsE,kBAAkB,EAC/BN,yBAAkB,EAClBnE,kBAAW,CAACC,UAAU,EACtBI,SAAS,EACT0D,UAAU,EACVC,aAAa,EACbQ,UAAU,EACVP,MAAM,EACNC,yBACF,CAAC;MAED5F,MAAM,CAAClB,sBAAsB,CAAC,CAACkD,kBAAkB,CAC/CH,mBAAY,CAACsE,kBAAkB,EAC/B7F,YACF,CAAC;IACH,CAAC,CAAC;EACJ,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_testUtil","require","_index","_types","_constants","_CallingDeviceError","_types2","_types3","_Logger","_interopRequireDefault","_CallError","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","webex","getTestUtilsWebex","describe","metricManager","getMetricManager","ServiceIndicator","CALLING","mockDeviceInfo","getMockDeviceInfo","submitClientMetricSpy","jest","spyOn","internal","metrics","MOCK_VERSION_NUMBER","originalEnv","process","env","mockCallId","mockCorrelationId","mockCallAction","mockMediaAction","beforeEach","mockClear","CALLING_SDK_VERSION","it","expect","not","toBeNull","toBeUndefined","setDeviceInfo","toEqual","expectedData","tags","action","REG_ACTION","REGISTER","device_id","device","deviceId","service_indicator","fields","device_url","clientDeviceUri","mobius_url","uri","calling_sdk_version","reg_source","REGISTRATION_UTIL","server_type","trackingId","type","METRIC_TYPE","BEHAVIORAL","submitRegistrationMetric","METRIC_EVENT","REGISTRATION","undefined","toBeCalledOnceWith","clientError","createClientError","ERROR_TYPE","DEFAULT","RegistrationStatus","INACTIVE","err","context","message","SERVICE_UNAVAILABLE","setError","error","getError","error_type","REGISTRATION_ERROR","NOT_FOUND","KEEPALIVE_FAILURE","keepalive_count","KEEPALIVE_ERROR","toHaveBeenCalledWith","logSpy","log","OPERATIONAL","toBeCalled","file","method","beforeAll","call_id","correlation_id","submitCallMetric","CALL","callError","createCallError","ERROR_LAYER","CALL_CONTROL","FORBIDDEN_ERROR","setCallError","getCallError","CALL_ERROR","mockSdp","local_media_details","remote_media_details","submitMediaMetric","MEDIA","MEDIA_ERROR","submitBNRMetric","BNR_ENABLED","BNR_DISABLED","expectedData1","VOICEMAIL_ACTION","GET_VOICEMAILS","submitVoicemailMetric","VOICEMAIL","expectedData2","message_id","DELETE","errorMessage","status_code","VOICEMAIL_ERROR","VERSION","feedbackId","correlationId","callId","broadworksCorrelationInfo","UPLOAD_LOGS_ACTION","tracking_id","feedback_id","submitUploadLogsMetric","UPLOAD_LOGS_SUCCESS","errorStack","UPLOAD_LOGS_FAILED"],"sources":["index.test.ts"],"sourcesContent":["/* eslint-disable dot-notation */\nimport {getMockDeviceInfo, getTestUtilsWebex} from '../common/testUtil';\nimport {getMetricManager} from './index';\nimport {METRIC_TYPE, METRIC_EVENT, REG_ACTION, VOICEMAIL_ACTION, UPLOAD_LOGS_ACTION} from './types';\nimport {REGISTRATION_UTIL, VERSION} from '../CallingClient/constants';\nimport {createClientError} from '../Errors/catalog/CallingDeviceError';\nimport {CallErrorObject, ErrorObject, ERROR_LAYER, ERROR_TYPE} from '../Errors/types';\nimport {RegistrationStatus, ServiceIndicator} from '../common/types';\nimport log from '../Logger';\nimport {createCallError} from '../Errors/catalog/CallError';\n\nconst webex = getTestUtilsWebex();\n\ndescribe('CALLING: Metric tests', () => {\n const metricManager = getMetricManager(webex, ServiceIndicator.CALLING);\n const mockDeviceInfo = getMockDeviceInfo();\n const submitClientMetricSpy = jest.spyOn(webex.internal.metrics, 'submitClientMetrics');\n const MOCK_VERSION_NUMBER = '1.0.0';\n const originalEnv = process.env;\n\n const mockCallId = '123456';\n const mockCorrelationId = '0931237';\n const mockCallAction = 'S_SEND_CALL_SETUP';\n const mockMediaAction = 'S_SEND_ROAP_OFFER';\n\n beforeEach(() => {\n submitClientMetricSpy.mockClear();\n process.env = {\n ...originalEnv,\n CALLING_SDK_VERSION: MOCK_VERSION_NUMBER,\n };\n });\n\n it('initialize metric manager', () => {\n expect(metricManager).not.toBeNull();\n expect(metricManager['deviceInfo']).toBeUndefined();\n });\n\n it('update deviceInfo in metric manager', () => {\n expect(metricManager['deviceInfo']).toBeUndefined();\n metricManager.setDeviceInfo(mockDeviceInfo);\n expect(metricManager['deviceInfo']).toEqual(mockDeviceInfo);\n });\n\n describe('CallingClient metric tests', () => {\n it('submit registration success metric', () => {\n metricManager.setDeviceInfo(mockDeviceInfo);\n\n const expectedData = {\n tags: {\n action: REG_ACTION.REGISTER,\n device_id: mockDeviceInfo.device.deviceId,\n service_indicator: ServiceIndicator.CALLING,\n },\n fields: {\n device_url: mockDeviceInfo.device.clientDeviceUri,\n mobius_url: mockDeviceInfo.device.uri,\n calling_sdk_version: MOCK_VERSION_NUMBER,\n reg_source: REGISTRATION_UTIL,\n server_type: 'PRIMARY',\n trackingId: 'webex-js-sdk_06bafdd0-2f9b-4cd7-b438-9c0d95ecec9b_15',\n },\n type: METRIC_TYPE.BEHAVIORAL,\n };\n\n metricManager.submitRegistrationMetric(\n METRIC_EVENT.REGISTRATION,\n REG_ACTION.REGISTER,\n METRIC_TYPE.BEHAVIORAL,\n REGISTRATION_UTIL,\n 'PRIMARY',\n 'webex-js-sdk_06bafdd0-2f9b-4cd7-b438-9c0d95ecec9b_15',\n undefined,\n undefined\n );\n expect(submitClientMetricSpy).toBeCalledOnceWith(METRIC_EVENT.REGISTRATION, expectedData);\n });\n\n it('submit registration failure metric', () => {\n metricManager.setDeviceInfo(mockDeviceInfo);\n\n const clientError = createClientError(\n '',\n {},\n ERROR_TYPE.DEFAULT,\n RegistrationStatus.INACTIVE\n );\n const err = <ErrorObject>{};\n\n err.context = {};\n err.message = 'Unknown Error';\n err.type = ERROR_TYPE.SERVICE_UNAVAILABLE;\n\n clientError.setError(err);\n\n const expectedData = {\n tags: {\n action: REG_ACTION.REGISTER,\n device_id: mockDeviceInfo.device.deviceId,\n service_indicator: ServiceIndicator.CALLING,\n },\n fields: {\n device_url: mockDeviceInfo.device.clientDeviceUri,\n mobius_url: mockDeviceInfo.device.uri,\n calling_sdk_version: MOCK_VERSION_NUMBER,\n reg_source: REGISTRATION_UTIL,\n server_type: 'BACKUP',\n trackingId: 'webex-js-sdk_06bafdd0-2f9b-4cd7-b438-9c0d95ecec9b_15',\n error: clientError.getError().message,\n error_type: clientError.getError().type,\n },\n type: METRIC_TYPE.BEHAVIORAL,\n };\n\n metricManager.submitRegistrationMetric(\n METRIC_EVENT.REGISTRATION_ERROR,\n REG_ACTION.REGISTER,\n METRIC_TYPE.BEHAVIORAL,\n REGISTRATION_UTIL,\n 'BACKUP',\n 'webex-js-sdk_06bafdd0-2f9b-4cd7-b438-9c0d95ecec9b_15',\n undefined,\n clientError\n );\n expect(submitClientMetricSpy).toBeCalledOnceWith(\n METRIC_EVENT.REGISTRATION_ERROR,\n expectedData\n );\n });\n\n it('submit keepalive failure metric', () => {\n metricManager.setDeviceInfo(mockDeviceInfo);\n\n const clientError = createClientError(\n '',\n {},\n ERROR_TYPE.DEFAULT,\n RegistrationStatus.INACTIVE\n );\n const err = <ErrorObject>{};\n\n err.context = {};\n err.message = 'Unknown Error';\n err.type = ERROR_TYPE.NOT_FOUND;\n\n clientError.setError(err);\n\n const expectedData = {\n tags: {\n action: REG_ACTION.KEEPALIVE_FAILURE,\n device_id: mockDeviceInfo.device.deviceId,\n service_indicator: ServiceIndicator.CALLING,\n },\n fields: {\n device_url: mockDeviceInfo.device.clientDeviceUri,\n mobius_url: mockDeviceInfo.device.uri,\n calling_sdk_version: MOCK_VERSION_NUMBER,\n reg_source: REGISTRATION_UTIL,\n server_type: 'BACKUP',\n trackingId: 'webex-js-sdk_06bafdd0-2f9b-4cd7-b438-9c0d95ecec9b_15',\n keepalive_count: 1,\n error: clientError.getError().message,\n error_type: clientError.getError().type,\n },\n type: METRIC_TYPE.BEHAVIORAL,\n };\n\n metricManager.submitRegistrationMetric(\n METRIC_EVENT.KEEPALIVE_ERROR,\n REG_ACTION.KEEPALIVE_FAILURE,\n METRIC_TYPE.BEHAVIORAL,\n REGISTRATION_UTIL,\n 'BACKUP',\n 'webex-js-sdk_06bafdd0-2f9b-4cd7-b438-9c0d95ecec9b_15',\n 1,\n clientError\n );\n expect(submitClientMetricSpy).toHaveBeenCalledWith(\n METRIC_EVENT.KEEPALIVE_ERROR,\n expectedData\n );\n });\n\n it('submit unknown registration metric', () => {\n const logSpy = jest.spyOn(log, 'warn');\n\n metricManager.submitRegistrationMetric(\n 'invalidMetricName' as unknown as METRIC_EVENT,\n REG_ACTION.REGISTER,\n METRIC_TYPE.OPERATIONAL,\n REGISTRATION_UTIL,\n 'PRIMARY',\n undefined,\n undefined,\n undefined\n );\n\n expect(submitClientMetricSpy).not.toBeCalled();\n expect(logSpy).toBeCalledOnceWith(\n 'Invalid metric name received. Rejecting request to submit metric.',\n {\n file: 'metric',\n method: 'submitRegistrationMetric',\n }\n );\n });\n });\n\n describe('Call Metric tests', () => {\n beforeAll(() => {\n metricManager.setDeviceInfo(mockDeviceInfo);\n });\n\n it('submit call success metric', () => {\n const expectedData = {\n tags: {\n action: mockCallAction,\n device_id: mockDeviceInfo.device.deviceId,\n service_indicator: ServiceIndicator.CALLING,\n },\n fields: {\n device_url: mockDeviceInfo.device.clientDeviceUri,\n mobius_url: mockDeviceInfo.device.uri,\n calling_sdk_version: MOCK_VERSION_NUMBER,\n call_id: mockCallId,\n correlation_id: mockCorrelationId,\n },\n type: METRIC_TYPE.BEHAVIORAL,\n };\n\n metricManager.submitCallMetric(\n METRIC_EVENT.CALL,\n mockCallAction,\n METRIC_TYPE.BEHAVIORAL,\n mockCallId,\n mockCorrelationId\n );\n expect(submitClientMetricSpy).toBeCalledOnceWith(METRIC_EVENT.CALL, expectedData);\n });\n\n it('submit call failure metric', () => {\n const callError = createCallError(\n '',\n {},\n ERROR_TYPE.DEFAULT,\n mockCorrelationId,\n ERROR_LAYER.CALL_CONTROL\n );\n\n const err = <CallErrorObject>{};\n\n err.context = {};\n err.message =\n 'An invalid status update has been received for the call. Wait a moment and try again.';\n err.type = ERROR_TYPE.FORBIDDEN_ERROR;\n\n callError.setCallError(err);\n\n const expectedData = {\n tags: {\n action: mockCallAction,\n device_id: mockDeviceInfo.device.deviceId,\n service_indicator: ServiceIndicator.CALLING,\n },\n fields: {\n device_url: mockDeviceInfo.device.clientDeviceUri,\n mobius_url: mockDeviceInfo.device.uri,\n calling_sdk_version: MOCK_VERSION_NUMBER,\n call_id: mockCallId,\n correlation_id: mockCorrelationId,\n error: callError.getCallError().message,\n error_type: callError.getCallError().type,\n },\n type: METRIC_TYPE.BEHAVIORAL,\n };\n\n metricManager.submitCallMetric(\n METRIC_EVENT.CALL_ERROR,\n mockCallAction,\n METRIC_TYPE.BEHAVIORAL,\n mockCallId,\n mockCorrelationId,\n callError\n );\n expect(submitClientMetricSpy).toBeCalledOnceWith(METRIC_EVENT.CALL_ERROR, expectedData);\n });\n\n it('submit unknown call metric', () => {\n const logSpy = jest.spyOn(log, 'warn');\n\n metricManager.submitCallMetric(\n 'invalidMetricName' as unknown as METRIC_EVENT,\n mockCallAction,\n METRIC_TYPE.OPERATIONAL,\n mockCallId,\n mockCorrelationId\n );\n\n expect(submitClientMetricSpy).not.toBeCalled();\n expect(logSpy).toBeCalledOnceWith(\n 'Invalid metric name received. Rejecting request to submit metric.',\n {\n file: 'metric',\n method: 'submitCallMetric',\n }\n );\n });\n });\n\n describe('Media Metric tests', () => {\n const mockSdp = 'sdpInformation';\n\n beforeAll(() => {\n metricManager.setDeviceInfo(mockDeviceInfo);\n });\n\n it('submit media success metric', () => {\n const expectedData = {\n tags: {\n action: mockMediaAction,\n device_id: mockDeviceInfo.device.deviceId,\n service_indicator: ServiceIndicator.CALLING,\n },\n fields: {\n device_url: mockDeviceInfo.device.clientDeviceUri,\n mobius_url: mockDeviceInfo.device.uri,\n calling_sdk_version: MOCK_VERSION_NUMBER,\n call_id: mockCallId,\n correlation_id: mockCorrelationId,\n local_media_details: mockSdp,\n remote_media_details: mockSdp,\n },\n type: METRIC_TYPE.BEHAVIORAL,\n };\n\n metricManager.submitMediaMetric(\n METRIC_EVENT.MEDIA,\n mockMediaAction,\n METRIC_TYPE.BEHAVIORAL,\n mockCallId,\n mockCorrelationId,\n mockSdp,\n mockSdp\n );\n expect(submitClientMetricSpy).toBeCalledOnceWith(METRIC_EVENT.MEDIA, expectedData);\n });\n\n it('submit media failure metric', () => {\n const callError = createCallError(\n '',\n {},\n ERROR_TYPE.DEFAULT,\n mockCorrelationId,\n ERROR_LAYER.MEDIA\n );\n\n const err = <CallErrorObject>{};\n\n err.context = {};\n err.message =\n 'An error occurred while parsing the provided information. Wait a moment and try again.';\n err.type = ERROR_TYPE.SERVICE_UNAVAILABLE;\n\n callError.setCallError(err);\n\n const expectedData = {\n tags: {\n action: mockMediaAction,\n device_id: mockDeviceInfo.device.deviceId,\n service_indicator: ServiceIndicator.CALLING,\n },\n fields: {\n device_url: mockDeviceInfo.device.clientDeviceUri,\n mobius_url: mockDeviceInfo.device.uri,\n calling_sdk_version: MOCK_VERSION_NUMBER,\n call_id: mockCallId,\n correlation_id: mockCorrelationId,\n local_media_details: mockSdp,\n remote_media_details: mockSdp,\n error: callError.getCallError().message,\n error_type: callError.getCallError().type,\n },\n type: METRIC_TYPE.BEHAVIORAL,\n };\n\n metricManager.submitMediaMetric(\n METRIC_EVENT.MEDIA_ERROR,\n mockMediaAction,\n METRIC_TYPE.BEHAVIORAL,\n mockCallId,\n mockCorrelationId,\n mockSdp,\n mockSdp,\n callError\n );\n expect(submitClientMetricSpy).toBeCalledOnceWith(METRIC_EVENT.MEDIA_ERROR, expectedData);\n });\n\n it('submit unknown media metric', () => {\n const logSpy = jest.spyOn(log, 'warn');\n\n metricManager.submitMediaMetric(\n 'invalidMetricName' as unknown as METRIC_EVENT,\n mockMediaAction,\n METRIC_TYPE.OPERATIONAL,\n mockCallId,\n mockCorrelationId,\n mockSdp,\n mockSdp\n );\n\n expect(submitClientMetricSpy).not.toBeCalled();\n expect(logSpy).toBeCalledOnceWith(\n 'Invalid metric name received. Rejecting request to submit metric.',\n {\n file: 'metric',\n method: 'submitMediaMetric',\n }\n );\n });\n });\n\n describe('BNR metric tests', () => {\n beforeAll(() => {\n metricManager.setDeviceInfo(mockDeviceInfo);\n });\n\n it('submit bnr enabled metric', () => {\n const expectedData = {\n tags: {\n device_id: mockDeviceInfo.device.deviceId,\n service_indicator: ServiceIndicator.CALLING,\n },\n fields: {\n device_url: mockDeviceInfo.device.clientDeviceUri,\n mobius_url: mockDeviceInfo.device.uri,\n calling_sdk_version: MOCK_VERSION_NUMBER,\n call_id: mockCallId,\n correlation_id: mockCorrelationId,\n },\n type: METRIC_TYPE.BEHAVIORAL,\n };\n\n metricManager.submitBNRMetric(\n METRIC_EVENT.BNR_ENABLED,\n METRIC_TYPE.BEHAVIORAL,\n mockCallId,\n mockCorrelationId\n );\n\n expect(submitClientMetricSpy).toBeCalledOnceWith(METRIC_EVENT.BNR_ENABLED, expectedData);\n });\n\n it('submit bnr disabled metric', () => {\n const expectedData = {\n tags: {\n device_id: mockDeviceInfo.device.deviceId,\n service_indicator: ServiceIndicator.CALLING,\n },\n fields: {\n device_url: mockDeviceInfo.device.clientDeviceUri,\n mobius_url: mockDeviceInfo.device.uri,\n calling_sdk_version: MOCK_VERSION_NUMBER,\n call_id: mockCallId,\n correlation_id: mockCorrelationId,\n },\n type: METRIC_TYPE.BEHAVIORAL,\n };\n\n metricManager.submitBNRMetric(\n METRIC_EVENT.BNR_DISABLED,\n METRIC_TYPE.BEHAVIORAL,\n mockCallId,\n mockCorrelationId\n );\n\n expect(submitClientMetricSpy).toBeCalledOnceWith(METRIC_EVENT.BNR_DISABLED, expectedData);\n });\n\n it('submit unknown bnr metric', () => {\n const logSpy = jest.spyOn(log, 'warn');\n\n metricManager.submitBNRMetric(\n 'invalidMetricName' as unknown as METRIC_EVENT,\n METRIC_TYPE.BEHAVIORAL,\n mockCallId,\n mockCorrelationId\n );\n\n expect(submitClientMetricSpy).not.toBeCalled();\n expect(logSpy).toBeCalledOnceWith(\n 'Invalid metric name received. Rejecting request to submit metric.',\n {\n file: 'metric',\n method: 'submitBNRMetric',\n }\n );\n });\n });\n\n describe('Voicemail metric tests', () => {\n beforeAll(() => metricManager.setDeviceInfo(mockDeviceInfo));\n\n it('submit voicemail success metric', () => {\n const expectedData1 = {\n tags: {\n action: VOICEMAIL_ACTION.GET_VOICEMAILS,\n device_id: mockDeviceInfo.device.deviceId,\n },\n fields: {\n device_url: mockDeviceInfo.device.clientDeviceUri,\n calling_sdk_version: MOCK_VERSION_NUMBER,\n },\n type: METRIC_TYPE.BEHAVIORAL,\n };\n\n metricManager.submitVoicemailMetric(\n METRIC_EVENT.VOICEMAIL,\n VOICEMAIL_ACTION.GET_VOICEMAILS,\n METRIC_TYPE.BEHAVIORAL\n );\n expect(submitClientMetricSpy).toBeCalledOnceWith(METRIC_EVENT.VOICEMAIL, expectedData1);\n\n submitClientMetricSpy.mockClear();\n\n const expectedData2 = {\n ...expectedData1,\n tags: {...expectedData1.tags, message_id: 'messageId', action: VOICEMAIL_ACTION.DELETE},\n };\n\n metricManager.submitVoicemailMetric(\n METRIC_EVENT.VOICEMAIL,\n VOICEMAIL_ACTION.DELETE,\n METRIC_TYPE.BEHAVIORAL,\n 'messageId'\n );\n\n expect(submitClientMetricSpy).toBeCalledOnceWith(METRIC_EVENT.VOICEMAIL, expectedData2);\n });\n\n it('submit voicemail failure metric', () => {\n const errorMessage = 'User is not authenticated';\n const expectedData1 = {\n tags: {\n action: VOICEMAIL_ACTION.GET_VOICEMAILS,\n device_id: mockDeviceInfo.device.deviceId,\n message_id: undefined,\n error: errorMessage,\n status_code: 401,\n },\n fields: {\n device_url: mockDeviceInfo.device.clientDeviceUri,\n calling_sdk_version: MOCK_VERSION_NUMBER,\n },\n type: METRIC_TYPE.BEHAVIORAL,\n };\n\n metricManager.submitVoicemailMetric(\n METRIC_EVENT.VOICEMAIL_ERROR,\n VOICEMAIL_ACTION.GET_VOICEMAILS,\n METRIC_TYPE.BEHAVIORAL,\n undefined,\n errorMessage,\n 401\n );\n expect(submitClientMetricSpy).toBeCalledOnceWith(METRIC_EVENT.VOICEMAIL_ERROR, expectedData1);\n\n submitClientMetricSpy.mockClear();\n\n const expectedData2 = {\n ...expectedData1,\n tags: {...expectedData1.tags, message_id: 'messageId', action: VOICEMAIL_ACTION.DELETE},\n };\n\n metricManager.submitVoicemailMetric(\n METRIC_EVENT.VOICEMAIL_ERROR,\n VOICEMAIL_ACTION.DELETE,\n METRIC_TYPE.BEHAVIORAL,\n 'messageId',\n errorMessage,\n 401\n );\n\n expect(submitClientMetricSpy).toBeCalledOnceWith(METRIC_EVENT.VOICEMAIL_ERROR, expectedData2);\n });\n\n it('submit unknown voicemail metric', () => {\n const logSpy = jest.spyOn(log, 'warn');\n\n metricManager.submitVoicemailMetric(\n 'invalidMetricName' as unknown as METRIC_EVENT,\n VOICEMAIL_ACTION.GET_VOICEMAILS,\n METRIC_TYPE.BEHAVIORAL\n );\n\n expect(submitClientMetricSpy).not.toBeCalled();\n expect(logSpy).toBeCalledOnceWith(\n 'Invalid metric name received. Rejecting request to submit metric.',\n {\n file: 'metric',\n method: 'submitVoicemailMetric',\n }\n );\n });\n });\n\n describe('Calling_Sdk_Version fallback test', () => {\n it('submit metric with fallback version', () => {\n process.env = {};\n metricManager.setDeviceInfo(mockDeviceInfo);\n const expectedData = {\n tags: {\n device_id: mockDeviceInfo.device.deviceId,\n service_indicator: ServiceIndicator.CALLING,\n },\n fields: {\n device_url: mockDeviceInfo.device.clientDeviceUri,\n mobius_url: mockDeviceInfo.device.uri,\n calling_sdk_version: VERSION,\n call_id: mockCallId,\n correlation_id: mockCorrelationId,\n },\n type: METRIC_TYPE.BEHAVIORAL,\n };\n\n metricManager.submitBNRMetric(\n METRIC_EVENT.BNR_ENABLED,\n METRIC_TYPE.BEHAVIORAL,\n mockCallId,\n mockCorrelationId\n );\n\n expect(submitClientMetricSpy).toBeCalledOnceWith(METRIC_EVENT.BNR_ENABLED, expectedData);\n });\n });\n\n describe('Upload Logs metric tests', () => {\n beforeAll(() => metricManager.setDeviceInfo(mockDeviceInfo));\n\n it('submit upload logs success metric includes broadworksCorrelationInfo', () => {\n const trackingId = 'track-123';\n const feedbackId = 'feed-456';\n const correlationId = 'corr-789';\n const callId = 'call-123';\n const broadworksCorrelationInfo = 'bw-corr-abc';\n\n const expectedData = {\n tags: {\n action: UPLOAD_LOGS_ACTION,\n device_id: mockDeviceInfo.device.deviceId,\n service_indicator: ServiceIndicator.CALLING,\n },\n fields: {\n device_url: mockDeviceInfo.device.clientDeviceUri,\n mobius_url: mockDeviceInfo.device.uri,\n calling_sdk_version: MOCK_VERSION_NUMBER,\n correlation_id: correlationId,\n broadworksCorrelationInfo,\n tracking_id: trackingId,\n feedback_id: feedbackId,\n call_id: callId,\n },\n type: METRIC_TYPE.BEHAVIORAL,\n };\n\n metricManager.submitUploadLogsMetric(\n METRIC_EVENT.UPLOAD_LOGS_SUCCESS,\n UPLOAD_LOGS_ACTION,\n METRIC_TYPE.BEHAVIORAL,\n trackingId,\n feedbackId,\n correlationId,\n undefined,\n callId,\n broadworksCorrelationInfo\n );\n\n expect(submitClientMetricSpy).toBeCalledOnceWith(\n METRIC_EVENT.UPLOAD_LOGS_SUCCESS,\n expectedData\n );\n });\n\n it('submit upload logs failure metric includes error and broadworksCorrelationInfo', () => {\n const feedbackId = 'feed-456';\n const correlationId = 'corr-789';\n const callId = 'call-123';\n const broadworksCorrelationInfo = 'bw-corr-abc';\n const errorStack = 'some error stack';\n\n const expectedData = {\n tags: {\n action: UPLOAD_LOGS_ACTION,\n device_id: mockDeviceInfo.device.deviceId,\n service_indicator: ServiceIndicator.CALLING,\n },\n fields: {\n device_url: mockDeviceInfo.device.clientDeviceUri,\n mobius_url: mockDeviceInfo.device.uri,\n calling_sdk_version: MOCK_VERSION_NUMBER,\n correlation_id: correlationId,\n broadworksCorrelationInfo,\n tracking_id: undefined,\n feedback_id: feedbackId,\n call_id: callId,\n error: errorStack,\n },\n type: METRIC_TYPE.BEHAVIORAL,\n };\n\n metricManager.submitUploadLogsMetric(\n METRIC_EVENT.UPLOAD_LOGS_FAILED,\n UPLOAD_LOGS_ACTION,\n METRIC_TYPE.BEHAVIORAL,\n undefined,\n feedbackId,\n correlationId,\n errorStack,\n callId,\n broadworksCorrelationInfo\n );\n\n expect(submitClientMetricSpy).toBeCalledOnceWith(\n METRIC_EVENT.UPLOAD_LOGS_FAILED,\n expectedData\n );\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
|