@webex/calling 3.12.0-next.9 → 3.12.0-task-refactor.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/dist/CallHistory/CallHistory.js +51 -68
  2. package/dist/CallHistory/CallHistory.js.map +1 -1
  3. package/dist/CallingClient/CallingClient.js +18 -115
  4. package/dist/CallingClient/CallingClient.js.map +1 -1
  5. package/dist/CallingClient/CallingClient.test.js +6 -121
  6. package/dist/CallingClient/CallingClient.test.js.map +1 -1
  7. package/dist/CallingClient/calling/call.js +9 -10
  8. package/dist/CallingClient/calling/call.js.map +1 -1
  9. package/dist/CallingClient/calling/call.test.js +379 -520
  10. package/dist/CallingClient/calling/call.test.js.map +1 -1
  11. package/dist/CallingClient/calling/callManager.js +0 -7
  12. package/dist/CallingClient/calling/callManager.js.map +1 -1
  13. package/dist/CallingClient/constants.js +2 -4
  14. package/dist/CallingClient/constants.js.map +1 -1
  15. package/dist/CallingClient/registration/register.js +0 -16
  16. package/dist/CallingClient/registration/register.js.map +1 -1
  17. package/dist/CallingClient/registration/types.js.map +1 -1
  18. package/dist/CallingClient/types.js.map +1 -1
  19. package/dist/Events/types.js +11 -1
  20. package/dist/Events/types.js.map +1 -1
  21. package/dist/common/Utils.js +0 -2
  22. package/dist/common/Utils.js.map +1 -1
  23. package/dist/common/Utils.test.js +2 -2
  24. package/dist/common/Utils.test.js.map +1 -1
  25. package/dist/common/types.js.map +1 -1
  26. package/dist/module/CallHistory/CallHistory.js +17 -28
  27. package/dist/module/CallingClient/CallingClient.js +1 -43
  28. package/dist/module/CallingClient/calling/call.js +3 -4
  29. package/dist/module/CallingClient/calling/callManager.js +0 -7
  30. package/dist/module/CallingClient/constants.js +0 -2
  31. package/dist/module/CallingClient/registration/register.js +0 -8
  32. package/dist/module/Events/types.js +10 -0
  33. package/dist/module/common/Utils.js +0 -2
  34. package/dist/types/CallHistory/CallHistory.d.ts.map +1 -1
  35. package/dist/types/CallingClient/CallingClient.d.ts +1 -2
  36. package/dist/types/CallingClient/CallingClient.d.ts.map +1 -1
  37. package/dist/types/CallingClient/calling/call.d.ts.map +1 -1
  38. package/dist/types/CallingClient/calling/callManager.d.ts.map +1 -1
  39. package/dist/types/CallingClient/constants.d.ts +0 -2
  40. package/dist/types/CallingClient/constants.d.ts.map +1 -1
  41. package/dist/types/CallingClient/registration/register.d.ts +1 -2
  42. package/dist/types/CallingClient/registration/register.d.ts.map +1 -1
  43. package/dist/types/CallingClient/registration/types.d.ts +1 -2
  44. package/dist/types/CallingClient/registration/types.d.ts.map +1 -1
  45. package/dist/types/CallingClient/types.d.ts +1 -2
  46. package/dist/types/CallingClient/types.d.ts.map +1 -1
  47. package/dist/types/Events/types.d.ts +10 -0
  48. package/dist/types/Events/types.d.ts.map +1 -1
  49. package/dist/types/common/Utils.d.ts.map +1 -1
  50. package/dist/types/common/types.d.ts +0 -4
  51. package/dist/types/common/types.d.ts.map +1 -1
  52. package/package.json +4 -4
@@ -160,8 +160,7 @@ var CallHistory = exports.CallHistory = /*#__PURE__*/function (_Eventing) {
160
160
  errorInfo,
161
161
  errorStatus,
162
162
  _args4 = arguments,
163
- _t,
164
- _t2;
163
+ _t;
165
164
  return _regenerator.default.wrap(function (_context4) {
166
165
  while (1) switch (_context4.prev = _context4.next) {
167
166
  case 0:
@@ -209,14 +208,13 @@ var CallHistory = exports.CallHistory = /*#__PURE__*/function (_Eventing) {
209
208
  });
210
209
  }
211
210
  }
212
- // Check the calling backend (BEMS01958007: non-fatal so /lines or uploadLogs failure does not drop call history)
211
+ // Check the calling backend
213
212
  if (!(callingBackend === _types.CALLING_BACKEND.UCM)) {
214
- _context4.next = 7;
213
+ _context4.next = 4;
215
214
  break;
216
215
  }
217
- _context4.prev = 3;
218
216
  if (!(this.userSessions[_constants2.USER_SESSIONS] && this.userSessions[_constants2.USER_SESSIONS].length > 0)) {
219
- _context4.next = 5;
217
+ _context4.next = 4;
220
218
  break;
221
219
  }
222
220
  // Check if cucmDN exists and is valid in any of the userSessions
@@ -224,13 +222,12 @@ var CallHistory = exports.CallHistory = /*#__PURE__*/function (_Eventing) {
224
222
  return session.self.cucmDN && session.self.cucmDN.length > 0;
225
223
  }); // If any user session has cucmDN, proceed to fetch line data
226
224
  if (!hasCucmDN) {
227
- _context4.next = 5;
225
+ _context4.next = 4;
228
226
  break;
229
227
  }
230
- _Logger.default.info('Fetching UCM lines data for call history enrichment', this.loggerContext);
231
- _context4.next = 4;
228
+ _context4.next = 3;
232
229
  return this.fetchUCMLinesData();
233
- case 4:
230
+ case 3:
234
231
  ucmLinesResponse = _context4.sent;
235
232
  // Check if the Lines API response was successful
236
233
  if (ucmLinesResponse.statusCode === 200 && (_ucmLinesResponse$dat = ucmLinesResponse.data.lines) !== null && _ucmLinesResponse$dat !== void 0 && _ucmLinesResponse$dat.devices) {
@@ -247,22 +244,8 @@ var CallHistory = exports.CallHistory = /*#__PURE__*/function (_Eventing) {
247
244
  });
248
245
  }
249
246
  });
250
- _Logger.default.log("UCM line number enrichment completed", this.loggerContext);
251
- } else {
252
- _Logger.default.info("UCM lines API returned statusCode ".concat(ucmLinesResponse === null || ucmLinesResponse === void 0 ? void 0 : ucmLinesResponse.statusCode, " or no devices, ") + 'returning call history without line number enrichment', this.loggerContext);
253
247
  }
254
- case 5:
255
- _context4.next = 7;
256
- break;
257
- case 6:
258
- _context4.prev = 6;
259
- _t = _context4["catch"](3);
260
- _Logger.default.warn("UCM lines fetch or enrich failed, returning call history without line numbers: ".concat((0, _stringify.default)(_t)), {
261
- file: _constants.CALL_HISTORY_FILE,
262
- method: _constants.METHODS.GET_CALL_HISTORY_DATA
263
- });
264
- // Continue and return userSessions without ucmLineNumber enrichment
265
- case 7:
248
+ case 4:
266
249
  responseDetails = {
267
250
  statusCode: this.userSessions[_constants2.STATUS_CODE],
268
251
  data: {
@@ -272,24 +255,24 @@ var CallHistory = exports.CallHistory = /*#__PURE__*/function (_Eventing) {
272
255
  };
273
256
  _Logger.default.log("Successfully retrieved call history data with ".concat(this.userSessions[_constants2.USER_SESSIONS].length, " records"), this.loggerContext);
274
257
  return _context4.abrupt("return", responseDetails);
275
- case 8:
276
- _context4.prev = 8;
277
- _t2 = _context4["catch"](1);
278
- _Logger.default.error("Failed to get call history: ".concat((0, _stringify.default)(_t2)), {
258
+ case 5:
259
+ _context4.prev = 5;
260
+ _t = _context4["catch"](1);
261
+ _Logger.default.error("Failed to get call history: ".concat((0, _stringify.default)(_t)), {
279
262
  file: _constants.CALL_HISTORY_FILE,
280
263
  method: _constants.METHODS.GET_CALL_HISTORY_DATA
281
264
  });
282
- _context4.next = 9;
265
+ _context4.next = 6;
283
266
  return (0, _Utils.uploadLogs)();
284
- case 9:
285
- errorInfo = _t2;
267
+ case 6:
268
+ errorInfo = _t;
286
269
  errorStatus = (0, _Utils.serviceErrorCodeHandler)(errorInfo, this.loggerContext);
287
270
  return _context4.abrupt("return", errorStatus);
288
- case 10:
271
+ case 7:
289
272
  case "end":
290
273
  return _context4.stop();
291
274
  }
292
- }, _callee4, this, [[1, 8], [3, 6]]);
275
+ }, _callee4, this, [[1, 5]]);
293
276
  }));
