@webex/calling 3.10.0-next.13 → 3.10.0-next.14

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 (87) hide show
  1. package/dist/CallHistory/CallHistory.js +118 -124
  2. package/dist/CallHistory/CallHistory.js.map +1 -1
  3. package/dist/CallHistory/CallHistory.test.js +189 -201
  4. package/dist/CallHistory/CallHistory.test.js.map +1 -1
  5. package/dist/CallSettings/CallSettings.js +17 -18
  6. package/dist/CallSettings/CallSettings.js.map +1 -1
  7. package/dist/CallSettings/CallSettings.test.js +14 -14
  8. package/dist/CallSettings/CallSettings.test.js.map +1 -1
  9. package/dist/CallSettings/UcmBackendConnector.js +19 -20
  10. package/dist/CallSettings/UcmBackendConnector.js.map +1 -1
  11. package/dist/CallSettings/UcmBackendConnector.test.js +32 -32
  12. package/dist/CallSettings/UcmBackendConnector.test.js.map +1 -1
  13. package/dist/CallSettings/WxCallBackendConnector.js +135 -137
  14. package/dist/CallSettings/WxCallBackendConnector.js.map +1 -1
  15. package/dist/CallSettings/WxCallBackendConnector.test.js +145 -149
  16. package/dist/CallSettings/WxCallBackendConnector.test.js.map +1 -1
  17. package/dist/CallingClient/CallingClient.js +198 -201
  18. package/dist/CallingClient/CallingClient.js.map +1 -1
  19. package/dist/CallingClient/CallingClient.test.js +168 -168
  20. package/dist/CallingClient/CallingClient.test.js.map +1 -1
  21. package/dist/CallingClient/calling/CallerId/index.js +7 -8
  22. package/dist/CallingClient/calling/CallerId/index.js.map +1 -1
  23. package/dist/CallingClient/calling/CallerId/index.test.js +24 -24
  24. package/dist/CallingClient/calling/CallerId/index.test.js.map +1 -1
  25. package/dist/CallingClient/calling/call.js +364 -366
  26. package/dist/CallingClient/calling/call.js.map +1 -1
  27. package/dist/CallingClient/calling/call.test.js +340 -340
  28. package/dist/CallingClient/calling/call.test.js.map +1 -1
  29. package/dist/CallingClient/calling/callManager.js +15 -18
  30. package/dist/CallingClient/calling/callManager.js.map +1 -1
  31. package/dist/CallingClient/calling/callManager.test.js +113 -113
  32. package/dist/CallingClient/calling/callManager.test.js.map +1 -1
  33. package/dist/CallingClient/line/index.js +57 -74
  34. package/dist/CallingClient/line/index.js.map +1 -1
  35. package/dist/CallingClient/line/line.test.js +22 -22
  36. package/dist/CallingClient/line/line.test.js.map +1 -1
  37. package/dist/CallingClient/registration/register.js +293 -300
  38. package/dist/CallingClient/registration/register.js.map +1 -1
  39. package/dist/CallingClient/registration/register.test.js +246 -246
  40. package/dist/CallingClient/registration/register.test.js.map +1 -1
  41. package/dist/CallingClient/registration/webWorker.js +24 -24
  42. package/dist/CallingClient/registration/webWorker.js.map +1 -1
  43. package/dist/CallingClient/registration/webWorker.test.js +20 -20
  44. package/dist/CallingClient/registration/webWorker.test.js.map +1 -1
  45. package/dist/CallingClient/windowsChromiumIceWarmupUtils.js +28 -28
  46. package/dist/CallingClient/windowsChromiumIceWarmupUtils.js.map +1 -1
  47. package/dist/Contacts/ContactsClient.js +250 -253
  48. package/dist/Contacts/ContactsClient.js.map +1 -1
  49. package/dist/Contacts/ContactsClient.test.js +60 -60
  50. package/dist/Contacts/ContactsClient.test.js.map +1 -1
  51. package/dist/Errors/catalog/CallError.js +7 -10
  52. package/dist/Errors/catalog/CallError.js.map +1 -1
  53. package/dist/Errors/catalog/CallingDeviceError.js +6 -9
  54. package/dist/Errors/catalog/CallingDeviceError.js.map +1 -1
  55. package/dist/Errors/catalog/ExtendedError.js +6 -8
  56. package/dist/Errors/catalog/ExtendedError.js.map +1 -1
  57. package/dist/Errors/catalog/LineError.js +6 -9
  58. package/dist/Errors/catalog/LineError.js.map +1 -1
  59. package/dist/Events/impl/index.js +11 -13
  60. package/dist/Events/impl/index.js.map +1 -1
  61. package/dist/Metrics/index.js +1 -2
  62. package/dist/Metrics/index.js.map +1 -1
  63. package/dist/SDKConnector/index.js +1 -2
  64. package/dist/SDKConnector/index.js.map +1 -1
  65. package/dist/Voicemail/BroadworksBackendConnector.js +126 -127
  66. package/dist/Voicemail/BroadworksBackendConnector.js.map +1 -1
  67. package/dist/Voicemail/BroadworksBackendConnector.test.js +98 -98
  68. package/dist/Voicemail/BroadworksBackendConnector.test.js.map +1 -1
  69. package/dist/Voicemail/UcmBackendConnector.js +84 -85
  70. package/dist/Voicemail/UcmBackendConnector.js.map +1 -1
  71. package/dist/Voicemail/UcmBackendConnector.test.js +72 -72
  72. package/dist/Voicemail/UcmBackendConnector.test.js.map +1 -1
  73. package/dist/Voicemail/Voicemail.js +58 -61
  74. package/dist/Voicemail/Voicemail.js.map +1 -1
  75. package/dist/Voicemail/Voicemail.test.js +20 -20
  76. package/dist/Voicemail/Voicemail.test.js.map +1 -1
  77. package/dist/Voicemail/WxCallBackendConnector.js +116 -117
  78. package/dist/Voicemail/WxCallBackendConnector.js.map +1 -1
  79. package/dist/Voicemail/WxCallBackendConnector.test.js +140 -140
  80. package/dist/Voicemail/WxCallBackendConnector.test.js.map +1 -1
  81. package/dist/common/Utils.js +168 -167
  82. package/dist/common/Utils.js.map +1 -1
  83. package/dist/common/Utils.test.js +120 -120
  84. package/dist/common/Utils.test.js.map +1 -1
  85. package/dist/common/testUtil.js +3 -3
  86. package/dist/common/testUtil.js.map +1 -1
  87. package/package.json +2 -2
