@webex/calling 3.11.0-next.11 → 3.11.0-next.13

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.
@@ -160,7 +160,8 @@ var CallHistory = exports.CallHistory = /*#__PURE__*/function (_Eventing) {
160
160
  errorInfo,
161
161
  errorStatus,
162
162
  _args4 = arguments,
163
- _t;
163
+ _t,
164
+ _t2;
164
165
  return _regenerator.default.wrap(function (_context4) {
165
166
  while (1) switch (_context4.prev = _context4.next) {
166
167
  case 0:
@@ -208,13 +209,14 @@ var CallHistory = exports.CallHistory = /*#__PURE__*/function (_Eventing) {
208
209
  });
209
210
  }
210
211
  }
211
- // Check the calling backend
212
+ // Check the calling backend (BEMS01958007: non-fatal so /lines or uploadLogs failure does not drop call history)
212
213
  if (!(callingBackend === _types.CALLING_BACKEND.UCM)) {
213
- _context4.next = 4;
214
+ _context4.next = 7;
214
215
  break;
215
216
  }
217
+ _context4.prev = 3;
216
218
  if (!(this.userSessions[_constants2.USER_SESSIONS] && this.userSessions[_constants2.USER_SESSIONS].length > 0)) {
217
- _context4.next = 4;
219
+ _context4.next = 5;
218
220
  break;
219
221
  }
220
222
  // Check if cucmDN exists and is valid in any of the userSessions
@@ -222,12 +224,13 @@ var CallHistory = exports.CallHistory = /*#__PURE__*/function (_Eventing) {
222
224
  return session.self.cucmDN && session.self.cucmDN.length > 0;
223
225
  }); // If any user session has cucmDN, proceed to fetch line data
224
226
  if (!hasCucmDN) {
225
- _context4.next = 4;
227
+ _context4.next = 5;
226
228
  break;
227
229
  }
228
- _context4.next = 3;
230
+ _Logger.default.info('Fetching UCM lines data for call history enrichment', this.loggerContext);
231
+ _context4.next = 4;
229
232
  return this.fetchUCMLinesData();
230
- case 3:
233
+ case 4:
231
234
  ucmLinesResponse = _context4.sent;
232
235
  // Check if the Lines API response was successful
233
236
  if (ucmLinesResponse.statusCode === 200 && (_ucmLinesResponse$dat = ucmLinesResponse.data.lines) !== null && _ucmLinesResponse$dat !== void 0 && _ucmLinesResponse$dat.devices) {
@@ -244,8 +247,22 @@ var CallHistory = exports.CallHistory = /*#__PURE__*/function (_Eventing) {
244
247
  });
245
248
  }
246
249
  });
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);
247
253
  }
248
- case 4:
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:
249
266
  responseDetails = {
250
267
  statusCode: this.userSessions[_constants2.STATUS_CODE],
251
268
  data: {
@@ -255,24 +272,24 @@ var CallHistory = exports.CallHistory = /*#__PURE__*/function (_Eventing) {
255
272
  };
256
273
  _Logger.default.log("Successfully retrieved call history data with ".concat(this.userSessions[_constants2.USER_SESSIONS].length, " records"), this.loggerContext);
257
274
  return _context4.abrupt("return", responseDetails);
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)), {
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)), {
262
279
  file: _constants.CALL_HISTORY_FILE,
263
280
  method: _constants.METHODS.GET_CALL_HISTORY_DATA
264
281
  });
265
- _context4.next = 6;
282
+ _context4.next = 9;
266
283
  return (0, _Utils.uploadLogs)();
267
- case 6:
268
- errorInfo = _t;
284
+ case 9:
285
+ errorInfo = _t2;
269
286
  errorStatus = (0, _Utils.serviceErrorCodeHandler)(errorInfo, this.loggerContext);
270
287
  return _context4.abrupt("return", errorStatus);
271
- case 7:
288
+ case 10:
272
289
  case "end":
273
290
  return _context4.stop();
274
291
  }
275
- }, _callee4, this, [[1, 5]]);
292
+ }, _callee4, this, [[1, 8], [3, 6]]);
276
293
  }));
