@webex/calling 3.4.0 → 3.5.0-next.2
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/CallHistory/CallHistory.js +103 -4
- package/dist/CallHistory/CallHistory.js.map +1 -1
- package/dist/CallHistory/CallHistory.test.js +143 -0
- package/dist/CallHistory/CallHistory.test.js.map +1 -1
- package/dist/CallHistory/callHistoryFixtures.js +224 -1
- package/dist/CallHistory/callHistoryFixtures.js.map +1 -1
- package/dist/CallHistory/constants.js +8 -2
- package/dist/CallHistory/constants.js.map +1 -1
- package/dist/CallHistory/types.js.map +1 -1
- package/dist/CallSettings/UcmBackendConnector.js +1 -1
- package/dist/CallSettings/UcmBackendConnector.js.map +1 -1
- package/dist/CallSettings/UcmBackendConnector.test.js +1 -1
- package/dist/CallSettings/UcmBackendConnector.test.js.map +1 -1
- package/dist/CallSettings/constants.js +1 -3
- package/dist/CallSettings/constants.js.map +1 -1
- package/dist/CallingClient/CallingClient.js +11 -2
- package/dist/CallingClient/CallingClient.js.map +1 -1
- package/dist/CallingClient/CallingClient.test.js +249 -193
- package/dist/CallingClient/CallingClient.test.js.map +1 -1
- package/dist/CallingClient/calling/call.js +81 -0
- package/dist/CallingClient/calling/call.js.map +1 -1
- package/dist/CallingClient/calling/call.test.js +332 -217
- package/dist/CallingClient/calling/call.test.js.map +1 -1
- package/dist/CallingClient/constants.js +2 -1
- package/dist/CallingClient/constants.js.map +1 -1
- package/dist/CallingClient/registration/register.js +18 -13
- package/dist/CallingClient/registration/register.js.map +1 -1
- package/dist/CallingClient/registration/register.test.js +242 -125
- package/dist/CallingClient/registration/register.test.js.map +1 -1
- package/dist/Contacts/ContactsClient.js +39 -27
- package/dist/Contacts/ContactsClient.js.map +1 -1
- package/dist/Contacts/ContactsClient.test.js +64 -1
- package/dist/Contacts/ContactsClient.test.js.map +1 -1
- package/dist/Contacts/contactFixtures.js +26 -3
- package/dist/Contacts/contactFixtures.js.map +1 -1
- package/dist/Contacts/types.js.map +1 -1
- package/dist/Events/types.js.map +1 -1
- package/dist/Metrics/index.js +2 -2
- package/dist/Metrics/index.js.map +1 -1
- package/dist/common/Utils.js +10 -8
- package/dist/common/Utils.js.map +1 -1
- package/dist/common/Utils.test.js +25 -1
- package/dist/common/Utils.test.js.map +1 -1
- package/dist/common/constants.js +5 -1
- package/dist/common/constants.js.map +1 -1
- package/dist/common/testUtil.js +23 -1
- package/dist/common/testUtil.js.map +1 -1
- package/dist/common/types.js.map +1 -1
- package/dist/module/CallHistory/CallHistory.js +57 -3
- package/dist/module/CallHistory/callHistoryFixtures.js +215 -0
- package/dist/module/CallHistory/constants.js +7 -1
- package/dist/module/CallSettings/UcmBackendConnector.js +5 -3
- package/dist/module/CallSettings/constants.js +0 -2
- package/dist/module/CallingClient/CallingClient.js +13 -2
- package/dist/module/CallingClient/calling/call.js +50 -0
- package/dist/module/CallingClient/constants.js +1 -0
- package/dist/module/CallingClient/registration/register.js +12 -6
- package/dist/module/Contacts/ContactsClient.js +28 -17
- package/dist/module/Contacts/contactFixtures.js +25 -2
- package/dist/module/Metrics/index.js +6 -2
- package/dist/module/common/Utils.js +7 -5
- package/dist/module/common/constants.js +4 -0
- package/dist/module/common/testUtil.js +24 -0
- package/dist/types/CallHistory/CallHistory.d.ts +1 -0
- package/dist/types/CallHistory/CallHistory.d.ts.map +1 -1
- package/dist/types/CallHistory/callHistoryFixtures.d.ts +98 -1
- package/dist/types/CallHistory/callHistoryFixtures.d.ts.map +1 -1
- package/dist/types/CallHistory/constants.d.ts +7 -1
- package/dist/types/CallHistory/constants.d.ts.map +1 -1
- package/dist/types/CallHistory/types.d.ts +9 -1
- package/dist/types/CallHistory/types.d.ts.map +1 -1
- package/dist/types/CallSettings/UcmBackendConnector.d.ts.map +1 -1
- package/dist/types/CallSettings/constants.d.ts +0 -2
- package/dist/types/CallSettings/constants.d.ts.map +1 -1
- package/dist/types/CallingClient/CallingClient.d.ts.map +1 -1
- package/dist/types/CallingClient/calling/call.d.ts +1 -0
- package/dist/types/CallingClient/calling/call.d.ts.map +1 -1
- package/dist/types/CallingClient/constants.d.ts +1 -0
- package/dist/types/CallingClient/constants.d.ts.map +1 -1
- package/dist/types/CallingClient/registration/register.d.ts +1 -0
- package/dist/types/CallingClient/registration/register.d.ts.map +1 -1
- package/dist/types/Contacts/ContactsClient.d.ts +1 -1
- package/dist/types/Contacts/ContactsClient.d.ts.map +1 -1
- package/dist/types/Contacts/contactFixtures.d.ts +28 -0
- package/dist/types/Contacts/contactFixtures.d.ts.map +1 -1
- package/dist/types/Contacts/types.d.ts +3 -3
- package/dist/types/Contacts/types.d.ts.map +1 -1
- package/dist/types/Events/types.d.ts +15 -0
- package/dist/types/Events/types.d.ts.map +1 -1
- package/dist/types/Metrics/index.d.ts.map +1 -1
- package/dist/types/Voicemail/UcmBackendConnector.d.ts +1 -1
- package/dist/types/Voicemail/WxCallBackendConnector.d.ts +1 -1
- package/dist/types/common/Utils.d.ts +2 -2
- package/dist/types/common/Utils.d.ts.map +1 -1
- package/dist/types/common/constants.d.ts +4 -0
- package/dist/types/common/constants.d.ts.map +1 -1
- package/dist/types/common/testUtil.d.ts +20 -0
- package/dist/types/common/testUtil.d.ts.map +1 -1
- package/dist/types/common/types.d.ts +12 -12
- package/dist/types/common/types.d.ts.map +1 -1
- package/package.json +3 -3
|
@@ -131,6 +131,11 @@ var CallHistory = exports.CallHistory = /*#__PURE__*/function (_Eventing) {
|
|
|
131
131
|
sortParam,
|
|
132
132
|
url,
|
|
133
133
|
janusResponse,
|
|
134
|
+
callingBackend,
|
|
135
|
+
hasCucmDN,
|
|
136
|
+
_ucmLinesResponse$dat,
|
|
137
|
+
ucmLinesResponse,
|
|
138
|
+
ucmLinesData,
|
|
134
139
|
responseDetails,
|
|
135
140
|
errorInfo,
|
|
136
141
|
errorStatus,
|
|
@@ -177,6 +182,45 @@ var CallHistory = exports.CallHistory = /*#__PURE__*/function (_Eventing) {
|
|
|
177
182
|
});
|
|
178
183
|
}
|
|
179
184
|
}
|
|
185
|
+
// Check the calling backend
|
|
186
|
+
callingBackend = (0, _Utils.getCallingBackEnd)(this.webex);
|
|
187
|
+
if (!(callingBackend === _types.CALLING_BACKEND.UCM)) {
|
|
188
|
+
_context3.next = 29;
|
|
189
|
+
break;
|
|
190
|
+
}
|
|
191
|
+
if (!(this.userSessions[_constants2.USER_SESSIONS] && this.userSessions[_constants2.USER_SESSIONS].length > 0)) {
|
|
192
|
+
_context3.next = 29;
|
|
193
|
+
break;
|
|
194
|
+
}
|
|
195
|
+
// Check if cucmDN exists and is valid in any of the userSessions
|
|
196
|
+
hasCucmDN = this.userSessions[_constants2.USER_SESSIONS].some(function (session) {
|
|
197
|
+
return session.self.cucmDN && session.self.cucmDN.length > 0;
|
|
198
|
+
}); // If any user session has cucmDN, proceed to fetch line data
|
|
199
|
+
if (!hasCucmDN) {
|
|
200
|
+
_context3.next = 29;
|
|
201
|
+
break;
|
|
202
|
+
}
|
|
203
|
+
_context3.next = 27;
|
|
204
|
+
return this.fetchUCMLinesData();
|
|
205
|
+
case 27:
|
|
206
|
+
ucmLinesResponse = _context3.sent;
|
|
207
|
+
// Check if the Lines API response was successful
|
|
208
|
+
if (ucmLinesResponse.statusCode === 200 && (_ucmLinesResponse$dat = ucmLinesResponse.data.lines) !== null && _ucmLinesResponse$dat !== void 0 && _ucmLinesResponse$dat.devices) {
|
|
209
|
+
ucmLinesData = ucmLinesResponse.data.lines.devices; // Iterate over user sessions and match with Lines data
|
|
210
|
+
this.userSessions[_constants2.USER_SESSIONS].forEach(function (session) {
|
|
211
|
+
var cucmDN = session.self.cucmDN;
|
|
212
|
+
if (cucmDN) {
|
|
213
|
+
ucmLinesData.forEach(function (device) {
|
|
214
|
+
device.lines.forEach(function (line) {
|
|
215
|
+
if (line.dnorpattern === cucmDN) {
|
|
216
|
+
session.self.ucmLineNumber = line.index; // Assign the ucmLineNumber
|
|
217
|
+
}
|
|
218
|
+
});
|
|
219
|
+
});
|
|
220
|
+
}
|
|
221
|
+
});
|
|
222
|
+
}
|
|
223
|
+
case 29:
|
|
180
224
|
responseDetails = {
|
|
181
225
|
statusCode: this.userSessions[_constants2.STATUS_CODE],
|
|
182
226
|
data: {
|
|
@@ -185,17 +229,17 @@ var CallHistory = exports.CallHistory = /*#__PURE__*/function (_Eventing) {
|
|
|
185
229
|
message: _constants2.SUCCESS_MESSAGE
|
|
186
230
|
};
|
|
187
231
|
return _context3.abrupt("return", responseDetails);
|
|
188
|
-
case
|
|
189
|
-
_context3.prev =
|
|
232
|
+
case 33:
|
|
233
|
+
_context3.prev = 33;
|
|
190
234
|
_context3.t0 = _context3["catch"](14);
|
|
191
235
|
errorInfo = _context3.t0;
|
|
192
236
|
errorStatus = (0, _Utils.serviceErrorCodeHandler)(errorInfo, this.loggerContext);
|
|
193
237
|
return _context3.abrupt("return", errorStatus);
|
|
194
|
-
case
|
|
238
|
+
case 38:
|
|
195
239
|
case "end":
|
|
196
240
|
return _context3.stop();
|
|
197
241
|
}
|
|
198
|
-
}, _callee3, this, [[14,
|
|
242
|
+
}, _callee3, this, [[14, 33]]);
|
|
199
243
|
}));
|
|
200
244
|
function getCallHistoryData() {
|
|
201
245
|
return _getCallHistoryData.apply(this, arguments);
|
|
@@ -288,6 +332,61 @@ var CallHistory = exports.CallHistory = /*#__PURE__*/function (_Eventing) {
|
|
|
288
332
|
return _updateMissedCalls.apply(this, arguments);
|
|
289
333
|
}
|
|
290
334
|
return updateMissedCalls;
|
|
335
|
+
}()
|
|
336
|
+
/**
|
|
337
|
+
* Function to display the UCM Lines API response.
|
|
338
|
+
* @returns {Promise} Resolves to an object of type {@link UCMLinesResponse}.Response details with success or error status.
|
|
339
|
+
*/
|
|
340
|
+
)
|
|
341
|
+
}, {
|
|
342
|
+
key: "fetchUCMLinesData",
|
|
343
|
+
value: (function () {
|
|
344
|
+
var _fetchUCMLinesData = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5() {
|
|
345
|
+
var loggerContext, vgEndpoint, userId, orgId, linesURIForUCM, response, ucmLineDetails, errorInfo, errorStatus;
|
|
346
|
+
return _regenerator.default.wrap(function _callee5$(_context5) {
|
|
347
|
+
while (1) switch (_context5.prev = _context5.next) {
|
|
348
|
+
case 0:
|
|
349
|
+
loggerContext = {
|
|
350
|
+
file: _constants.CALL_HISTORY_FILE,
|
|
351
|
+
method: 'fetchLinesData'
|
|
352
|
+
};
|
|
353
|
+
vgEndpoint = (0, _Utils.getVgActionEndpoint)(this.webex, _types.CALLING_BACKEND.UCM);
|
|
354
|
+
userId = this.webex.internal.device.userId;
|
|
355
|
+
orgId = this.webex.internal.device.orgId;
|
|
356
|
+
linesURIForUCM = "".concat(vgEndpoint, "/").concat(_constants.VERSION_1, "/").concat(_constants.UNIFIED_COMMUNICATIONS, "/").concat(_constants.CONFIG, "/").concat(_constants.PEOPLE, "/").concat(userId, "/").concat(_constants.LINES, "?").concat(_constants.ORG_ID, "=").concat(orgId);
|
|
357
|
+
_context5.prev = 5;
|
|
358
|
+
_context5.next = 8;
|
|
359
|
+
return this.webex.request({
|
|
360
|
+
uri: "".concat(linesURIForUCM),
|
|
361
|
+
method: _types.HTTP_METHODS.GET
|
|
362
|
+
});
|
|
363
|
+
case 8:
|
|
364
|
+
response = _context5.sent;
|
|
365
|
+
ucmLineDetails = {
|
|
366
|
+
statusCode: Number(response.statusCode),
|
|
367
|
+
data: {
|
|
368
|
+
lines: response.body
|
|
369
|
+
},
|
|
370
|
+
message: _constants2.SUCCESS_MESSAGE
|
|
371
|
+
};
|
|
372
|
+
_Logger.default.info("Line details fetched successfully", loggerContext);
|
|
373
|
+
return _context5.abrupt("return", ucmLineDetails);
|
|
374
|
+
case 14:
|
|
375
|
+
_context5.prev = 14;
|
|
376
|
+
_context5.t0 = _context5["catch"](5);
|
|
377
|
+
errorInfo = _context5.t0;
|
|
378
|
+
errorStatus = (0, _Utils.serviceErrorCodeHandler)(errorInfo, loggerContext);
|
|
379
|
+
return _context5.abrupt("return", errorStatus);
|
|
380
|
+
case 19:
|
|
381
|
+
case "end":
|
|
382
|
+
return _context5.stop();
|
|
383
|
+
}
|
|
384
|
+
}, _callee5, this, [[5, 14]]);
|
|
385
|
+
}));
|
|
386
|
+
function fetchUCMLinesData() {
|
|
387
|
+
return _fetchUCMLinesData.apply(this, arguments);
|
|
388
|
+
}
|
|
389
|
+
return fetchUCMLinesData;
|
|
291
390
|
}())
|
|
292
391
|
}, {
|
|
293
392
|
key: "registerSessionsListener",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_SDKConnector","_interopRequireDefault","require","_types","_Logger","_Utils","_constants","_constants2","_types2","_impl","ownKeys","e","r","t","_Object$keys","_Object$getOwnPropertySymbols","o","filter","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","Object","forEach","_defineProperty2","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","result","NewTarget","constructor","_Reflect$construct","_possibleConstructorReturn2","Reflect","sham","Proxy","Boolean","prototype","valueOf","call","CallHistory","exports","_Eventing","_inherits2","_super","webex","logger","_this","_classCallCheck2","_assertThisInitialized2","file","CALL_HISTORY_FILE","method","_ref","_asyncToGenerator2","_regenerator","mark","_callee","event","wrap","_callee$","_context","prev","next","data","userSessions","emit","COMMON_EVENT_KEYS","CALL_HISTORY_USER_SESSION_INFO","stop","_x","_ref2","_callee2","_callee2$","_context2","userReadSessions","CALL_HISTORY_USER_VIEWED_SESSIONS","_x2","sdkConnector","SDKConnector","getWebex","setWebex","janusUrl","internal","services","_serviceUrls","janus","registerSessionsListener","log","setLogger","level","_createClass2","key","value","_getCallHistoryData","_callee3","days","limit","sort","sortBy","date","sortByParam","sortParam","url","janusResponse","responseDetails","errorInfo","errorStatus","_args3","_callee3$","_context3","undefined","NUMBER_OF_DAYS","LIMIT","SORT","DEFAULT","SORT_BY","Date","setDate","getDate","fromDate","toISOString","_values","includes","concat","loggerContext","info","HISTORY","USER_SESSIONS","FROM_DATE","request","uri","HTTP_METHODS","GET","service","ALLOWED_SERVICES","JANUS","sent","body","START_TIME","DESC","element","compareElement","getTime","ASC","statusCode","STATUS_CODE","message","SUCCESS_MESSAGE","abrupt","t0","serviceErrorCodeHandler","getCallHistoryData","_updateMissedCalls","_callee4","endTimeSessionIds","santizedSessionIds","requestBody","updateMissedCallContentUrl","response","_callee4$","_context4","map","session","endTime","UPDATE_MISSED_CALLS_ENDPOINT","fetch","t1","t2","POST","t3","t4","CONTENT_TYPE","APPLICATION_JSON","credentials","getUserToken","t5","t6","t7","_stringify","t8","headers","ok","Error","status","json","readStatusMessage","SET_READ_STATE_SUCCESS_MESSAGE","t9","Number","updateMissedCalls","_x3","registerListener","MOBIUS_EVENT_KEYS","CALL_SESSION_EVENT_INCLUSIVE","handleSessionEvents","CALL_SESSION_EVENT_LEGACY","CALL_SESSION_EVENT_VIEWED","handleUserReadSessionEvents","Eventing","createCallHistoryClient"],"sources":["CallHistory.ts"],"sourcesContent":["/* eslint-disable dot-notation */\n/* eslint-disable no-underscore-dangle */\nimport SDKConnector from '../SDKConnector';\nimport {ISDKConnector, WebexSDK} from '../SDKConnector/types';\nimport {ALLOWED_SERVICES, HTTP_METHODS, WebexRequestPayload, SORT, SORT_BY} from '../common/types';\nimport {\n ICallHistory,\n JanusResponseEvent,\n LoggerInterface,\n UpdateMissedCallsResponse,\n} from './types';\nimport log from '../Logger';\nimport {serviceErrorCodeHandler} from '../common/Utils';\nimport {\n APPLICATION_JSON,\n CALL_HISTORY_FILE,\n CONTENT_TYPE,\n FROM_DATE,\n HISTORY,\n LIMIT,\n NUMBER_OF_DAYS,\n UPDATE_MISSED_CALLS_ENDPOINT,\n SET_READ_STATE_SUCCESS_MESSAGE,\n} from './constants';\nimport {STATUS_CODE, SUCCESS_MESSAGE, USER_SESSIONS} from '../common/constants';\nimport {\n COMMON_EVENT_KEYS,\n CallHistoryEventTypes,\n CallSessionEvent,\n MOBIUS_EVENT_KEYS,\n UserSession,\n EndTimeSessionId,\n CallSessionViewedEvent,\n SanitizedEndTimeAndSessionId,\n} from '../Events/types';\nimport {Eventing} from '../Events/impl';\n/**\n * `CallHistory` module is designed to facilitate the retrieval of Call History Records by providing a set of APIs.\n *\n * This code snippet demonstrates how to create an instance of `CallHistory` using webex and logger.\n *\n * @example\n * ```javascript\n * const callHistory = createCallHistoryClient(webex, logger);\n * ```\n */\nexport class CallHistory extends Eventing<CallHistoryEventTypes> implements ICallHistory {\n private sdkConnector: ISDKConnector;\n\n private webex: WebexSDK;\n\n private janusUrl = '';\n\n private fromDate = '';\n\n private loggerContext = {\n file: CALL_HISTORY_FILE,\n method: 'getCallHistoryData',\n };\n\n private userSessions: UserSession[] | undefined;\n\n /**\n * @ignore\n */\n constructor(webex: WebexSDK, logger: LoggerInterface) {\n super();\n this.sdkConnector = SDKConnector;\n if (!this.sdkConnector.getWebex()) {\n SDKConnector.setWebex(webex);\n }\n this.webex = this.sdkConnector.getWebex();\n this.janusUrl = this.webex.internal.services._serviceUrls.janus;\n this.registerSessionsListener();\n log.setLogger(logger.level, CALL_HISTORY_FILE);\n }\n\n /**\n * Function to display the Janus API response.\n * @param days - Number of days to fetch the call history data.\n * @param limit - Number of records to be fetched.\n * @param sort - Sort the records in ascending or descending order.\n * @param sortBy - Sort the records by start time or end time.\n */\n public async getCallHistoryData(\n days: number = NUMBER_OF_DAYS,\n limit: number = LIMIT,\n sort: SORT = SORT.DEFAULT,\n sortBy: SORT_BY = SORT_BY.DEFAULT\n ): Promise<JanusResponseEvent> {\n /*\n 1. Mandatory field for Janus API - fromDate\n 2. Calculating the fromDate by deducting the NUMBER_OF_DAYS with the current date\n */\n const date = new Date();\n\n date.setDate(date.getDate() - days);\n this.fromDate = date.toISOString();\n const sortByParam = Object.values(SORT_BY).includes(sortBy) ? sortBy : SORT_BY.DEFAULT;\n const sortParam = Object.values(SORT).includes(sort) ? sort : SORT.DEFAULT;\n\n log.log(`Janus API URL ${this.janusUrl}`, this.loggerContext);\n log.info(`Call history from date : ${this.fromDate}`, this.loggerContext);\n log.info(`Call history sort type : ${sortParam}`, this.loggerContext);\n log.info(`Call history sortby type : ${sortByParam}`, this.loggerContext);\n const url = `${this.janusUrl}/${HISTORY}/${USER_SESSIONS}${FROM_DATE}=${this.fromDate}&limit=${limit}&includeNewSessionTypes=true&sort=${sortParam}`;\n\n try {\n const janusResponse = <WebexRequestPayload>await this.webex.request({\n uri: `${url}`,\n method: HTTP_METHODS.GET,\n service: ALLOWED_SERVICES.JANUS,\n });\n\n this.userSessions = janusResponse.body as UserSession[];\n if (sortByParam === SORT_BY.START_TIME) {\n if (sortParam === SORT.DESC) {\n this.userSessions[USER_SESSIONS].sort(\n (element: Date, compareElement: Date) =>\n new Date(compareElement[sortByParam]).getTime() -\n new Date(element[sortByParam]).getTime()\n );\n } else if (sortParam === SORT.ASC) {\n this.userSessions[USER_SESSIONS].sort(\n (element: Date, compareElement: Date) =>\n new Date(element[sortByParam]).getTime() -\n new Date(compareElement[sortByParam]).getTime()\n );\n }\n }\n const responseDetails = {\n statusCode: this.userSessions[STATUS_CODE],\n data: {\n userSessions: this.userSessions[USER_SESSIONS],\n },\n message: SUCCESS_MESSAGE,\n };\n\n return responseDetails;\n } catch (err: unknown) {\n const errorInfo = err as WebexRequestPayload;\n const errorStatus = serviceErrorCodeHandler(errorInfo, this.loggerContext);\n\n return errorStatus;\n }\n }\n\n /**\n * Function to update the missed call status in the call history using sessionId and time.\n * @param endTimeSessionIds - An array of objects containing endTime and sessionId of the missed call history records\n * @returns {Promise} Resolves to an object of type {@link UpdateMissedCallsResponse}.Response details with success or error status.\n */\n public async updateMissedCalls(\n endTimeSessionIds: EndTimeSessionId[]\n ): Promise<UpdateMissedCallsResponse> {\n const loggerContext = {\n file: CALL_HISTORY_FILE,\n method: 'updateMissedCalls',\n };\n // Convert endTime to milliseconds for each session\n const santizedSessionIds: SanitizedEndTimeAndSessionId[] = endTimeSessionIds.map((session) => ({\n ...session,\n endTime: new Date(session.endTime).getTime(),\n }));\n const requestBody = {\n endTimeSessionIds: santizedSessionIds,\n };\n try {\n const updateMissedCallContentUrl = `${this.janusUrl}/${HISTORY}/${USER_SESSIONS}/${UPDATE_MISSED_CALLS_ENDPOINT}`;\n // Make a POST request to update missed calls\n const response = await fetch(updateMissedCallContentUrl, {\n method: HTTP_METHODS.POST,\n headers: {\n [CONTENT_TYPE]: APPLICATION_JSON,\n Authorization: await this.webex.credentials.getUserToken(),\n },\n body: JSON.stringify(requestBody),\n });\n if (!response.ok) {\n throw new Error(`${response.status}`);\n }\n\n const data: UpdateMissedCallsResponse = await response.json();\n log.info(`Missed calls are succesfully read by the user`, loggerContext);\n const responseDetails: UpdateMissedCallsResponse = {\n statusCode: data.statusCode as number,\n data: {\n readStatusMessage: SET_READ_STATE_SUCCESS_MESSAGE,\n },\n message: SUCCESS_MESSAGE,\n };\n\n return responseDetails;\n } catch (err: unknown) {\n // Catch the 401 error from try block, return the error object to user\n const errorInfo = {\n statusCode: err instanceof Error ? Number(err.message) : '',\n } as WebexRequestPayload;\n const errorStatus = serviceErrorCodeHandler(errorInfo, loggerContext);\n\n return errorStatus;\n }\n }\n\n handleSessionEvents = async (event?: CallSessionEvent) => {\n if (event && event.data.userSessions.userSessions) {\n this.emit(COMMON_EVENT_KEYS.CALL_HISTORY_USER_SESSION_INFO, event as CallSessionEvent);\n }\n };\n\n handleUserReadSessionEvents = async (event?: CallSessionViewedEvent) => {\n if (event && event.data.userReadSessions.userReadSessions) {\n this.emit(\n COMMON_EVENT_KEYS.CALL_HISTORY_USER_VIEWED_SESSIONS,\n event as CallSessionViewedEvent\n );\n }\n };\n\n /**\n *\n */\n private registerSessionsListener() {\n this.sdkConnector.registerListener<CallSessionEvent>(\n MOBIUS_EVENT_KEYS.CALL_SESSION_EVENT_INCLUSIVE,\n this.handleSessionEvents\n );\n this.sdkConnector.registerListener<CallSessionEvent>(\n MOBIUS_EVENT_KEYS.CALL_SESSION_EVENT_LEGACY,\n this.handleSessionEvents\n );\n this.sdkConnector.registerListener<CallSessionViewedEvent>(\n MOBIUS_EVENT_KEYS.CALL_SESSION_EVENT_VIEWED,\n this.handleUserReadSessionEvents\n );\n }\n}\n/**\n * Creates a `CallHistory` client instance for accessing Call History APIs.\n *\n * @param {WebexSDK} webex - `Webex SDK` instance.\n * @param {LoggerInterface} logger - An instance implementing LoggerInterface used to set the log level for the module.\n */\nexport const createCallHistoryClient = (webex: WebexSDK, logger: LoggerInterface): ICallHistory =>\n new CallHistory(webex, logger);\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAEA,IAAAA,aAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,MAAA,GAAAD,OAAA;AAOA,IAAAE,OAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,MAAA,GAAAH,OAAA;AACA,IAAAI,UAAA,GAAAJ,OAAA;AAWA,IAAAK,WAAA,GAAAL,OAAA;AACA,IAAAM,OAAA,GAAAN,OAAA;AAUA,IAAAO,KAAA,GAAAP,OAAA;AAAwC,SAAAQ,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;AAAA,SAAAqB,aAAAC,OAAA,QAAAC,yBAAA,GAAAC,yBAAA,oBAAAC,qBAAA,QAAAC,KAAA,OAAAC,gBAAA,CAAAV,OAAA,EAAAK,OAAA,GAAAM,MAAA,MAAAL,yBAAA,QAAAM,SAAA,OAAAF,gBAAA,CAAAV,OAAA,QAAAa,WAAA,EAAAF,MAAA,GAAAG,kBAAA,CAAAL,KAAA,EAAAd,SAAA,EAAAiB,SAAA,YAAAD,MAAA,GAAAF,KAAA,CAAAhB,KAAA,OAAAE,SAAA,gBAAAoB,2BAAA,CAAAf,OAAA,QAAAW,MAAA;AAAA,SAAAJ,0BAAA,eAAAS,OAAA,qBAAAF,kBAAA,oBAAAA,kBAAA,CAAAG,IAAA,2BAAAC,KAAA,oCAAAC,OAAA,CAAAC,SAAA,CAAAC,OAAA,CAAAC,IAAA,CAAAR,kBAAA,CAAAK,OAAA,8CAAApC,CAAA,sBAnCxC,kCACA;AAmCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AATA,IAUawC,WAAW,GAAAC,OAAA,CAAAD,WAAA,0BAAAE,SAAA;EAAA,IAAAC,UAAA,CAAA1B,OAAA,EAAAuB,WAAA,EAAAE,SAAA;EAAA,IAAAE,MAAA,GAAAvB,YAAA,CAAAmB,WAAA;EAgBtB;AACF;AACA;EACE,SAAAA,YAAYK,KAAe,EAAEC,MAAuB,EAAE;IAAA,IAAAC,KAAA;IAAA,IAAAC,gBAAA,CAAA/B,OAAA,QAAAuB,WAAA;IACpDO,KAAA,GAAAH,MAAA,CAAAL,IAAA;IAAQ,IAAAvB,gBAAA,CAAAC,OAAA,MAAAgC,uBAAA,CAAAhC,OAAA,EAAA8B,KAAA;IAAA,IAAA/B,gBAAA,CAAAC,OAAA,MAAAgC,uBAAA,CAAAhC,OAAA,EAAA8B,KAAA;IAAA,IAAA/B,gBAAA,CAAAC,OAAA,MAAAgC,uBAAA,CAAAhC,OAAA,EAAA8B,KAAA,eAfS,EAAE;IAAA,IAAA/B,gBAAA,CAAAC,OAAA,MAAAgC,uBAAA,CAAAhC,OAAA,EAAA8B,KAAA,eAEF,EAAE;IAAA,IAAA/B,gBAAA,CAAAC,OAAA,MAAAgC,uBAAA,CAAAhC,OAAA,EAAA8B,KAAA,oBAEG;MACtBG,IAAI,EAAEC,4BAAiB;MACvBC,MAAM,EAAE;IACV,CAAC;IAAA,IAAApC,gBAAA,CAAAC,OAAA,MAAAgC,uBAAA,CAAAhC,OAAA,EAAA8B,KAAA;IAAA,IAAA/B,gBAAA,CAAAC,OAAA,MAAAgC,uBAAA,CAAAhC,OAAA,EAAA8B,KAAA;MAAA,IAAAM,IAAA,OAAAC,kBAAA,CAAArC,OAAA,gBAAAsC,YAAA,CAAAtC,OAAA,CAAAuC,IAAA,CAkJqB,SAAAC,QAAOC,KAAwB;QAAA,OAAAH,YAAA,CAAAtC,OAAA,CAAA0C,IAAA,UAAAC,SAAAC,QAAA;UAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;YAAA;cACnD,IAAIL,KAAK,IAAIA,KAAK,CAACM,IAAI,CAACC,YAAY,CAACA,YAAY,EAAE;gBACjDlB,KAAA,CAAKmB,IAAI,CAACC,yBAAiB,CAACC,8BAA8B,EAAEV,KAAyB,CAAC;cACxF;YAAC;YAAA;cAAA,OAAAG,QAAA,CAAAQ,IAAA;UAAA;QAAA,GAAAZ,OAAA;MAAA,CACF;MAAA,iBAAAa,EAAA;QAAA,OAAAjB,IAAA,CAAA3C,KAAA,OAAAE,SAAA;MAAA;IAAA;IAAA,IAAAI,gBAAA,CAAAC,OAAA,MAAAgC,uBAAA,CAAAhC,OAAA,EAAA8B,KAAA;MAAA,IAAAwB,KAAA,OAAAjB,kBAAA,CAAArC,OAAA,gBAAAsC,YAAA,CAAAtC,OAAA,CAAAuC,IAAA,CAE6B,SAAAgB,SAAOd,KAA8B;QAAA,OAAAH,YAAA,CAAAtC,OAAA,CAAA0C,IAAA,UAAAc,UAAAC,SAAA;UAAA,kBAAAA,SAAA,CAAAZ,IAAA,GAAAY,SAAA,CAAAX,IAAA;YAAA;cACjE,IAAIL,KAAK,IAAIA,KAAK,CAACM,IAAI,CAACW,gBAAgB,CAACA,gBAAgB,EAAE;gBACzD5B,KAAA,CAAKmB,IAAI,CACPC,yBAAiB,CAACS,iCAAiC,EACnDlB,KACF,CAAC;cACH;YAAC;YAAA;cAAA,OAAAgB,SAAA,CAAAL,IAAA;UAAA;QAAA,GAAAG,QAAA;MAAA,CACF;MAAA,iBAAAK,GAAA;QAAA,OAAAN,KAAA,CAAA7D,KAAA,OAAAE,SAAA;MAAA;IAAA;IAtJCmC,KAAA,CAAK+B,YAAY,GAAGC,qBAAY;IAChC,IAAI,CAAChC,KAAA,CAAK+B,YAAY,CAACE,QAAQ,CAAC,CAAC,EAAE;MACjCD,qBAAY,CAACE,QAAQ,CAACpC,KAAK,CAAC;IAC9B;IACAE,KAAA,CAAKF,KAAK,GAAGE,KAAA,CAAK+B,YAAY,CAACE,QAAQ,CAAC,CAAC;IACzCjC,KAAA,CAAKmC,QAAQ,GAAGnC,KAAA,CAAKF,KAAK,CAACsC,QAAQ,CAACC,QAAQ,CAACC,YAAY,CAACC,KAAK;IAC/DvC,KAAA,CAAKwC,wBAAwB,CAAC,CAAC;IAC/BC,eAAG,CAACC,SAAS,CAAC3C,MAAM,CAAC4C,KAAK,EAAEvC,4BAAiB,CAAC;IAAC,OAAAJ,KAAA;EACjD;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE,IAAA4C,aAAA,CAAA1E,OAAA,EAAAuB,WAAA;IAAAoD,GAAA;IAAAC,KAAA;MAAA,IAAAC,mBAAA,OAAAxC,kBAAA,CAAArC,OAAA,gBAAAsC,YAAA,CAAAtC,OAAA,CAAAuC,IAAA,CAOA,SAAAuC,SAAA;QAAA,IAAAC,IAAA;UAAAC,KAAA;UAAAC,IAAA;UAAAC,MAAA;UAAAC,IAAA;UAAAC,WAAA;UAAAC,SAAA;UAAAC,GAAA;UAAAC,aAAA;UAAAC,eAAA;UAAAC,SAAA;UAAAC,WAAA;UAAAC,MAAA,GAAAhG,SAAA;QAAA,OAAA2C,YAAA,CAAAtC,OAAA,CAAA0C,IAAA,UAAAkD,UAAAC,SAAA;UAAA,kBAAAA,SAAA,CAAAhD,IAAA,GAAAgD,SAAA,CAAA/C,IAAA;YAAA;cACEiC,IAAY,GAAAY,MAAA,CAAA/F,MAAA,QAAA+F,MAAA,QAAAG,SAAA,GAAAH,MAAA,MAAGI,yBAAc;cAC7Bf,KAAa,GAAAW,MAAA,CAAA/F,MAAA,QAAA+F,MAAA,QAAAG,SAAA,GAAAH,MAAA,MAAGK,gBAAK;cACrBf,IAAU,GAAAU,MAAA,CAAA/F,MAAA,QAAA+F,MAAA,QAAAG,SAAA,GAAAH,MAAA,MAAGM,WAAI,CAACC,OAAO;cACzBhB,MAAe,GAAAS,MAAA,CAAA/F,MAAA,QAAA+F,MAAA,QAAAG,SAAA,GAAAH,MAAA,MAAGQ,cAAO,CAACD,OAAO;cAEjC;AACJ;AACA;AACA;cACUf,IAAI,GAAG,IAAIiB,IAAI,CAAC,CAAC;cAEvBjB,IAAI,CAACkB,OAAO,CAAClB,IAAI,CAACmB,OAAO,CAAC,CAAC,GAAGvB,IAAI,CAAC;cACnC,IAAI,CAACwB,QAAQ,GAAGpB,IAAI,CAACqB,WAAW,CAAC,CAAC;cAC5BpB,WAAW,GAAG,IAAAqB,OAAA,CAAAzG,OAAA,EAAcmG,cAAO,CAAC,CAACO,QAAQ,CAACxB,MAAM,CAAC,GAAGA,MAAM,GAAGiB,cAAO,CAACD,OAAO;cAChFb,SAAS,GAAG,IAAAoB,OAAA,CAAAzG,OAAA,EAAciG,WAAI,CAAC,CAACS,QAAQ,CAACzB,IAAI,CAAC,GAAGA,IAAI,GAAGgB,WAAI,CAACC,OAAO;cAE1E3B,eAAG,CAACA,GAAG,kBAAAoC,MAAA,CAAkB,IAAI,CAAC1C,QAAQ,GAAI,IAAI,CAAC2C,aAAa,CAAC;cAC7DrC,eAAG,CAACsC,IAAI,6BAAAF,MAAA,CAA6B,IAAI,CAACJ,QAAQ,GAAI,IAAI,CAACK,aAAa,CAAC;cACzErC,eAAG,CAACsC,IAAI,6BAAAF,MAAA,CAA6BtB,SAAS,GAAI,IAAI,CAACuB,aAAa,CAAC;cACrErC,eAAG,CAACsC,IAAI,+BAAAF,MAAA,CAA+BvB,WAAW,GAAI,IAAI,CAACwB,aAAa,CAAC;cACnEtB,GAAG,MAAAqB,MAAA,CAAM,IAAI,CAAC1C,QAAQ,OAAA0C,MAAA,CAAIG,kBAAO,OAAAH,MAAA,CAAII,yBAAa,EAAAJ,MAAA,CAAGK,oBAAS,OAAAL,MAAA,CAAI,IAAI,CAACJ,QAAQ,aAAAI,MAAA,CAAU3B,KAAK,wCAAA2B,MAAA,CAAqCtB,SAAS;cAAAQ,SAAA,CAAAhD,IAAA;cAAAgD,SAAA,CAAA/C,IAAA;cAAA,OAG/F,IAAI,CAAClB,KAAK,CAACqF,OAAO,CAAC;gBAClEC,GAAG,KAAAP,MAAA,CAAKrB,GAAG,CAAE;gBACbnD,MAAM,EAAEgF,mBAAY,CAACC,GAAG;gBACxBC,OAAO,EAAEC,uBAAgB,CAACC;cAC5B,CAAC,CAAC;YAAA;cAJIhC,aAAa,GAAAM,SAAA,CAAA2B,IAAA;cAMnB,IAAI,CAACxE,YAAY,GAAGuC,aAAa,CAACkC,IAAqB;cACvD,IAAIrC,WAAW,KAAKe,cAAO,CAACuB,UAAU,EAAE;gBACtC,IAAIrC,SAAS,KAAKY,WAAI,CAAC0B,IAAI,EAAE;kBAC3B,IAAI,CAAC3E,YAAY,CAAC+D,yBAAa,CAAC,CAAC9B,IAAI,CACnC,UAAC2C,OAAa,EAAEC,cAAoB;oBAAA,OAClC,IAAIzB,IAAI,CAACyB,cAAc,CAACzC,WAAW,CAAC,CAAC,CAAC0C,OAAO,CAAC,CAAC,GAC/C,IAAI1B,IAAI,CAACwB,OAAO,CAACxC,WAAW,CAAC,CAAC,CAAC0C,OAAO,CAAC,CAAC;kBAAA,CAC5C,CAAC;gBACH,CAAC,MAAM,IAAIzC,SAAS,KAAKY,WAAI,CAAC8B,GAAG,EAAE;kBACjC,IAAI,CAAC/E,YAAY,CAAC+D,yBAAa,CAAC,CAAC9B,IAAI,CACnC,UAAC2C,OAAa,EAAEC,cAAoB;oBAAA,OAClC,IAAIzB,IAAI,CAACwB,OAAO,CAACxC,WAAW,CAAC,CAAC,CAAC0C,OAAO,CAAC,CAAC,GACxC,IAAI1B,IAAI,CAACyB,cAAc,CAACzC,WAAW,CAAC,CAAC,CAAC0C,OAAO,CAAC,CAAC;kBAAA,CACnD,CAAC;gBACH;cACF;cACMtC,eAAe,GAAG;gBACtBwC,UAAU,EAAE,IAAI,CAAChF,YAAY,CAACiF,uBAAW,CAAC;gBAC1ClF,IAAI,EAAE;kBACJC,YAAY,EAAE,IAAI,CAACA,YAAY,CAAC+D,yBAAa;gBAC/C,CAAC;gBACDmB,OAAO,EAAEC;cACX,CAAC;cAAA,OAAAtC,SAAA,CAAAuC,MAAA,WAEM5C,eAAe;YAAA;cAAAK,SAAA,CAAAhD,IAAA;cAAAgD,SAAA,CAAAwC,EAAA,GAAAxC,SAAA;cAEhBJ,SAAS,GAAAI,SAAA,CAAAwC,EAAA;cACT3C,WAAW,GAAG,IAAA4C,8BAAuB,EAAC7C,SAAS,EAAE,IAAI,CAACmB,aAAa,CAAC;cAAA,OAAAf,SAAA,CAAAuC,MAAA,WAEnE1C,WAAW;YAAA;YAAA;cAAA,OAAAG,SAAA,CAAAzC,IAAA;UAAA;QAAA,GAAA0B,QAAA;MAAA,CAErB;MAAA,SAAAyD,mBAAA;QAAA,OAAA1D,mBAAA,CAAApF,KAAA,OAAAE,SAAA;MAAA;MAAA,OAAA4I,kBAAA;IAAA;IAED;AACF;AACA;AACA;AACA;IAJE;EAAA;IAAA5D,GAAA;IAAAC,KAAA;MAAA,IAAA4D,kBAAA,OAAAnG,kBAAA,CAAArC,OAAA,gBAAAsC,YAAA,CAAAtC,OAAA,CAAAuC,IAAA,CAKA,SAAAkG,SACEC,iBAAqC;QAAA,IAAA9B,aAAA,EAAA+B,kBAAA,EAAAC,WAAA,EAAAC,0BAAA,EAAAC,QAAA,EAAA/F,IAAA,EAAAyC,eAAA,EAAAC,SAAA,EAAAC,WAAA;QAAA,OAAApD,YAAA,CAAAtC,OAAA,CAAA0C,IAAA,UAAAqG,UAAAC,SAAA;UAAA,kBAAAA,SAAA,CAAAnG,IAAA,GAAAmG,SAAA,CAAAlG,IAAA;YAAA;cAE/B8D,aAAa,GAAG;gBACpB3E,IAAI,EAAEC,4BAAiB;gBACvBC,MAAM,EAAE;cACV,CAAC,EACD;cACMwG,kBAAkD,GAAGD,iBAAiB,CAACO,GAAG,CAAC,UAACC,OAAO;gBAAA,OAAAxJ,aAAA,CAAAA,aAAA,KACpFwJ,OAAO;kBACVC,OAAO,EAAE,IAAI/C,IAAI,CAAC8C,OAAO,CAACC,OAAO,CAAC,CAACrB,OAAO,CAAC;gBAAC;cAAA,CAC5C,CAAC;cACGc,WAAW,GAAG;gBAClBF,iBAAiB,EAAEC;cACrB,CAAC;cAAAK,SAAA,CAAAnG,IAAA;cAEOgG,0BAA0B,MAAAlC,MAAA,CAAM,IAAI,CAAC1C,QAAQ,OAAA0C,MAAA,CAAIG,kBAAO,OAAAH,MAAA,CAAII,yBAAa,OAAAJ,MAAA,CAAIyC,uCAA4B,GAC/G;cAAAJ,SAAA,CAAAX,EAAA,GACuBgB,KAAK;cAAAL,SAAA,CAAAM,EAAA,GAACT,0BAA0B;cAAAG,SAAA,CAAAO,EAAA,GAC7CpC,mBAAY,CAACqC,IAAI;cAAAR,SAAA,CAAAS,EAAA,GAAA1J,gBAAA,CAAAC,OAAA;cAAAgJ,SAAA,CAAAU,EAAA,OAAA3J,gBAAA,CAAAC,OAAA,MAEtB2J,uBAAY,EAAGC,2BAAgB;cAAAZ,SAAA,CAAAlG,IAAA;cAAA,OACX,IAAI,CAAClB,KAAK,CAACiI,WAAW,CAACC,YAAY,CAAC,CAAC;YAAA;cAAAd,SAAA,CAAAe,EAAA,GAAAf,SAAA,CAAAxB,IAAA;cAAAwB,SAAA,CAAAgB,EAAA,OAAAhB,SAAA,CAAAS,EAAA,EAAAT,SAAA,CAAAU,EAAA,mBAAAV,SAAA,CAAAe,EAAA;cAAAf,SAAA,CAAAiB,EAAA,GAEtD,IAAAC,UAAA,CAAAlK,OAAA,EAAe4I,WAAW,CAAC;cAAAI,SAAA,CAAAmB,EAAA;gBALjChI,MAAM,EAAA6G,SAAA,CAAAO,EAAA;gBACNa,OAAO,EAAApB,SAAA,CAAAgB,EAAA;gBAIPvC,IAAI,EAAAuB,SAAA,CAAAiB;cAAA;cAAAjB,SAAA,CAAAlG,IAAA;cAAA,WAAAkG,SAAA,CAAAX,EAAA,EAAAW,SAAA,CAAAM,EAAA,EAAAN,SAAA,CAAAmB,EAAA;YAAA;cANArB,QAAQ,GAAAE,SAAA,CAAAxB,IAAA;cAAA,IAQTsB,QAAQ,CAACuB,EAAE;gBAAArB,SAAA,CAAAlG,IAAA;gBAAA;cAAA;cAAA,MACR,IAAIwH,KAAK,IAAA3D,MAAA,CAAImC,QAAQ,CAACyB,MAAM,CAAE,CAAC;YAAA;cAAAvB,SAAA,CAAAlG,IAAA;cAAA,OAGOgG,QAAQ,CAAC0B,IAAI,CAAC,CAAC;YAAA;cAAvDzH,IAA+B,GAAAiG,SAAA,CAAAxB,IAAA;cACrCjD,eAAG,CAACsC,IAAI,kDAAkDD,aAAa,CAAC;cAClEpB,eAA0C,GAAG;gBACjDwC,UAAU,EAAEjF,IAAI,CAACiF,UAAoB;gBACrCjF,IAAI,EAAE;kBACJ0H,iBAAiB,EAAEC;gBACrB,CAAC;gBACDxC,OAAO,EAAEC;cACX,CAAC;cAAA,OAAAa,SAAA,CAAAZ,MAAA,WAEM5C,eAAe;YAAA;cAAAwD,SAAA,CAAAnG,IAAA;cAAAmG,SAAA,CAAA2B,EAAA,GAAA3B,SAAA;cAEtB;cACMvD,SAAS,GAAG;gBAChBuC,UAAU,EAAEgB,SAAA,CAAA2B,EAAA,YAAeL,KAAK,GAAGM,MAAM,CAAC5B,SAAA,CAAA2B,EAAA,CAAIzC,OAAO,CAAC,GAAG;cAC3D,CAAC;cACKxC,WAAW,GAAG,IAAA4C,8BAAuB,EAAC7C,SAAS,EAAEmB,aAAa,CAAC;cAAA,OAAAoC,SAAA,CAAAZ,MAAA,WAE9D1C,WAAW;YAAA;YAAA;cAAA,OAAAsD,SAAA,CAAA5F,IAAA;UAAA;QAAA,GAAAqF,QAAA;MAAA,CAErB;MAAA,SAAAoC,kBAAAC,GAAA;QAAA,OAAAtC,kBAAA,CAAA/I,KAAA,OAAAE,SAAA;MAAA;MAAA,OAAAkL,iBAAA;IAAA;EAAA;IAAAlG,GAAA;IAAAC,KAAA;IAiBD;AACF;AACA;IACE,SAAAN,yBAAA,EAAmC;MACjC,IAAI,CAACT,YAAY,CAACkH,gBAAgB,CAChCC,yBAAiB,CAACC,4BAA4B,EAC9C,IAAI,CAACC,mBACP,CAAC;MACD,IAAI,CAACrH,YAAY,CAACkH,gBAAgB,CAChCC,yBAAiB,CAACG,yBAAyB,EAC3C,IAAI,CAACD,mBACP,CAAC;MACD,IAAI,CAACrH,YAAY,CAACkH,gBAAgB,CAChCC,yBAAiB,CAACI,yBAAyB,EAC3C,IAAI,CAACC,2BACP,CAAC;IACH;EAAC;EAAA,OAAA9J,WAAA;AAAA,EA7L8B+J,cAAQ;AA+LzC;AACA;AACA;AACA;AACA;AACA;AACO,IAAMC,uBAAuB,GAAA/J,OAAA,CAAA+J,uBAAA,GAAG,SAA1BA,uBAAuBA,CAAI3J,KAAe,EAAEC,MAAuB;EAAA,OAC9E,IAAIN,WAAW,CAACK,KAAK,EAAEC,MAAM,CAAC;AAAA"}
|
|
1
|
+
{"version":3,"names":["_SDKConnector","_interopRequireDefault","require","_types","_Logger","_Utils","_constants","_constants2","_types2","_impl","ownKeys","e","r","t","_Object$keys","_Object$getOwnPropertySymbols","o","filter","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","Object","forEach","_defineProperty2","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","result","NewTarget","constructor","_Reflect$construct","_possibleConstructorReturn2","Reflect","sham","Proxy","Boolean","prototype","valueOf","call","CallHistory","exports","_Eventing","_inherits2","_super","webex","logger","_this","_classCallCheck2","_assertThisInitialized2","file","CALL_HISTORY_FILE","method","_ref","_asyncToGenerator2","_regenerator","mark","_callee","event","wrap","_callee$","_context","prev","next","data","userSessions","emit","COMMON_EVENT_KEYS","CALL_HISTORY_USER_SESSION_INFO","stop","_x","_ref2","_callee2","_callee2$","_context2","userReadSessions","CALL_HISTORY_USER_VIEWED_SESSIONS","_x2","sdkConnector","SDKConnector","getWebex","setWebex","janusUrl","internal","services","_serviceUrls","janus","registerSessionsListener","log","setLogger","level","_createClass2","key","value","_getCallHistoryData","_callee3","days","limit","sort","sortBy","date","sortByParam","sortParam","url","janusResponse","callingBackend","hasCucmDN","_ucmLinesResponse$dat","ucmLinesResponse","ucmLinesData","responseDetails","errorInfo","errorStatus","_args3","_callee3$","_context3","undefined","NUMBER_OF_DAYS","LIMIT","SORT","DEFAULT","SORT_BY","Date","setDate","getDate","fromDate","toISOString","_values","includes","concat","loggerContext","info","HISTORY","USER_SESSIONS","FROM_DATE","request","uri","HTTP_METHODS","GET","service","ALLOWED_SERVICES","JANUS","sent","body","START_TIME","DESC","element","compareElement","getTime","ASC","getCallingBackEnd","CALLING_BACKEND","UCM","some","session","self","cucmDN","fetchUCMLinesData","statusCode","lines","devices","device","line","dnorpattern","ucmLineNumber","index","STATUS_CODE","message","SUCCESS_MESSAGE","abrupt","t0","serviceErrorCodeHandler","getCallHistoryData","_updateMissedCalls","_callee4","endTimeSessionIds","santizedSessionIds","requestBody","updateMissedCallContentUrl","response","_callee4$","_context4","map","endTime","UPDATE_MISSED_CALLS_ENDPOINT","fetch","t1","t2","POST","t3","t4","CONTENT_TYPE","APPLICATION_JSON","credentials","getUserToken","t5","t6","t7","_stringify","t8","headers","ok","Error","status","json","readStatusMessage","SET_READ_STATE_SUCCESS_MESSAGE","t9","Number","updateMissedCalls","_x3","_fetchUCMLinesData","_callee5","vgEndpoint","userId","orgId","linesURIForUCM","ucmLineDetails","_callee5$","_context5","getVgActionEndpoint","VERSION_1","UNIFIED_COMMUNICATIONS","CONFIG","PEOPLE","LINES","ORG_ID","registerListener","MOBIUS_EVENT_KEYS","CALL_SESSION_EVENT_INCLUSIVE","handleSessionEvents","CALL_SESSION_EVENT_LEGACY","CALL_SESSION_EVENT_VIEWED","handleUserReadSessionEvents","Eventing","createCallHistoryClient"],"sources":["CallHistory.ts"],"sourcesContent":["/* eslint-disable dot-notation */\n/* eslint-disable no-underscore-dangle */\nimport SDKConnector from '../SDKConnector';\nimport {ISDKConnector, WebexSDK} from '../SDKConnector/types';\nimport {\n ALLOWED_SERVICES,\n HTTP_METHODS,\n WebexRequestPayload,\n SORT,\n SORT_BY,\n CALLING_BACKEND,\n} from '../common/types';\nimport {\n ICallHistory,\n JanusResponseEvent,\n LoggerInterface,\n UpdateMissedCallsResponse,\n UCMLinesResponse,\n} from './types';\nimport log from '../Logger';\nimport {serviceErrorCodeHandler, getVgActionEndpoint, getCallingBackEnd} from '../common/Utils';\nimport {\n APPLICATION_JSON,\n CALL_HISTORY_FILE,\n CONTENT_TYPE,\n FROM_DATE,\n HISTORY,\n LIMIT,\n NUMBER_OF_DAYS,\n UPDATE_MISSED_CALLS_ENDPOINT,\n SET_READ_STATE_SUCCESS_MESSAGE,\n VERSION_1,\n UNIFIED_COMMUNICATIONS,\n CONFIG,\n PEOPLE,\n LINES,\n ORG_ID,\n} from './constants';\nimport {STATUS_CODE, SUCCESS_MESSAGE, USER_SESSIONS} from '../common/constants';\nimport {\n COMMON_EVENT_KEYS,\n CallHistoryEventTypes,\n CallSessionEvent,\n MOBIUS_EVENT_KEYS,\n UserSession,\n EndTimeSessionId,\n CallSessionViewedEvent,\n SanitizedEndTimeAndSessionId,\n UCMLinesApiResponse,\n} from '../Events/types';\nimport {Eventing} from '../Events/impl';\n/**\n * `CallHistory` module is designed to facilitate the retrieval of Call History Records by providing a set of APIs.\n *\n * This code snippet demonstrates how to create an instance of `CallHistory` using webex and logger.\n *\n * @example\n * ```javascript\n * const callHistory = createCallHistoryClient(webex, logger);\n * ```\n */\nexport class CallHistory extends Eventing<CallHistoryEventTypes> implements ICallHistory {\n private sdkConnector: ISDKConnector;\n\n private webex: WebexSDK;\n\n private janusUrl = '';\n\n private fromDate = '';\n\n private loggerContext = {\n file: CALL_HISTORY_FILE,\n method: 'getCallHistoryData',\n };\n\n private userSessions: UserSession[] | undefined;\n\n /**\n * @ignore\n */\n constructor(webex: WebexSDK, logger: LoggerInterface) {\n super();\n this.sdkConnector = SDKConnector;\n if (!this.sdkConnector.getWebex()) {\n SDKConnector.setWebex(webex);\n }\n this.webex = this.sdkConnector.getWebex();\n this.janusUrl = this.webex.internal.services._serviceUrls.janus;\n this.registerSessionsListener();\n log.setLogger(logger.level, CALL_HISTORY_FILE);\n }\n\n /**\n * Function to display the Janus API response.\n * @param days - Number of days to fetch the call history data.\n * @param limit - Number of records to be fetched.\n * @param sort - Sort the records in ascending or descending order.\n * @param sortBy - Sort the records by start time or end time.\n */\n public async getCallHistoryData(\n days: number = NUMBER_OF_DAYS,\n limit: number = LIMIT,\n sort: SORT = SORT.DEFAULT,\n sortBy: SORT_BY = SORT_BY.DEFAULT\n ): Promise<JanusResponseEvent> {\n /*\n 1. Mandatory field for Janus API - fromDate\n 2. Calculating the fromDate by deducting the NUMBER_OF_DAYS with the current date\n */\n const date = new Date();\n\n date.setDate(date.getDate() - days);\n this.fromDate = date.toISOString();\n const sortByParam = Object.values(SORT_BY).includes(sortBy) ? sortBy : SORT_BY.DEFAULT;\n const sortParam = Object.values(SORT).includes(sort) ? sort : SORT.DEFAULT;\n\n log.log(`Janus API URL ${this.janusUrl}`, this.loggerContext);\n log.info(`Call history from date : ${this.fromDate}`, this.loggerContext);\n log.info(`Call history sort type : ${sortParam}`, this.loggerContext);\n log.info(`Call history sortby type : ${sortByParam}`, this.loggerContext);\n const url = `${this.janusUrl}/${HISTORY}/${USER_SESSIONS}${FROM_DATE}=${this.fromDate}&limit=${limit}&includeNewSessionTypes=true&sort=${sortParam}`;\n\n try {\n const janusResponse = <WebexRequestPayload>await this.webex.request({\n uri: `${url}`,\n method: HTTP_METHODS.GET,\n service: ALLOWED_SERVICES.JANUS,\n });\n\n this.userSessions = janusResponse.body as UserSession[];\n if (sortByParam === SORT_BY.START_TIME) {\n if (sortParam === SORT.DESC) {\n this.userSessions[USER_SESSIONS].sort(\n (element: Date, compareElement: Date) =>\n new Date(compareElement[sortByParam]).getTime() -\n new Date(element[sortByParam]).getTime()\n );\n } else if (sortParam === SORT.ASC) {\n this.userSessions[USER_SESSIONS].sort(\n (element: Date, compareElement: Date) =>\n new Date(element[sortByParam]).getTime() -\n new Date(compareElement[sortByParam]).getTime()\n );\n }\n }\n // Check the calling backend\n const callingBackend = getCallingBackEnd(this.webex);\n if (callingBackend === CALLING_BACKEND.UCM) {\n // Check if userSessions exist and the length is greater than 0\n if (this.userSessions[USER_SESSIONS] && this.userSessions[USER_SESSIONS].length > 0) {\n // Check if cucmDN exists and is valid in any of the userSessions\n const hasCucmDN = this.userSessions[USER_SESSIONS].some(\n (session: UserSession) => session.self.cucmDN && session.self.cucmDN.length > 0\n );\n // If any user session has cucmDN, proceed to fetch line data\n if (hasCucmDN) {\n // Fetch the Lines data\n const ucmLinesResponse = await this.fetchUCMLinesData();\n\n // Check if the Lines API response was successful\n if (ucmLinesResponse.statusCode === 200 && ucmLinesResponse.data.lines?.devices) {\n const ucmLinesData = ucmLinesResponse.data.lines.devices;\n\n // Iterate over user sessions and match with Lines data\n this.userSessions[USER_SESSIONS].forEach((session: UserSession) => {\n const cucmDN = session.self.cucmDN;\n\n if (cucmDN) {\n ucmLinesData.forEach((device) => {\n device.lines.forEach((line) => {\n if (line.dnorpattern === cucmDN) {\n session.self.ucmLineNumber = line.index; // Assign the ucmLineNumber\n }\n });\n });\n }\n });\n }\n }\n }\n }\n\n const responseDetails = {\n statusCode: this.userSessions[STATUS_CODE],\n data: {\n userSessions: this.userSessions[USER_SESSIONS],\n },\n message: SUCCESS_MESSAGE,\n };\n\n return responseDetails;\n } catch (err: unknown) {\n const errorInfo = err as WebexRequestPayload;\n const errorStatus = serviceErrorCodeHandler(errorInfo, this.loggerContext);\n\n return errorStatus;\n }\n }\n\n /**\n * Function to update the missed call status in the call history using sessionId and time.\n * @param endTimeSessionIds - An array of objects containing endTime and sessionId of the missed call history records\n * @returns {Promise} Resolves to an object of type {@link UpdateMissedCallsResponse}.Response details with success or error status.\n */\n public async updateMissedCalls(\n endTimeSessionIds: EndTimeSessionId[]\n ): Promise<UpdateMissedCallsResponse> {\n const loggerContext = {\n file: CALL_HISTORY_FILE,\n method: 'updateMissedCalls',\n };\n // Convert endTime to milliseconds for each session\n const santizedSessionIds: SanitizedEndTimeAndSessionId[] = endTimeSessionIds.map((session) => ({\n ...session,\n endTime: new Date(session.endTime).getTime(),\n }));\n const requestBody = {\n endTimeSessionIds: santizedSessionIds,\n };\n try {\n const updateMissedCallContentUrl = `${this.janusUrl}/${HISTORY}/${USER_SESSIONS}/${UPDATE_MISSED_CALLS_ENDPOINT}`;\n // Make a POST request to update missed calls\n const response = await fetch(updateMissedCallContentUrl, {\n method: HTTP_METHODS.POST,\n headers: {\n [CONTENT_TYPE]: APPLICATION_JSON,\n Authorization: await this.webex.credentials.getUserToken(),\n },\n body: JSON.stringify(requestBody),\n });\n if (!response.ok) {\n throw new Error(`${response.status}`);\n }\n\n const data: UpdateMissedCallsResponse = await response.json();\n log.info(`Missed calls are succesfully read by the user`, loggerContext);\n const responseDetails: UpdateMissedCallsResponse = {\n statusCode: data.statusCode as number,\n data: {\n readStatusMessage: SET_READ_STATE_SUCCESS_MESSAGE,\n },\n message: SUCCESS_MESSAGE,\n };\n\n return responseDetails;\n } catch (err: unknown) {\n // Catch the 401 error from try block, return the error object to user\n const errorInfo = {\n statusCode: err instanceof Error ? Number(err.message) : '',\n } as WebexRequestPayload;\n const errorStatus = serviceErrorCodeHandler(errorInfo, loggerContext);\n\n return errorStatus;\n }\n }\n\n /**\n * Function to display the UCM Lines API response.\n * @returns {Promise} Resolves to an object of type {@link UCMLinesResponse}.Response details with success or error status.\n */\n private async fetchUCMLinesData(): Promise<UCMLinesResponse> {\n const loggerContext = {\n file: CALL_HISTORY_FILE,\n method: 'fetchLinesData',\n };\n const vgEndpoint = getVgActionEndpoint(this.webex, CALLING_BACKEND.UCM);\n const userId = this.webex.internal.device.userId;\n const orgId = this.webex.internal.device.orgId;\n const linesURIForUCM = `${vgEndpoint}/${VERSION_1}/${UNIFIED_COMMUNICATIONS}/${CONFIG}/${PEOPLE}/${userId}/${LINES}?${ORG_ID}=${orgId}`;\n\n try {\n const response = <WebexRequestPayload>await this.webex.request({\n uri: `${linesURIForUCM}`,\n method: HTTP_METHODS.GET,\n });\n\n const ucmLineDetails: UCMLinesResponse = {\n statusCode: Number(response.statusCode),\n data: {\n lines: response.body as UCMLinesApiResponse,\n },\n message: SUCCESS_MESSAGE,\n };\n\n log.info(`Line details fetched successfully`, loggerContext);\n\n return ucmLineDetails;\n } catch (err: unknown) {\n const errorInfo = err as WebexRequestPayload;\n const errorStatus = serviceErrorCodeHandler(errorInfo, loggerContext);\n\n return errorStatus;\n }\n }\n\n handleSessionEvents = async (event?: CallSessionEvent) => {\n if (event && event.data.userSessions.userSessions) {\n this.emit(COMMON_EVENT_KEYS.CALL_HISTORY_USER_SESSION_INFO, event as CallSessionEvent);\n }\n };\n\n handleUserReadSessionEvents = async (event?: CallSessionViewedEvent) => {\n if (event && event.data.userReadSessions.userReadSessions) {\n this.emit(\n COMMON_EVENT_KEYS.CALL_HISTORY_USER_VIEWED_SESSIONS,\n event as CallSessionViewedEvent\n );\n }\n };\n\n /**\n *\n */\n private registerSessionsListener() {\n this.sdkConnector.registerListener<CallSessionEvent>(\n MOBIUS_EVENT_KEYS.CALL_SESSION_EVENT_INCLUSIVE,\n this.handleSessionEvents\n );\n this.sdkConnector.registerListener<CallSessionEvent>(\n MOBIUS_EVENT_KEYS.CALL_SESSION_EVENT_LEGACY,\n this.handleSessionEvents\n );\n this.sdkConnector.registerListener<CallSessionViewedEvent>(\n MOBIUS_EVENT_KEYS.CALL_SESSION_EVENT_VIEWED,\n this.handleUserReadSessionEvents\n );\n }\n}\n/**\n * Creates a `CallHistory` client instance for accessing Call History APIs.\n *\n * @param {WebexSDK} webex - `Webex SDK` instance.\n * @param {LoggerInterface} logger - An instance implementing LoggerInterface used to set the log level for the module.\n */\nexport const createCallHistoryClient = (webex: WebexSDK, logger: LoggerInterface): ICallHistory =>\n new CallHistory(webex, logger);\n"],"mappings":"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"}
|
|
@@ -348,5 +348,148 @@ describe('Call history tests', function () {
|
|
|
348
348
|
}, _callee9);
|
|
349
349
|
})));
|
|
350
350
|
});
|
|
351
|
+
describe('fetchUCMLinesData test', function () {
|
|
352
|
+
it('verify successful UCM lines API case', /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee10() {
|
|
353
|
+
var ucmLinesAPIPayload, response;
|
|
354
|
+
return _regenerator.default.wrap(function _callee10$(_context10) {
|
|
355
|
+
while (1) switch (_context10.prev = _context10.next) {
|
|
356
|
+
case 0:
|
|
357
|
+
ucmLinesAPIPayload = _callHistoryFixtures.MOCK_LINES_API_CALL_RESPONSE;
|
|
358
|
+
webex.request.mockResolvedValue(ucmLinesAPIPayload);
|
|
359
|
+
_context10.next = 4;
|
|
360
|
+
return callHistory['fetchUCMLinesData']();
|
|
361
|
+
case 4:
|
|
362
|
+
response = _context10.sent;
|
|
363
|
+
expect(response.statusCode).toBe(200);
|
|
364
|
+
expect(response.message).toBe('SUCCESS');
|
|
365
|
+
case 7:
|
|
366
|
+
case "end":
|
|
367
|
+
return _context10.stop();
|
|
368
|
+
}
|
|
369
|
+
}, _callee10);
|
|
370
|
+
})));
|
|
371
|
+
it('verify bad request failed UCM lines API case', /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee11() {
|
|
372
|
+
var failurePayload, ucmLinesAPIPayload, response;
|
|
373
|
+
return _regenerator.default.wrap(function _callee11$(_context11) {
|
|
374
|
+
while (1) switch (_context11.prev = _context11.next) {
|
|
375
|
+
case 0:
|
|
376
|
+
failurePayload = {
|
|
377
|
+
statusCode: 400
|
|
378
|
+
};
|
|
379
|
+
ucmLinesAPIPayload = failurePayload;
|
|
380
|
+
webex.request.mockRejectedValue(ucmLinesAPIPayload);
|
|
381
|
+
_context11.next = 5;
|
|
382
|
+
return callHistory['fetchUCMLinesData']();
|
|
383
|
+
case 5:
|
|
384
|
+
response = _context11.sent;
|
|
385
|
+
expect(response).toStrictEqual(_callHistoryFixtures.ERROR_DETAILS_400);
|
|
386
|
+
expect(response.data.error).toEqual(_callHistoryFixtures.ERROR_DETAILS_400.data.error);
|
|
387
|
+
expect(response.statusCode).toBe(400);
|
|
388
|
+
expect(response.message).toBe('FAILURE');
|
|
389
|
+
expect(serviceErrorCodeHandlerSpy).toHaveBeenCalledWith({
|
|
390
|
+
statusCode: 400
|
|
391
|
+
}, {
|
|
392
|
+
file: 'CallHistory',
|
|
393
|
+
method: 'fetchLinesData'
|
|
394
|
+
});
|
|
395
|
+
case 11:
|
|
396
|
+
case "end":
|
|
397
|
+
return _context11.stop();
|
|
398
|
+
}
|
|
399
|
+
}, _callee11);
|
|
400
|
+
})));
|
|
401
|
+
it('should call fetchUCMLinesData when calling backend is UCM and userSessions contain valid cucmDN', /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee12() {
|
|
402
|
+
var fetchUCMLinesDataSpy, mockCallHistoryPayload, response;
|
|
403
|
+
return _regenerator.default.wrap(function _callee12$(_context12) {
|
|
404
|
+
while (1) switch (_context12.prev = _context12.next) {
|
|
405
|
+
case 0:
|
|
406
|
+
jest.spyOn(utils, 'getCallingBackEnd').mockReturnValue(_types2.CALLING_BACKEND.UCM);
|
|
407
|
+
// Since fetchUCMLinesData is a private method, TypeScript restricts direct access to it.
|
|
408
|
+
// To bypass this restriction, we are using 'as any' to access and invoke the method for testing purposes.
|
|
409
|
+
fetchUCMLinesDataSpy = jest.spyOn(callHistory, 'fetchUCMLinesData').mockResolvedValue(_callHistoryFixtures.MOCK_LINES_API_CALL_RESPONSE);
|
|
410
|
+
mockCallHistoryPayload = _callHistoryFixtures.MOCK_CALL_HISTORY_WITH_UCM_LINE_NUMBER;
|
|
411
|
+
webex.request.mockResolvedValue(mockCallHistoryPayload);
|
|
412
|
+
_context12.next = 6;
|
|
413
|
+
return callHistory.getCallHistoryData(7, 10, _types2.SORT.DEFAULT, _types2.SORT_BY.DEFAULT);
|
|
414
|
+
case 6:
|
|
415
|
+
response = _context12.sent;
|
|
416
|
+
expect(fetchUCMLinesDataSpy).toHaveBeenCalledTimes(1);
|
|
417
|
+
expect(response.statusCode).toBe(200);
|
|
418
|
+
expect(response.data.userSessions && response.data.userSessions[0].self.ucmLineNumber).toEqual(1);
|
|
419
|
+
case 10:
|
|
420
|
+
case "end":
|
|
421
|
+
return _context12.stop();
|
|
422
|
+
}
|
|
423
|
+
}, _callee12);
|
|
424
|
+
})));
|
|
425
|
+
it('should fetchUCMLinesData but not assign ucmLineNumber when UCM backend has no line data', /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee13() {
|
|
426
|
+
var fetchUCMLinesDataSpy, mockCallHistoryPayload, response;
|
|
427
|
+
return _regenerator.default.wrap(function _callee13$(_context13) {
|
|
428
|
+
while (1) switch (_context13.prev = _context13.next) {
|
|
429
|
+
case 0:
|
|
430
|
+
jest.spyOn(utils, 'getCallingBackEnd').mockReturnValue(_types2.CALLING_BACKEND.UCM);
|
|
431
|
+
|
|
432
|
+
// Since fetchUCMLinesData is a private method, TypeScript restricts direct access to it.
|
|
433
|
+
// To bypass this restriction, we are using 'as any' to access and invoke the method for testing purposes.
|
|
434
|
+
fetchUCMLinesDataSpy = jest.spyOn(callHistory, 'fetchUCMLinesData').mockResolvedValue(_callHistoryFixtures.MOCK_LINES_API_CALL_RESPONSE_WITH_NO_LINEDATA);
|
|
435
|
+
mockCallHistoryPayload = _callHistoryFixtures.MOCK_CALL_HISTORY_WITHOUT_UCM_LINE_NUMBER;
|
|
436
|
+
webex.request.mockResolvedValue(mockCallHistoryPayload);
|
|
437
|
+
_context13.next = 6;
|
|
438
|
+
return callHistory.getCallHistoryData(7, 10, _types2.SORT.DEFAULT, _types2.SORT_BY.DEFAULT);
|
|
439
|
+
case 6:
|
|
440
|
+
response = _context13.sent;
|
|
441
|
+
expect(fetchUCMLinesDataSpy).toHaveBeenCalledTimes(1);
|
|
442
|
+
expect(response.statusCode).toBe(200);
|
|
443
|
+
expect(response.data.userSessions && response.data.userSessions[0].self.cucmDN).toBeDefined();
|
|
444
|
+
expect(response.data.userSessions && response.data.userSessions[0].self.ucmLineNumber).toEqual(undefined);
|
|
445
|
+
case 11:
|
|
446
|
+
case "end":
|
|
447
|
+
return _context13.stop();
|
|
448
|
+
}
|
|
449
|
+
}, _callee13);
|
|
450
|
+
})));
|
|
451
|
+
it('should not call fetchUCMLinesData when calling backend is UCM but no valid cucmDN is present', /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee14() {
|
|
452
|
+
var fetchUCMLinesDataSpy, callHistoryPayload;
|
|
453
|
+
return _regenerator.default.wrap(function _callee14$(_context14) {
|
|
454
|
+
while (1) switch (_context14.prev = _context14.next) {
|
|
455
|
+
case 0:
|
|
456
|
+
jest.spyOn(utils, 'getCallingBackEnd').mockReturnValue(_types2.CALLING_BACKEND.UCM);
|
|
457
|
+
// Since fetchUCMLinesData is a private method, TypeScript restricts direct access to it.
|
|
458
|
+
// To bypass this restriction, we are using 'as any' to access and invoke the method for testing purposes.
|
|
459
|
+
fetchUCMLinesDataSpy = jest.spyOn(callHistory, 'fetchUCMLinesData').mockResolvedValue({});
|
|
460
|
+
callHistoryPayload = _callHistoryFixtures.mockCallHistoryBody;
|
|
461
|
+
webex.request.mockResolvedValue(callHistoryPayload);
|
|
462
|
+
_context14.next = 6;
|
|
463
|
+
return callHistory.getCallHistoryData(7, 10, _types2.SORT.DEFAULT, _types2.SORT_BY.DEFAULT);
|
|
464
|
+
case 6:
|
|
465
|
+
expect(fetchUCMLinesDataSpy).not.toHaveBeenCalled();
|
|
466
|
+
case 7:
|
|
467
|
+
case "end":
|
|
468
|
+
return _context14.stop();
|
|
469
|
+
}
|
|
470
|
+
}, _callee14);
|
|
471
|
+
})));
|
|
472
|
+
it('should not call fetchUCMLinesData when calling backend is not UCM', /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee15() {
|
|
473
|
+
var fetchUCMLinesDataSpy, callHistoryPayload;
|
|
474
|
+
return _regenerator.default.wrap(function _callee15$(_context15) {
|
|
475
|
+
while (1) switch (_context15.prev = _context15.next) {
|
|
476
|
+
case 0:
|
|
477
|
+
jest.spyOn(utils, 'getCallingBackEnd').mockReturnValue(_types2.CALLING_BACKEND.WXC);
|
|
478
|
+
// Since fetchUCMLinesData is a private method, TypeScript restricts direct access to it.
|
|
479
|
+
// To bypass this restriction, we are using 'as any' to access and invoke the method for testing purposes.
|
|
480
|
+
fetchUCMLinesDataSpy = jest.spyOn(callHistory, 'fetchUCMLinesData').mockResolvedValue({});
|
|
481
|
+
callHistoryPayload = _callHistoryFixtures.mockCallHistoryBody;
|
|
482
|
+
webex.request.mockResolvedValue(callHistoryPayload);
|
|
483
|
+
_context15.next = 6;
|
|
484
|
+
return callHistory.getCallHistoryData(7, 10, _types2.SORT.DEFAULT, _types2.SORT_BY.DEFAULT);
|
|
485
|
+
case 6:
|
|
486
|
+
expect(fetchUCMLinesDataSpy).not.toHaveBeenCalled(); // Check that fetchUCMLinesData was not called
|
|
487
|
+
case 7:
|
|
488
|
+
case "end":
|
|
489
|
+
return _context15.stop();
|
|
490
|
+
}
|
|
491
|
+
}, _callee15);
|
|
492
|
+
})));
|
|
493
|
+
});
|
|
351
494
|
});
|
|
352
495
|
//# sourceMappingURL=CallHistory.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_types","require","_testUtil","_types2","_CallHistory","_callHistoryFixtures","_types3","_constants","utils","_interopRequireWildcard","_getRequireWildcardCache","e","_WeakMap","r","t","__esModule","_typeof","default","has","get","n","__proto__","a","_Object$defineProperty","_Object$getOwnPropertyDescriptor","u","Object","prototype","hasOwnProperty","call","i","set","ownKeys","_Object$keys","_Object$getOwnPropertySymbols","o","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","_Object$getOwnPropertyDescriptors","_Object$defineProperties","webex","getTestUtilsWebex","serviceErrorCodeHandlerSpy","describe","callHistory","beforeAll","CallHistory","level","LOGGER","INFO","it","_asyncToGenerator2","_regenerator","mark","_callee","callHistoryPayload","response","wrap","_callee$","_context","prev","next","mockCallHistoryBody","request","mockResolvedValue","getCallHistoryData","SORT","DEFAULT","SORT_BY","sent","expect","statusCode","toBe","message","stop","_callee2","failurePayload","_callee2$","_context2","mockRejectedValue","ASC","START_TIME","_callee3","_callee3$","_context3","_callee4","responseDetails","_callee4$","_context4","sortedCallHistory","body","data","userSessions","toEqual","mockOn","internal","mercury","on","beforeEach","createCallHistoryClient","done","COMMON_EVENT_KEYS","CALL_HISTORY_USER_SESSION_INFO","event","MOCK_SESSION_EVENT","mock","calls","MOBIUS_EVENT_KEYS","CALL_SESSION_EVENT_INCLUSIVE","callSessionCallback","MOCK_SESSION_EVENT_LEGACY","CALL_SESSION_EVENT_LEGACY","_callee5","_callee5$","_context5","_promise","resolve","CALL_HISTORY_USER_VIEWED_SESSIONS","MOCK_SESSION_EVENT_VIEWED","CALL_SESSION_EVENT_VIEWED","methodDetails","file","CALL_HISTORY_FILE","method","afterEach","jest","clearAllMocks","_callee6","_callee6$","_context6","spyOn","global","fetch","fn","status","ok","json","MOCK_UPDATE_MISSED_CALL_RESPONSE","_callee7","endTimeSessionIds","convertedEndTimeSessionIds","_callee7$","_context7","endTime","sessionId","updateMissedCalls","map","session","Date","getTime","t0","t1","janusSetReadStateUrl","t2","HTTP_METHODS","POST","t3","t4","CONTENT_TYPE","APPLICATION_JSON","credentials","getUserToken","t5","t6","t7","_stringify","t8","headers","toBeCalledOnceWith","_callee8","_callee8$","_context8","toStrictEqual","ERROR_DETAILS_400","_callee9","_callee9$","_context9","ERROR_DETAILS_401"],"sources":["CallHistory.test.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-unused-vars */\n/* eslint-disable dot-notation */\n/* eslint-disable @typescript-eslint/no-shadow */\nimport {LOGGER} from '../Logger/types';\nimport {getTestUtilsWebex} from '../common/testUtil';\nimport {HTTP_METHODS, SORT, SORT_BY, WebexRequestPayload} from '../common/types';\nimport {CallHistory, createCallHistoryClient} from './CallHistory';\nimport {ICallHistory} from './types';\nimport {\n sortedCallHistory,\n mockCallHistoryBody,\n MOCK_SESSION_EVENT,\n MOCK_SESSION_EVENT_LEGACY,\n MOCK_SESSION_EVENT_VIEWED,\n MOCK_UPDATE_MISSED_CALL_RESPONSE,\n janusSetReadStateUrl,\n ERROR_DETAILS_401,\n ERROR_DETAILS_400,\n} from './callHistoryFixtures';\nimport {\n COMMON_EVENT_KEYS,\n CallSessionEvent,\n CallSessionViewedEvent,\n MOBIUS_EVENT_KEYS,\n} from '../Events/types';\nimport {APPLICATION_JSON, CALL_HISTORY_FILE, CONTENT_TYPE} from './constants';\nimport * as utils from '../common/Utils';\n\nconst webex = getTestUtilsWebex();\nlet serviceErrorCodeHandlerSpy: jest.SpyInstance;\ndescribe('Call history tests', () => {\n let callHistory: ICallHistory;\n\n beforeAll(() => {\n callHistory = new CallHistory(webex, {level: LOGGER.INFO});\n });\n\n it('verify successful call history case', async () => {\n const callHistoryPayload = <WebexRequestPayload>(<unknown>mockCallHistoryBody);\n\n webex.request.mockResolvedValue(callHistoryPayload);\n const response = await callHistory.getCallHistoryData(7, 10, SORT.DEFAULT, SORT_BY.DEFAULT);\n\n expect(response.statusCode).toBe(200);\n expect(response.message).toBe('SUCCESS');\n });\n\n it('verify bad request failed call history case', async () => {\n const failurePayload = {\n statusCode: 400,\n };\n const callHistoryPayload = <WebexRequestPayload>(<unknown>failurePayload);\n\n webex.request.mockRejectedValue(callHistoryPayload);\n const response = await callHistory.getCallHistoryData(7, 2000, SORT.ASC, SORT_BY.START_TIME);\n\n expect(response.statusCode).toBe(400);\n expect(response.message).toBe('FAILURE');\n });\n\n it('verify device not found call history case', async () => {\n const failurePayload = {\n statusCode: 404,\n };\n const callHistoryPayload = <WebexRequestPayload>(<unknown>failurePayload);\n\n webex.request.mockRejectedValue(callHistoryPayload);\n const response = await callHistory.getCallHistoryData(0, 0, SORT.ASC, SORT_BY.START_TIME);\n\n expect(response.statusCode).toBe(404);\n expect(response.message).toBe('FAILURE');\n });\n\n describe('sorting user session response data by sortby', () => {\n it('Array should be sort.ASC by START TIME ', async () => {\n const callHistoryPayload = <WebexRequestPayload>(<unknown>mockCallHistoryBody);\n\n webex.request.mockResolvedValue(callHistoryPayload);\n const response = await callHistory.getCallHistoryData(10, 20, SORT.ASC, SORT_BY.START_TIME);\n\n const responseDetails = {\n statusCode: sortedCallHistory.body.statusCode,\n data: {\n userSessions: sortedCallHistory.body.userSessions,\n },\n message: 'SUCCESS',\n };\n\n expect(response).toEqual(responseDetails);\n });\n });\n\n describe('Call History Session Event test', () => {\n const mockOn = webex.internal.mercury.on;\n let callHistory: ICallHistory;\n\n beforeEach(() => {\n callHistory = createCallHistoryClient(webex, {level: LOGGER.INFO});\n });\n\n it('verify the recent user session event ', (done) => {\n callHistory.on(\n COMMON_EVENT_KEYS.CALL_HISTORY_USER_SESSION_INFO,\n (event: CallSessionEvent) => {\n expect(event.data).toEqual(MOCK_SESSION_EVENT.data);\n done();\n }\n );\n\n expect(mockOn.mock.calls[0][0]).toEqual(MOBIUS_EVENT_KEYS.CALL_SESSION_EVENT_INCLUSIVE);\n const callSessionCallback = mockOn.mock.calls[0][1];\n\n callSessionCallback(MOCK_SESSION_EVENT);\n });\n\n it('verify the user session event received for locus calls', (done) => {\n callHistory.on(\n COMMON_EVENT_KEYS.CALL_HISTORY_USER_SESSION_INFO,\n (event: CallSessionEvent) => {\n expect(event.data).toEqual(MOCK_SESSION_EVENT_LEGACY.data);\n done();\n }\n );\n\n expect(mockOn.mock.calls[1][0]).toEqual(MOBIUS_EVENT_KEYS.CALL_SESSION_EVENT_LEGACY);\n const callSessionCallback = mockOn.mock.calls[1][1];\n\n callSessionCallback(MOCK_SESSION_EVENT_LEGACY);\n });\n\n it('verify the user viewed session event for missed calls update', async () => {\n await new Promise<void>((resolve) => {\n callHistory.on(\n COMMON_EVENT_KEYS.CALL_HISTORY_USER_VIEWED_SESSIONS,\n (event: CallSessionViewedEvent) => {\n expect(event.data).toEqual(MOCK_SESSION_EVENT_VIEWED.data);\n resolve();\n }\n );\n\n expect(mockOn.mock.calls[2][0]).toEqual(MOBIUS_EVENT_KEYS.CALL_SESSION_EVENT_VIEWED);\n const callSessionCallback = mockOn.mock.calls[2][1];\n\n callSessionCallback(MOCK_SESSION_EVENT_VIEWED);\n });\n });\n });\n\n describe('Update missed calls test', () => {\n const methodDetails = {\n file: CALL_HISTORY_FILE,\n method: 'updateMissedCalls',\n };\n afterEach(() => {\n jest.clearAllMocks();\n });\n beforeEach(async () => {\n serviceErrorCodeHandlerSpy = jest.spyOn(utils, 'serviceErrorCodeHandler');\n global.fetch = jest.fn(() =>\n Promise.resolve({\n status: 200,\n ok: true,\n json: () => Promise.resolve(MOCK_UPDATE_MISSED_CALL_RESPONSE),\n })\n ) as jest.Mock;\n });\n\n it('successfully updates missed calls', async () => {\n const endTimeSessionIds = [{endTime: '1234568', sessionId: '123'}];\n const response = await callHistory.updateMissedCalls(endTimeSessionIds);\n const convertedEndTimeSessionIds = endTimeSessionIds.map((session) => ({\n ...session,\n endTime: new Date(session.endTime).getTime(),\n }));\n expect(response.statusCode).toEqual(200);\n expect(response).toEqual(MOCK_UPDATE_MISSED_CALL_RESPONSE);\n expect(global.fetch).toBeCalledOnceWith(janusSetReadStateUrl, {\n method: HTTP_METHODS.POST,\n headers: {\n [CONTENT_TYPE]: APPLICATION_JSON,\n Authorization: await webex.credentials.getUserToken(),\n },\n body: JSON.stringify({endTimeSessionIds: convertedEndTimeSessionIds}),\n });\n });\n\n it('Error: updateMissedCalls throw 400 error', async () => {\n const endTimeSessionIds = [];\n global.fetch = jest.fn(() =>\n Promise.resolve({\n status: 400,\n ok: false,\n })\n ) as jest.Mock;\n const response = await callHistory.updateMissedCalls(endTimeSessionIds);\n const convertedEndTimeSessionIds = endTimeSessionIds.map((session) => ({\n ...session,\n endTime: new Date(session.endTime).getTime(),\n }));\n expect(response).toStrictEqual(ERROR_DETAILS_400);\n expect(response.statusCode).toBe(400);\n expect(global.fetch).toBeCalledOnceWith(janusSetReadStateUrl, {\n method: HTTP_METHODS.POST,\n headers: {\n [CONTENT_TYPE]: APPLICATION_JSON,\n Authorization: await webex.credentials.getUserToken(),\n },\n body: JSON.stringify({endTimeSessionIds: convertedEndTimeSessionIds}),\n });\n expect(serviceErrorCodeHandlerSpy).toBeCalledOnceWith(\n {\n statusCode: 400,\n },\n methodDetails\n );\n });\n\n it('Error: updateMissedCalls throw 401 error', async () => {\n const endTimeSessionIds = [];\n global.fetch = jest.fn(() =>\n Promise.resolve({\n status: 401,\n ok: false,\n })\n ) as jest.Mock;\n\n const response = await callHistory.updateMissedCalls(endTimeSessionIds);\n const convertedEndTimeSessionIds = endTimeSessionIds.map((session) => ({\n ...session,\n endTime: new Date(session.endTime).getTime(),\n }));\n expect(response).toStrictEqual(ERROR_DETAILS_401);\n expect(response.statusCode).toBe(401);\n expect(global.fetch).toBeCalledOnceWith(janusSetReadStateUrl, {\n method: HTTP_METHODS.POST,\n headers: {\n [CONTENT_TYPE]: APPLICATION_JSON,\n Authorization: await webex.credentials.getUserToken(),\n },\n body: JSON.stringify({endTimeSessionIds: convertedEndTimeSessionIds}),\n });\n expect(serviceErrorCodeHandlerSpy).toBeCalledOnceWith(\n {\n statusCode: 401,\n },\n methodDetails\n );\n });\n });\n});\n"],"mappings":";;;;;;;;;;;;;;;;AAGA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,SAAA,GAAAD,OAAA;AACA,IAAAE,OAAA,GAAAF,OAAA;AACA,IAAAG,YAAA,GAAAH,OAAA;AAEA,IAAAI,oBAAA,GAAAJ,OAAA;AAWA,IAAAK,OAAA,GAAAL,OAAA;AAMA,IAAAM,UAAA,GAAAN,OAAA;AACA,IAAAO,KAAA,GAAAC,uBAAA,CAAAR,OAAA;AAAyC,SAAAS,yBAAAC,CAAA,6BAAAC,QAAA,mBAAAC,CAAA,OAAAD,QAAA,IAAAE,CAAA,OAAAF,QAAA,YAAAF,wBAAA,YAAAA,yBAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAF,wBAAAE,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,gBAAAK,OAAA,CAAAL,CAAA,0BAAAA,CAAA,WAAAM,OAAA,EAAAN,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAI,GAAA,CAAAP,CAAA,UAAAG,CAAA,CAAAK,GAAA,CAAAR,CAAA,OAAAS,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,sBAAA,IAAAC,gCAAA,WAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,IAAAC,MAAA,CAAAC,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAlB,CAAA,EAAAc,CAAA,SAAAK,CAAA,GAAAR,CAAA,GAAAE,gCAAA,CAAAb,CAAA,EAAAc,CAAA,UAAAK,CAAA,KAAAA,CAAA,CAAAX,GAAA,IAAAW,CAAA,CAAAC,GAAA,IAAAR,sBAAA,CAAAH,CAAA,EAAAK,CAAA,EAAAK,CAAA,IAAAV,CAAA,CAAAK,CAAA,IAAAd,CAAA,CAAAc,CAAA,YAAAL,CAAA,CAAAH,OAAA,GAAAN,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAiB,GAAA,CAAApB,CAAA,EAAAS,CAAA,GAAAA,CAAA;AAAA,SAAAY,QAAArB,CAAA,EAAAE,CAAA,QAAAC,CAAA,GAAAmB,YAAA,CAAAtB,CAAA,OAAAuB,6BAAA,QAAAC,CAAA,GAAAD,6BAAA,CAAAvB,CAAA,GAAAE,CAAA,KAAAsB,CAAA,GAAAA,CAAA,CAAAC,MAAA,WAAAvB,CAAA,WAAAW,gCAAA,CAAAb,CAAA,EAAAE,CAAA,EAAAwB,UAAA,OAAAvB,CAAA,CAAAwB,IAAA,CAAAC,KAAA,CAAAzB,CAAA,EAAAqB,CAAA,YAAArB,CAAA;AAAA,SAAA0B,cAAA7B,CAAA,aAAAE,CAAA,MAAAA,CAAA,GAAA4B,SAAA,CAAAC,MAAA,EAAA7B,CAAA,UAAAC,CAAA,WAAA2B,SAAA,CAAA5B,CAAA,IAAA4B,SAAA,CAAA5B,CAAA,QAAAA,CAAA,OAAAmB,OAAA,CAAAN,MAAA,CAAAZ,CAAA,OAAA6B,OAAA,WAAA9B,CAAA,QAAA+B,gBAAA,CAAA3B,OAAA,EAAAN,CAAA,EAAAE,CAAA,EAAAC,CAAA,CAAAD,CAAA,SAAAgC,iCAAA,GAAAC,wBAAA,CAAAnC,CAAA,EAAAkC,iCAAA,CAAA/B,CAAA,KAAAkB,OAAA,CAAAN,MAAA,CAAAZ,CAAA,GAAA6B,OAAA,WAAA9B,CAAA,IAAAU,sBAAA,CAAAZ,CAAA,EAAAE,CAAA,EAAAW,gCAAA,CAAAV,CAAA,EAAAD,CAAA,iBAAAF,CAAA,IA1BzC,uDACA,kCACA;AA0BA,IAAMoC,KAAK,GAAG,IAAAC,2BAAiB,EAAC,CAAC;AACjC,IAAIC,0BAA4C;AAChDC,QAAQ,CAAC,oBAAoB,EAAE,YAAM;EACnC,IAAIC,WAAyB;EAE7BC,SAAS,CAAC,YAAM;IACdD,WAAW,GAAG,IAAIE,wBAAW,CAACN,KAAK,EAAE;MAACO,KAAK,EAAEC,aAAM,CAACC;IAAI,CAAC,CAAC;EAC5D,CAAC,CAAC;EAEFC,EAAE,CAAC,qCAAqC,mBAAAC,kBAAA,CAAAzC,OAAA,gBAAA0C,YAAA,CAAA1C,OAAA,CAAA2C,IAAA,CAAE,SAAAC,QAAA;IAAA,IAAAC,kBAAA,EAAAC,QAAA;IAAA,OAAAJ,YAAA,CAAA1C,OAAA,CAAA+C,IAAA,UAAAC,SAAAC,QAAA;MAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;QAAA;UAClCN,kBAAkB,GAAkCO,wCAAmB;UAE7EtB,KAAK,CAACuB,OAAO,CAACC,iBAAiB,CAACT,kBAAkB,CAAC;UAACI,QAAA,CAAAE,IAAA;UAAA,OAC7BjB,WAAW,CAACqB,kBAAkB,CAAC,CAAC,EAAE,EAAE,EAAEC,YAAI,CAACC,OAAO,EAAEC,eAAO,CAACD,OAAO,CAAC;QAAA;UAArFX,QAAQ,GAAAG,QAAA,CAAAU,IAAA;UAEdC,MAAM,CAACd,QAAQ,CAACe,UAAU,CAAC,CAACC,IAAI,CAAC,GAAG,CAAC;UACrCF,MAAM,CAACd,QAAQ,CAACiB,OAAO,CAAC,CAACD,IAAI,CAAC,SAAS,CAAC;QAAC;QAAA;UAAA,OAAAb,QAAA,CAAAe,IAAA;MAAA;IAAA,GAAApB,OAAA;EAAA,CAC1C,GAAC;EAEFJ,EAAE,CAAC,6CAA6C,mBAAAC,kBAAA,CAAAzC,OAAA,gBAAA0C,YAAA,CAAA1C,OAAA,CAAA2C,IAAA,CAAE,SAAAsB,SAAA;IAAA,IAAAC,cAAA,EAAArB,kBAAA,EAAAC,QAAA;IAAA,OAAAJ,YAAA,CAAA1C,OAAA,CAAA+C,IAAA,UAAAoB,UAAAC,SAAA;MAAA,kBAAAA,SAAA,CAAAlB,IAAA,GAAAkB,SAAA,CAAAjB,IAAA;QAAA;UAC1Ce,cAAc,GAAG;YACrBL,UAAU,EAAE;UACd,CAAC;UACKhB,kBAAkB,GAAkCqB,cAAc;UAExEpC,KAAK,CAACuB,OAAO,CAACgB,iBAAiB,CAACxB,kBAAkB,CAAC;UAACuB,SAAA,CAAAjB,IAAA;UAAA,OAC7BjB,WAAW,CAACqB,kBAAkB,CAAC,CAAC,EAAE,IAAI,EAAEC,YAAI,CAACc,GAAG,EAAEZ,eAAO,CAACa,UAAU,CAAC;QAAA;UAAtFzB,QAAQ,GAAAsB,SAAA,CAAAT,IAAA;UAEdC,MAAM,CAACd,QAAQ,CAACe,UAAU,CAAC,CAACC,IAAI,CAAC,GAAG,CAAC;UACrCF,MAAM,CAACd,QAAQ,CAACiB,OAAO,CAAC,CAACD,IAAI,CAAC,SAAS,CAAC;QAAC;QAAA;UAAA,OAAAM,SAAA,CAAAJ,IAAA;MAAA;IAAA,GAAAC,QAAA;EAAA,CAC1C,GAAC;EAEFzB,EAAE,CAAC,2CAA2C,mBAAAC,kBAAA,CAAAzC,OAAA,gBAAA0C,YAAA,CAAA1C,OAAA,CAAA2C,IAAA,CAAE,SAAA6B,SAAA;IAAA,IAAAN,cAAA,EAAArB,kBAAA,EAAAC,QAAA;IAAA,OAAAJ,YAAA,CAAA1C,OAAA,CAAA+C,IAAA,UAAA0B,UAAAC,SAAA;MAAA,kBAAAA,SAAA,CAAAxB,IAAA,GAAAwB,SAAA,CAAAvB,IAAA;QAAA;UACxCe,cAAc,GAAG;YACrBL,UAAU,EAAE;UACd,CAAC;UACKhB,kBAAkB,GAAkCqB,cAAc;UAExEpC,KAAK,CAACuB,OAAO,CAACgB,iBAAiB,CAACxB,kBAAkB,CAAC;UAAC6B,SAAA,CAAAvB,IAAA;UAAA,OAC7BjB,WAAW,CAACqB,kBAAkB,CAAC,CAAC,EAAE,CAAC,EAAEC,YAAI,CAACc,GAAG,EAAEZ,eAAO,CAACa,UAAU,CAAC;QAAA;UAAnFzB,QAAQ,GAAA4B,SAAA,CAAAf,IAAA;UAEdC,MAAM,CAACd,QAAQ,CAACe,UAAU,CAAC,CAACC,IAAI,CAAC,GAAG,CAAC;UACrCF,MAAM,CAACd,QAAQ,CAACiB,OAAO,CAAC,CAACD,IAAI,CAAC,SAAS,CAAC;QAAC;QAAA;UAAA,OAAAY,SAAA,CAAAV,IAAA;MAAA;IAAA,GAAAQ,QAAA;EAAA,CAC1C,GAAC;EAEFvC,QAAQ,CAAC,+CAA+C,EAAE,YAAM;IAC9DO,EAAE,CAAC,yCAAyC,mBAAAC,kBAAA,CAAAzC,OAAA,gBAAA0C,YAAA,CAAA1C,OAAA,CAAA2C,IAAA,CAAE,SAAAgC,SAAA;MAAA,IAAA9B,kBAAA,EAAAC,QAAA,EAAA8B,eAAA;MAAA,OAAAlC,YAAA,CAAA1C,OAAA,CAAA+C,IAAA,UAAA8B,UAAAC,SAAA;QAAA,kBAAAA,SAAA,CAAA5B,IAAA,GAAA4B,SAAA,CAAA3B,IAAA;UAAA;YACtCN,kBAAkB,GAAkCO,wCAAmB;YAE7EtB,KAAK,CAACuB,OAAO,CAACC,iBAAiB,CAACT,kBAAkB,CAAC;YAACiC,SAAA,CAAA3B,IAAA;YAAA,OAC7BjB,WAAW,CAACqB,kBAAkB,CAAC,EAAE,EAAE,EAAE,EAAEC,YAAI,CAACc,GAAG,EAAEZ,eAAO,CAACa,UAAU,CAAC;UAAA;YAArFzB,QAAQ,GAAAgC,SAAA,CAAAnB,IAAA;YAERiB,eAAe,GAAG;cACtBf,UAAU,EAAEkB,sCAAiB,CAACC,IAAI,CAACnB,UAAU;cAC7CoB,IAAI,EAAE;gBACJC,YAAY,EAAEH,sCAAiB,CAACC,IAAI,CAACE;cACvC,CAAC;cACDnB,OAAO,EAAE;YACX,CAAC;YAEDH,MAAM,CAACd,QAAQ,CAAC,CAACqC,OAAO,CAACP,eAAe,CAAC;UAAC;UAAA;YAAA,OAAAE,SAAA,CAAAd,IAAA;QAAA;MAAA,GAAAW,QAAA;IAAA,CAC3C,GAAC;EACJ,CAAC,CAAC;EAEF1C,QAAQ,CAAC,iCAAiC,EAAE,YAAM;IAChD,IAAMmD,MAAM,GAAGtD,KAAK,CAACuD,QAAQ,CAACC,OAAO,CAACC,EAAE;IACxC,IAAIrD,WAAyB;IAE7BsD,UAAU,CAAC,YAAM;MACftD,WAAW,GAAG,IAAAuD,oCAAuB,EAAC3D,KAAK,EAAE;QAACO,KAAK,EAAEC,aAAM,CAACC;MAAI,CAAC,CAAC;IACpE,CAAC,CAAC;IAEFC,EAAE,CAAC,uCAAuC,EAAE,UAACkD,IAAI,EAAK;MACpDxD,WAAW,CAACqD,EAAE,CACZI,yBAAiB,CAACC,8BAA8B,EAChD,UAACC,KAAuB,EAAK;QAC3BjC,MAAM,CAACiC,KAAK,CAACZ,IAAI,CAAC,CAACE,OAAO,CAACW,uCAAkB,CAACb,IAAI,CAAC;QACnDS,IAAI,CAAC,CAAC;MACR,CACF,CAAC;MAED9B,MAAM,CAACwB,MAAM,CAACW,IAAI,CAACC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAACb,OAAO,CAACc,yBAAiB,CAACC,4BAA4B,CAAC;MACvF,IAAMC,mBAAmB,GAAGf,MAAM,CAACW,IAAI,CAACC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;MAEnDG,mBAAmB,CAACL,uCAAkB,CAAC;IACzC,CAAC,CAAC;IAEFtD,EAAE,CAAC,wDAAwD,EAAE,UAACkD,IAAI,EAAK;MACrExD,WAAW,CAACqD,EAAE,CACZI,yBAAiB,CAACC,8BAA8B,EAChD,UAACC,KAAuB,EAAK;QAC3BjC,MAAM,CAACiC,KAAK,CAACZ,IAAI,CAAC,CAACE,OAAO,CAACiB,8CAAyB,CAACnB,IAAI,CAAC;QAC1DS,IAAI,CAAC,CAAC;MACR,CACF,CAAC;MAED9B,MAAM,CAACwB,MAAM,CAACW,IAAI,CAACC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAACb,OAAO,CAACc,yBAAiB,CAACI,yBAAyB,CAAC;MACpF,IAAMF,mBAAmB,GAAGf,MAAM,CAACW,IAAI,CAACC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;MAEnDG,mBAAmB,CAACC,8CAAyB,CAAC;IAChD,CAAC,CAAC;IAEF5D,EAAE,CAAC,8DAA8D,mBAAAC,kBAAA,CAAAzC,OAAA,gBAAA0C,YAAA,CAAA1C,OAAA,CAAA2C,IAAA,CAAE,SAAA2D,SAAA;MAAA,OAAA5D,YAAA,CAAA1C,OAAA,CAAA+C,IAAA,UAAAwD,UAAAC,SAAA;QAAA,kBAAAA,SAAA,CAAAtD,IAAA,GAAAsD,SAAA,CAAArD,IAAA;UAAA;YAAAqD,SAAA,CAAArD,IAAA;YAAA,OAC3D,IAAAsD,QAAA,CAAAzG,OAAA,CAAkB,UAAC0G,OAAO,EAAK;cACnCxE,WAAW,CAACqD,EAAE,CACZI,yBAAiB,CAACgB,iCAAiC,EACnD,UAACd,KAA6B,EAAK;gBACjCjC,MAAM,CAACiC,KAAK,CAACZ,IAAI,CAAC,CAACE,OAAO,CAACyB,8CAAyB,CAAC3B,IAAI,CAAC;gBAC1DyB,OAAO,CAAC,CAAC;cACX,CACF,CAAC;cAED9C,MAAM,CAACwB,MAAM,CAACW,IAAI,CAACC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAACb,OAAO,CAACc,yBAAiB,CAACY,yBAAyB,CAAC;cACpF,IAAMV,mBAAmB,GAAGf,MAAM,CAACW,IAAI,CAACC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;cAEnDG,mBAAmB,CAACS,8CAAyB,CAAC;YAChD,CAAC,CAAC;UAAA;UAAA;YAAA,OAAAJ,SAAA,CAAAxC,IAAA;QAAA;MAAA,GAAAsC,QAAA;IAAA,CACH,GAAC;EACJ,CAAC,CAAC;EAEFrE,QAAQ,CAAC,0BAA0B,EAAE,YAAM;IACzC,IAAM6E,aAAa,GAAG;MACpBC,IAAI,EAAEC,4BAAiB;MACvBC,MAAM,EAAE;IACV,CAAC;IACDC,SAAS,CAAC,YAAM;MACdC,IAAI,CAACC,aAAa,CAAC,CAAC;IACtB,CAAC,CAAC;IACF5B,UAAU,mBAAA/C,kBAAA,CAAAzC,OAAA,gBAAA0C,YAAA,CAAA1C,OAAA,CAAA2C,IAAA,CAAC,SAAA0E,SAAA;MAAA,OAAA3E,YAAA,CAAA1C,OAAA,CAAA+C,IAAA,UAAAuE,UAAAC,SAAA;QAAA,kBAAAA,SAAA,CAAArE,IAAA,GAAAqE,SAAA,CAAApE,IAAA;UAAA;YACTnB,0BAA0B,GAAGmF,IAAI,CAACK,KAAK,CAACjI,KAAK,EAAE,yBAAyB,CAAC;YACzEkI,MAAM,CAACC,KAAK,GAAGP,IAAI,CAACQ,EAAE,CAAC;cAAA,OACrBlB,QAAA,CAAAzG,OAAA,CAAQ0G,OAAO,CAAC;gBACdkB,MAAM,EAAE,GAAG;gBACXC,EAAE,EAAE,IAAI;gBACRC,IAAI,EAAE,SAAAA,KAAA;kBAAA,OAAMrB,QAAA,CAAAzG,OAAA,CAAQ0G,OAAO,CAACqB,qDAAgC,CAAC;gBAAA;cAC/D,CAAC,CAAC;YAAA,CACJ,CAAc;UAAC;UAAA;YAAA,OAAAR,SAAA,CAAAvD,IAAA;QAAA;MAAA,GAAAqD,QAAA;IAAA,CAChB,GAAC;IAEF7E,EAAE,CAAC,mCAAmC,mBAAAC,kBAAA,CAAAzC,OAAA,gBAAA0C,YAAA,CAAA1C,OAAA,CAAA2C,IAAA,CAAE,SAAAqF,SAAA;MAAA,IAAAC,iBAAA,EAAAnF,QAAA,EAAAoF,0BAAA;MAAA,OAAAxF,YAAA,CAAA1C,OAAA,CAAA+C,IAAA,UAAAoF,UAAAC,SAAA;QAAA,kBAAAA,SAAA,CAAAlF,IAAA,GAAAkF,SAAA,CAAAjF,IAAA;UAAA;YAChC8E,iBAAiB,GAAG,CAAC;cAACI,OAAO,EAAE,SAAS;cAAEC,SAAS,EAAE;YAAK,CAAC,CAAC;YAAAF,SAAA,CAAAjF,IAAA;YAAA,OAC3CjB,WAAW,CAACqG,iBAAiB,CAACN,iBAAiB,CAAC;UAAA;YAAjEnF,QAAQ,GAAAsF,SAAA,CAAAzE,IAAA;YACRuE,0BAA0B,GAAGD,iBAAiB,CAACO,GAAG,CAAC,UAACC,OAAO;cAAA,OAAAlH,aAAA,CAAAA,aAAA,KAC5DkH,OAAO;gBACVJ,OAAO,EAAE,IAAIK,IAAI,CAACD,OAAO,CAACJ,OAAO,CAAC,CAACM,OAAO,CAAC;cAAC;YAAA,CAC5C,CAAC;YACH/E,MAAM,CAACd,QAAQ,CAACe,UAAU,CAAC,CAACsB,OAAO,CAAC,GAAG,CAAC;YACxCvB,MAAM,CAACd,QAAQ,CAAC,CAACqC,OAAO,CAAC4C,qDAAgC,CAAC;YAACK,SAAA,CAAAQ,EAAA,GAC3DhF,MAAM,CAAC6D,MAAM,CAACC,KAAK,CAAC;YAAAU,SAAA,CAAAS,EAAA,GAAoBC,yCAAoB;YAAAV,SAAA,CAAAW,EAAA,GAClDC,oBAAY,CAACC,IAAI;YAAAb,SAAA,CAAAc,EAAA,GAAAvH,gBAAA,CAAA3B,OAAA;YAAAoI,SAAA,CAAAe,EAAA,OAAAxH,gBAAA,CAAA3B,OAAA,MAEtBoJ,uBAAY,EAAGC,2BAAgB;YAAAjB,SAAA,CAAAjF,IAAA;YAAA,OACXrB,KAAK,CAACwH,WAAW,CAACC,YAAY,CAAC,CAAC;UAAA;YAAAnB,SAAA,CAAAoB,EAAA,GAAApB,SAAA,CAAAzE,IAAA;YAAAyE,SAAA,CAAAqB,EAAA,OAAArB,SAAA,CAAAc,EAAA,EAAAd,SAAA,CAAAe,EAAA,mBAAAf,SAAA,CAAAoB,EAAA;YAAApB,SAAA,CAAAsB,EAAA,GAEjD,IAAAC,UAAA,CAAA3J,OAAA,EAAe;cAACiI,iBAAiB,EAAEC;YAA0B,CAAC,CAAC;YAAAE,SAAA,CAAAwB,EAAA;cALrE3C,MAAM,EAAAmB,SAAA,CAAAW,EAAA;cACNc,OAAO,EAAAzB,SAAA,CAAAqB,EAAA;cAIPzE,IAAI,EAAAoD,SAAA,CAAAsB;YAAA;YAAAtB,SAAA,CAAAQ,EAAA,CANekB,kBAAkB,CAAAlJ,IAAA,CAAAwH,SAAA,CAAAQ,EAAA,EAAAR,SAAA,CAAAS,EAAA,EAAAT,SAAA,CAAAwB,EAAA;UAAA;UAAA;YAAA,OAAAxB,SAAA,CAAApE,IAAA;QAAA;MAAA,GAAAgE,QAAA;IAAA,CAQxC,GAAC;IAEFxF,EAAE,CAAC,0CAA0C,mBAAAC,kBAAA,CAAAzC,OAAA,gBAAA0C,YAAA,CAAA1C,OAAA,CAAA2C,IAAA,CAAE,SAAAoH,SAAA;MAAA,IAAA9B,iBAAA,EAAAnF,QAAA,EAAAoF,0BAAA;MAAA,OAAAxF,YAAA,CAAA1C,OAAA,CAAA+C,IAAA,UAAAiH,UAAAC,SAAA;QAAA,kBAAAA,SAAA,CAAA/G,IAAA,GAAA+G,SAAA,CAAA9G,IAAA;UAAA;YACvC8E,iBAAiB,GAAG,EAAE;YAC5BR,MAAM,CAACC,KAAK,GAAGP,IAAI,CAACQ,EAAE,CAAC;cAAA,OACrBlB,QAAA,CAAAzG,OAAA,CAAQ0G,OAAO,CAAC;gBACdkB,MAAM,EAAE,GAAG;gBACXC,EAAE,EAAE;cACN,CAAC,CAAC;YAAA,CACJ,CAAc;YAACoC,SAAA,CAAA9G,IAAA;YAAA,OACQjB,WAAW,CAACqG,iBAAiB,CAACN,iBAAiB,CAAC;UAAA;YAAjEnF,QAAQ,GAAAmH,SAAA,CAAAtG,IAAA;YACRuE,0BAA0B,GAAGD,iBAAiB,CAACO,GAAG,CAAC,UAACC,OAAO;cAAA,OAAAlH,aAAA,CAAAA,aAAA,KAC5DkH,OAAO;gBACVJ,OAAO,EAAE,IAAIK,IAAI,CAACD,OAAO,CAACJ,OAAO,CAAC,CAACM,OAAO,CAAC;cAAC;YAAA,CAC5C,CAAC;YACH/E,MAAM,CAACd,QAAQ,CAAC,CAACoH,aAAa,CAACC,sCAAiB,CAAC;YACjDvG,MAAM,CAACd,QAAQ,CAACe,UAAU,CAAC,CAACC,IAAI,CAAC,GAAG,CAAC;YAACmG,SAAA,CAAArB,EAAA,GACtChF,MAAM,CAAC6D,MAAM,CAACC,KAAK,CAAC;YAAAuC,SAAA,CAAApB,EAAA,GAAoBC,yCAAoB;YAAAmB,SAAA,CAAAlB,EAAA,GAClDC,oBAAY,CAACC,IAAI;YAAAgB,SAAA,CAAAf,EAAA,GAAAvH,gBAAA,CAAA3B,OAAA;YAAAiK,SAAA,CAAAd,EAAA,OAAAxH,gBAAA,CAAA3B,OAAA,MAEtBoJ,uBAAY,EAAGC,2BAAgB;YAAAY,SAAA,CAAA9G,IAAA;YAAA,OACXrB,KAAK,CAACwH,WAAW,CAACC,YAAY,CAAC,CAAC;UAAA;YAAAU,SAAA,CAAAT,EAAA,GAAAS,SAAA,CAAAtG,IAAA;YAAAsG,SAAA,CAAAR,EAAA,OAAAQ,SAAA,CAAAf,EAAA,EAAAe,SAAA,CAAAd,EAAA,mBAAAc,SAAA,CAAAT,EAAA;YAAAS,SAAA,CAAAP,EAAA,GAEjD,IAAAC,UAAA,CAAA3J,OAAA,EAAe;cAACiI,iBAAiB,EAAEC;YAA0B,CAAC,CAAC;YAAA+B,SAAA,CAAAL,EAAA;cALrE3C,MAAM,EAAAgD,SAAA,CAAAlB,EAAA;cACNc,OAAO,EAAAI,SAAA,CAAAR,EAAA;cAIPzE,IAAI,EAAAiF,SAAA,CAAAP;YAAA;YAAAO,SAAA,CAAArB,EAAA,CANekB,kBAAkB,CAAAlJ,IAAA,CAAAqJ,SAAA,CAAArB,EAAA,EAAAqB,SAAA,CAAApB,EAAA,EAAAoB,SAAA,CAAAL,EAAA;YAQvChG,MAAM,CAAC5B,0BAA0B,CAAC,CAAC8H,kBAAkB,CACnD;cACEjG,UAAU,EAAE;YACd,CAAC,EACDiD,aACF,CAAC;UAAC;UAAA;YAAA,OAAAmD,SAAA,CAAAjG,IAAA;QAAA;MAAA,GAAA+F,QAAA;IAAA,CACH,GAAC;IAEFvH,EAAE,CAAC,0CAA0C,mBAAAC,kBAAA,CAAAzC,OAAA,gBAAA0C,YAAA,CAAA1C,OAAA,CAAA2C,IAAA,CAAE,SAAAyH,SAAA;MAAA,IAAAnC,iBAAA,EAAAnF,QAAA,EAAAoF,0BAAA;MAAA,OAAAxF,YAAA,CAAA1C,OAAA,CAAA+C,IAAA,UAAAsH,UAAAC,SAAA;QAAA,kBAAAA,SAAA,CAAApH,IAAA,GAAAoH,SAAA,CAAAnH,IAAA;UAAA;YACvC8E,iBAAiB,GAAG,EAAE;YAC5BR,MAAM,CAACC,KAAK,GAAGP,IAAI,CAACQ,EAAE,CAAC;cAAA,OACrBlB,QAAA,CAAAzG,OAAA,CAAQ0G,OAAO,CAAC;gBACdkB,MAAM,EAAE,GAAG;gBACXC,EAAE,EAAE;cACN,CAAC,CAAC;YAAA,CACJ,CAAc;YAACyC,SAAA,CAAAnH,IAAA;YAAA,OAEQjB,WAAW,CAACqG,iBAAiB,CAACN,iBAAiB,CAAC;UAAA;YAAjEnF,QAAQ,GAAAwH,SAAA,CAAA3G,IAAA;YACRuE,0BAA0B,GAAGD,iBAAiB,CAACO,GAAG,CAAC,UAACC,OAAO;cAAA,OAAAlH,aAAA,CAAAA,aAAA,KAC5DkH,OAAO;gBACVJ,OAAO,EAAE,IAAIK,IAAI,CAACD,OAAO,CAACJ,OAAO,CAAC,CAACM,OAAO,CAAC;cAAC;YAAA,CAC5C,CAAC;YACH/E,MAAM,CAACd,QAAQ,CAAC,CAACoH,aAAa,CAACK,sCAAiB,CAAC;YACjD3G,MAAM,CAACd,QAAQ,CAACe,UAAU,CAAC,CAACC,IAAI,CAAC,GAAG,CAAC;YAACwG,SAAA,CAAA1B,EAAA,GACtChF,MAAM,CAAC6D,MAAM,CAACC,KAAK,CAAC;YAAA4C,SAAA,CAAAzB,EAAA,GAAoBC,yCAAoB;YAAAwB,SAAA,CAAAvB,EAAA,GAClDC,oBAAY,CAACC,IAAI;YAAAqB,SAAA,CAAApB,EAAA,GAAAvH,gBAAA,CAAA3B,OAAA;YAAAsK,SAAA,CAAAnB,EAAA,OAAAxH,gBAAA,CAAA3B,OAAA,MAEtBoJ,uBAAY,EAAGC,2BAAgB;YAAAiB,SAAA,CAAAnH,IAAA;YAAA,OACXrB,KAAK,CAACwH,WAAW,CAACC,YAAY,CAAC,CAAC;UAAA;YAAAe,SAAA,CAAAd,EAAA,GAAAc,SAAA,CAAA3G,IAAA;YAAA2G,SAAA,CAAAb,EAAA,OAAAa,SAAA,CAAApB,EAAA,EAAAoB,SAAA,CAAAnB,EAAA,mBAAAmB,SAAA,CAAAd,EAAA;YAAAc,SAAA,CAAAZ,EAAA,GAEjD,IAAAC,UAAA,CAAA3J,OAAA,EAAe;cAACiI,iBAAiB,EAAEC;YAA0B,CAAC,CAAC;YAAAoC,SAAA,CAAAV,EAAA;cALrE3C,MAAM,EAAAqD,SAAA,CAAAvB,EAAA;cACNc,OAAO,EAAAS,SAAA,CAAAb,EAAA;cAIPzE,IAAI,EAAAsF,SAAA,CAAAZ;YAAA;YAAAY,SAAA,CAAA1B,EAAA,CANekB,kBAAkB,CAAAlJ,IAAA,CAAA0J,SAAA,CAAA1B,EAAA,EAAA0B,SAAA,CAAAzB,EAAA,EAAAyB,SAAA,CAAAV,EAAA;YAQvChG,MAAM,CAAC5B,0BAA0B,CAAC,CAAC8H,kBAAkB,CACnD;cACEjG,UAAU,EAAE;YACd,CAAC,EACDiD,aACF,CAAC;UAAC;UAAA;YAAA,OAAAwD,SAAA,CAAAtG,IAAA;QAAA;MAAA,GAAAoG,QAAA;IAAA,CACH,GAAC;EACJ,CAAC,CAAC;AACJ,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"names":["_types","require","_testUtil","_types2","_CallHistory","_callHistoryFixtures","_types3","_constants","utils","_interopRequireWildcard","_getRequireWildcardCache","e","_WeakMap","r","t","__esModule","_typeof","default","has","get","n","__proto__","a","_Object$defineProperty","_Object$getOwnPropertyDescriptor","u","Object","prototype","hasOwnProperty","call","i","set","ownKeys","_Object$keys","_Object$getOwnPropertySymbols","o","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","_Object$getOwnPropertyDescriptors","_Object$defineProperties","webex","getTestUtilsWebex","serviceErrorCodeHandlerSpy","describe","callHistory","beforeAll","CallHistory","level","LOGGER","INFO","it","_asyncToGenerator2","_regenerator","mark","_callee","callHistoryPayload","response","wrap","_callee$","_context","prev","next","mockCallHistoryBody","request","mockResolvedValue","getCallHistoryData","SORT","DEFAULT","SORT_BY","sent","expect","statusCode","toBe","message","stop","_callee2","failurePayload","_callee2$","_context2","mockRejectedValue","ASC","START_TIME","_callee3","_callee3$","_context3","_callee4","responseDetails","_callee4$","_context4","sortedCallHistory","body","data","userSessions","toEqual","mockOn","internal","mercury","on","beforeEach","createCallHistoryClient","done","COMMON_EVENT_KEYS","CALL_HISTORY_USER_SESSION_INFO","event","MOCK_SESSION_EVENT","mock","calls","MOBIUS_EVENT_KEYS","CALL_SESSION_EVENT_INCLUSIVE","callSessionCallback","MOCK_SESSION_EVENT_LEGACY","CALL_SESSION_EVENT_LEGACY","_callee5","_callee5$","_context5","_promise","resolve","CALL_HISTORY_USER_VIEWED_SESSIONS","MOCK_SESSION_EVENT_VIEWED","CALL_SESSION_EVENT_VIEWED","methodDetails","file","CALL_HISTORY_FILE","method","afterEach","jest","clearAllMocks","_callee6","_callee6$","_context6","spyOn","global","fetch","fn","status","ok","json","MOCK_UPDATE_MISSED_CALL_RESPONSE","_callee7","endTimeSessionIds","convertedEndTimeSessionIds","_callee7$","_context7","endTime","sessionId","updateMissedCalls","map","session","Date","getTime","t0","t1","janusSetReadStateUrl","t2","HTTP_METHODS","POST","t3","t4","CONTENT_TYPE","APPLICATION_JSON","credentials","getUserToken","t5","t6","t7","_stringify","t8","headers","toBeCalledOnceWith","_callee8","_callee8$","_context8","toStrictEqual","ERROR_DETAILS_400","_callee9","_callee9$","_context9","ERROR_DETAILS_401","_callee10","ucmLinesAPIPayload","_callee10$","_context10","MOCK_LINES_API_CALL_RESPONSE","_callee11","_callee11$","_context11","error","toHaveBeenCalledWith","_callee12","fetchUCMLinesDataSpy","mockCallHistoryPayload","_callee12$","_context12","mockReturnValue","CALLING_BACKEND","UCM","MOCK_CALL_HISTORY_WITH_UCM_LINE_NUMBER","toHaveBeenCalledTimes","self","ucmLineNumber","_callee13","_callee13$","_context13","MOCK_LINES_API_CALL_RESPONSE_WITH_NO_LINEDATA","MOCK_CALL_HISTORY_WITHOUT_UCM_LINE_NUMBER","cucmDN","toBeDefined","undefined","_callee14","_callee14$","_context14","not","toHaveBeenCalled","_callee15","_callee15$","_context15","WXC"],"sources":["CallHistory.test.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-unused-vars */\n/* eslint-disable dot-notation */\n/* eslint-disable @typescript-eslint/no-shadow */\nimport {LOGGER} from '../Logger/types';\nimport {getTestUtilsWebex} from '../common/testUtil';\nimport {CALLING_BACKEND, HTTP_METHODS, SORT, SORT_BY, WebexRequestPayload} from '../common/types';\nimport {CallHistory, createCallHistoryClient} from './CallHistory';\nimport {ICallHistory} from './types';\nimport {\n sortedCallHistory,\n mockCallHistoryBody,\n MOCK_SESSION_EVENT,\n MOCK_SESSION_EVENT_LEGACY,\n MOCK_SESSION_EVENT_VIEWED,\n MOCK_UPDATE_MISSED_CALL_RESPONSE,\n janusSetReadStateUrl,\n ERROR_DETAILS_401,\n ERROR_DETAILS_400,\n MOCK_LINES_API_CALL_RESPONSE,\n MOCK_LINES_API_CALL_RESPONSE_WITH_NO_LINEDATA,\n MOCK_CALL_HISTORY_WITH_UCM_LINE_NUMBER,\n MOCK_CALL_HISTORY_WITHOUT_UCM_LINE_NUMBER,\n} from './callHistoryFixtures';\nimport {\n COMMON_EVENT_KEYS,\n CallSessionEvent,\n CallSessionViewedEvent,\n MOBIUS_EVENT_KEYS,\n} from '../Events/types';\nimport {APPLICATION_JSON, CALL_HISTORY_FILE, CONTENT_TYPE} from './constants';\nimport * as utils from '../common/Utils';\n\nconst webex = getTestUtilsWebex();\nlet serviceErrorCodeHandlerSpy: jest.SpyInstance;\ndescribe('Call history tests', () => {\n let callHistory: ICallHistory;\n\n beforeAll(() => {\n callHistory = new CallHistory(webex, {level: LOGGER.INFO});\n });\n\n it('verify successful call history case', async () => {\n const callHistoryPayload = <WebexRequestPayload>(<unknown>mockCallHistoryBody);\n\n webex.request.mockResolvedValue(callHistoryPayload);\n const response = await callHistory.getCallHistoryData(7, 10, SORT.DEFAULT, SORT_BY.DEFAULT);\n\n expect(response.statusCode).toBe(200);\n expect(response.message).toBe('SUCCESS');\n });\n\n it('verify bad request failed call history case', async () => {\n const failurePayload = {\n statusCode: 400,\n };\n const callHistoryPayload = <WebexRequestPayload>(<unknown>failurePayload);\n\n webex.request.mockRejectedValue(callHistoryPayload);\n const response = await callHistory.getCallHistoryData(7, 2000, SORT.ASC, SORT_BY.START_TIME);\n\n expect(response.statusCode).toBe(400);\n expect(response.message).toBe('FAILURE');\n });\n\n it('verify device not found call history case', async () => {\n const failurePayload = {\n statusCode: 404,\n };\n const callHistoryPayload = <WebexRequestPayload>(<unknown>failurePayload);\n\n webex.request.mockRejectedValue(callHistoryPayload);\n const response = await callHistory.getCallHistoryData(0, 0, SORT.ASC, SORT_BY.START_TIME);\n\n expect(response.statusCode).toBe(404);\n expect(response.message).toBe('FAILURE');\n });\n\n describe('sorting user session response data by sortby', () => {\n it('Array should be sort.ASC by START TIME ', async () => {\n const callHistoryPayload = <WebexRequestPayload>(<unknown>mockCallHistoryBody);\n\n webex.request.mockResolvedValue(callHistoryPayload);\n const response = await callHistory.getCallHistoryData(10, 20, SORT.ASC, SORT_BY.START_TIME);\n\n const responseDetails = {\n statusCode: sortedCallHistory.body.statusCode,\n data: {\n userSessions: sortedCallHistory.body.userSessions,\n },\n message: 'SUCCESS',\n };\n\n expect(response).toEqual(responseDetails);\n });\n });\n\n describe('Call History Session Event test', () => {\n const mockOn = webex.internal.mercury.on;\n let callHistory: ICallHistory;\n\n beforeEach(() => {\n callHistory = createCallHistoryClient(webex, {level: LOGGER.INFO});\n });\n\n it('verify the recent user session event ', (done) => {\n callHistory.on(\n COMMON_EVENT_KEYS.CALL_HISTORY_USER_SESSION_INFO,\n (event: CallSessionEvent) => {\n expect(event.data).toEqual(MOCK_SESSION_EVENT.data);\n done();\n }\n );\n\n expect(mockOn.mock.calls[0][0]).toEqual(MOBIUS_EVENT_KEYS.CALL_SESSION_EVENT_INCLUSIVE);\n const callSessionCallback = mockOn.mock.calls[0][1];\n\n callSessionCallback(MOCK_SESSION_EVENT);\n });\n\n it('verify the user session event received for locus calls', (done) => {\n callHistory.on(\n COMMON_EVENT_KEYS.CALL_HISTORY_USER_SESSION_INFO,\n (event: CallSessionEvent) => {\n expect(event.data).toEqual(MOCK_SESSION_EVENT_LEGACY.data);\n done();\n }\n );\n\n expect(mockOn.mock.calls[1][0]).toEqual(MOBIUS_EVENT_KEYS.CALL_SESSION_EVENT_LEGACY);\n const callSessionCallback = mockOn.mock.calls[1][1];\n\n callSessionCallback(MOCK_SESSION_EVENT_LEGACY);\n });\n\n it('verify the user viewed session event for missed calls update', async () => {\n await new Promise<void>((resolve) => {\n callHistory.on(\n COMMON_EVENT_KEYS.CALL_HISTORY_USER_VIEWED_SESSIONS,\n (event: CallSessionViewedEvent) => {\n expect(event.data).toEqual(MOCK_SESSION_EVENT_VIEWED.data);\n resolve();\n }\n );\n\n expect(mockOn.mock.calls[2][0]).toEqual(MOBIUS_EVENT_KEYS.CALL_SESSION_EVENT_VIEWED);\n const callSessionCallback = mockOn.mock.calls[2][1];\n\n callSessionCallback(MOCK_SESSION_EVENT_VIEWED);\n });\n });\n });\n\n describe('Update missed calls test', () => {\n const methodDetails = {\n file: CALL_HISTORY_FILE,\n method: 'updateMissedCalls',\n };\n afterEach(() => {\n jest.clearAllMocks();\n });\n beforeEach(async () => {\n serviceErrorCodeHandlerSpy = jest.spyOn(utils, 'serviceErrorCodeHandler');\n global.fetch = jest.fn(() =>\n Promise.resolve({\n status: 200,\n ok: true,\n json: () => Promise.resolve(MOCK_UPDATE_MISSED_CALL_RESPONSE),\n })\n ) as jest.Mock;\n });\n\n it('successfully updates missed calls', async () => {\n const endTimeSessionIds = [{endTime: '1234568', sessionId: '123'}];\n const response = await callHistory.updateMissedCalls(endTimeSessionIds);\n const convertedEndTimeSessionIds = endTimeSessionIds.map((session) => ({\n ...session,\n endTime: new Date(session.endTime).getTime(),\n }));\n expect(response.statusCode).toEqual(200);\n expect(response).toEqual(MOCK_UPDATE_MISSED_CALL_RESPONSE);\n expect(global.fetch).toBeCalledOnceWith(janusSetReadStateUrl, {\n method: HTTP_METHODS.POST,\n headers: {\n [CONTENT_TYPE]: APPLICATION_JSON,\n Authorization: await webex.credentials.getUserToken(),\n },\n body: JSON.stringify({endTimeSessionIds: convertedEndTimeSessionIds}),\n });\n });\n\n it('Error: updateMissedCalls throw 400 error', async () => {\n const endTimeSessionIds = [];\n global.fetch = jest.fn(() =>\n Promise.resolve({\n status: 400,\n ok: false,\n })\n ) as jest.Mock;\n const response = await callHistory.updateMissedCalls(endTimeSessionIds);\n const convertedEndTimeSessionIds = endTimeSessionIds.map((session) => ({\n ...session,\n endTime: new Date(session.endTime).getTime(),\n }));\n expect(response).toStrictEqual(ERROR_DETAILS_400);\n expect(response.statusCode).toBe(400);\n expect(global.fetch).toBeCalledOnceWith(janusSetReadStateUrl, {\n method: HTTP_METHODS.POST,\n headers: {\n [CONTENT_TYPE]: APPLICATION_JSON,\n Authorization: await webex.credentials.getUserToken(),\n },\n body: JSON.stringify({endTimeSessionIds: convertedEndTimeSessionIds}),\n });\n expect(serviceErrorCodeHandlerSpy).toBeCalledOnceWith(\n {\n statusCode: 400,\n },\n methodDetails\n );\n });\n\n it('Error: updateMissedCalls throw 401 error', async () => {\n const endTimeSessionIds = [];\n global.fetch = jest.fn(() =>\n Promise.resolve({\n status: 401,\n ok: false,\n })\n ) as jest.Mock;\n\n const response = await callHistory.updateMissedCalls(endTimeSessionIds);\n const convertedEndTimeSessionIds = endTimeSessionIds.map((session) => ({\n ...session,\n endTime: new Date(session.endTime).getTime(),\n }));\n expect(response).toStrictEqual(ERROR_DETAILS_401);\n expect(response.statusCode).toBe(401);\n expect(global.fetch).toBeCalledOnceWith(janusSetReadStateUrl, {\n method: HTTP_METHODS.POST,\n headers: {\n [CONTENT_TYPE]: APPLICATION_JSON,\n Authorization: await webex.credentials.getUserToken(),\n },\n body: JSON.stringify({endTimeSessionIds: convertedEndTimeSessionIds}),\n });\n expect(serviceErrorCodeHandlerSpy).toBeCalledOnceWith(\n {\n statusCode: 401,\n },\n methodDetails\n );\n });\n });\n\n describe('fetchUCMLinesData test', () => {\n it('verify successful UCM lines API case', async () => {\n const ucmLinesAPIPayload = <WebexRequestPayload>(<unknown>MOCK_LINES_API_CALL_RESPONSE);\n\n webex.request.mockResolvedValue(ucmLinesAPIPayload);\n const response = await callHistory['fetchUCMLinesData']();\n\n expect(response.statusCode).toBe(200);\n expect(response.message).toBe('SUCCESS');\n });\n\n it('verify bad request failed UCM lines API case', async () => {\n const failurePayload = {\n statusCode: 400,\n };\n const ucmLinesAPIPayload = <WebexRequestPayload>(<unknown>failurePayload);\n\n webex.request.mockRejectedValue(ucmLinesAPIPayload);\n const response = await callHistory['fetchUCMLinesData']();\n\n expect(response).toStrictEqual(ERROR_DETAILS_400);\n expect(response.data.error).toEqual(ERROR_DETAILS_400.data.error);\n expect(response.statusCode).toBe(400);\n expect(response.message).toBe('FAILURE');\n expect(serviceErrorCodeHandlerSpy).toHaveBeenCalledWith(\n {statusCode: 400},\n {file: 'CallHistory', method: 'fetchLinesData'}\n );\n });\n\n it('should call fetchUCMLinesData when calling backend is UCM and userSessions contain valid cucmDN', async () => {\n jest.spyOn(utils, 'getCallingBackEnd').mockReturnValue(CALLING_BACKEND.UCM);\n // Since fetchUCMLinesData is a private method, TypeScript restricts direct access to it.\n // To bypass this restriction, we are using 'as any' to access and invoke the method for testing purposes.\n const fetchUCMLinesDataSpy = jest\n .spyOn(callHistory as any, 'fetchUCMLinesData')\n .mockResolvedValue(MOCK_LINES_API_CALL_RESPONSE);\n\n const mockCallHistoryPayload = <WebexRequestPayload>(\n (<unknown>MOCK_CALL_HISTORY_WITH_UCM_LINE_NUMBER)\n );\n webex.request.mockResolvedValue(mockCallHistoryPayload);\n\n const response = await callHistory.getCallHistoryData(7, 10, SORT.DEFAULT, SORT_BY.DEFAULT);\n\n expect(fetchUCMLinesDataSpy).toHaveBeenCalledTimes(1);\n\n expect(response.statusCode).toBe(200);\n expect(\n response.data.userSessions && response.data.userSessions[0].self.ucmLineNumber\n ).toEqual(1);\n });\n\n it('should fetchUCMLinesData but not assign ucmLineNumber when UCM backend has no line data', async () => {\n jest.spyOn(utils, 'getCallingBackEnd').mockReturnValue(CALLING_BACKEND.UCM);\n\n // Since fetchUCMLinesData is a private method, TypeScript restricts direct access to it.\n // To bypass this restriction, we are using 'as any' to access and invoke the method for testing purposes.\n const fetchUCMLinesDataSpy = jest\n .spyOn(callHistory as any, 'fetchUCMLinesData')\n .mockResolvedValue(MOCK_LINES_API_CALL_RESPONSE_WITH_NO_LINEDATA);\n\n const mockCallHistoryPayload = <WebexRequestPayload>(\n (<unknown>MOCK_CALL_HISTORY_WITHOUT_UCM_LINE_NUMBER)\n );\n webex.request.mockResolvedValue(mockCallHistoryPayload);\n\n const response = await callHistory.getCallHistoryData(7, 10, SORT.DEFAULT, SORT_BY.DEFAULT);\n\n expect(fetchUCMLinesDataSpy).toHaveBeenCalledTimes(1);\n\n expect(response.statusCode).toBe(200);\n expect(response.data.userSessions && response.data.userSessions[0].self.cucmDN).toBeDefined();\n expect(\n response.data.userSessions && response.data.userSessions[0].self.ucmLineNumber\n ).toEqual(undefined);\n });\n\n it('should not call fetchUCMLinesData when calling backend is UCM but no valid cucmDN is present', async () => {\n jest.spyOn(utils, 'getCallingBackEnd').mockReturnValue(CALLING_BACKEND.UCM);\n // Since fetchUCMLinesData is a private method, TypeScript restricts direct access to it.\n // To bypass this restriction, we are using 'as any' to access and invoke the method for testing purposes.\n const fetchUCMLinesDataSpy = jest\n .spyOn(callHistory as any, 'fetchUCMLinesData')\n .mockResolvedValue({});\n\n const callHistoryPayload = <WebexRequestPayload>(<unknown>mockCallHistoryBody);\n webex.request.mockResolvedValue(callHistoryPayload);\n\n await callHistory.getCallHistoryData(7, 10, SORT.DEFAULT, SORT_BY.DEFAULT);\n\n expect(fetchUCMLinesDataSpy).not.toHaveBeenCalled();\n });\n\n it('should not call fetchUCMLinesData when calling backend is not UCM', async () => {\n jest.spyOn(utils, 'getCallingBackEnd').mockReturnValue(CALLING_BACKEND.WXC);\n // Since fetchUCMLinesData is a private method, TypeScript restricts direct access to it.\n // To bypass this restriction, we are using 'as any' to access and invoke the method for testing purposes.\n const fetchUCMLinesDataSpy = jest\n .spyOn(callHistory as any, 'fetchUCMLinesData')\n .mockResolvedValue({});\n\n const callHistoryPayload = <WebexRequestPayload>(<unknown>mockCallHistoryBody);\n webex.request.mockResolvedValue(callHistoryPayload);\n await callHistory.getCallHistoryData(7, 10, SORT.DEFAULT, SORT_BY.DEFAULT);\n expect(fetchUCMLinesDataSpy).not.toHaveBeenCalled(); // Check that fetchUCMLinesData was not called\n });\n });\n});\n"],"mappings":"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"}
|