@@ -76,7 +76,7 @@ describe('Call Tests - keepalive (handleCallEstablished) cases', function () {
76
76
  });
77
77
  it('401 during keepalive emits token error and ends call', /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee() {
78
78
  var emitted, retrySpy, payload, abort;
79
- return _regenerator.default.wrap(function _callee$(_context) {
79
+ return _regenerator.default.wrap(function (_context) {
80
80
  while (1) switch (_context.prev = _context.next) {
81
81
  case 0:
82
82
  emitted = false;
@@ -93,16 +93,16 @@ describe('Call Tests - keepalive (handleCallEstablished) cases', function () {
93
93
  errorCode: 0
94
94
  }
95
95
  };
96
- _context.next = 5;
96
+ _context.next = 1;
97
97
  return (0, _Utils.handleCallErrors)(function () {
98
98
  emitted = true;
99
99
  }, _types2.ERROR_LAYER.CALL_CONTROL, retrySpy, dummyCorrelationId, payload, 'handleCallEstablished', logObj.file);
100
- case 5:
100
+ case 1:
101
101
  abort = _context.sent;
102
102
  expect(emitted).toBe(true);
103
103
  expect(abort).toBe(true);
104
104
  expect(retrySpy).not.toHaveBeenCalled();
105
- case 9:
105
+ case 2:
106
106
  case "end":
107
107
  return _context.stop();
108
108
  }
@@ -110,7 +110,7 @@ describe('Call Tests - keepalive (handleCallEstablished) cases', function () {
110
110
  })));
111
111
  it('403 during keepalive emits error and ends call', /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee2() {
112
112
  var emitted, retrySpy, payload, abort;
113
- return _regenerator.default.wrap(function _callee2$(_context2) {
113
+ return _regenerator.default.wrap(function (_context2) {
114
114
  while (1) switch (_context2.prev = _context2.next) {
115
115
  case 0:
116
116
  emitted = false;
@@ -127,16 +127,16 @@ describe('Call Tests - keepalive (handleCallEstablished) cases', function () {
127
127
  errorCode: 0
128
128
  }
129
129
  };
130
- _context2.next = 5;
130
+ _context2.next = 1;
131
131
  return (0, _Utils.handleCallErrors)(function () {
132
132
  emitted = true;
133
133
  }, _types2.ERROR_LAYER.CALL_CONTROL, retrySpy, dummyCorrelationId, payload, 'handleCallEstablished', logObj.file);
134
- case 5:
134
+ case 1:
135
135
  abort = _context2.sent;
136
136
  expect(emitted).toBe(true);
137
137
  expect(abort).toBe(true);
138
138
  expect(retrySpy).not.toHaveBeenCalled();
139
- case 9:
139
+ case 2:
140
140
  case "end":
141
141
  return _context2.stop();
142
142
  }
@@ -144,7 +144,7 @@ describe('Call Tests - keepalive (handleCallEstablished) cases', function () {
144
144
  })));
145
145
  it('500 during keepalive with retry-after triggers retryCb with interval', /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee3() {
146
146
  var emitted, endSpy, retrySpy, payload;
147
- return _regenerator.default.wrap(function _callee3$(_context3) {
147
+ return _regenerator.default.wrap(function (_context3) {
148
148
  while (1) switch (_context3.prev = _context3.next) {
149
149
  case 0:
150
150
  emitted = false;
@@ -163,15 +163,15 @@ describe('Call Tests - keepalive (handleCallEstablished) cases', function () {
163
163
  errorCode: 0
164
164
  }
165
165
  };
166
- _context3.next = 6;
166
+ _context3.next = 1;
167
167
  return (0, _Utils.handleCallErrors)(function () {
168
168
  emitted = true;
169
169
  }, _types2.ERROR_LAYER.CALL_CONTROL, retrySpy, dummyCorrelationId, payload, 'handleCallEstablished', logObj.file, endSpy);
170
- case 6:
170
+ case 1:
171
171
  expect(emitted).toBe(true);
172
172
  expect(endSpy).not.toHaveBeenCalled();
173
173
  expect(retrySpy).toHaveBeenCalledWith(2);
174
- case 9:
174
+ case 2:
175
175
  case "end":
176
176
  return _context3.stop();
177
177
  }
@@ -179,7 +179,7 @@ describe('Call Tests - keepalive (handleCallEstablished) cases', function () {
179
179
  })));
180
180
  it('500 during keepalive without retry-after triggers retryCb without args', /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee4() {
181
181
  var emitted, retrySpy, payload, abort;
182
- return _regenerator.default.wrap(function _callee4$(_context4) {
182
+ return _regenerator.default.wrap(function (_context4) {
183
183
  while (1) switch (_context4.prev = _context4.next) {
184
184
  case 0:
185
185
  emitted = false;
@@ -196,16 +196,16 @@ describe('Call Tests - keepalive (handleCallEstablished) cases', function () {
196
196
  errorCode: 0
197
197
  }
198
198
  };
199
- _context4.next = 5;
199
+ _context4.next = 1;
200
200
  return (0, _Utils.handleCallErrors)(function () {
201
201
  emitted = true;
202
202
  }, _types2.ERROR_LAYER.CALL_CONTROL, retrySpy, dummyCorrelationId, payload, 'handleCallEstablished', logObj.file);
203
- case 5:
203
+ case 1:
204
204
  abort = _context4.sent;
205
205
  expect(abort).toBe(false);
206
206
  expect(emitted).toBe(true);
207
207
  expect(retrySpy).toHaveBeenCalledWith(_constants.DEFAULT_KEEPALIVE_INTERVAL);
208
- case 9:
208
+ case 2:
209
209
  case "end":
210
210
  return _context4.stop();
211
211
  }
@@ -213,7 +213,7 @@ describe('Call Tests - keepalive (handleCallEstablished) cases', function () {
213
213
  })));
214
214
  it('404 during keepalive emits not found and ends call (no retry)', /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee5() {
215
215
  var emitted, retrySpy, payload, abort;
216
- return _regenerator.default.wrap(function _callee5$(_context5) {
216
+ return _regenerator.default.wrap(function (_context5) {
217
217
  while (1) switch (_context5.prev = _context5.next) {
218
218
  case 0:
219
219
  emitted = false;
@@ -229,16 +229,16 @@ describe('Call Tests - keepalive (handleCallEstablished) cases', function () {
229
229
  }
230
230
  }
231
231
  };
232
- _context5.next = 5;
232
+ _context5.next = 1;
233
233
  return (0, _Utils.handleCallErrors)(function () {
234
234
  emitted = true;
235
235
  }, _types2.ERROR_LAYER.CALL_CONTROL, retrySpy, dummyCorrelationId, payload, 'handleCallEstablished', logObj.file);
236
- case 5:
236
+ case 1:
237
237
  abort = _context5.sent;
238
238
  expect(emitted).toBe(true);
239
239
  expect(abort).toBe(true);
240
240
  expect(retrySpy).not.toHaveBeenCalled();
241
- case 9:
241
+ case 2:
242
242
  case "end":
243
243
  return _context5.stop();
244
244
  }
@@ -246,7 +246,7 @@ describe('Call Tests - keepalive (handleCallEstablished) cases', function () {
246
246
  })));
247
247
  it('503 during keepalive with retry-after does not invoke emitterCb and retries with interval', /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee6() {
248
248
  var emitted, retrySpy, payload, abort;
249
- return _regenerator.default.wrap(function _callee6$(_context6) {
249
+ return _regenerator.default.wrap(function (_context6) {
250
250
  while (1) switch (_context6.prev = _context6.next) {
251
251
  case 0:
252
252
  emitted = false;
@@ -264,16 +264,16 @@ describe('Call Tests - keepalive (handleCallEstablished) cases', function () {
264
264
  errorCode: 0
265
265
  }
266
266
  };
267
- _context6.next = 5;
267
+ _context6.next = 1;
268
268
  return (0, _Utils.handleCallErrors)(function () {
269
269
  emitted = true;
270
270
  }, _types2.ERROR_LAYER.CALL_CONTROL, retrySpy, dummyCorrelationId, payload, 'handleCallEstablished', logObj.file);
271
- case 5:
271
+ case 1:
272
272
  abort = _context6.sent;
273
273
  expect(abort).toBe(false);
274
274
  expect(emitted).toBe(false);
275
275
  expect(retrySpy).toHaveBeenCalledWith(7);
276
- case 9:
276
+ case 2:
277
277
  case "end":
278
278
  return _context6.stop();
279
279
  }
@@ -281,7 +281,7 @@ describe('Call Tests - keepalive (handleCallEstablished) cases', function () {
281
281
  })));
282
282
  it('503 during keepalive without retry-after invokes emitterCb and triggers retryCb without args', /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee7() {
283
283
  var emitted, retrySpy, payload, abort;
284
- return _regenerator.default.wrap(function _callee7$(_context7) {
284
+ return _regenerator.default.wrap(function (_context7) {
285
285
  while (1) switch (_context7.prev = _context7.next) {
286
286
  case 0:
287
287
  emitted = false;
@@ -298,16 +298,16 @@ describe('Call Tests - keepalive (handleCallEstablished) cases', function () {
298
298
  errorCode: 111
299
299
  }
300
300
  };
301
- _context7.next = 5;
301
+ _context7.next = 1;
302
302
  return (0, _Utils.handleCallErrors)(function () {
303
303
  emitted = true;
304
304
  }, _types2.ERROR_LAYER.CALL_CONTROL, retrySpy, dummyCorrelationId, payload, 'handleCallEstablished', logObj.file);
305
- case 5:
305
+ case 1:
306
306
  abort = _context7.sent;
307
307
  expect(abort).toBe(false);
308
308
  expect(emitted).toBe(true);
309
309
  expect(retrySpy).toHaveBeenCalledWith(_constants.DEFAULT_KEEPALIVE_INTERVAL);
310
- case 9:
310
+ case 2:
311
311
  case "end":
312
312
  return _context7.stop();
313
313
  }
@@ -538,7 +538,7 @@ describe('CallingClient Error Tests', function () {
538
538
  });
539
539
  it('verify 401 error response for calling client', /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee8() {
540
540
  var statusCode, message, errorType, finalError, webexPayload, mockErrorEvent, callClientError, result;
541
- return _regenerator.default.wrap(function _callee8$(_context8) {
541
+ return _regenerator.default.wrap(function (_context8) {
542
542
  while (1) switch (_context8.prev = _context8.next) {
543
543
  case 0:
544
544
  statusCode = _types2.ERROR_CODE.UNAUTHORIZED;
@@ -564,15 +564,15 @@ describe('CallingClient Error Tests', function () {
564
564
  context: logObj
565
565
  };
566
566
  callClientError = new _Errors.CallingClientError(mockErrorEvent.message, mockErrorEvent.context, mockErrorEvent.type, _types.RegistrationStatus.ACTIVE);
567
- _context8.next = 9;
567
+ _context8.next = 1;
568
568
  return (0, _Utils.handleCallingClientErrors)(webexPayload, mockEmitterCb, logObj);
569
- case 9:
569
+ case 1:
570
570
  result = _context8.sent;
571
571
  expect(mockEmitterCb).toHaveBeenCalledWith(callClientError, finalError);
572
572
  expect(result).toBe(finalError);
573
573
  expect(logSpy).toHaveBeenCalledWith("Status code: -> ".concat(statusCode), logObj);
574
574
  expect(logSpy).toHaveBeenCalledWith('401 Unauthorized', logObj);
575
- case 14:
575
+ case 2:
576
576
  case "end":
577
577
  return _context8.stop();
578
578
  }
@@ -580,7 +580,7 @@ describe('CallingClient Error Tests', function () {
580
580
  })));
581
581
  it('verify 500 error response for calling client', /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee9() {
582
582
  var statusCode, message, errorType, finalError, webexPayload, mockErrorEvent, callClientError, result;
583
- return _regenerator.default.wrap(function _callee9$(_context9) {
583
+ return _regenerator.default.wrap(function (_context9) {
584
584
  while (1) switch (_context9.prev = _context9.next) {
585
585
  case 0:
586
586
  statusCode = _types2.ERROR_CODE.INTERNAL_SERVER_ERROR;
@@ -606,15 +606,15 @@ describe('CallingClient Error Tests', function () {
606
606
  context: logObj
607
607
  };
608
608
  callClientError = new _Errors.CallingClientError(mockErrorEvent.message, mockErrorEvent.context, mockErrorEvent.type, _types.RegistrationStatus.ACTIVE);
609
- _context9.next = 9;
609
+ _context9.next = 1;
610
610
  return (0, _Utils.handleCallingClientErrors)(webexPayload, mockEmitterCb, logObj);
611
- case 9:
611
+ case 1:
612
612
  result = _context9.sent;
613
613
  expect(mockEmitterCb).toHaveBeenCalledWith(callClientError, finalError);
614
614
  expect(result).toBe(finalError);
615
615
  expect(logSpy).toHaveBeenCalledWith("Status code: -> ".concat(statusCode), logObj);
616
616
  expect(logSpy).toHaveBeenCalledWith('500 Internal Server Error', logObj);
617
- case 14:
617
+ case 2:
618
618
  case "end":
619
619
  return _context9.stop();
620
620
  }
@@ -622,7 +622,7 @@ describe('CallingClient Error Tests', function () {
622
622
  })));
623
623
  it('verify unknown error response for calling client', /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee0() {
624
624
  var statusCode, message, errorType, finalError, webexPayload, mockErrorEvent, callClientError, result;
625
- return _regenerator.default.wrap(function _callee0$(_context0) {
625
+ return _regenerator.default.wrap(function (_context0) {
626
626
  while (1) switch (_context0.prev = _context0.next) {
627
627
  case 0:
628
628
  statusCode = 206;
@@ -648,15 +648,15 @@ describe('CallingClient Error Tests', function () {
648
648
  context: logObj
649
649
  };
650
650
  callClientError = new _Errors.CallingClientError(mockErrorEvent.message, mockErrorEvent.context, mockErrorEvent.type, _types.RegistrationStatus.ACTIVE);
651
- _context0.next = 9;
651
+ _context0.next = 1;
652
652
  return (0, _Utils.handleCallingClientErrors)(webexPayload, mockEmitterCb, logObj);
653
- case 9:
653
+ case 1:
654
654
  result = _context0.sent;
655
655
  expect(mockEmitterCb).toHaveBeenCalledWith(callClientError, finalError);
656
656
  expect(result).toBe(finalError);
657
657
  expect(logSpy).toHaveBeenCalledWith("Status code: -> ".concat(statusCode), logObj);
658
658
  expect(logSpy).toHaveBeenCalledWith('Unknown Error', logObj);
659
- case 14:
659
+ case 2:
660
660
  case "end":
661
661
  return _context0.stop();
662
662
  }
@@ -1211,7 +1211,7 @@ describe('resolveContact tests', function () {
1211
1211
  it('Resolve by userExternalId - SCIM exception', /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee1() {
1212
1212
  var _callingPartyInfo$use2;
1213
1213
  var callingPartyInfo, warnSpy, webexSpy, displayInfo, query;
1214
- return _regenerator.default.wrap(function _callee1$(_context1) {
1214
+ return _regenerator.default.wrap(function (_context1) {
1215
1215
  while (1) switch (_context1.prev = _context1.next) {
1216
1216
  case 0:
1217
1217
  callingPartyInfo = {};
@@ -1222,9 +1222,9 @@ describe('resolveContact tests', function () {
1222
1222
  callingPartyInfo.userExternalId = {
1223
1223
  $: 'userExternalId'
1224
1224
  };
1225
- _context1.next = 6;
1225
+ _context1.next = 1;
1226
1226
  return (0, _Utils.resolveContact)(callingPartyInfo);
1227
- case 6:
1227
+ case 1:
1228
1228
  displayInfo = _context1.sent;
1229
1229
  expect(displayInfo === null || displayInfo === void 0 ? void 0 : displayInfo.name).toBeUndefined();
1230
1230
  expect(warnSpy).toHaveBeenCalledWith('Error response: - 500', {
@@ -1235,7 +1235,7 @@ describe('resolveContact tests', function () {
1235
1235
  expect(webexSpy).toBeCalledOnceWith(expect.objectContaining({
1236
1236
  uri: query
1237
1237
  }));
1238
- case 11:
1238
+ case 2:
1239
1239
  case "end":
1240
1240
  return _context1.stop();
1241
1241
  }
@@ -1244,7 +1244,7 @@ describe('resolveContact tests', function () {
1244
1244
  it('Resolve by userExternalId - totalResults zero', /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee10() {
1245
1245
  var _callingPartyInfo$use3;
1246
1246
  var callingPartyInfo, scimResponse, webexSpy, displayInfo, query;
1247
- return _regenerator.default.wrap(function _callee10$(_context10) {
1247
+ return _regenerator.default.wrap(function (_context10) {
1248
1248
  while (1) switch (_context10.prev = _context10.next) {
1249
1249
  case 0:
1250
1250
  callingPartyInfo = {};
@@ -1257,9 +1257,9 @@ describe('resolveContact tests', function () {
1257
1257
  callingPartyInfo.userExternalId = {
1258
1258
  $: 'userExternalId'
1259
1259
  };
1260
- _context10.next = 7;
1260
+ _context10.next = 1;
1261
1261
  return (0, _Utils.resolveContact)(callingPartyInfo);
1262
- case 7:
1262
+ case 1:
1263
1263
  displayInfo = _context10.sent;
1264
1264
  query = scimUrl + encodeURIComponent("id eq \"".concat((_callingPartyInfo$use3 = callingPartyInfo.userExternalId) === null || _callingPartyInfo$use3 === void 0 ? void 0 : _callingPartyInfo$use3.$, "\""));
1265
1265
  expect(displayInfo === null || displayInfo === void 0 ? void 0 : displayInfo.name).toBeUndefined();
@@ -1267,7 +1267,7 @@ describe('resolveContact tests', function () {
1267
1267
  uri: query
1268
1268
  }));
1269
1269
  scimResponse.totalResults = '1';
1270
- case 12:
1270
+ case 2:
1271
1271
  case "end":
1272
1272
  return _context10.stop();
1273
1273
  }
@@ -1276,7 +1276,7 @@ describe('resolveContact tests', function () {
1276
1276
  it('Resolve by userExternalId - no primary number and no phone numbers', /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee11() {
1277
1277
  var _callingPartyInfo$use4, _displayInfo, _displayInfo2;
1278
1278
  var callingPartyInfo, scimResponse, webexSpy, displayInfo, query, phoneNumbers;
1279
- return _regenerator.default.wrap(function _callee11$(_context11) {
1279
+ return _regenerator.default.wrap(function (_context11) {
1280
1280
  while (1) switch (_context11.prev = _context11.next) {
1281
1281
  case 0:
1282
1282
  callingPartyInfo = {};
@@ -1289,9 +1289,9 @@ describe('resolveContact tests', function () {
1289
1289
  callingPartyInfo.userExternalId = {
1290
1290
  $: 'userExternalId'
1291
1291
  };
1292
- _context11.next = 7;
1292
+ _context11.next = 1;
1293
1293
  return (0, _Utils.resolveContact)(callingPartyInfo);
1294
- case 7:
1294
+ case 1:
1295
1295
  displayInfo = _context11.sent;
1296
1296
  query = scimUrl + encodeURIComponent("id eq \"".concat((_callingPartyInfo$use4 = callingPartyInfo.userExternalId) === null || _callingPartyInfo$use4 === void 0 ? void 0 : _callingPartyInfo$use4.$, "\""));
1297
1297
  expect(webexSpy).toBeCalledOnceWith(expect.objectContaining({
@@ -1308,16 +1308,16 @@ describe('resolveContact tests', function () {
1308
1308
  statusCode: 200,
1309
1309
  body: scimResponse
1310
1310
  });
1311
- _context11.next = 18;
1311
+ _context11.next = 2;
1312
1312
  return (0, _Utils.resolveContact)(callingPartyInfo);
1313
- case 18:
1313
+ case 2:
1314
1314
  displayInfo = _context11.sent;
1315
1315
  expect((_displayInfo2 = displayInfo) === null || _displayInfo2 === void 0 ? void 0 : _displayInfo2.num).toBeUndefined();
1316
1316
  expect(webexSpy).toBeCalledOnceWith(expect.objectContaining({
1317
1317
  uri: query
1318
1318
  }));
1319
1319
  scimResponse.Resources[0].phoneNumbers = phoneNumbers;
1320
- case 22:
1320
+ case 3:
1321
1321
  case "end":
1322
1322
  return _context11.stop();
1323
1323
  }
@@ -1388,7 +1388,7 @@ describe('resolveContact tests', function () {
1388
1388
  });
1389
1389
  it('Resolve by name - Empty Info', /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee12() {
1390
1390
  var callingPartyInfo, peopleListResponse, items, webexSpy, displayInfo;
1391
- return _regenerator.default.wrap(function _callee12$(_context12) {
1391
+ return _regenerator.default.wrap(function (_context12) {
1392
1392
  while (1) switch (_context12.prev = _context12.next) {
1393
1393
  case 0:
1394
1394
  callingPartyInfo = {};
@@ -1399,16 +1399,16 @@ describe('resolveContact tests', function () {
1399
1399
  callingPartyInfo.name = {
1400
1400
  $: 'Name'
1401
1401
  };
1402
- _context12.next = 8;
1402
+ _context12.next = 1;
1403
1403
  return (0, _Utils.resolveContact)(callingPartyInfo);
1404
- case 8:
1404
+ case 1:
1405
1405
  displayInfo = _context12.sent;
1406
1406
  expect(displayInfo === null || displayInfo === void 0 ? void 0 : displayInfo.name).toBeUndefined();
1407
1407
  expect(webexSpy).toBeCalledOnceWith(expect.objectContaining({
1408
1408
  displayName: 'Name'
1409
1409
  }));
1410
1410
  peopleListResponse.items = items;
1411
- case 12:
1411
+ case 2:
1412
1412
  case "end":
1413
1413
  return _context12.stop();
1414
1414
  }
@@ -1417,7 +1417,7 @@ describe('resolveContact tests', function () {
1417
1417
  it('Resolve by name - ID as plain UUID instead of part of URI', /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee13() {
1418
1418
  var _displayInfo3, _displayInfo4, _displayInfo5, _displayInfo6, _displayInfo7, _displayInfo8;
1419
1419
  var callingPartyInfo, peopleListResponse, id, webexSpy, displayInfo;
1420
- return _regenerator.default.wrap(function _callee13$(_context13) {
1420
+ return _regenerator.default.wrap(function (_context13) {
1421
1421
  while (1) switch (_context13.prev = _context13.next) {
1422
1422
  case 0:
1423
1423
  callingPartyInfo = {};
@@ -1429,9 +1429,9 @@ describe('resolveContact tests', function () {
1429
1429
  callingPartyInfo.name = {
1430
1430
  $: 'Name'
1431
1431
  };
1432
- _context13.next = 8;
1432
+ _context13.next = 1;
1433
1433
  return (0, _Utils.resolveContact)(callingPartyInfo);
1434
- case 8:
1434
+ case 1:
1435
1435
  displayInfo = _context13.sent;
1436
1436
  expect(webexSpy).toBeCalledOnceWith(expect.objectContaining({
1437
1437
  displayName: 'Name'
@@ -1445,9 +1445,9 @@ describe('resolveContact tests', function () {
1445
1445
  /* Also test empty id */
1446
1446
  peopleListResponse.items[0].id = '';
1447
1447
  webex.people.list.mockResolvedValueOnce(peopleListResponse);
1448
- _context13.next = 19;
1448
+ _context13.next = 2;
1449
1449
  return (0, _Utils.resolveContact)(callingPartyInfo);
1450
- case 19:
1450
+ case 2:
1451
1451
  displayInfo = _context13.sent;
1452
1452
  expect((_displayInfo7 = displayInfo) === null || _displayInfo7 === void 0 ? void 0 : _displayInfo7.id).toStrictEqual('');
1453
1453
  expect((_displayInfo8 = displayInfo) === null || _displayInfo8 === void 0 ? void 0 : _displayInfo8.name).toStrictEqual(peopleListResponse.items[0].displayName);
@@ -1455,7 +1455,7 @@ describe('resolveContact tests', function () {
1455
1455
  displayName: 'Name'
1456
1456
  }));
1457
1457
  peopleListResponse.items[0].id = id;
1458
- case 24:
1458
+ case 3:
1459
1459
  case "end":
1460
1460
  return _context13.stop();
1461
1461
  }
@@ -1463,7 +1463,7 @@ describe('resolveContact tests', function () {
1463
1463
  })));
1464
1464
  it('Resolve by name - Phone numbers no match for type - work', /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee14() {
1465
1465
  var callingPartyInfo, peopleListResponse, phoneNumbers, webexSpy, displayInfo;
1466
- return _regenerator.default.wrap(function _callee14$(_context14) {
1466
+ return _regenerator.default.wrap(function (_context14) {
1467
1467
  while (1) switch (_context14.prev = _context14.next) {
1468
1468
  case 0:
1469
1469
  callingPartyInfo = {};
@@ -1475,9 +1475,9 @@ describe('resolveContact tests', function () {
1475
1475
  callingPartyInfo.name = {
1476
1476
  $: 'Name'
1477
1477
  };
1478
- _context14.next = 9;
1478
+ _context14.next = 1;
1479
1479
  return (0, _Utils.resolveContact)(callingPartyInfo);
1480
- case 9:
1480
+ case 1:
1481
1481
  displayInfo = _context14.sent;
1482
1482
  expect(displayInfo === null || displayInfo === void 0 ? void 0 : displayInfo.name).toStrictEqual(peopleListResponse.items[0].displayName);
1483
1483
  expect(displayInfo === null || displayInfo === void 0 ? void 0 : displayInfo.num).toStrictEqual(peopleListResponse.items[0].phoneNumbers[0].value);
@@ -1486,7 +1486,7 @@ describe('resolveContact tests', function () {
1486
1486
  displayName: 'Name'
1487
1487
  }));
1488
1488
  peopleListResponse.items[0].phoneNumbers = phoneNumbers;
1489
- case 15:
1489
+ case 2:
1490
1490
  case "end":
1491
1491
  return _context14.stop();
1492
1492
  }
@@ -1494,7 +1494,7 @@ describe('resolveContact tests', function () {
1494
1494
  })));
1495
1495
  it('Resolve by name - Phone numbers empty', /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee15() {
1496
1496
  var callingPartyInfo, peopleListResponse, phoneNumbers, webexSpy, displayInfo;
1497
- return _regenerator.default.wrap(function _callee15$(_context15) {
1497
+ return _regenerator.default.wrap(function (_context15) {
1498
1498
  while (1) switch (_context15.prev = _context15.next) {
1499
1499
  case 0:
1500
1500
  callingPartyInfo = {};
@@ -1505,9 +1505,9 @@ describe('resolveContact tests', function () {
1505
1505
  callingPartyInfo.name = {
1506
1506
  $: 'Name'
1507
1507
  };
1508
- _context15.next = 8;
1508
+ _context15.next = 1;
1509
1509
  return (0, _Utils.resolveContact)(callingPartyInfo);
1510
- case 8:
1510
+ case 1:
1511
1511
  displayInfo = _context15.sent;
1512
1512
  expect(webexSpy).toBeCalledOnceWith(expect.objectContaining({
1513
1513
  displayName: 'Name'
@@ -1516,7 +1516,7 @@ describe('resolveContact tests', function () {
1516
1516
  expect(displayInfo === null || displayInfo === void 0 ? void 0 : displayInfo.num).toBeUndefined();
1517
1517
  expect(displayInfo === null || displayInfo === void 0 ? void 0 : displayInfo.avatarSrc).toStrictEqual(peopleListResponse.items[0].avatar);
1518
1518
  peopleListResponse.items[0].phoneNumbers = phoneNumbers;
1519
- case 14:
1519
+ case 2:
1520
1520
  case "end":
1521
1521
  return _context15.stop();
1522
1522
  }
@@ -1639,35 +1639,35 @@ describe('Infer id from UUID Tests', function () {
1639
1639
  });
1640
1640
  describe('Get endpoint by CALLING_BACKEND tests', function () {
1641
1641
  it('verify invalid calling backend ucm for xsi endpoint', /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee16() {
1642
- return _regenerator.default.wrap(function _callee16$(_context16) {
1642
+ var _t;
1643
+ return _regenerator.default.wrap(function (_context16) {
1643
1644
  while (1) switch (_context16.prev = _context16.next) {
1644
1645
  case 0:
1645
- _context16.t0 = expect;
1646
- _context16.next = 3;
1646
+ _t = expect;
1647
+ _context16.next = 1;
1647
1648
  return (0, _Utils.getXsiActionEndpoint)(webex, {
1648
1649
  file: 'testFile',
1649
1650
  method: 'testMethod'
1650
1651
  }, _types.CALLING_BACKEND.UCM);
1651
- case 3:
1652
- _context16.t1 = _context16.sent;
1653
- (0, _context16.t0)(_context16.t1).toBeInstanceOf(Error);
1654
- case 5:
1652
+ case 1:
1653
+ _t(_context16.sent).toBeInstanceOf(Error);
1654
+ case 2:
1655
1655
  case "end":
1656
1656
  return _context16.stop();
1657
1657
  }
1658
1658
  }, _callee16);
1659
1659
  })));
1660
1660
  it('verify invalid calling backend wxc for vg endpoint', /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee17() {
1661
- return _regenerator.default.wrap(function _callee17$(_context17) {
1661
+ var _t2;
1662
+ return _regenerator.default.wrap(function (_context17) {
1662
1663
  while (1) switch (_context17.prev = _context17.next) {
1663
1664
  case 0:
1664
- _context17.t0 = expect;
1665
- _context17.next = 3;
1665
+ _t2 = expect;
1666
+ _context17.next = 1;
1666
1667
  return (0, _Utils.getVgActionEndpoint)(webex, _types.CALLING_BACKEND.WXC);
1667
- case 3:
1668
- _context17.t1 = _context17.sent;
1669
- (0, _context17.t0)(_context17.t1).toBeInstanceOf(Error);
1670
- case 5:
1668
+ case 1:
1669
+ _t2(_context17.sent).toBeInstanceOf(Error);
1670
+ case 2:
1671
1671
  case "end":
1672
1672
  return _context17.stop();
1673
1673
  }
@@ -1691,7 +1691,7 @@ describe('Get XSI Action Endpoint tests', function () {
1691
1691
  };
1692
1692
  it('should return xsiEndpoint for BWRKS backend when URL ends with /v2.0', /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee18() {
1693
1693
  var mockResponse, xsiEndpoint;
1694
- return _regenerator.default.wrap(function _callee18$(_context18) {
1694
+ return _regenerator.default.wrap(function (_context18) {
1695
1695
  while (1) switch (_context18.prev = _context18.next) {
1696
1696
  case 0:
1697
1697
  mockResponse = {
@@ -1704,13 +1704,13 @@ describe('Get XSI Action Endpoint tests', function () {
1704
1704
  }
1705
1705
  };
1706
1706
  mockWebex.request.mockResolvedValue(mockResponse);
1707
- _context18.next = 4;
1707
+ _context18.next = 1;
1708
1708
  return (0, _Utils.getXsiActionEndpoint)(mockWebex, loggerContext, _types.CALLING_BACKEND.BWRKS);
1709
- case 4:
1709
+ case 1:
1710
1710
  xsiEndpoint = _context18.sent;
1711
1711
  expect(mockWebex.request).toHaveBeenCalledTimes(1);
1712
1712
  expect(xsiEndpoint).toBe('https://fake-broadworks-url.com');
1713
- case 7:
1713
+ case 2:
1714
1714
  case "end":
1715
1715
  return _context18.stop();
1716
1716
  }
@@ -1718,7 +1718,7 @@ describe('Get XSI Action Endpoint tests', function () {
1718
1718
  })));
1719
1719
  it('should return xsiEndpoint for BWRKS backend when URL ends with /v2.0/', /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee19() {
1720
1720
  var mockResponse, xsiEndpoint;
1721
- return _regenerator.default.wrap(function _callee19$(_context19) {
1721
+ return _regenerator.default.wrap(function (_context19) {
1722
1722
  while (1) switch (_context19.prev = _context19.next) {
1723
1723
  case 0:
1724
1724
  mockResponse = {
@@ -1731,13 +1731,13 @@ describe('Get XSI Action Endpoint tests', function () {
1731
1731
  }
1732
1732
  };
1733
1733
  mockWebex.request.mockResolvedValue(mockResponse);
1734
- _context19.next = 4;
1734
+ _context19.next = 1;
1735
1735
  return (0, _Utils.getXsiActionEndpoint)(mockWebex, loggerContext, _types.CALLING_BACKEND.BWRKS);
1736
- case 4:
1736
+ case 1:
1737
1737
  xsiEndpoint = _context19.sent;
1738
1738
  expect(mockWebex.request).toHaveBeenCalledTimes(1);
1739
1739
  expect(xsiEndpoint).toBe('https://fake-broadworks-url.com');
1740
- case 7:
1740
+ case 2:
1741
1741
  case "end":
1742
1742
  return _context19.stop();
1743
1743
  }
@@ -1745,7 +1745,7 @@ describe('Get XSI Action Endpoint tests', function () {
1745
1745
  })));
1746
1746
  it('should return xsiEndpoint for BWRKS backend when URL does not end with any version', /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee20() {
1747
1747
  var mockResponse, xsiEndpoint;
1748
- return _regenerator.default.wrap(function _callee20$(_context20) {
1748
+ return _regenerator.default.wrap(function (_context20) {
1749
1749
  while (1) switch (_context20.prev = _context20.next) {
1750
1750
  case 0:
1751
1751
  mockResponse = {
@@ -1758,13 +1758,13 @@ describe('Get XSI Action Endpoint tests', function () {
1758
1758
  }
1759
1759
  };
1760
1760
  mockWebex.request.mockResolvedValue(mockResponse);
1761
- _context20.next = 4;
1761
+ _context20.next = 1;
1762
1762
  return (0, _Utils.getXsiActionEndpoint)(mockWebex, loggerContext, _types.CALLING_BACKEND.BWRKS);
1763
- case 4:
1763
+ case 1:
1764
1764
  xsiEndpoint = _context20.sent;
1765
1765
  expect(mockWebex.request).toHaveBeenCalledTimes(1);
1766
1766
  expect(xsiEndpoint).toBe('https://fake-broadworks-url.com');
1767
- case 7:
1767
+ case 2:
1768
1768
  case "end":
1769
1769
  return _context20.stop();
1770
1770
  }
@@ -1840,16 +1840,16 @@ describe('uploadLogs', function () {
1840
1840
  });
1841
1841
  it('should upload logs and return the response', /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee21() {
1842
1842
  var mockMetaData, logSpy, result;
1843
- return _regenerator.default.wrap(function _callee21$(_context21) {
1843
+ return _regenerator.default.wrap(function (_context21) {
1844
1844
  while (1) switch (_context21.prev = _context21.next) {
1845
1845
  case 0:
1846
1846
  mockMetaData = {
1847
1847
  correlationId: 'test-correlation'
1848
1848
  };
1849
1849
  logSpy = jest.spyOn(_Logger.default, 'info');
1850
- _context21.next = 4;
1850
+ _context21.next = 1;
1851
1851
  return (0, _Utils.uploadLogs)(mockMetaData, true);
1852
- case 4:
1852
+ case 1:
1853
1853
  result = _context21.sent;
1854
1854
  expect(result).toEqual({
1855
1855
  trackingid: '1234',
@@ -1881,15 +1881,15 @@ describe('uploadLogs', function () {
1881
1881
  }), undefined, {
1882
1882
  type: 'diff'
1883
1883
  });
1884
- case 9:
1884
+ case 2:
1885
1885
  case "end":
1886
1886
  return _context21.stop();
1887
1887
  }
1888
1888
  }, _callee21);
1889
1889
  })));
1890
1890
  it('should log and throw an error if the upload fails', /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee22() {
1891
- var mockMetaData, mockError, logSpy;
1892
- return _regenerator.default.wrap(function _callee22$(_context22) {
1891
+ var mockMetaData, mockError, logSpy, _t3;
1892
+ return _regenerator.default.wrap(function (_context22) {
1893
1893
  while (1) switch (_context22.prev = _context22.next) {
1894
1894
  case 0:
1895
1895
  mockMetaData = {
@@ -1898,19 +1898,19 @@ describe('uploadLogs', function () {
1898
1898
  mockError = new Error('Upload failed'); // Mock the submitLogs to fail
1899
1899
  submitLogsMock.mockRejectedValueOnce(mockError);
1900
1900
  logSpy = jest.spyOn(_Logger.default, 'error');
1901
- _context22.prev = 4;
1902
- _context22.next = 7;
1901
+ _context22.prev = 1;
1902
+ _context22.next = 2;
1903
1903
  return (0, _Utils.uploadLogs)(mockMetaData, true);
1904
- case 7:
1904
+ case 2:
1905
1905
  // If we get here, the test should fail since we expected an exception
1906
1906
  expect(true).toBe(false); // This will fail the test if no exception is thrown
1907
- _context22.next = 15;
1907
+ _context22.next = 4;
1908
1908
  break;
1909
- case 10:
1910
- _context22.prev = 10;
1911
- _context22.t0 = _context22["catch"](4);
1912
- expect(_context22.t0).toBe(mockError);
1913
- expect(logSpy).toHaveBeenCalledWith("Failed to upload Logs ".concat((0, _stringify.default)(_context22.t0)), {
1909
+ case 3:
1910
+ _context22.prev = 3;
1911
+ _t3 = _context22["catch"](1);
1912
+ expect(_t3).toBe(mockError);
1913
+ expect(logSpy).toHaveBeenCalledWith("Failed to upload Logs ".concat((0, _stringify.default)(_t3)), {
1914
1914
  file: _constants.UTILS_FILE,
1915
1915
  method: 'uploadLogs'
1916
1916
  });
@@ -1924,7 +1924,7 @@ describe('uploadLogs', function () {
1924
1924
  tracking_id: undefined,
1925
1925
  feedback_id: 'mocked-uuid-12345',
1926
1926
  call_id: undefined,
1927
- error: "Failed to upload Logs ".concat((0, _stringify.default)(_context22.t0))
1927
+ error: "Failed to upload Logs ".concat((0, _stringify.default)(_t3))
1928
1928
  },
1929
1929
  tags: {
1930
1930
  action: 'upload_logs',
@@ -1933,15 +1933,15 @@ describe('uploadLogs', function () {
1933
1933
  },
1934
1934
  type: 'behavioral'
1935
1935
  });
1936
- case 15:
1936
+ case 4:
1937
1937
  case "end":
1938
1938
  return _context22.stop();
1939
1939
  }
1940
- }, _callee22, null, [[4, 10]]);
1940
+ }, _callee22, null, [[1, 3]]);
1941
1941
  })));
1942
1942
  it('should log error and not throw an error if the upload fails with throw exception false', /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee23() {
1943
1943
  var mockMetaData, mockError, logSpy, result;
1944
- return _regenerator.default.wrap(function _callee23$(_context23) {
1944
+ return _regenerator.default.wrap(function (_context23) {
1945
1945
  while (1) switch (_context23.prev = _context23.next) {
1946
1946
  case 0:
1947
1947
  mockMetaData = {
@@ -1951,9 +1951,9 @@ describe('uploadLogs', function () {
1951
1951
  mockError = new Error('Upload failed'); // Mock the submitLogs to fail
1952
1952
  submitLogsMock.mockRejectedValueOnce(mockError);
1953
1953
  logSpy = jest.spyOn(_Logger.default, 'error');
1954
- _context23.next = 6;
1954
+ _context23.next = 1;
1955
1955
  return (0, _Utils.uploadLogs)(mockMetaData, false);
1956
- case 6:
1956
+ case 1:
1957
1957
  result = _context23.sent;
1958
1958
  expect(result).toBeUndefined();
1959
1959
  expect(logSpy).toHaveBeenCalledWith("Failed to upload Logs ".concat((0, _stringify.default)(mockError)), {
@@ -1979,7 +1979,7 @@ describe('uploadLogs', function () {
1979
1979
  },
1980
1980
  type: 'behavioral'
1981
1981
  });
1982
- case 10:
1982
+ case 2:
1983
1983
  case "end":
1984
1984
  return _context23.stop();
1985
1985
  }