277
294
  function getCallHistoryData() {
278
295
  return _getCallHistoryData.apply(this, arguments);
@@ -289,7 +306,7 @@ var CallHistory = exports.CallHistory = /*#__PURE__*/function (_Eventing) {
289
306
  key: "updateMissedCalls",
290
307
  value: (function () {
291
308
  var _updateMissedCalls = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee5(endTimeSessionIds) {
292
- var loggerContext, santizedSessionIds, requestBody, _response$headers, updateMissedCallContentUrl, response, data, responseDetails, errorInfo, errorStatus, _t2, _t3, _t4, _t5, _t6, _t7, _t8, _t9;
309
+ var loggerContext, santizedSessionIds, requestBody, _response$headers, updateMissedCallContentUrl, response, data, responseDetails, errorInfo, errorStatus, _t3, _t4, _t5, _t6, _t7, _t8, _t9, _t0;
293
310
  return _regenerator.default.wrap(function (_context5) {
294
311
  while (1) switch (_context5.prev = _context5.next) {
295
312
  case 0:
@@ -308,21 +325,21 @@ var CallHistory = exports.CallHistory = /*#__PURE__*/function (_Eventing) {
308
325
  _Logger.default.info("".concat(_constants2.METHOD_START_MESSAGE, " with sessions: ").concat((0, _stringify.default)(santizedSessionIds)), loggerContext);
309
326
  _context5.prev = 1;
310
327
  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
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);
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);
316
333
  _context5.next = 2;
317
334
  return this.webex.credentials.getUserToken();
318
335
  case 2:
319
- _t7 = _t5(_t6, "Authorization", _context5.sent);
320
- _t8 = (0, _stringify.default)(requestBody);
336
+ _t8 = _t6(_t7, "Authorization", _context5.sent);
337
+ _t9 = (0, _stringify.default)(requestBody);
321
338
  _context5.next = 3;
322
- return _t2(_t3, {
323
- method: _t4,
324
- headers: _t7,
325
- body: _t8
339
+ return _t3(_t4, {
340
+ method: _t5,
341
+ headers: _t8,
342
+ body: _t9
326
343
  });
327
344
  case 3:
328
345
  response = _context5.sent;
@@ -349,8 +366,8 @@ var CallHistory = exports.CallHistory = /*#__PURE__*/function (_Eventing) {
349
366
  return _context5.abrupt("return", responseDetails);
350
367
  case 6:
351
368
  _context5.prev = 6;
352
- _t9 = _context5["catch"](1);
353
- _Logger.default.error("Failed to update missed calls: ".concat((0, _stringify.default)(_t9)), {
369
+ _t0 = _context5["catch"](1);
370
+ _Logger.default.error("Failed to update missed calls: ".concat((0, _stringify.default)(_t0)), {
354
371
  file: _constants.CALL_HISTORY_FILE,
355
372
  method: _constants.METHODS.UPDATE_MISSED_CALLS
356
373
  });
@@ -359,7 +376,7 @@ var CallHistory = exports.CallHistory = /*#__PURE__*/function (_Eventing) {
359
376
  case 7:
360
377
  // Catch the 401 error from try block, return the error object to user
361
378
  errorInfo = {
362
- statusCode: _t9 instanceof Error ? Number(_t9.message) : ''
379
+ statusCode: _t0 instanceof Error ? Number(_t0.message) : ''
363
380
  };
364
381
  errorStatus = (0, _Utils.serviceErrorCodeHandler)(errorInfo, loggerContext);
365
382
  return _context5.abrupt("return", errorStatus);
@@ -383,7 +400,7 @@ var CallHistory = exports.CallHistory = /*#__PURE__*/function (_Eventing) {
383
400
  key: "fetchUCMLinesData",
384
401
  value: (function () {
385
402
  var _fetchUCMLinesData = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee6() {
386
- var loggerContext, vgEndpoint, userId, orgId, linesURIForUCM, _response$headers2, response, ucmLineDetails, errorInfo, errorStatus, _t0;
403
+ var loggerContext, vgEndpoint, userId, orgId, linesURIForUCM, _response$headers2, response, ucmLineDetails, errorInfo, errorStatus, _t1;
387
404
  return _regenerator.default.wrap(function (_context6) {
388
405
  while (1) switch (_context6.prev = _context6.next) {
389
406
  case 0:
@@ -416,15 +433,15 @@ var CallHistory = exports.CallHistory = /*#__PURE__*/function (_Eventing) {
416
433
  return _context6.abrupt("return", ucmLineDetails);
417
434
  case 3:
418
435
  _context6.prev = 3;
419
- _t0 = _context6["catch"](1);
420
- _Logger.default.error("Failed to fetch UCM lines data: ".concat((0, _stringify.default)(_t0)), {
436
+ _t1 = _context6["catch"](1);
437
+ _Logger.default.error("Failed to fetch UCM lines data: ".concat((0, _stringify.default)(_t1)), {
421
438
  file: _constants.CALL_HISTORY_FILE,
422
439
  method: _constants.METHODS.FETCH_UCM_LINES_DATA
423
440
  });
424
441
  _context6.next = 4;
425
442
  return (0, _Utils.uploadLogs)();
426
443
  case 4:
427
- errorInfo = _t0;
444
+ errorInfo = _t1;
428
445
  errorStatus = (0, _Utils.serviceErrorCodeHandler)(errorInfo, loggerContext);
429
446
  return _context6.abrupt("return", errorStatus);
430
447
  case 5:
@@ -448,7 +465,7 @@ var CallHistory = exports.CallHistory = /*#__PURE__*/function (_Eventing) {
448
465
  key: "deleteCallHistoryRecords",
449
466
  value: (function () {
450
467
  var _deleteCallHistoryRecords = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee7(deleteSessionIds) {
451
- var loggerContext, invalidSessions, invalidSessionIds, santizedSessionIds, deleteRequestBody, _response$headers3, deleteCallHistoryRecordContentUrl, response, data, responseDetails, errorInfo, errorStatus, _t1, _t10, _t11, _t12, _t13, _t14, _t15, _t16;
468
+ var loggerContext, invalidSessions, invalidSessionIds, santizedSessionIds, deleteRequestBody, _response$headers3, deleteCallHistoryRecordContentUrl, response, data, responseDetails, errorInfo, errorStatus, _t10, _t11, _t12, _t13, _t14, _t15, _t16, _t17;
452
469
  return _regenerator.default.wrap(function (_context7) {
453
470
  while (1) switch (_context7.prev = _context7.next) {
454
471
  case 0:
@@ -488,21 +505,21 @@ var CallHistory = exports.CallHistory = /*#__PURE__*/function (_Eventing) {
488
505
  };
489
506
  _context7.prev = 2;
490
507
  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
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);
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);
496
513
  _context7.next = 3;
497
514
  return this.webex.credentials.getUserToken();
498
515
  case 3:
499
- _t14 = _t12(_t13, "Authorization", _context7.sent);
500
- _t15 = (0, _stringify.default)(deleteRequestBody);
516
+ _t15 = _t13(_t14, "Authorization", _context7.sent);
517
+ _t16 = (0, _stringify.default)(deleteRequestBody);
501
518
  _context7.next = 4;
502
- return _t1(_t10, {
503
- method: _t11,
504
- headers: _t14,
505
- body: _t15
519
+ return _t10(_t11, {
520
+ method: _t12,
521
+ headers: _t15,
522
+ body: _t16
506
523
  });
507
524
  case 4:
508
525
  response = _context7.sent;
@@ -528,8 +545,8 @@ var CallHistory = exports.CallHistory = /*#__PURE__*/function (_Eventing) {
528
545
  return _context7.abrupt("return", responseDetails);
529
546
  case 7:
530
547
  _context7.prev = 7;
531
- _t16 = _context7["catch"](2);
532
- _Logger.default.error("Failed to delete call history records: ".concat((0, _stringify.default)(_t16)), {
548
+ _t17 = _context7["catch"](2);
549
+ _Logger.default.error("Failed to delete call history records: ".concat((0, _stringify.default)(_t17)), {
533
550
  file: _constants.CALL_HISTORY_FILE,
534
551
  method: _constants.METHODS.DELETE_CALL_HISTORY_RECORDS
535
552
  });
@@ -538,7 +555,7 @@ var CallHistory = exports.CallHistory = /*#__PURE__*/function (_Eventing) {
538
555
  case 8:
539
556
  // Catch the 401 error from try block, return the error object to user
540
557
  errorInfo = {
541
- statusCode: _t16 instanceof Error ? Number(_t16.message) : ''
558
+ statusCode: _t17 instanceof Error ? Number(_t17.message) : ''
542
559
  };
543
560
  errorStatus = (0, _Utils.serviceErrorCodeHandler)(errorInfo, loggerContext);
544
561
  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","_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":[]}
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":"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","ignoreList":[]}
@@ -61,27 +61,38 @@ export class CallHistory extends Eventing {
61
61
  }
62
62
  }
63
63
  if (callingBackend === CALLING_BACKEND.UCM) {
64
- if (this.userSessions[USER_SESSIONS] && this.userSessions[USER_SESSIONS].length > 0) {
65
- const hasCucmDN = this.userSessions[USER_SESSIONS].some((session) => session.self.cucmDN && session.self.cucmDN.length > 0);
66
- if (hasCucmDN) {
67
- const ucmLinesResponse = await this.fetchUCMLinesData();
68
- if (ucmLinesResponse.statusCode === 200 && ucmLinesResponse.data.lines?.devices) {
69
- const ucmLinesData = ucmLinesResponse.data.lines.devices;
70
- this.userSessions[USER_SESSIONS].forEach((session) => {
71
- const cucmDN = session.self.cucmDN;
72
- if (cucmDN) {
73
- ucmLinesData.forEach((device) => {
74
- device.lines.forEach((line) => {
75
- if (line.dnorpattern === cucmDN) {
76
- session.self.ucmLineNumber = line.index;
77
- }
64
+ try {
65
+ if (this.userSessions[USER_SESSIONS] && this.userSessions[USER_SESSIONS].length > 0) {
66
+ const hasCucmDN = this.userSessions[USER_SESSIONS].some((session) => session.self.cucmDN && session.self.cucmDN.length > 0);
67
+ if (hasCucmDN) {
68
+ log.info('Fetching UCM lines data for call history enrichment', this.loggerContext);
69
+ const ucmLinesResponse = await this.fetchUCMLinesData();
70
+ if (ucmLinesResponse.statusCode === 200 && ucmLinesResponse.data.lines?.devices) {
71
+ const ucmLinesData = ucmLinesResponse.data.lines.devices;
72
+ this.userSessions[USER_SESSIONS].forEach((session) => {
73
+ const cucmDN = session.self.cucmDN;
74
+ if (cucmDN) {
75
+ ucmLinesData.forEach((device) => {
76
+ device.lines.forEach((line) => {
77
+ if (line.dnorpattern === cucmDN) {
78
+ session.self.ucmLineNumber = line.index;
79
+ }
80
+ });
78
81
  });
79
- });
80
- }
81
- });
82
+ }
83
+ });
84
+ log.log(`UCM line number enrichment completed`, this.loggerContext);
85
+ }
86
+ else {
87
+ log.info(`UCM lines API returned statusCode ${ucmLinesResponse?.statusCode} or no devices, ` +
88
+ 'returning call history without line number enrichment', this.loggerContext);
89
+ }
82
90
  }
83
91
  }
84
92
  }
93
+ catch (ucmErr) {
94
+ log.warn(`UCM lines fetch or enrich failed, returning call history without line numbers: ${JSON.stringify(ucmErr)}`, { file: CALL_HISTORY_FILE, method: METHODS.GET_CALL_HISTORY_DATA });
95
+ }
85
96
  }
86
97
  const responseDetails = {
87
98
  statusCode: this.userSessions[STATUS_CODE],
@@ -1 +1 @@
1
- {"version":3,"file":"CallHistory.d.ts","sourceRoot":"","sources":["../../../src/CallHistory/CallHistory.ts"],"names":[],"mappings":"AAGA,OAAO,EAAgB,QAAQ,EAAC,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAIL,IAAI,EACJ,OAAO,EAER,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,eAAe,EACf,yBAAyB,EAEzB,gCAAgC,EACjC,MAAM,SAAS,CAAC;AAoCjB,OAAO,EAEL,qBAAqB,EACrB,gBAAgB,EAGhB,gBAAgB,EAChB,sBAAsB,EAGtB,uBAAuB,EACxB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAC,QAAQ,EAAC,MAAM,gBAAgB,CAAC;AAWxC,qBAAa,WAAY,SAAQ,QAAQ,CAAC,qBAAqB,CAAE,YAAW,YAAY;IACtF,OAAO,CAAC,YAAY,CAAgB;IAEpC,OAAO,CAAC,KAAK,CAAW;IAExB,OAAO,CAAC,QAAQ,CAAM;IAEtB,OAAO,CAAC,QAAQ,CAAM;IAEtB,OAAO,CAAC,aAAa,CAGnB;IAEF,OAAO,CAAC,YAAY,CAA4B;gBAKpC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,eAAe;IAqBvC,kBAAkB,CAC7B,IAAI,GAAE,MAAuB,EAC7B,KAAK,GAAE,MAAc,EACrB,IAAI,GAAE,IAAmB,EACzB,MAAM,GAAE,OAAyB,GAChC,OAAO,CAAC,kBAAkB,CAAC;IA6HjB,iBAAiB,CAC5B,iBAAiB,EAAE,gBAAgB,EAAE,GACpC,OAAO,CAAC,yBAAyB,CAAC;YAqEvB,iBAAiB;IAiDlB,wBAAwB,CACnC,gBAAgB,EAAE,gBAAgB,EAAE,GACnC,OAAO,CAAC,gCAAgC,CAAC;IA2F5C,mBAAmB,WAAkB,gBAAgB,mBAInD;IAEF,2BAA2B,WAAkB,sBAAsB,mBAOjE;IAEF,+BAA+B,WAAkB,uBAAuB,mBAOtE;IAKF,OAAO,CAAC,wBAAwB;CAkBjC;AAOD,eAAO,MAAM,uBAAuB,UAAW,QAAQ,UAAU,eAAe,KAAG,YACnD,CAAC"}
1
+ {"version":3,"file":"CallHistory.d.ts","sourceRoot":"","sources":["../../../src/CallHistory/CallHistory.ts"],"names":[],"mappings":"AAGA,OAAO,EAAgB,QAAQ,EAAC,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAIL,IAAI,EACJ,OAAO,EAER,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,eAAe,EACf,yBAAyB,EAEzB,gCAAgC,EACjC,MAAM,SAAS,CAAC;AAoCjB,OAAO,EAEL,qBAAqB,EACrB,gBAAgB,EAGhB,gBAAgB,EAChB,sBAAsB,EAGtB,uBAAuB,EACxB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAC,QAAQ,EAAC,MAAM,gBAAgB,CAAC;AAWxC,qBAAa,WAAY,SAAQ,QAAQ,CAAC,qBAAqB,CAAE,YAAW,YAAY;IACtF,OAAO,CAAC,YAAY,CAAgB;IAEpC,OAAO,CAAC,KAAK,CAAW;IAExB,OAAO,CAAC,QAAQ,CAAM;IAEtB,OAAO,CAAC,QAAQ,CAAM;IAEtB,OAAO,CAAC,aAAa,CAGnB;IAEF,OAAO,CAAC,YAAY,CAA4B;gBAKpC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,eAAe;IAqBvC,kBAAkB,CAC7B,IAAI,GAAE,MAAuB,EAC7B,KAAK,GAAE,MAAc,EACrB,IAAI,GAAE,IAAmB,EACzB,MAAM,GAAE,OAAyB,GAChC,OAAO,CAAC,kBAAkB,CAAC;IA8IjB,iBAAiB,CAC5B,iBAAiB,EAAE,gBAAgB,EAAE,GACpC,OAAO,CAAC,yBAAyB,CAAC;YAqEvB,iBAAiB;IAgDlB,wBAAwB,CACnC,gBAAgB,EAAE,gBAAgB,EAAE,GACnC,OAAO,CAAC,gCAAgC,CAAC;IA2F5C,mBAAmB,WAAkB,gBAAgB,mBAInD;IAEF,2BAA2B,WAAkB,sBAAsB,mBAOjE;IAEF,+BAA+B,WAAkB,uBAAuB,mBAOtE;IAKF,OAAO,CAAC,wBAAwB;CAkBjC;AAOD,eAAO,MAAM,uBAAuB,UAAW,QAAQ,UAAU,eAAe,KAAG,YACnD,CAAC"}
package/package.json CHANGED
@@ -38,7 +38,7 @@
38
38
  "dependencies": {
39
39
  "@types/platform": "1.3.4",
40
40
  "@webex/internal-media-core": "2.22.1",
41
- "@webex/internal-plugin-metrics": "3.11.0-next.6",
41
+ "@webex/internal-plugin-metrics": "3.11.0-next.7",
42
42
  "@webex/media-helpers": "3.11.0-next.3",
43
43
  "async-mutex": "0.4.0",
44
44
  "buffer": "6.0.3",
@@ -132,5 +132,5 @@
132
132
  "staticpath": "docs",
133
133
  "noprompt": true
134
134
  },
135
- "version": "3.11.0-next.11"
135
+ "version": "3.11.0-next.13"
136
136
  }