294
277
  function getCallHistoryData() {
295
278
  return _getCallHistoryData.apply(this, arguments);
@@ -306,7 +289,7 @@ var CallHistory = exports.CallHistory = /*#__PURE__*/function (_Eventing) {
306
289
  key: "updateMissedCalls",
307
290
  value: (function () {
308
291
  var _updateMissedCalls = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee5(endTimeSessionIds) {
309
- var loggerContext, santizedSessionIds, requestBody, _response$headers, updateMissedCallContentUrl, response, data, responseDetails, errorInfo, errorStatus, _t3, _t4, _t5, _t6, _t7, _t8, _t9, _t0;
292
+ var loggerContext, santizedSessionIds, requestBody, _response$headers, updateMissedCallContentUrl, response, data, responseDetails, errorInfo, errorStatus, _t2, _t3, _t4, _t5, _t6, _t7, _t8, _t9;
310
293
  return _regenerator.default.wrap(function (_context5) {
311
294
  while (1) switch (_context5.prev = _context5.next) {
312
295
  case 0:
@@ -325,21 +308,21 @@ var CallHistory = exports.CallHistory = /*#__PURE__*/function (_Eventing) {
325
308
  _Logger.default.info("".concat(_constants2.METHOD_START_MESSAGE, " with sessions: ").concat((0, _stringify.default)(santizedSessionIds)), loggerContext);
326
309
  _context5.prev = 1;
327
310
  updateMissedCallContentUrl = "".concat(this.janusUrl, "/").concat(_constants.HISTORY, "/").concat(_constants2.USER_SESSIONS, "/").concat(_constants.UPDATE_MISSED_CALLS_ENDPOINT); // Make a POST request to update missed calls
328
- _t3 = fetch;
329
- _t4 = updateMissedCallContentUrl;
330
- _t5 = _types.HTTP_METHODS.POST;
331
- _t6 = _defineProperty2.default;
332
- _t7 = (0, _defineProperty2.default)({}, _constants.CONTENT_TYPE, _constants.APPLICATION_JSON);
311
+ _t2 = fetch;
312
+ _t3 = updateMissedCallContentUrl;
313
+ _t4 = _types.HTTP_METHODS.POST;
314
+ _t5 = _defineProperty2.default;
315
+ _t6 = (0, _defineProperty2.default)({}, _constants.CONTENT_TYPE, _constants.APPLICATION_JSON);
333
316
  _context5.next = 2;
334
317
  return this.webex.credentials.getUserToken();
335
318
  case 2:
336
- _t8 = _t6(_t7, "Authorization", _context5.sent);
337
- _t9 = (0, _stringify.default)(requestBody);
319
+ _t7 = _t5(_t6, "Authorization", _context5.sent);
320
+ _t8 = (0, _stringify.default)(requestBody);
338
321
  _context5.next = 3;
339
- return _t3(_t4, {
340
- method: _t5,
341
- headers: _t8,
342
- body: _t9
322
+ return _t2(_t3, {
323
+ method: _t4,
324
+ headers: _t7,
325
+ body: _t8
343
326
  });
344
327
  case 3:
345
328
  response = _context5.sent;
@@ -366,8 +349,8 @@ var CallHistory = exports.CallHistory = /*#__PURE__*/function (_Eventing) {
366
349
  return _context5.abrupt("return", responseDetails);
367
350
  case 6:
368
351
  _context5.prev = 6;
369
- _t0 = _context5["catch"](1);
370
- _Logger.default.error("Failed to update missed calls: ".concat((0, _stringify.default)(_t0)), {
352
+ _t9 = _context5["catch"](1);
353
+ _Logger.default.error("Failed to update missed calls: ".concat((0, _stringify.default)(_t9)), {
371
354
  file: _constants.CALL_HISTORY_FILE,
372
355
  method: _constants.METHODS.UPDATE_MISSED_CALLS
373
356
  });
@@ -376,7 +359,7 @@ var CallHistory = exports.CallHistory = /*#__PURE__*/function (_Eventing) {
376
359
  case 7:
377
360
  // Catch the 401 error from try block, return the error object to user
378
361
  errorInfo = {
379
- statusCode: _t0 instanceof Error ? Number(_t0.message) : ''
362
+ statusCode: _t9 instanceof Error ? Number(_t9.message) : ''
380
363
  };
381
364
  errorStatus = (0, _Utils.serviceErrorCodeHandler)(errorInfo, loggerContext);
382
365
  return _context5.abrupt("return", errorStatus);
@@ -400,7 +383,7 @@ var CallHistory = exports.CallHistory = /*#__PURE__*/function (_Eventing) {
400
383
  key: "fetchUCMLinesData",
401
384
  value: (function () {
402
385
  var _fetchUCMLinesData = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee6() {
403
- var loggerContext, vgEndpoint, userId, orgId, linesURIForUCM, _response$headers2, response, ucmLineDetails, errorInfo, errorStatus, _t1;
386
+ var loggerContext, vgEndpoint, userId, orgId, linesURIForUCM, _response$headers2, response, ucmLineDetails, errorInfo, errorStatus, _t0;
404
387
  return _regenerator.default.wrap(function (_context6) {
405
388
  while (1) switch (_context6.prev = _context6.next) {
406
389
  case 0:
@@ -433,15 +416,15 @@ var CallHistory = exports.CallHistory = /*#__PURE__*/function (_Eventing) {
433
416
  return _context6.abrupt("return", ucmLineDetails);
434
417
  case 3:
435
418
  _context6.prev = 3;
436
- _t1 = _context6["catch"](1);
437
- _Logger.default.error("Failed to fetch UCM lines data: ".concat((0, _stringify.default)(_t1)), {
419
+ _t0 = _context6["catch"](1);
420
+ _Logger.default.error("Failed to fetch UCM lines data: ".concat((0, _stringify.default)(_t0)), {
438
421
  file: _constants.CALL_HISTORY_FILE,
439
422
  method: _constants.METHODS.FETCH_UCM_LINES_DATA
440
423
  });
441
424
  _context6.next = 4;
442
425
  return (0, _Utils.uploadLogs)();
443
426
  case 4:
444
- errorInfo = _t1;
427
+ errorInfo = _t0;
445
428
  errorStatus = (0, _Utils.serviceErrorCodeHandler)(errorInfo, loggerContext);
446
429
  return _context6.abrupt("return", errorStatus);
447
430
  case 5:
@@ -465,7 +448,7 @@ var CallHistory = exports.CallHistory = /*#__PURE__*/function (_Eventing) {
465
448
  key: "deleteCallHistoryRecords",
466
449
  value: (function () {
467
450
  var _deleteCallHistoryRecords = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee7(deleteSessionIds) {
468
- var loggerContext, invalidSessions, invalidSessionIds, santizedSessionIds, deleteRequestBody, _response$headers3, deleteCallHistoryRecordContentUrl, response, data, responseDetails, errorInfo, errorStatus, _t10, _t11, _t12, _t13, _t14, _t15, _t16, _t17;
451
+ var loggerContext, invalidSessions, invalidSessionIds, santizedSessionIds, deleteRequestBody, _response$headers3, deleteCallHistoryRecordContentUrl, response, data, responseDetails, errorInfo, errorStatus, _t1, _t10, _t11, _t12, _t13, _t14, _t15, _t16;
469
452
  return _regenerator.default.wrap(function (_context7) {
470
453
  while (1) switch (_context7.prev = _context7.next) {
471
454
  case 0:
@@ -505,21 +488,21 @@ var CallHistory = exports.CallHistory = /*#__PURE__*/function (_Eventing) {
505
488
  };
506
489
  _context7.prev = 2;
507
490
  deleteCallHistoryRecordContentUrl = "".concat(this.janusUrl, "/").concat(_constants.HISTORY, "/").concat(_constants2.USER_SESSIONS, "/").concat(_constants.DELETE_CALL_HISTORY_RECORDS_ENDPOINT); // Make a POST request to delete call history records
508
- _t10 = fetch;
509
- _t11 = deleteCallHistoryRecordContentUrl;
510
- _t12 = _types.HTTP_METHODS.POST;
511
- _t13 = _defineProperty2.default;
512
- _t14 = (0, _defineProperty2.default)({}, _constants.CONTENT_TYPE, _constants.APPLICATION_JSON);
491
+ _t1 = fetch;
492
+ _t10 = deleteCallHistoryRecordContentUrl;
493
+ _t11 = _types.HTTP_METHODS.POST;
494
+ _t12 = _defineProperty2.default;
495
+ _t13 = (0, _defineProperty2.default)({}, _constants.CONTENT_TYPE, _constants.APPLICATION_JSON);
513
496
  _context7.next = 3;
514
497
  return this.webex.credentials.getUserToken();
515
498
  case 3:
516
- _t15 = _t13(_t14, "Authorization", _context7.sent);
517
- _t16 = (0, _stringify.default)(deleteRequestBody);
499
+ _t14 = _t12(_t13, "Authorization", _context7.sent);
500
+ _t15 = (0, _stringify.default)(deleteRequestBody);
518
501
  _context7.next = 4;
519
- return _t10(_t11, {
520
- method: _t12,
521
- headers: _t15,
522
- body: _t16
502
+ return _t1(_t10, {
503
+ method: _t11,
504
+ headers: _t14,
505
+ body: _t15
523
506
  });
524
507
  case 4:
525
508
  response = _context7.sent;
@@ -545,8 +528,8 @@ var CallHistory = exports.CallHistory = /*#__PURE__*/function (_Eventing) {
545
528
  return _context7.abrupt("return", responseDetails);
546
529
  case 7:
547
530
  _context7.prev = 7;
548
- _t17 = _context7["catch"](2);
549
- _Logger.default.error("Failed to delete call history records: ".concat((0, _stringify.default)(_t17)), {
531
+ _t16 = _context7["catch"](2);
532
+ _Logger.default.error("Failed to delete call history records: ".concat((0, _stringify.default)(_t16)), {
550
533
  file: _constants.CALL_HISTORY_FILE,
551
534
  method: _constants.METHODS.DELETE_CALL_HISTORY_RECORDS
552
535
  });
@@ -555,7 +538,7 @@ var CallHistory = exports.CallHistory = /*#__PURE__*/function (_Eventing) {
555
538
  case 8:
556
539
  // Catch the 401 error from try block, return the error object to user
557
540
  errorInfo = {
558
- statusCode: _t17 instanceof Error ? Number(_t17.message) : ''
541
+ statusCode: _t16 instanceof Error ? Number(_t16.message) : ''
559
542
  };
560
543
  errorStatus = (0, _Utils.serviceErrorCodeHandler)(errorInfo, loggerContext);
561
544
  return _context7.abrupt("return", errorStatus);
@@ -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","_callSuper","_getPrototypeOf2","_possibleConstructorReturn2","_isNativeReflectConstruct","_Reflect$construct","constructor","Boolean","prototype","valueOf","call","CallHistory","exports","_Eventing","webex","logger","_this$webex$internal$","_this","_classCallCheck2","file","CALL_HISTORY_FILE","method","METHODS","GET_CALL_HISTORY_DATA","_ref","_asyncToGenerator2","_regenerator","mark","_callee","event","wrap","_context","prev","next","data","userSessions","emit","COMMON_EVENT_KEYS","CALL_HISTORY_USER_SESSION_INFO","stop","_x","_ref2","_callee2","_context2","userReadSessions","CALL_HISTORY_USER_VIEWED_SESSIONS","_x2","_ref3","_callee3","_context3","deletedSessions","CALL_HISTORY_USER_SESSIONS_DELETED","_x3","sdkConnector","SDKConnector","getWebex","setWebex","janusUrl","internal","services","_serviceUrls","janus","get","_activeServices","registerSessionsListener","log","setLogger","level","_inherits2","_createClass2","key","value","_getCallHistoryData","_callee4","days","limit","sort","sortBy","date","callingBackend","sortByParam","sortParam","sharedSessionsParam","url","_janusResponse$header","janusResponse","hasCucmDN","_ucmLinesResponse$dat","ucmLinesResponse","ucmLinesData","responseDetails","errorInfo","errorStatus","_args4","_t","_t2","_context4","undefined","NUMBER_OF_DAYS","LIMIT","SORT","DEFAULT","SORT_BY","Date","getCallingBackEnd","setDate","getDate","fromDate","toISOString","_values","includes","info","concat","METHOD_START_MESSAGE","loggerContext","CALLING_BACKEND","WXC","HISTORY","USER_SESSIONS","FROM_DATE","request","uri","HTTP_METHODS","GET","service","ALLOWED_SERVICES","JANUS","sent","headers","trackingid","body","START_TIME","DESC","element","compareElement","getTime","ASC","UCM","some","session","self","cucmDN","fetchUCMLinesData","statusCode","lines","devices","device","line","dnorpattern","ucmLineNumber","index","warn","_stringify","STATUS_CODE","message","SUCCESS_MESSAGE","abrupt","error","uploadLogs","serviceErrorCodeHandler","getCallHistoryData","_updateMissedCalls","_callee5","endTimeSessionIds","santizedSessionIds","requestBody","_response$headers","updateMissedCallContentUrl","response","_t3","_t4","_t5","_t6","_t7","_t8","_t9","_t0","_context5","UPDATE_MISSED_CALLS","map","endTime","UPDATE_MISSED_CALLS_ENDPOINT","fetch","POST","CONTENT_TYPE","APPLICATION_JSON","credentials","getUserToken","ok","Error","status","json","readStatusMessage","SET_READ_STATE_SUCCESS_MESSAGE","Number","updateMissedCalls","_x4","_fetchUCMLinesData","_callee6","vgEndpoint","userId","orgId","linesURIForUCM","_response$headers2","ucmLineDetails","_t1","_context6","FETCH_UCM_LINES_DATA","getVgActionEndpoint","VERSION_1","UNIFIED_COMMUNICATIONS","CONFIG","PEOPLE","LINES","ORG_ID","_deleteCallHistoryRecords","_callee7","deleteSessionIds","invalidSessions","invalidSessionIds","deleteRequestBody","_response$headers3","deleteCallHistoryRecordContentUrl","_t10","_t11","_t12","_t13","_t14","_t15","_t16","_t17","_context7","DELETE_CALL_HISTORY_RECORDS","_isNan","sessionId","join","deleteStatusMessage","SET_DELETE_CALL_RECORDS_INVALID_DATE_FORMAT_MESSAGE","FAILURE_MESSAGE","DELETE_CALL_HISTORY_RECORDS_ENDPOINT","SET_DELETE_CALL_RECORDS_SUCCESS_MESSAGE","deleteCallHistoryRecords","_x5","registerListener","MOBIUS_EVENT_KEYS","CALL_SESSION_EVENT_INCLUSIVE","handleSessionEvents","CALL_SESSION_EVENT_LEGACY","CALL_SESSION_EVENT_VIEWED","handleUserReadSessionEvents","CALL_SESSION_EVENT_DELETED","handleUserSessionsDeletedEvents","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 DeleteCallHistoryRecordsResponse,\n} from './types';\nimport log from '../Logger';\nimport {\n serviceErrorCodeHandler,\n getVgActionEndpoint,\n getCallingBackEnd,\n uploadLogs,\n} 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 DELETE_CALL_HISTORY_RECORDS_ENDPOINT,\n SET_DELETE_CALL_RECORDS_SUCCESS_MESSAGE,\n SET_DELETE_CALL_RECORDS_INVALID_DATE_FORMAT_MESSAGE,\n METHODS,\n} from './constants';\nimport {\n FAILURE_MESSAGE,\n METHOD_START_MESSAGE,\n STATUS_CODE,\n SUCCESS_MESSAGE,\n USER_SESSIONS,\n} 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 CallSessionDeletedEvent,\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: METHODS.GET_CALL_HISTORY_DATA,\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 =\n this.webex.internal.services._serviceUrls?.janus ||\n this.webex.internal.services.get(this.webex.internal.services._activeServices.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 const callingBackend = getCallingBackEnd(this.webex);\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.info(\n `${METHOD_START_MESSAGE} with days=${days}, limit=${limit}, sort=${sortParam}, sortBy=${sortByParam}`,\n this.loggerContext\n );\n\n log.info(`Janus API URL: ${this.janusUrl}`, this.loggerContext);\n log.info(`Call history from date : ${this.fromDate}`, this.loggerContext);\n\n // Add includeSharedSessions=true parameter for WXC backend to fetch calls with sessionType \"WEBEXCALLING_SHARED\"\n const sharedSessionsParam =\n callingBackend === CALLING_BACKEND.WXC ? '&includeSharedSessions=true' : '';\n log.info(\n `Fetching call history for ${callingBackend} backend${\n callingBackend === CALLING_BACKEND.WXC ? ' with shared sessions' : ''\n }`,\n this.loggerContext\n );\n const url = `${this.janusUrl}/${HISTORY}/${USER_SESSIONS}${FROM_DATE}=${this.fromDate}&limit=${limit}&includeNewSessionTypes=true&sort=${sortParam}${sharedSessionsParam}`;\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 log.log(`Response trackingId: ${janusResponse?.headers?.trackingid}`, this.loggerContext);\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 (BEMS01958007: non-fatal so /lines or uploadLogs failure does not drop call history)\n if (callingBackend === CALLING_BACKEND.UCM) {\n try {\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 log.info('Fetching UCM lines data for call history enrichment', this.loggerContext);\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 log.log(`UCM line number enrichment completed`, this.loggerContext);\n } else {\n log.info(\n `UCM lines API returned statusCode ${ucmLinesResponse?.statusCode} or no devices, ` +\n 'returning call history without line number enrichment',\n this.loggerContext\n );\n }\n }\n }\n } catch (ucmErr: unknown) {\n log.warn(\n `UCM lines fetch or enrich failed, returning call history without line numbers: ${JSON.stringify(\n ucmErr\n )}`,\n {file: CALL_HISTORY_FILE, method: METHODS.GET_CALL_HISTORY_DATA}\n );\n // Continue and return userSessions without ucmLineNumber enrichment\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 log.log(\n `Successfully retrieved call history data with ${this.userSessions[USER_SESSIONS].length} records`,\n this.loggerContext\n );\n\n return responseDetails;\n } catch (err: unknown) {\n log.error(`Failed to get call history: ${JSON.stringify(err)}`, {\n file: CALL_HISTORY_FILE,\n method: METHODS.GET_CALL_HISTORY_DATA,\n });\n await uploadLogs();\n\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: METHODS.UPDATE_MISSED_CALLS,\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\n log.info(\n `${METHOD_START_MESSAGE} with sessions: ${JSON.stringify(santizedSessionIds)}`,\n loggerContext\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 log.log(`Response trackingId: ${response.headers?.get('trackingid')}`, loggerContext);\n\n const data: UpdateMissedCallsResponse = await response.json();\n log.log(`Missed calls are successfully 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 log.log(`Successfully updated ${santizedSessionIds?.length} missed calls`, loggerContext);\n\n return responseDetails;\n } catch (err: unknown) {\n log.error(`Failed to update missed calls: ${JSON.stringify(err)}`, {\n file: CALL_HISTORY_FILE,\n method: METHODS.UPDATE_MISSED_CALLS,\n });\n await uploadLogs();\n\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: METHODS.FETCH_UCM_LINES_DATA,\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 log.info(`${METHOD_START_MESSAGE} with URL: ${linesURIForUCM}`, loggerContext);\n try {\n const response = <WebexRequestPayload>await this.webex.request({\n uri: `${linesURIForUCM}`,\n method: HTTP_METHODS.GET,\n });\n\n log.log(`Response trackingId: ${response?.headers?.trackingid}`, loggerContext);\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.log(`Line details fetched successfully`, loggerContext);\n\n return ucmLineDetails;\n } catch (err: unknown) {\n log.error(`Failed to fetch UCM lines data: ${JSON.stringify(err)}`, {\n file: CALL_HISTORY_FILE,\n method: METHODS.FETCH_UCM_LINES_DATA,\n });\n await uploadLogs();\n const errorInfo = err as WebexRequestPayload;\n const errorStatus = serviceErrorCodeHandler(errorInfo, loggerContext);\n\n return errorStatus;\n }\n }\n\n /**\n * Function to delete the call history records using sessionId and endTime.\n * @param deleteSessionIds - An array of objects containing endTime and sessionId of the call history records\n * @returns {Promise} Resolves to an object of type {@link DeleteCallHistoryRecordsResponse}.Response details with success or error status.\n */\n public async deleteCallHistoryRecords(\n deleteSessionIds: EndTimeSessionId[]\n ): Promise<DeleteCallHistoryRecordsResponse> {\n const loggerContext = {\n file: CALL_HISTORY_FILE,\n method: METHODS.DELETE_CALL_HISTORY_RECORDS,\n };\n\n // Collect all sessions with invalid dates (endTime) in an array\n const invalidSessions = deleteSessionIds.filter((session) =>\n Number.isNaN(new Date(session.endTime).getTime())\n );\n\n log.info(\n `${METHOD_START_MESSAGE} with sessions: ${JSON.stringify(deleteSessionIds)}`,\n loggerContext\n );\n\n if (invalidSessions.length > 0) {\n // If there are invalid sessions, return an error with details\n const invalidSessionIds = invalidSessions.map((session) => session.sessionId).join(', ');\n log.info(\n `The provided date is malformed or invalid for session IDs: ${invalidSessionIds}`,\n loggerContext\n );\n\n return {\n statusCode: 400,\n data: {\n deleteStatusMessage: SET_DELETE_CALL_RECORDS_INVALID_DATE_FORMAT_MESSAGE,\n },\n message: FAILURE_MESSAGE,\n };\n }\n\n // Convert endTime to milliseconds for each sessionId\n const santizedSessionIds: SanitizedEndTimeAndSessionId[] = deleteSessionIds.map((session) => ({\n ...session,\n endTime: new Date(session.endTime).getTime(),\n }));\n\n const deleteRequestBody = {\n deleteSessionIds: santizedSessionIds,\n };\n\n try {\n const deleteCallHistoryRecordContentUrl = `${this.janusUrl}/${HISTORY}/${USER_SESSIONS}/${DELETE_CALL_HISTORY_RECORDS_ENDPOINT}`;\n // Make a POST request to delete call history records\n const response = await fetch(deleteCallHistoryRecordContentUrl, {\n method: HTTP_METHODS.POST,\n headers: {\n [CONTENT_TYPE]: APPLICATION_JSON,\n Authorization: await this.webex.credentials.getUserToken(),\n },\n body: JSON.stringify(deleteRequestBody),\n });\n if (!response.ok) {\n throw new Error(`${response.status}`);\n }\n\n log.log(`Response trackingId: ${response.headers?.get('trackingid')}`, loggerContext);\n\n const data: DeleteCallHistoryRecordsResponse = await response.json();\n log.log(\n `Successfully deleted ${santizedSessionIds?.length} call history records`,\n loggerContext\n );\n const responseDetails: DeleteCallHistoryRecordsResponse = {\n statusCode: data.statusCode as number,\n data: {\n deleteStatusMessage: SET_DELETE_CALL_RECORDS_SUCCESS_MESSAGE,\n },\n message: SUCCESS_MESSAGE,\n };\n\n return responseDetails;\n } catch (err: unknown) {\n log.error(`Failed to delete call history records: ${JSON.stringify(err)}`, {\n file: CALL_HISTORY_FILE,\n method: METHODS.DELETE_CALL_HISTORY_RECORDS,\n });\n await uploadLogs();\n\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 handleUserSessionsDeletedEvents = async (event?: CallSessionDeletedEvent) => {\n if (event && event.data.deletedSessions) {\n this.emit(\n COMMON_EVENT_KEYS.CALL_HISTORY_USER_SESSIONS_DELETED,\n event as CallSessionDeletedEvent\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 this.sdkConnector.registerListener<CallSessionDeletedEvent>(\n MOBIUS_EVENT_KEYS.CALL_SESSION_EVENT_DELETED,\n this.handleUserSessionsDeletedEvents\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;AAgBA,IAAAE,OAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,MAAA,GAAAH,OAAA;AAMA,IAAAI,UAAA,GAAAJ,OAAA;AAqBA,IAAAK,WAAA,GAAAL,OAAA;AAOA,IAAAM,OAAA,GAAAN,OAAA;AAYA,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,WAAAnB,CAAA,EAAAG,CAAA,EAAAL,CAAA,WAAAK,CAAA,OAAAiB,gBAAA,CAAAL,OAAA,EAAAZ,CAAA,OAAAkB,2BAAA,CAAAN,OAAA,EAAAf,CAAA,EAAAsB,yBAAA,KAAAC,kBAAA,CAAApB,CAAA,EAAAL,CAAA,YAAAsB,gBAAA,CAAAL,OAAA,EAAAf,CAAA,EAAAwB,WAAA,IAAArB,CAAA,CAAAK,KAAA,CAAAR,CAAA,EAAAF,CAAA;AAAA,SAAAwB,0BAAA,cAAAtB,CAAA,IAAAyB,OAAA,CAAAC,SAAA,CAAAC,OAAA,CAAAC,IAAA,CAAAL,kBAAA,CAAAE,OAAA,iCAAAzB,CAAA,aAAAsB,yBAAA,YAAAA,0BAAA,aAAAtB,CAAA,UAnExC,kCACA;AAmEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AATA,IAUa6B,WAAW,GAAAC,OAAA,CAAAD,WAAA,0BAAAE,SAAA;EAgBtB;AACF;AACA;EACE,SAAAF,YAAYG,KAAe,EAAEC,MAAuB,EAAE;IAAA,IAAAC,qBAAA;IAAA,IAAAC,KAAA;IAAA,IAAAC,gBAAA,CAAArB,OAAA,QAAAc,WAAA;IACpDM,KAAA,GAAAhB,UAAA,OAAAU,WAAA;IAAQ,IAAAf,gBAAA,CAAAC,OAAA,EAAAoB,KAAA;IAAA,IAAArB,gBAAA,CAAAC,OAAA,EAAAoB,KAAA;IAAA,IAAArB,gBAAA,CAAAC,OAAA,EAAAoB,KAAA,cAfS,EAAE;IAAA,IAAArB,gBAAA,CAAAC,OAAA,EAAAoB,KAAA,cAEF,EAAE;IAAA,IAAArB,gBAAA,CAAAC,OAAA,EAAAoB,KAAA,mBAEG;MACtBE,IAAI,EAAEC,4BAAiB;MACvBC,MAAM,EAAEC,kBAAO,CAACC;IAClB,CAAC;IAAA,IAAA3B,gBAAA,CAAAC,OAAA,EAAAoB,KAAA;IAAA,IAAArB,gBAAA,CAAAC,OAAA,EAAAoB,KAAA;MAAA,IAAAO,IAAA,OAAAC,kBAAA,CAAA5B,OAAA,eAAA6B,YAAA,CAAA7B,OAAA,CAAA8B,IAAA,CAmYqB,SAAAC,QAAOC,KAAwB;QAAA,OAAAH,YAAA,CAAA7B,OAAA,CAAAiC,IAAA,WAAAC,QAAA;UAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;YAAA;cACnD,IAAIJ,KAAK,IAAIA,KAAK,CAACK,IAAI,CAACC,YAAY,CAACA,YAAY,EAAE;gBACjDlB,KAAA,CAAKmB,IAAI,CAACC,yBAAiB,CAACC,8BAA8B,EAAET,KAAyB,CAAC;cACxF;YAAC;YAAA;cAAA,OAAAE,QAAA,CAAAQ,IAAA;UAAA;QAAA,GAAAX,OAAA;MAAA,CACF;MAAA,iBAAAY,EAAA;QAAA,OAAAhB,IAAA,CAAAlC,KAAA,OAAAE,SAAA;MAAA;IAAA;IAAA,IAAAI,gBAAA,CAAAC,OAAA,EAAAoB,KAAA;MAAA,IAAAwB,KAAA,OAAAhB,kBAAA,CAAA5B,OAAA,eAAA6B,YAAA,CAAA7B,OAAA,CAAA8B,IAAA,CAE6B,SAAAe,SAAOb,KAA8B;QAAA,OAAAH,YAAA,CAAA7B,OAAA,CAAAiC,IAAA,WAAAa,SAAA;UAAA,kBAAAA,SAAA,CAAAX,IAAA,GAAAW,SAAA,CAAAV,IAAA;YAAA;cACjE,IAAIJ,KAAK,IAAIA,KAAK,CAACK,IAAI,CAACU,gBAAgB,CAACA,gBAAgB,EAAE;gBACzD3B,KAAA,CAAKmB,IAAI,CACPC,yBAAiB,CAACQ,iCAAiC,EACnDhB,KACF,CAAC;cACH;YAAC;YAAA;cAAA,OAAAc,SAAA,CAAAJ,IAAA;UAAA;QAAA,GAAAG,QAAA;MAAA,CACF;MAAA,iBAAAI,GAAA;QAAA,OAAAL,KAAA,CAAAnD,KAAA,OAAAE,SAAA;MAAA;IAAA;IAAA,IAAAI,gBAAA,CAAAC,OAAA,EAAAoB,KAAA;MAAA,IAAA8B,KAAA,OAAAtB,kBAAA,CAAA5B,OAAA,eAAA6B,YAAA,CAAA7B,OAAA,CAAA8B,IAAA,CAEiC,SAAAqB,SAAOnB,KAA+B;QAAA,OAAAH,YAAA,CAAA7B,OAAA,CAAAiC,IAAA,WAAAmB,SAAA;UAAA,kBAAAA,SAAA,CAAAjB,IAAA,GAAAiB,SAAA,CAAAhB,IAAA;YAAA;cACtE,IAAIJ,KAAK,IAAIA,KAAK,CAACK,IAAI,CAACgB,eAAe,EAAE;gBACvCjC,KAAA,CAAKmB,IAAI,CACPC,yBAAiB,CAACc,kCAAkC,EACpDtB,KACF,CAAC;cACH;YAAC;YAAA;cAAA,OAAAoB,SAAA,CAAAV,IAAA;UAAA;QAAA,GAAAS,QAAA;MAAA,CACF;MAAA,iBAAAI,GAAA;QAAA,OAAAL,KAAA,CAAAzD,KAAA,OAAAE,SAAA;MAAA;IAAA;IAhZCyB,KAAA,CAAKoC,YAAY,GAAGC,qBAAY;IAChC,IAAI,CAACrC,KAAA,CAAKoC,YAAY,CAACE,QAAQ,CAAC,CAAC,EAAE;MACjCD,qBAAY,CAACE,QAAQ,CAAC1C,KAAK,CAAC;IAC9B;IACAG,KAAA,CAAKH,KAAK,GAAGG,KAAA,CAAKoC,YAAY,CAACE,QAAQ,CAAC,CAAC;IACzCtC,KAAA,CAAKwC,QAAQ,GACX,EAAAzC,qBAAA,GAAAC,KAAA,CAAKH,KAAK,CAAC4C,QAAQ,CAACC,QAAQ,CAACC,YAAY,cAAA5C,qBAAA,uBAAzCA,qBAAA,CAA2C6C,KAAK,KAChD5C,KAAA,CAAKH,KAAK,CAAC4C,QAAQ,CAACC,QAAQ,CAACG,GAAG,CAAC7C,KAAA,CAAKH,KAAK,CAAC4C,QAAQ,CAACC,QAAQ,CAACI,eAAe,CAACF,KAAK,CAAC;IACtF5C,KAAA,CAAK+C,wBAAwB,CAAC,CAAC;IAC/BC,eAAG,CAACC,SAAS,CAACnD,MAAM,CAACoD,KAAK,EAAE/C,4BAAiB,CAAC;IAAC,OAAAH,KAAA;EACjD;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE,IAAAmD,UAAA,CAAAvE,OAAA,EAAAc,WAAA,EAAAE,SAAA;EAAA,WAAAwD,aAAA,CAAAxE,OAAA,EAAAc,WAAA;IAAA2D,GAAA;IAAAC,KAAA;MAAA,IAAAC,mBAAA,OAAA/C,kBAAA,CAAA5B,OAAA,eAAA6B,YAAA,CAAA7B,OAAA,CAAA8B,IAAA,CAOA,SAAA8C,SAAA;QAAA,IAAAC,IAAA;UAAAC,KAAA;UAAAC,IAAA;UAAAC,MAAA;UAAAC,IAAA;UAAAC,cAAA;UAAAC,WAAA;UAAAC,SAAA;UAAAC,mBAAA;UAAAC,GAAA;UAAAC,qBAAA;UAAAC,aAAA;UAAAC,SAAA;UAAAC,qBAAA;UAAAC,gBAAA;UAAAC,YAAA;UAAAC,eAAA;UAAAC,SAAA;UAAAC,WAAA;UAAAC,MAAA,GAAArG,SAAA;UAAAsG,EAAA;UAAAC,GAAA;QAAA,OAAArE,YAAA,CAAA7B,OAAA,CAAAiC,IAAA,WAAAkE,SAAA;UAAA,kBAAAA,SAAA,CAAAhE,IAAA,GAAAgE,SAAA,CAAA/D,IAAA;YAAA;cACEyC,IAAY,GAAAmB,MAAA,CAAApG,MAAA,QAAAoG,MAAA,QAAAI,SAAA,GAAAJ,MAAA,MAAGK,yBAAc;cAC7BvB,KAAa,GAAAkB,MAAA,CAAApG,MAAA,QAAAoG,MAAA,QAAAI,SAAA,GAAAJ,MAAA,MAAGM,gBAAK;cACrBvB,IAAU,GAAAiB,MAAA,CAAApG,MAAA,QAAAoG,MAAA,QAAAI,SAAA,GAAAJ,MAAA,MAAGO,WAAI,CAACC,OAAO;cACzBxB,MAAe,GAAAgB,MAAA,CAAApG,MAAA,QAAAoG,MAAA,QAAAI,SAAA,GAAAJ,MAAA,MAAGS,cAAO,CAACD,OAAO;cAEjC;AACJ;AACA;AACA;cACUvB,IAAI,GAAG,IAAIyB,IAAI,CAAC,CAAC;cACjBxB,cAAc,GAAG,IAAAyB,wBAAiB,EAAC,IAAI,CAAC1F,KAAK,CAAC;cACpDgE,IAAI,CAAC2B,OAAO,CAAC3B,IAAI,CAAC4B,OAAO,CAAC,CAAC,GAAGhC,IAAI,CAAC;cACnC,IAAI,CAACiC,QAAQ,GAAG7B,IAAI,CAAC8B,WAAW,CAAC,CAAC;cAC5B5B,WAAW,GAAG,IAAA6B,OAAA,CAAAhH,OAAA,EAAcyG,cAAO,CAAC,CAACQ,QAAQ,CAACjC,MAAM,CAAC,GAAGA,MAAM,GAAGyB,cAAO,CAACD,OAAO;cAChFpB,SAAS,GAAG,IAAA4B,OAAA,CAAAhH,OAAA,EAAcuG,WAAI,CAAC,CAACU,QAAQ,CAAClC,IAAI,CAAC,GAAGA,IAAI,GAAGwB,WAAI,CAACC,OAAO;cAE1EpC,eAAG,CAAC8C,IAAI,IAAAC,MAAA,CACHC,gCAAoB,iBAAAD,MAAA,CAActC,IAAI,cAAAsC,MAAA,CAAWrC,KAAK,aAAAqC,MAAA,CAAU/B,SAAS,eAAA+B,MAAA,CAAYhC,WAAW,GACnG,IAAI,CAACkC,aACP,CAAC;cAEDjD,eAAG,CAAC8C,IAAI,mBAAAC,MAAA,CAAmB,IAAI,CAACvD,QAAQ,GAAI,IAAI,CAACyD,aAAa,CAAC;cAC/DjD,eAAG,CAAC8C,IAAI,6BAAAC,MAAA,CAA6B,IAAI,CAACL,QAAQ,GAAI,IAAI,CAACO,aAAa,CAAC;;cAEzE;cACMhC,mBAAmB,GACvBH,cAAc,KAAKoC,sBAAe,CAACC,GAAG,GAAG,6BAA6B,GAAG,EAAE;cAC7EnD,eAAG,CAAC8C,IAAI,8BAAAC,MAAA,CACuBjC,cAAc,cAAAiC,MAAA,CACzCjC,cAAc,KAAKoC,sBAAe,CAACC,GAAG,GAAG,uBAAuB,GAAG,EAAE,GAEvE,IAAI,CAACF,aACP,CAAC;cACK/B,GAAG,MAAA6B,MAAA,CAAM,IAAI,CAACvD,QAAQ,OAAAuD,MAAA,CAAIK,kBAAO,OAAAL,MAAA,CAAIM,yBAAa,EAAAN,MAAA,CAAGO,oBAAS,OAAAP,MAAA,CAAI,IAAI,CAACL,QAAQ,aAAAK,MAAA,CAAUrC,KAAK,wCAAAqC,MAAA,CAAqC/B,SAAS,EAAA+B,MAAA,CAAG9B,mBAAmB;cAAAc,SAAA,CAAAhE,IAAA;cAAAgE,SAAA,CAAA/D,IAAA;cAAA,OAGrH,IAAI,CAACnB,KAAK,CAAC0G,OAAO,CAAC;gBAClEC,GAAG,KAAAT,MAAA,CAAK7B,GAAG,CAAE;gBACb9D,MAAM,EAAEqG,mBAAY,CAACC,GAAG;gBACxBC,OAAO,EAAEC,uBAAgB,CAACC;cAC5B,CAAC,CAAC;YAAA;cAJIzC,aAAa,GAAAW,SAAA,CAAA+B,IAAA;cAMnB9D,eAAG,CAACA,GAAG,yBAAA+C,MAAA,CAAyB3B,aAAa,aAAbA,aAAa,wBAAAD,qBAAA,GAAbC,aAAa,CAAE2C,OAAO,cAAA5C,qBAAA,uBAAtBA,qBAAA,CAAwB6C,UAAU,GAAI,IAAI,CAACf,aAAa,CAAC;cAEzF,IAAI,CAAC/E,YAAY,GAAGkD,aAAa,CAAC6C,IAAqB;cACvD,IAAIlD,WAAW,KAAKsB,cAAO,CAAC6B,UAAU,EAAE;gBACtC,IAAIlD,SAAS,KAAKmB,WAAI,CAACgC,IAAI,EAAE;kBAC3B,IAAI,CAACjG,YAAY,CAACmF,yBAAa,CAAC,CAAC1C,IAAI,CACnC,UAACyD,OAAa,EAAEC,cAAoB;oBAAA,OAClC,IAAI/B,IAAI,CAAC+B,cAAc,CAACtD,WAAW,CAAC,CAAC,CAACuD,OAAO,CAAC,CAAC,GAC/C,IAAIhC,IAAI,CAAC8B,OAAO,CAACrD,WAAW,CAAC,CAAC,CAACuD,OAAO,CAAC,CAAC;kBAAA,CAC5C,CAAC;gBACH,CAAC,MAAM,IAAItD,SAAS,KAAKmB,WAAI,CAACoC,GAAG,EAAE;kBACjC,IAAI,CAACrG,YAAY,CAACmF,yBAAa,CAAC,CAAC1C,IAAI,CACnC,UAACyD,OAAa,EAAEC,cAAoB;oBAAA,OAClC,IAAI/B,IAAI,CAAC8B,OAAO,CAACrD,WAAW,CAAC,CAAC,CAACuD,OAAO,CAAC,CAAC,GACxC,IAAIhC,IAAI,CAAC+B,cAAc,CAACtD,WAAW,CAAC,CAAC,CAACuD,OAAO,CAAC,CAAC;kBAAA,CACnD,CAAC;gBACH;cACF;cACA;cAAA,MACIxD,cAAc,KAAKoC,sBAAe,CAACsB,GAAG;gBAAAzC,SAAA,CAAA/D,IAAA;gBAAA;cAAA;cAAA+D,SAAA,CAAAhE,IAAA;cAAA,MAGlC,IAAI,CAACG,YAAY,CAACmF,yBAAa,CAAC,IAAI,IAAI,CAACnF,YAAY,CAACmF,yBAAa,CAAC,CAAC7H,MAAM,GAAG,CAAC;gBAAAuG,SAAA,CAAA/D,IAAA;gBAAA;cAAA;cACjF;cACMqD,SAAS,GAAG,IAAI,CAACnD,YAAY,CAACmF,yBAAa,CAAC,CAACoB,IAAI,CACrD,UAACC,OAAoB;gBAAA,OAAKA,OAAO,CAACC,IAAI,CAACC,MAAM,IAAIF,OAAO,CAACC,IAAI,CAACC,MAAM,CAACpJ,MAAM,GAAG,CAAC;cAAA,CACjF,CAAC,EACD;cAAA,KACI6F,SAAS;gBAAAU,SAAA,CAAA/D,IAAA;gBAAA;cAAA;cACXgC,eAAG,CAAC8C,IAAI,CAAC,qDAAqD,EAAE,IAAI,CAACG,aAAa,CAAC;cAAClB,SAAA,CAAA/D,IAAA;cAAA,OACrD,IAAI,CAAC6G,iBAAiB,CAAC,CAAC;YAAA;cAAjDtD,gBAAgB,GAAAQ,SAAA,CAAA+B,IAAA;cAEtB;cACA,IAAIvC,gBAAgB,CAACuD,UAAU,KAAK,GAAG,KAAAxD,qBAAA,GAAIC,gBAAgB,CAACtD,IAAI,CAAC8G,KAAK,cAAAzD,qBAAA,eAA3BA,qBAAA,CAA6B0D,OAAO,EAAE;gBACzExD,YAAY,GAAGD,gBAAgB,CAACtD,IAAI,CAAC8G,KAAK,CAACC,OAAO,EAExD;gBACA,IAAI,CAAC9G,YAAY,CAACmF,yBAAa,CAAC,CAAC3H,OAAO,CAAC,UAACgJ,OAAoB,EAAK;kBACjE,IAAME,MAAM,GAAGF,OAAO,CAACC,IAAI,CAACC,MAAM;kBAElC,IAAIA,MAAM,EAAE;oBACVpD,YAAY,CAAC9F,OAAO,CAAC,UAACuJ,MAAM,EAAK;sBAC/BA,MAAM,CAACF,KAAK,CAACrJ,OAAO,CAAC,UAACwJ,IAAI,EAAK;wBAC7B,IAAIA,IAAI,CAACC,WAAW,KAAKP,MAAM,EAAE;0BAC/BF,OAAO,CAACC,IAAI,CAACS,aAAa,GAAGF,IAAI,CAACG,KAAK,CAAC,CAAC;wBAC3C;sBACF,CAAC,CAAC;oBACJ,CAAC,CAAC;kBACJ;gBACF,CAAC,CAAC;gBACFrF,eAAG,CAACA,GAAG,yCAAyC,IAAI,CAACiD,aAAa,CAAC;cACrE,CAAC,MAAM;gBACLjD,eAAG,CAAC8C,IAAI,CACN,qCAAAC,MAAA,CAAqCxB,gBAAgB,aAAhBA,gBAAgB,uBAAhBA,gBAAgB,CAAEuD,UAAU,wBAC/D,uDAAuD,EACzD,IAAI,CAAC7B,aACP,CAAC;cACH;YAAC;cAAAlB,SAAA,CAAA/D,IAAA;cAAA;YAAA;cAAA+D,SAAA,CAAAhE,IAAA;cAAA8D,EAAA,GAAAE,SAAA;cAIL/B,eAAG,CAACsF,IAAI,mFAAAvC,MAAA,CAC4E,IAAAwC,UAAA,CAAA3J,OAAA,EAAAiG,EAElF,CAAC,GACD;gBAAC3E,IAAI,EAAEC,4BAAiB;gBAAEC,MAAM,EAAEC,kBAAO,CAACC;cAAqB,CACjE,CAAC;cACD;YAAA;cAIEmE,eAAe,GAAG;gBACtBqD,UAAU,EAAE,IAAI,CAAC5G,YAAY,CAACsH,uBAAW,CAAC;gBAC1CvH,IAAI,EAAE;kBACJC,YAAY,EAAE,IAAI,CAACA,YAAY,CAACmF,yBAAa;gBAC/C,CAAC;gBACDoC,OAAO,EAAEC;cACX,CAAC;cAED1F,eAAG,CAACA,GAAG,kDAAA+C,MAAA,CAC4C,IAAI,CAAC7E,YAAY,CAACmF,yBAAa,CAAC,CAAC7H,MAAM,eACxF,IAAI,CAACyH,aACP,CAAC;cAAC,OAAAlB,SAAA,CAAA4D,MAAA,WAEKlE,eAAe;YAAA;cAAAM,SAAA,CAAAhE,IAAA;cAAA+D,GAAA,GAAAC,SAAA;cAEtB/B,eAAG,CAAC4F,KAAK,gCAAA7C,MAAA,CAAgC,IAAAwC,UAAA,CAAA3J,OAAA,EAAAkG,GAAkB,CAAC,GAAI;gBAC9D5E,IAAI,EAAEC,4BAAiB;gBACvBC,MAAM,EAAEC,kBAAO,CAACC;cAClB,CAAC,CAAC;cAACyE,SAAA,CAAA/D,IAAA;cAAA,OACG,IAAA6H,iBAAU,EAAC,CAAC;YAAA;cAEZnE,SAAS,GAAAI,GAAA;cACTH,WAAW,GAAG,IAAAmE,8BAAuB,EAACpE,SAAS,EAAE,IAAI,CAACuB,aAAa,CAAC;cAAA,OAAAlB,SAAA,CAAA4D,MAAA,WAEnEhE,WAAW;YAAA;YAAA;cAAA,OAAAI,SAAA,CAAAzD,IAAA;UAAA;QAAA,GAAAkC,QAAA;MAAA,CAErB;MAAA,SA5IYuF,kBAAkBA,CAAA;QAAA,OAAAxF,mBAAA,CAAAlF,KAAA,OAAAE,SAAA;MAAA;MAAA,OAAlBwK,kBAAkB;IAAA;IA8I/B;AACF;AACA;AACA;AACA;IAJE;EAAA;IAAA1F,GAAA;IAAAC,KAAA;MAAA,IAAA0F,kBAAA,OAAAxI,kBAAA,CAAA5B,OAAA,eAAA6B,YAAA,CAAA7B,OAAA,CAAA8B,IAAA,CAKA,SAAAuI,SACEC,iBAAqC;QAAA,IAAAjD,aAAA,EAAAkD,kBAAA,EAAAC,WAAA,EAAAC,iBAAA,EAAAC,0BAAA,EAAAC,QAAA,EAAAtI,IAAA,EAAAwD,eAAA,EAAAC,SAAA,EAAAC,WAAA,EAAA6E,GAAA,EAAAC,GAAA,EAAAC,GAAA,EAAAC,GAAA,EAAAC,GAAA,EAAAC,GAAA,EAAAC,GAAA,EAAAC,GAAA;QAAA,OAAAtJ,YAAA,CAAA7B,OAAA,CAAAiC,IAAA,WAAAmJ,SAAA;UAAA,kBAAAA,SAAA,CAAAjJ,IAAA,GAAAiJ,SAAA,CAAAhJ,IAAA;YAAA;cAE/BiF,aAAa,GAAG;gBACpB/F,IAAI,EAAEC,4BAAiB;gBACvBC,MAAM,EAAEC,kBAAO,CAAC4J;cAClB,CAAC,EACD;cACMd,kBAAkD,GAAGD,iBAAiB,CAACgB,GAAG,CAAC,UAACxC,OAAO;gBAAA,OAAApJ,aAAA,CAAAA,aAAA,KACpFoJ,OAAO;kBACVyC,OAAO,EAAE,IAAI7E,IAAI,CAACoC,OAAO,CAACyC,OAAO,CAAC,CAAC7C,OAAO,CAAC;gBAAC;cAAA,CAC5C,CAAC;cACG8B,WAAW,GAAG;gBAClBF,iBAAiB,EAAEC;cACrB,CAAC;cAEDnG,eAAG,CAAC8C,IAAI,IAAAC,MAAA,CACHC,gCAAoB,sBAAAD,MAAA,CAAmB,IAAAwC,UAAA,CAAA3J,OAAA,EAAeuK,kBAAkB,CAAC,GAC5ElD,aACF,CAAC;cAAC+D,SAAA,CAAAjJ,IAAA;cAEMuI,0BAA0B,MAAAvD,MAAA,CAAM,IAAI,CAACvD,QAAQ,OAAAuD,MAAA,CAAIK,kBAAO,OAAAL,MAAA,CAAIM,yBAAa,OAAAN,MAAA,CAAIqE,uCAA4B,GAC/G;cAAAZ,GAAA,GACuBa,KAAK;cAAAZ,GAAA,GAACH,0BAA0B;cAAAI,GAAA,GAC7CjD,mBAAY,CAAC6D,IAAI;cAAAX,GAAA,GAAAhL,gBAAA,CAAAC,OAAA;cAAAgL,GAAA,OAAAjL,gBAAA,CAAAC,OAAA,MAEtB2L,uBAAY,EAAGC,2BAAgB;cAAAR,SAAA,CAAAhJ,IAAA;cAAA,OACX,IAAI,CAACnB,KAAK,CAAC4K,WAAW,CAACC,YAAY,CAAC,CAAC;YAAA;cAAAb,GAAA,GAAAF,GAAA,CAAAC,GAAA,mBAAAI,SAAA,CAAAlD,IAAA;cAAAgD,GAAA,GAEtD,IAAAvB,UAAA,CAAA3J,OAAA,EAAewK,WAAW,CAAC;cAAAY,SAAA,CAAAhJ,IAAA;cAAA,OAAAwI,GAAA,CAAAC,GAAA;gBALjCrJ,MAAM,EAAAsJ,GAAA;gBACN3C,OAAO,EAAA8C,GAAA;gBAIP5C,IAAI,EAAA6C;cAAA;YAAA;cANAP,QAAQ,GAAAS,SAAA,CAAAlD,IAAA;cAAA,IAQTyC,QAAQ,CAACoB,EAAE;gBAAAX,SAAA,CAAAhJ,IAAA;gBAAA;cAAA;cAAA,MACR,IAAI4J,KAAK,IAAA7E,MAAA,CAAIwD,QAAQ,CAACsB,MAAM,CAAE,CAAC;YAAA;cAGvC7H,eAAG,CAACA,GAAG,yBAAA+C,MAAA,EAAAsD,iBAAA,GAAyBE,QAAQ,CAACxC,OAAO,cAAAsC,iBAAA,uBAAhBA,iBAAA,CAAkBxG,GAAG,CAAC,YAAY,CAAC,GAAIoD,aAAa,CAAC;cAAC+D,SAAA,CAAAhJ,IAAA;cAAA,OAExCuI,QAAQ,CAACuB,IAAI,CAAC,CAAC;YAAA;cAAvD7J,IAA+B,GAAA+I,SAAA,CAAAlD,IAAA;cACrC9D,eAAG,CAACA,GAAG,mDAAmDiD,aAAa,CAAC;cAClExB,eAA0C,GAAG;gBACjDqD,UAAU,EAAE7G,IAAI,CAAC6G,UAAoB;gBACrC7G,IAAI,EAAE;kBACJ8J,iBAAiB,EAAEC;gBACrB,CAAC;gBACDvC,OAAO,EAAEC;cACX,CAAC;cAED1F,eAAG,CAACA,GAAG,yBAAA+C,MAAA,CAAyBoD,kBAAkB,aAAlBA,kBAAkB,uBAAlBA,kBAAkB,CAAE3K,MAAM,oBAAiByH,aAAa,CAAC;cAAC,OAAA+D,SAAA,CAAArB,MAAA,WAEnFlE,eAAe;YAAA;cAAAuF,SAAA,CAAAjJ,IAAA;cAAAgJ,GAAA,GAAAC,SAAA;cAEtBhH,eAAG,CAAC4F,KAAK,mCAAA7C,MAAA,CAAmC,IAAAwC,UAAA,CAAA3J,OAAA,EAAAmL,GAAkB,CAAC,GAAI;gBACjE7J,IAAI,EAAEC,4BAAiB;gBACvBC,MAAM,EAAEC,kBAAO,CAAC4J;cAClB,CAAC,CAAC;cAACD,SAAA,CAAAhJ,IAAA;cAAA,OACG,IAAA6H,iBAAU,EAAC,CAAC;YAAA;cAElB;cACMnE,SAAS,GAAG;gBAChBoD,UAAU,EAAEiC,GAAA,YAAea,KAAK,GAAGK,MAAM,CAAClB,GAAA,CAAItB,OAAO,CAAC,GAAG;cAC3D,CAAC;cACK9D,WAAW,GAAG,IAAAmE,8BAAuB,EAACpE,SAAS,EAAEuB,aAAa,CAAC;cAAA,OAAA+D,SAAA,CAAArB,MAAA,WAE9DhE,WAAW;YAAA;YAAA;cAAA,OAAAqF,SAAA,CAAA1I,IAAA;UAAA;QAAA,GAAA2H,QAAA;MAAA,CAErB;MAAA,SAjEYiC,iBAAiBA,CAAAC,GAAA;QAAA,OAAAnC,kBAAA,CAAA3K,KAAA,OAAAE,SAAA;MAAA;MAAA,OAAjB2M,iBAAiB;IAAA;IAmE9B;AACF;AACA;AACA;IAHE;EAAA;IAAA7H,GAAA;IAAAC,KAAA;MAAA,IAAA8H,kBAAA,OAAA5K,kBAAA,CAAA5B,OAAA,eAAA6B,YAAA,CAAA7B,OAAA,CAAA8B,IAAA,CAIA,SAAA2K,SAAA;QAAA,IAAApF,aAAA,EAAAqF,UAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,cAAA,EAAAC,kBAAA,EAAAnC,QAAA,EAAAoC,cAAA,EAAAjH,SAAA,EAAAC,WAAA,EAAAiH,GAAA;QAAA,OAAAnL,YAAA,CAAA7B,OAAA,CAAAiC,IAAA,WAAAgL,SAAA;UAAA,kBAAAA,SAAA,CAAA9K,IAAA,GAAA8K,SAAA,CAAA7K,IAAA;YAAA;cACQiF,aAAa,GAAG;gBACpB/F,IAAI,EAAEC,4BAAiB;gBACvBC,MAAM,EAAEC,kBAAO,CAACyL;cAClB,CAAC;cACKR,UAAU,GAAG,IAAAS,0BAAmB,EAAC,IAAI,CAAClM,KAAK,EAAEqG,sBAAe,CAACsB,GAAG,CAAC;cACjE+D,MAAM,GAAG,IAAI,CAAC1L,KAAK,CAAC4C,QAAQ,CAACwF,MAAM,CAACsD,MAAM;cAC1CC,KAAK,GAAG,IAAI,CAAC3L,KAAK,CAAC4C,QAAQ,CAACwF,MAAM,CAACuD,KAAK;cACxCC,cAAc,MAAA1F,MAAA,CAAMuF,UAAU,OAAAvF,MAAA,CAAIiG,oBAAS,OAAAjG,MAAA,CAAIkG,iCAAsB,OAAAlG,MAAA,CAAImG,iBAAM,OAAAnG,MAAA,CAAIoG,iBAAM,OAAApG,MAAA,CAAIwF,MAAM,OAAAxF,MAAA,CAAIqG,gBAAK,OAAArG,MAAA,CAAIsG,iBAAM,OAAAtG,MAAA,CAAIyF,KAAK;cAErIxI,eAAG,CAAC8C,IAAI,IAAAC,MAAA,CAAIC,gCAAoB,iBAAAD,MAAA,CAAc0F,cAAc,GAAIxF,aAAa,CAAC;cAAC4F,SAAA,CAAA9K,IAAA;cAAA8K,SAAA,CAAA7K,IAAA;cAAA,OAEjC,IAAI,CAACnB,KAAK,CAAC0G,OAAO,CAAC;gBAC7DC,GAAG,KAAAT,MAAA,CAAK0F,cAAc,CAAE;gBACxBrL,MAAM,EAAEqG,mBAAY,CAACC;cACvB,CAAC,CAAC;YAAA;cAHI6C,QAAQ,GAAAsC,SAAA,CAAA/E,IAAA;cAKd9D,eAAG,CAACA,GAAG,yBAAA+C,MAAA,CAAyBwD,QAAQ,aAARA,QAAQ,wBAAAmC,kBAAA,GAARnC,QAAQ,CAAExC,OAAO,cAAA2E,kBAAA,uBAAjBA,kBAAA,CAAmB1E,UAAU,GAAIf,aAAa,CAAC;cAEzE0F,cAAgC,GAAG;gBACvC7D,UAAU,EAAEmD,MAAM,CAAC1B,QAAQ,CAACzB,UAAU,CAAC;gBACvC7G,IAAI,EAAE;kBACJ8G,KAAK,EAAEwB,QAAQ,CAACtC;gBAClB,CAAC;gBACDwB,OAAO,EAAEC;cACX,CAAC;cAED1F,eAAG,CAACA,GAAG,sCAAsCiD,aAAa,CAAC;cAAC,OAAA4F,SAAA,CAAAlD,MAAA,WAErDgD,cAAc;YAAA;cAAAE,SAAA,CAAA9K,IAAA;cAAA6K,GAAA,GAAAC,SAAA;cAErB7I,eAAG,CAAC4F,KAAK,oCAAA7C,MAAA,CAAoC,IAAAwC,UAAA,CAAA3J,OAAA,EAAAgN,GAAkB,CAAC,GAAI;gBAClE1L,IAAI,EAAEC,4BAAiB;gBACvBC,MAAM,EAAEC,kBAAO,CAACyL;cAClB,CAAC,CAAC;cAACD,SAAA,CAAA7K,IAAA;cAAA,OACG,IAAA6H,iBAAU,EAAC,CAAC;YAAA;cACZnE,SAAS,GAAAkH,GAAA;cACTjH,WAAW,GAAG,IAAAmE,8BAAuB,EAACpE,SAAS,EAAEuB,aAAa,CAAC;cAAA,OAAA4F,SAAA,CAAAlD,MAAA,WAE9DhE,WAAW;YAAA;YAAA;cAAA,OAAAkH,SAAA,CAAAvK,IAAA;UAAA;QAAA,GAAA+J,QAAA;MAAA,CAErB;MAAA,SAzCaxD,iBAAiBA,CAAA;QAAA,OAAAuD,kBAAA,CAAA/M,KAAA,OAAAE,SAAA;MAAA;MAAA,OAAjBsJ,iBAAiB;IAAA;IA2C/B;AACF;AACA;AACA;AACA;IAJE;EAAA;IAAAxE,GAAA;IAAAC,KAAA;MAAA,IAAAgJ,yBAAA,OAAA9L,kBAAA,CAAA5B,OAAA,eAAA6B,YAAA,CAAA7B,OAAA,CAAA8B,IAAA,CAKA,SAAA6L,SACEC,gBAAoC;QAAA,IAAAvG,aAAA,EAAAwG,eAAA,EAAAC,iBAAA,EAAAvD,kBAAA,EAAAwD,iBAAA,EAAAC,kBAAA,EAAAC,iCAAA,EAAAtD,QAAA,EAAAtI,IAAA,EAAAwD,eAAA,EAAAC,SAAA,EAAAC,WAAA,EAAAmI,IAAA,EAAAC,IAAA,EAAAC,IAAA,EAAAC,IAAA,EAAAC,IAAA,EAAAC,IAAA,EAAAC,IAAA,EAAAC,IAAA;QAAA,OAAA5M,YAAA,CAAA7B,OAAA,CAAAiC,IAAA,WAAAyM,SAAA;UAAA,kBAAAA,SAAA,CAAAvM,IAAA,GAAAuM,SAAA,CAAAtM,IAAA;YAAA;cAE9BiF,aAAa,GAAG;gBACpB/F,IAAI,EAAEC,4BAAiB;gBACvBC,MAAM,EAAEC,kBAAO,CAACkN;cAClB,CAAC,EAED;cACMd,eAAe,GAAGD,gBAAgB,CAACvO,MAAM,CAAC,UAACyJ,OAAO;gBAAA,OACtD,IAAA8F,MAAA,CAAA5O,OAAA,EAAa,IAAI0G,IAAI,CAACoC,OAAO,CAACyC,OAAO,CAAC,CAAC7C,OAAO,CAAC,CAAC,CAAC;cAAA,CACnD,CAAC;cAEDtE,eAAG,CAAC8C,IAAI,IAAAC,MAAA,CACHC,gCAAoB,sBAAAD,MAAA,CAAmB,IAAAwC,UAAA,CAAA3J,OAAA,EAAe4N,gBAAgB,CAAC,GAC1EvG,aACF,CAAC;cAAC,MAEEwG,eAAe,CAACjO,MAAM,GAAG,CAAC;gBAAA8O,SAAA,CAAAtM,IAAA;gBAAA;cAAA;cAC5B;cACM0L,iBAAiB,GAAGD,eAAe,CAACvC,GAAG,CAAC,UAACxC,OAAO;gBAAA,OAAKA,OAAO,CAAC+F,SAAS;cAAA,EAAC,CAACC,IAAI,CAAC,IAAI,CAAC;cACxF1K,eAAG,CAAC8C,IAAI,+DAAAC,MAAA,CACwD2G,iBAAiB,GAC/EzG,aACF,CAAC;cAAC,OAAAqH,SAAA,CAAA3E,MAAA,WAEK;gBACLb,UAAU,EAAE,GAAG;gBACf7G,IAAI,EAAE;kBACJ0M,mBAAmB,EAAEC;gBACvB,CAAC;gBACDnF,OAAO,EAAEoF;cACX,CAAC;YAAA;cAGH;cACM1E,kBAAkD,GAAGqD,gBAAgB,CAACtC,GAAG,CAAC,UAACxC,OAAO;gBAAA,OAAApJ,aAAA,CAAAA,aAAA,KACnFoJ,OAAO;kBACVyC,OAAO,EAAE,IAAI7E,IAAI,CAACoC,OAAO,CAACyC,OAAO,CAAC,CAAC7C,OAAO,CAAC;gBAAC;cAAA,CAC5C,CAAC;cAEGqF,iBAAiB,GAAG;gBACxBH,gBAAgB,EAAErD;cACpB,CAAC;cAAAmE,SAAA,CAAAvM,IAAA;cAGO8L,iCAAiC,MAAA9G,MAAA,CAAM,IAAI,CAACvD,QAAQ,OAAAuD,MAAA,CAAIK,kBAAO,OAAAL,MAAA,CAAIM,yBAAa,OAAAN,MAAA,CAAI+H,+CAAoC,GAC9H;cAAAhB,IAAA,GACuBzC,KAAK;cAAA0C,IAAA,GAACF,iCAAiC;cAAAG,IAAA,GACpDvG,mBAAY,CAAC6D,IAAI;cAAA2C,IAAA,GAAAtO,gBAAA,CAAAC,OAAA;cAAAsO,IAAA,OAAAvO,gBAAA,CAAAC,OAAA,MAEtB2L,uBAAY,EAAGC,2BAAgB;cAAA8C,SAAA,CAAAtM,IAAA;cAAA,OACX,IAAI,CAACnB,KAAK,CAAC4K,WAAW,CAACC,YAAY,CAAC,CAAC;YAAA;cAAAyC,IAAA,GAAAF,IAAA,CAAAC,IAAA,mBAAAI,SAAA,CAAAxG,IAAA;cAAAsG,IAAA,GAEtD,IAAA7E,UAAA,CAAA3J,OAAA,EAAe+N,iBAAiB,CAAC;cAAAW,SAAA,CAAAtM,IAAA;cAAA,OAAA8L,IAAA,CAAAC,IAAA;gBALvC3M,MAAM,EAAA4M,IAAA;gBACNjG,OAAO,EAAAoG,IAAA;gBAIPlG,IAAI,EAAAmG;cAAA;YAAA;cANA7D,QAAQ,GAAA+D,SAAA,CAAAxG,IAAA;cAAA,IAQTyC,QAAQ,CAACoB,EAAE;gBAAA2C,SAAA,CAAAtM,IAAA;gBAAA;cAAA;cAAA,MACR,IAAI4J,KAAK,IAAA7E,MAAA,CAAIwD,QAAQ,CAACsB,MAAM,CAAE,CAAC;YAAA;cAGvC7H,eAAG,CAACA,GAAG,yBAAA+C,MAAA,EAAA6G,kBAAA,GAAyBrD,QAAQ,CAACxC,OAAO,cAAA6F,kBAAA,uBAAhBA,kBAAA,CAAkB/J,GAAG,CAAC,YAAY,CAAC,GAAIoD,aAAa,CAAC;cAACqH,SAAA,CAAAtM,IAAA;cAAA,OAEjCuI,QAAQ,CAACuB,IAAI,CAAC,CAAC;YAAA;cAA9D7J,IAAsC,GAAAqM,SAAA,CAAAxG,IAAA;cAC5C9D,eAAG,CAACA,GAAG,yBAAA+C,MAAA,CACmBoD,kBAAkB,aAAlBA,kBAAkB,uBAAlBA,kBAAkB,CAAE3K,MAAM,4BAClDyH,aACF,CAAC;cACKxB,eAAiD,GAAG;gBACxDqD,UAAU,EAAE7G,IAAI,CAAC6G,UAAoB;gBACrC7G,IAAI,EAAE;kBACJ0M,mBAAmB,EAAEI;gBACvB,CAAC;gBACDtF,OAAO,EAAEC;cACX,CAAC;cAAA,OAAA4E,SAAA,CAAA3E,MAAA,WAEMlE,eAAe;YAAA;cAAA6I,SAAA,CAAAvM,IAAA;cAAAsM,IAAA,GAAAC,SAAA;cAEtBtK,eAAG,CAAC4F,KAAK,2CAAA7C,MAAA,CAA2C,IAAAwC,UAAA,CAAA3J,OAAA,EAAAyO,IAAkB,CAAC,GAAI;gBACzEnN,IAAI,EAAEC,4BAAiB;gBACvBC,MAAM,EAAEC,kBAAO,CAACkN;cAClB,CAAC,CAAC;cAACD,SAAA,CAAAtM,IAAA;cAAA,OACG,IAAA6H,iBAAU,EAAC,CAAC;YAAA;cAElB;cACMnE,SAAS,GAAG;gBAChBoD,UAAU,EAAEuF,IAAA,YAAezC,KAAK,GAAGK,MAAM,CAACoC,IAAA,CAAI5E,OAAO,CAAC,GAAG;cAC3D,CAAC;cACK9D,WAAW,GAAG,IAAAmE,8BAAuB,EAACpE,SAAS,EAAEuB,aAAa,CAAC;cAAA,OAAAqH,SAAA,CAAA3E,MAAA,WAE9DhE,WAAW;YAAA;YAAA;cAAA,OAAA2I,SAAA,CAAAhM,IAAA;UAAA;QAAA,GAAAiL,QAAA;MAAA,CAErB;MAAA,SA3FYyB,wBAAwBA,CAAAC,GAAA;QAAA,OAAA3B,yBAAA,CAAAjO,KAAA,OAAAE,SAAA;MAAA;MAAA,OAAxByP,wBAAwB;IAAA;EAAA;IAAA3K,GAAA;IAAAC,KAAA;IAqHrC;AACF;AACA;IACE,SAAQP,wBAAwBA,CAAA,EAAG;MACjC,IAAI,CAACX,YAAY,CAAC8L,gBAAgB,CAChCC,yBAAiB,CAACC,4BAA4B,EAC9C,IAAI,CAACC,mBACP,CAAC;MACD,IAAI,CAACjM,YAAY,CAAC8L,gBAAgB,CAChCC,yBAAiB,CAACG,yBAAyB,EAC3C,IAAI,CAACD,mBACP,CAAC;MACD,IAAI,CAACjM,YAAY,CAAC8L,gBAAgB,CAChCC,yBAAiB,CAACI,yBAAyB,EAC3C,IAAI,CAACC,2BACP,CAAC;MACD,IAAI,CAACpM,YAAY,CAAC8L,gBAAgB,CAChCC,yBAAiB,CAACM,0BAA0B,EAC5C,IAAI,CAACC,+BACP,CAAC;IACH;EAAC;AAAA,EA3b8BC,cAAQ;AA6bzC;AACA;AACA;AACA;AACA;AACA;AACO,IAAMC,uBAAuB,GAAAjP,OAAA,CAAAiP,uBAAA,GAAG,SAA1BA,uBAAuBA,CAAI/O,KAAe,EAAEC,MAAuB;EAAA,OAC9E,IAAIJ,WAAW,CAACG,KAAK,EAAEC,MAAM,CAAC;AAAA","ignoreList":[]}
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","_callSuper","_getPrototypeOf2","_possibleConstructorReturn2","_isNativeReflectConstruct","_Reflect$construct","constructor","Boolean","prototype","valueOf","call","CallHistory","exports","_Eventing","webex","logger","_this$webex$internal$","_this","_classCallCheck2","file","CALL_HISTORY_FILE","method","METHODS","GET_CALL_HISTORY_DATA","_ref","_asyncToGenerator2","_regenerator","mark","_callee","event","wrap","_context","prev","next","data","userSessions","emit","COMMON_EVENT_KEYS","CALL_HISTORY_USER_SESSION_INFO","stop","_x","_ref2","_callee2","_context2","userReadSessions","CALL_HISTORY_USER_VIEWED_SESSIONS","_x2","_ref3","_callee3","_context3","deletedSessions","CALL_HISTORY_USER_SESSIONS_DELETED","_x3","sdkConnector","SDKConnector","getWebex","setWebex","janusUrl","internal","services","_serviceUrls","janus","get","_activeServices","registerSessionsListener","log","setLogger","level","_inherits2","_createClass2","key","value","_getCallHistoryData","_callee4","days","limit","sort","sortBy","date","callingBackend","sortByParam","sortParam","sharedSessionsParam","url","_janusResponse$header","janusResponse","hasCucmDN","_ucmLinesResponse$dat","ucmLinesResponse","ucmLinesData","responseDetails","errorInfo","errorStatus","_args4","_t","_context4","undefined","NUMBER_OF_DAYS","LIMIT","SORT","DEFAULT","SORT_BY","Date","getCallingBackEnd","setDate","getDate","fromDate","toISOString","_values","includes","info","concat","METHOD_START_MESSAGE","loggerContext","CALLING_BACKEND","WXC","HISTORY","USER_SESSIONS","FROM_DATE","request","uri","HTTP_METHODS","GET","service","ALLOWED_SERVICES","JANUS","sent","headers","trackingid","body","START_TIME","DESC","element","compareElement","getTime","ASC","UCM","some","session","self","cucmDN","fetchUCMLinesData","statusCode","lines","devices","device","line","dnorpattern","ucmLineNumber","index","STATUS_CODE","message","SUCCESS_MESSAGE","abrupt","error","_stringify","uploadLogs","serviceErrorCodeHandler","getCallHistoryData","_updateMissedCalls","_callee5","endTimeSessionIds","santizedSessionIds","requestBody","_response$headers","updateMissedCallContentUrl","response","_t2","_t3","_t4","_t5","_t6","_t7","_t8","_t9","_context5","UPDATE_MISSED_CALLS","map","endTime","UPDATE_MISSED_CALLS_ENDPOINT","fetch","POST","CONTENT_TYPE","APPLICATION_JSON","credentials","getUserToken","ok","Error","status","json","readStatusMessage","SET_READ_STATE_SUCCESS_MESSAGE","Number","updateMissedCalls","_x4","_fetchUCMLinesData","_callee6","vgEndpoint","userId","orgId","linesURIForUCM","_response$headers2","ucmLineDetails","_t0","_context6","FETCH_UCM_LINES_DATA","getVgActionEndpoint","VERSION_1","UNIFIED_COMMUNICATIONS","CONFIG","PEOPLE","LINES","ORG_ID","_deleteCallHistoryRecords","_callee7","deleteSessionIds","invalidSessions","invalidSessionIds","deleteRequestBody","_response$headers3","deleteCallHistoryRecordContentUrl","_t1","_t10","_t11","_t12","_t13","_t14","_t15","_t16","_context7","DELETE_CALL_HISTORY_RECORDS","_isNan","sessionId","join","deleteStatusMessage","SET_DELETE_CALL_RECORDS_INVALID_DATE_FORMAT_MESSAGE","FAILURE_MESSAGE","DELETE_CALL_HISTORY_RECORDS_ENDPOINT","SET_DELETE_CALL_RECORDS_SUCCESS_MESSAGE","deleteCallHistoryRecords","_x5","registerListener","MOBIUS_EVENT_KEYS","CALL_SESSION_EVENT_INCLUSIVE","handleSessionEvents","CALL_SESSION_EVENT_LEGACY","CALL_SESSION_EVENT_VIEWED","handleUserReadSessionEvents","CALL_SESSION_EVENT_DELETED","handleUserSessionsDeletedEvents","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 DeleteCallHistoryRecordsResponse,\n} from './types';\nimport log from '../Logger';\nimport {\n serviceErrorCodeHandler,\n getVgActionEndpoint,\n getCallingBackEnd,\n uploadLogs,\n} 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 DELETE_CALL_HISTORY_RECORDS_ENDPOINT,\n SET_DELETE_CALL_RECORDS_SUCCESS_MESSAGE,\n SET_DELETE_CALL_RECORDS_INVALID_DATE_FORMAT_MESSAGE,\n METHODS,\n} from './constants';\nimport {\n FAILURE_MESSAGE,\n METHOD_START_MESSAGE,\n STATUS_CODE,\n SUCCESS_MESSAGE,\n USER_SESSIONS,\n} 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 CallSessionDeletedEvent,\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: METHODS.GET_CALL_HISTORY_DATA,\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 =\n this.webex.internal.services._serviceUrls?.janus ||\n this.webex.internal.services.get(this.webex.internal.services._activeServices.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 const callingBackend = getCallingBackEnd(this.webex);\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.info(\n `${METHOD_START_MESSAGE} with days=${days}, limit=${limit}, sort=${sortParam}, sortBy=${sortByParam}`,\n this.loggerContext\n );\n\n log.info(`Janus API URL: ${this.janusUrl}`, this.loggerContext);\n log.info(`Call history from date : ${this.fromDate}`, this.loggerContext);\n\n // Add includeSharedSessions=true parameter for WXC backend to fetch calls with sessionType \"WEBEXCALLING_SHARED\"\n const sharedSessionsParam =\n callingBackend === CALLING_BACKEND.WXC ? '&includeSharedSessions=true' : '';\n log.info(\n `Fetching call history for ${callingBackend} backend${\n callingBackend === CALLING_BACKEND.WXC ? ' with shared sessions' : ''\n }`,\n this.loggerContext\n );\n const url = `${this.janusUrl}/${HISTORY}/${USER_SESSIONS}${FROM_DATE}=${this.fromDate}&limit=${limit}&includeNewSessionTypes=true&sort=${sortParam}${sharedSessionsParam}`;\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 log.log(`Response trackingId: ${janusResponse?.headers?.trackingid}`, this.loggerContext);\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 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 log.log(\n `Successfully retrieved call history data with ${this.userSessions[USER_SESSIONS].length} records`,\n this.loggerContext\n );\n\n return responseDetails;\n } catch (err: unknown) {\n log.error(`Failed to get call history: ${JSON.stringify(err)}`, {\n file: CALL_HISTORY_FILE,\n method: METHODS.GET_CALL_HISTORY_DATA,\n });\n await uploadLogs();\n\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: METHODS.UPDATE_MISSED_CALLS,\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\n log.info(\n `${METHOD_START_MESSAGE} with sessions: ${JSON.stringify(santizedSessionIds)}`,\n loggerContext\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 log.log(`Response trackingId: ${response.headers?.get('trackingid')}`, loggerContext);\n\n const data: UpdateMissedCallsResponse = await response.json();\n log.log(`Missed calls are successfully 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 log.log(`Successfully updated ${santizedSessionIds?.length} missed calls`, loggerContext);\n\n return responseDetails;\n } catch (err: unknown) {\n log.error(`Failed to update missed calls: ${JSON.stringify(err)}`, {\n file: CALL_HISTORY_FILE,\n method: METHODS.UPDATE_MISSED_CALLS,\n });\n await uploadLogs();\n\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: METHODS.FETCH_UCM_LINES_DATA,\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 log.info(`${METHOD_START_MESSAGE} with URL: ${linesURIForUCM}`, loggerContext);\n try {\n const response = <WebexRequestPayload>await this.webex.request({\n uri: `${linesURIForUCM}`,\n method: HTTP_METHODS.GET,\n });\n\n log.log(`Response trackingId: ${response?.headers?.trackingid}`, loggerContext);\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.log(`Line details fetched successfully`, loggerContext);\n\n return ucmLineDetails;\n } catch (err: unknown) {\n log.error(`Failed to fetch UCM lines data: ${JSON.stringify(err)}`, {\n file: CALL_HISTORY_FILE,\n method: METHODS.FETCH_UCM_LINES_DATA,\n });\n await uploadLogs();\n\n const errorInfo = err as WebexRequestPayload;\n const errorStatus = serviceErrorCodeHandler(errorInfo, loggerContext);\n\n return errorStatus;\n }\n }\n\n /**\n * Function to delete the call history records using sessionId and endTime.\n * @param deleteSessionIds - An array of objects containing endTime and sessionId of the call history records\n * @returns {Promise} Resolves to an object of type {@link DeleteCallHistoryRecordsResponse}.Response details with success or error status.\n */\n public async deleteCallHistoryRecords(\n deleteSessionIds: EndTimeSessionId[]\n ): Promise<DeleteCallHistoryRecordsResponse> {\n const loggerContext = {\n file: CALL_HISTORY_FILE,\n method: METHODS.DELETE_CALL_HISTORY_RECORDS,\n };\n\n // Collect all sessions with invalid dates (endTime) in an array\n const invalidSessions = deleteSessionIds.filter((session) =>\n Number.isNaN(new Date(session.endTime).getTime())\n );\n\n log.info(\n `${METHOD_START_MESSAGE} with sessions: ${JSON.stringify(deleteSessionIds)}`,\n loggerContext\n );\n\n if (invalidSessions.length > 0) {\n // If there are invalid sessions, return an error with details\n const invalidSessionIds = invalidSessions.map((session) => session.sessionId).join(', ');\n log.info(\n `The provided date is malformed or invalid for session IDs: ${invalidSessionIds}`,\n loggerContext\n );\n\n return {\n statusCode: 400,\n data: {\n deleteStatusMessage: SET_DELETE_CALL_RECORDS_INVALID_DATE_FORMAT_MESSAGE,\n },\n message: FAILURE_MESSAGE,\n };\n }\n\n // Convert endTime to milliseconds for each sessionId\n const santizedSessionIds: SanitizedEndTimeAndSessionId[] = deleteSessionIds.map((session) => ({\n ...session,\n endTime: new Date(session.endTime).getTime(),\n }));\n\n const deleteRequestBody = {\n deleteSessionIds: santizedSessionIds,\n };\n\n try {\n const deleteCallHistoryRecordContentUrl = `${this.janusUrl}/${HISTORY}/${USER_SESSIONS}/${DELETE_CALL_HISTORY_RECORDS_ENDPOINT}`;\n // Make a POST request to delete call history records\n const response = await fetch(deleteCallHistoryRecordContentUrl, {\n method: HTTP_METHODS.POST,\n headers: {\n [CONTENT_TYPE]: APPLICATION_JSON,\n Authorization: await this.webex.credentials.getUserToken(),\n },\n body: JSON.stringify(deleteRequestBody),\n });\n if (!response.ok) {\n throw new Error(`${response.status}`);\n }\n\n log.log(`Response trackingId: ${response.headers?.get('trackingid')}`, loggerContext);\n\n const data: DeleteCallHistoryRecordsResponse = await response.json();\n log.log(\n `Successfully deleted ${santizedSessionIds?.length} call history records`,\n loggerContext\n );\n const responseDetails: DeleteCallHistoryRecordsResponse = {\n statusCode: data.statusCode as number,\n data: {\n deleteStatusMessage: SET_DELETE_CALL_RECORDS_SUCCESS_MESSAGE,\n },\n message: SUCCESS_MESSAGE,\n };\n\n return responseDetails;\n } catch (err: unknown) {\n log.error(`Failed to delete call history records: ${JSON.stringify(err)}`, {\n file: CALL_HISTORY_FILE,\n method: METHODS.DELETE_CALL_HISTORY_RECORDS,\n });\n await uploadLogs();\n\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 handleUserSessionsDeletedEvents = async (event?: CallSessionDeletedEvent) => {\n if (event && event.data.deletedSessions) {\n this.emit(\n COMMON_EVENT_KEYS.CALL_HISTORY_USER_SESSIONS_DELETED,\n event as CallSessionDeletedEvent\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 this.sdkConnector.registerListener<CallSessionDeletedEvent>(\n MOBIUS_EVENT_KEYS.CALL_SESSION_EVENT_DELETED,\n this.handleUserSessionsDeletedEvents\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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","ignoreList":[]}