@wazo/sdk 0.37.18 → 0.37.22

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 (163) hide show
  1. package/dist/wazo-sdk.js +13 -5
  2. package/esm/__tests__/api-client.test.js +52 -9
  3. package/esm/__tests__/web-rtc-client.test.js +80 -20
  4. package/esm/api/agentd.js +27 -4
  5. package/esm/api/amid.js +27 -4
  6. package/esm/api/application.js +27 -4
  7. package/esm/api/auth.js +29 -5
  8. package/esm/api/call-logd.js +29 -6
  9. package/esm/api/calld.js +27 -4
  10. package/esm/api/chatd.js +27 -4
  11. package/esm/api/confd.js +51 -8
  12. package/esm/api/ctid-ng.js +27 -4
  13. package/esm/api/dird.js +27 -4
  14. package/esm/api/webhookd.js +27 -4
  15. package/esm/api-client.js +54 -11
  16. package/esm/checker/Checker.js +83 -21
  17. package/esm/checker/checks/aor.js +54 -11
  18. package/esm/checker/checks/api.js +54 -11
  19. package/esm/checker/checks/ice-ipv4.js +1 -1
  20. package/esm/checker/checks/index.js +84 -22
  21. package/esm/checker/checks/symmetric-nat.js +1 -1
  22. package/esm/checker/checks/wazo-websocket.js +29 -4
  23. package/esm/checker/checks/webrtc-transport.js +82 -22
  24. package/esm/checker/checks/webrtc.js +82 -22
  25. package/esm/domain/AdHocAPIConference.js +54 -11
  26. package/esm/domain/Agent.js +1 -1
  27. package/esm/domain/BadResponse.js +1 -1
  28. package/esm/domain/Call.js +1 -1
  29. package/esm/domain/CallLog.js +3 -3
  30. package/esm/domain/CallSession.js +1 -1
  31. package/esm/domain/ChatMessage.js +1 -1
  32. package/esm/domain/ChatRoom.js +1 -1
  33. package/esm/domain/Contact.js +2 -1
  34. package/esm/domain/Country.js +1 -1
  35. package/esm/domain/Device/DebugDevice.js +1 -1
  36. package/esm/domain/ExternalApp.js +1 -1
  37. package/esm/domain/Features.js +54 -10
  38. package/esm/domain/ForwardOption.js +2 -1
  39. package/esm/domain/IndirectTransfer.js +1 -1
  40. package/esm/domain/Line.js +1 -1
  41. package/esm/domain/Meeting.js +20 -3
  42. package/esm/domain/NotificationOptions.js +1 -1
  43. package/esm/domain/Phone/CTIPhone.js +55 -11
  44. package/esm/domain/Phone/WebRTCPhone.js +39 -6
  45. package/esm/domain/Profile.js +2 -1
  46. package/esm/domain/Recording.js +2 -2
  47. package/esm/domain/Relocation.js +1 -1
  48. package/esm/domain/Room.js +1 -1
  49. package/esm/domain/ServerError.js +1 -1
  50. package/esm/domain/Session.js +2 -2
  51. package/esm/domain/SipLine.js +1 -1
  52. package/esm/domain/Subscription.js +1 -1
  53. package/esm/domain/SwitchboardCall.js +1 -1
  54. package/esm/domain/Voicemail.js +1 -1
  55. package/esm/domain/__tests__/CallLog.test.js +2 -2
  56. package/esm/index.js +101 -24
  57. package/esm/lib/WazoSessionDescriptionHandler.js +28 -4
  58. package/esm/service/CallApi.js +54 -11
  59. package/esm/service/IssueReporter.js +27 -4
  60. package/esm/service/__tests__/IssueReporter.test.js +26 -3
  61. package/esm/service/getApiClient.js +55 -11
  62. package/esm/simple/Auth.js +101 -23
  63. package/esm/simple/Configuration.js +100 -23
  64. package/esm/simple/Directory.js +53 -10
  65. package/esm/simple/Phone.js +100 -23
  66. package/esm/simple/Websocket.js +30 -4
  67. package/esm/simple/index.js +100 -23
  68. package/esm/simple/room/LocalParticipant.js +113 -40
  69. package/esm/simple/room/Participant.js +112 -37
  70. package/esm/simple/room/RemoteParticipant.js +114 -41
  71. package/esm/simple/room/Room.js +113 -37
  72. package/esm/simple/room/SipRoom.js +101 -26
  73. package/esm/simple/room/Stream.js +101 -26
  74. package/esm/simple/room/__tests__/RemoteParticipant.test.js +99 -22
  75. package/esm/simple/utils.js +99 -22
  76. package/esm/utils/Emitter.js +1 -1
  77. package/esm/utils/Heartbeat.js +1 -1
  78. package/esm/utils/__tests__/api-requester.test.js +26 -3
  79. package/esm/utils/api-requester.js +28 -4
  80. package/esm/utils/compare-version.js +1 -1
  81. package/esm/utils/isMobile.js +1 -1
  82. package/esm/utils/new-from.js +1 -1
  83. package/esm/utils/once.js +1 -1
  84. package/esm/utils/update-from.js +1 -1
  85. package/esm/web-rtc-client.js +83 -22
  86. package/esm/websocket-client.js +30 -4
  87. package/lib/__tests__/api-client.test.js +61 -18
  88. package/lib/__tests__/web-rtc-client.test.js +97 -37
  89. package/lib/api/agentd.js +27 -4
  90. package/lib/api/amid.js +27 -4
  91. package/lib/api/application.js +27 -4
  92. package/lib/api/auth.js +28 -5
  93. package/lib/api/call-logd.js +34 -11
  94. package/lib/api/calld.js +30 -7
  95. package/lib/api/chatd.js +28 -5
  96. package/lib/api/confd.js +51 -8
  97. package/lib/api/ctid-ng.js +30 -7
  98. package/lib/api/dird.js +27 -4
  99. package/lib/api/webhookd.js +27 -4
  100. package/lib/api-client.js +61 -18
  101. package/lib/checker/Checker.js +100 -38
  102. package/lib/checker/checks/aor.js +61 -18
  103. package/lib/checker/checks/api.js +61 -18
  104. package/lib/checker/checks/index.js +100 -38
  105. package/lib/checker/checks/wazo-websocket.js +31 -6
  106. package/lib/checker/checks/webrtc-transport.js +97 -37
  107. package/lib/checker/checks/webrtc.js +97 -37
  108. package/lib/domain/AdHocAPIConference.js +61 -18
  109. package/lib/domain/Call.js +1 -1
  110. package/lib/domain/CallLog.js +7 -7
  111. package/lib/domain/ChatMessage.js +1 -1
  112. package/lib/domain/Contact.js +1 -1
  113. package/lib/domain/Features.js +62 -19
  114. package/lib/domain/ForwardOption.js +1 -1
  115. package/lib/domain/Meeting.js +19 -2
  116. package/lib/domain/Phone/CTIPhone.js +63 -20
  117. package/lib/domain/Phone/WebRTCPhone.js +40 -8
  118. package/lib/domain/Profile.js +1 -1
  119. package/lib/domain/Recording.js +3 -3
  120. package/lib/domain/Voicemail.js +1 -1
  121. package/lib/domain/__tests__/Call.test.js +1 -1
  122. package/lib/domain/__tests__/CallLog.test.js +13 -13
  123. package/lib/domain/__tests__/Voicemail.test.js +1 -1
  124. package/lib/index.js +120 -43
  125. package/lib/lib/WazoSessionDescriptionHandler.js +32 -9
  126. package/lib/service/CallApi.js +61 -18
  127. package/lib/service/IssueReporter.js +27 -4
  128. package/lib/service/__tests__/IssueReporter.test.js +27 -4
  129. package/lib/service/getApiClient.js +62 -19
  130. package/lib/simple/Auth.js +119 -42
  131. package/lib/simple/Configuration.js +118 -41
  132. package/lib/simple/Directory.js +61 -18
  133. package/lib/simple/Phone.js +118 -41
  134. package/lib/simple/Websocket.js +32 -6
  135. package/lib/simple/index.js +118 -41
  136. package/lib/simple/room/LocalParticipant.js +132 -59
  137. package/lib/simple/room/Participant.js +130 -55
  138. package/lib/simple/room/RemoteParticipant.js +133 -60
  139. package/lib/simple/room/Room.js +131 -56
  140. package/lib/simple/room/SipRoom.js +120 -45
  141. package/lib/simple/room/Stream.js +120 -45
  142. package/lib/simple/room/__tests__/RemoteParticipant.test.js +118 -41
  143. package/lib/simple/utils.js +118 -41
  144. package/lib/utils/Emitter.js +1 -1
  145. package/lib/utils/PhoneNumberUtil.js +2 -2
  146. package/lib/utils/__tests__/PhoneNumberUtil.test.js +2 -2
  147. package/lib/utils/__tests__/api-requester.test.js +27 -4
  148. package/lib/utils/__tests__/sdp.test.js +12 -12
  149. package/lib/utils/api-requester.js +28 -5
  150. package/lib/utils/sdp.js +10 -10
  151. package/lib/web-rtc-client.js +98 -38
  152. package/lib/websocket-client.js +33 -7
  153. package/package.json +2 -2
  154. package/src/api/confd.js +5 -2
  155. package/src/domain/CallLog.js +1 -1
  156. package/src/domain/Meeting.js +19 -2
  157. package/src/domain/Phone/WebRTCPhone.js +11 -2
  158. package/src/domain/Recording.js +1 -1
  159. package/src/service/IssueReporter.js +26 -3
  160. package/src/simple/Phone.js +5 -0
  161. package/src/types/WebSocketMessage.js +5 -1
  162. package/src/web-rtc-client.js +28 -11
  163. package/src/websocket-client.js +2 -0
@@ -19,7 +19,7 @@ import 'sip.js/lib/platform/web/session-description-handler/session-description-
19
19
  import moment from 'moment';
20
20
  import { Base64 } from 'js-base64';
21
21
  import sdpParser from 'sdp-transform';
22
- import { KEYUTIL, jws, b64utoutf8 } from 'jsrsasign';
22
+ import { jws, b64utoutf8, KEYUTIL } from 'jsrsasign';
23
23
  import { jsonToGraphQLQuery } from 'json-to-graphql-query/lib/jsonToGraphQLQuery';
24
24
 
25
25
  /* */
@@ -412,6 +412,7 @@ class IssueReporter {
412
412
 
413
413
 
414
414
 
415
+
415
416
 
416
417
  constructor() {
417
418
  addLevelsTo(this);
@@ -423,12 +424,17 @@ class IssueReporter {
423
424
  this.bufferTimeout = null;
424
425
  this._boundProcessBuffer = this._processBuffer.bind(this);
425
426
  this._boundParseLoggerBody = this._parseLoggerBody.bind(this);
427
+ this._callback = null;
426
428
  }
427
429
 
428
430
  init() {
429
431
  this._catchConsole();
430
432
  }
431
433
 
434
+ setCallback(cb ) {
435
+ this._callback = cb;
436
+ }
437
+
432
438
  configureRemoteClient(configuration = { tag: 'wazo-sdk', host: null, port: null, level: null, extra: {} }) {
433
439
  this.remoteClientConfiguration = configuration;
434
440
  }
@@ -464,6 +470,7 @@ class IssueReporter {
464
470
 
465
471
  // Handle category label
466
472
  let category = null;
473
+ let skipSendToRemote = false;
467
474
  let extra = {};
468
475
  if (args[0].indexOf(CATEGORY_PREFIX) === 0) {
469
476
  category = args[0].split('=')[1];
@@ -479,6 +486,7 @@ class IssueReporter {
479
486
  errorMessage: lastArg.message,
480
487
  errorStack: lastArg.stack,
481
488
  errorType: lastArg.constructor.name,
489
+ skipSendToRemote: lastArg.skipSendToRemote,
482
490
  };
483
491
  } else {
484
492
  extra = lastArg;
@@ -487,6 +495,11 @@ class IssueReporter {
487
495
  args.splice(1, 1);
488
496
  }
489
497
 
498
+ if (extra.skipSendToRemote) {
499
+ skipSendToRemote = true;
500
+ delete extra.skipSendToRemote;
501
+ }
502
+
490
503
  const date = moment().format('YYYY-MM-DD HH:mm:ss.SSS');
491
504
  const message = args.join(', ');
492
505
  let consoleMessage = message;
@@ -507,7 +520,13 @@ class IssueReporter {
507
520
  const oldMethod = this.oldConsoleMethods[consoleLevel] || this.oldConsoleMethods.log;
508
521
  oldMethod.apply(oldMethod, [date, consoleMessage]);
509
522
 
510
- this._sendToRemoteLogger(level, { date, message, category, ...extra });
523
+ if (this._callback) {
524
+ this._callback(level, consoleMessage);
525
+ }
526
+
527
+ if (!skipSendToRemote) {
528
+ this._sendToRemoteLogger(level, { date, message, category, ...extra });
529
+ }
511
530
  }
512
531
 
513
532
  logRequest(url , options , response , start ) {
@@ -652,7 +671,11 @@ class IssueReporter {
652
671
  },
653
672
  // $FlowFixMe
654
673
  body,
655
- }).catch(() => {
674
+ }).catch((e ) => {
675
+ // $FlowFixMe
676
+ e.skipSendToRemote = true;
677
+ this.log('error', this._makeCategory('grafana'), 'Sending log to grafana, error', e);
678
+
656
679
  setTimeout(() => {
657
680
  if (isArray) {
658
681
  payload = payload.map(message => {
@@ -664,7 +687,7 @@ class IssueReporter {
664
687
  payload._retry = retry + 1;
665
688
  }
666
689
 
667
- this._sendDebugToGrafana(body, retry + 1);
690
+ this._sendDebugToGrafana(payload, retry + 1);
668
691
  }, 5000 + retry * 1000);
669
692
  });
670
693
  }
@@ -3166,7 +3189,8 @@ class ExternalApp {
3166
3189
 
3167
3190
 
3168
3191
 
3169
-
3192
+
3193
+
3170
3194
 
3171
3195
 
3172
3196
  class Meeting {
@@ -3178,6 +3202,7 @@ class Meeting {
3178
3202
 
3179
3203
 
3180
3204
 
3205
+
3181
3206
 
3182
3207
 
3183
3208
  static parse(plain ) {
@@ -3189,14 +3214,28 @@ class Meeting {
3189
3214
  port: plain.port,
3190
3215
  uuid: plain.uuid,
3191
3216
  number: plain.number,
3217
+ persistent: plain.persistent,
3192
3218
  });
3193
3219
  }
3194
3220
 
3221
+ static parseMany(items ) {
3222
+ return items.map(plain => Meeting.parse(plain));
3223
+ }
3224
+
3195
3225
  static newFrom(meeting ) {
3196
3226
  return newFrom(meeting, Meeting);
3197
3227
  }
3198
3228
 
3199
- constructor({ uuid, name, guestSipAuthorization, ownerUuids, port, uri, number } = {}) {
3229
+ constructor({
3230
+ uuid,
3231
+ name,
3232
+ guestSipAuthorization,
3233
+ ownerUuids,
3234
+ port,
3235
+ uri,
3236
+ number,
3237
+ persistent,
3238
+ } = {}) {
3200
3239
  this.guestSipAuthorization = guestSipAuthorization;
3201
3240
  this.uri = uri;
3202
3241
  this.name = name;
@@ -3204,6 +3243,7 @@ class Meeting {
3204
3243
  this.port = port;
3205
3244
  this.uuid = uuid;
3206
3245
  this.number = number;
3246
+ this.persistent = persistent;
3207
3247
 
3208
3248
  // Useful to compare instead of instanceof with minified code
3209
3249
  this.type = 'Meeting';
@@ -3281,8 +3321,11 @@ var confdMethods = (client , baseUrl ) => ({
3281
3321
  }
3282
3322
  },
3283
3323
 
3284
- createMyMeeting: (name ) =>
3285
- client.post(`${baseUrl}/users/me/meetings`, { name }).then(Meeting.parse),
3324
+ getMyMeetings: () =>
3325
+ client.get(`${baseUrl}/users/me/meetings`).then(response => Meeting.parseMany(response.items)),
3326
+
3327
+ createMyMeeting: (name , persistent ) =>
3328
+ client.post(`${baseUrl}/users/me/meetings`, { name, persistent }).then(Meeting.parse),
3286
3329
 
3287
3330
  deleteMyMeeting: (meetingUuid ) =>
3288
3331
  client.delete(`${baseUrl}/users/me/meetings/${meetingUuid}`, null),
@@ -3767,7 +3810,7 @@ class Recording {
3767
3810
 
3768
3811
 
3769
3812
 
3770
- static parseMany(recordings ) {
3813
+ static parseMany(recordings = []) {
3771
3814
  return recordings.map(item => Recording.parse(item));
3772
3815
  }
3773
3816
 
@@ -3893,7 +3936,7 @@ class CallLog {
3893
3936
  duration: (plain.duration || 0) * 1000, // duration is in seconds
3894
3937
  start: moment(plain.start).toDate(),
3895
3938
  end: plain.end ? moment(plain.end).toDate() : null,
3896
- recordings: Recording.parseMany(plain.recordings),
3939
+ recordings: Recording.parseMany(plain.recordings || []),
3897
3940
  });
3898
3941
  }
3899
3942
 
@@ -5694,7 +5737,9 @@ class WebRTCClient extends Emitter {
5694
5737
  const inviteOptions = {
5695
5738
  requestDelegate: {
5696
5739
  onAccept: (response ) => {
5697
- session.sessionDescriptionHandler.peerConnection.sfu = conference;
5740
+ if (session.sessionDescriptionHandler.peerConnection) {
5741
+ session.sessionDescriptionHandler.peerConnection.sfu = conference;
5742
+ }
5698
5743
  this._onAccepted(session, response.session, true);
5699
5744
  },
5700
5745
  onReject: (response ) => {
@@ -6030,7 +6075,7 @@ class WebRTCClient extends Emitter {
6030
6075
  // We search for the last transceiver without `video-` in the mid (video- means remote transceiver)
6031
6076
  const transceivers = pc.getTransceivers();
6032
6077
  const transceiverIdx = lastIndexOf(transceivers, transceiver =>
6033
- transceiver.sender.track === null && transceiver.mid.indexOf('video') === -1);
6078
+ transceiver.sender.track === null && transceiver.mid && transceiver.mid.indexOf('video') === -1);
6034
6079
 
6035
6080
  videoSender = transceiverIdx !== -1 ? transceivers[transceiverIdx].sender : null;
6036
6081
  } else {
@@ -6566,6 +6611,16 @@ class WebRTCClient extends Emitter {
6566
6611
  return this.hasRemoteVideo(sessionId) ? this.getRemoteStream(sessionId) : null;
6567
6612
  }
6568
6613
 
6614
+ // Useful in a react-native environment when remoteMediaStream is not updated
6615
+ getRemoteVideoStreamFromPc(sessionId ) {
6616
+ const pc = this.getPeerConnection(sessionId);
6617
+ if (!pc) {
6618
+ return null;
6619
+ }
6620
+
6621
+ return pc.getRemoteStreams().find(stream => !!stream.getVideoTracks().length);
6622
+ }
6623
+
6569
6624
  hasVideo(sessionId ) {
6570
6625
  return this.hasLocalVideo(sessionId) || this.hasRemoteVideo(sessionId);
6571
6626
  }
@@ -7076,6 +7131,7 @@ class WebRTCClient extends Emitter {
7076
7131
  session.sessionDescriptionHandler.remoteMediaStream.onaddtrack = onTrack;
7077
7132
 
7078
7133
  pc.oniceconnectionstatechange = () => {
7134
+ logger.info('on ice connection state changed', { state: pc.iceConnectionState });
7079
7135
  if (pc.iceConnectionState === 'disconnected') {
7080
7136
  this.eventEmitter.emit(ON_DISCONNECTED);
7081
7137
  }
@@ -7344,18 +7400,22 @@ class WebRTCClient extends Emitter {
7344
7400
  });
7345
7401
 
7346
7402
  networkStats.packetsLost = packetsLost;
7347
- networkStats.audioBytesSent = audioBytesSent;
7403
+ networkStats.totalAudioBytesSent = audioBytesSent;
7404
+ networkStats.audioBytesSent = audioBytesSent - lastAudioSent;
7405
+ networkStats.totalAudioBytesReceived = audioBytesReceived - lastAudioReceived;
7348
7406
  networkStats.audioBytesReceived = audioBytesReceived;
7349
- networkStats.videoBytesSent = videoBytesSent;
7350
- networkStats.videoBytesReceived = videoBytesReceived;
7407
+ networkStats.totalVideoBytesSent = videoBytesSent;
7408
+ networkStats.videoBytesSent = videoBytesSent - lastVideoSent;
7409
+ networkStats.totalVideoBytesReceived = videoBytesReceived;
7410
+ networkStats.videoBytesReceived = videoBytesReceived - lastVideoReceived;
7411
+ networkStats.totalTransportSent = transportSent - lastTransportSent;
7351
7412
  networkStats.transportSent = transportSent;
7352
- networkStats.transportReceived = transportReceived;
7353
-
7354
- const bandwidth = (networkStats.audioBytesSent - lastAudioSent) + (networkStats.videoBytesSent - lastVideoSent)
7355
- + (networkStats.audioBytesReceived - lastAudioReceived) + (networkStats.videoBytesReceived - lastVideoReceived)
7356
- + (networkStats.transportReceived - lastTransportReceived) + (networkStats.transportSent - lastTransportSent);
7413
+ networkStats.totalTransportReceived = transportReceived;
7414
+ networkStats.transportReceived = transportReceived - lastTransportReceived;
7357
7415
 
7358
- networkStats.bandwidth = bandwidth;
7416
+ networkStats.bandwidth = networkStats.audioBytesSent + networkStats.audioBytesReceived
7417
+ + networkStats.videoBytesSent + networkStats.videoBytesReceived + networkStats.transportReceived
7418
+ + networkStats.transportSent;
7359
7419
 
7360
7420
  this.eventEmitter.emit(ON_NETWORK_STATS, session, networkStats, this.sessionNetworkStats[sessionId]);
7361
7421
  this.sessionNetworkStats[sessionId].push(networkStats);
@@ -7409,4 +7469,4 @@ var webrtc = {
7409
7469
  }),
7410
7470
  };
7411
7471
 
7412
- export { webrtc as default };
7472
+ export default webrtc;
@@ -1,7 +1,7 @@
1
1
  import 'sip.js/lib/api/session-state';
2
2
  import moment from 'moment';
3
3
  import { Base64 } from 'js-base64';
4
- import { KEYUTIL, jws, b64utoutf8 } from 'jsrsasign';
4
+ import { jws, b64utoutf8, KEYUTIL } from 'jsrsasign';
5
5
  import 'events';
6
6
  import { jsonToGraphQLQuery } from 'json-to-graphql-query/lib/jsonToGraphQLQuery';
7
7
 
@@ -347,6 +347,7 @@ class IssueReporter {
347
347
 
348
348
 
349
349
 
350
+
350
351
 
351
352
  constructor() {
352
353
  addLevelsTo(this);
@@ -358,12 +359,17 @@ class IssueReporter {
358
359
  this.bufferTimeout = null;
359
360
  this._boundProcessBuffer = this._processBuffer.bind(this);
360
361
  this._boundParseLoggerBody = this._parseLoggerBody.bind(this);
362
+ this._callback = null;
361
363
  }
362
364
 
363
365
  init() {
364
366
  this._catchConsole();
365
367
  }
366
368
 
369
+ setCallback(cb ) {
370
+ this._callback = cb;
371
+ }
372
+
367
373
  configureRemoteClient(configuration = { tag: 'wazo-sdk', host: null, port: null, level: null, extra: {} }) {
368
374
  this.remoteClientConfiguration = configuration;
369
375
  }
@@ -399,6 +405,7 @@ class IssueReporter {
399
405
 
400
406
  // Handle category label
401
407
  let category = null;
408
+ let skipSendToRemote = false;
402
409
  let extra = {};
403
410
  if (args[0].indexOf(CATEGORY_PREFIX) === 0) {
404
411
  category = args[0].split('=')[1];
@@ -414,6 +421,7 @@ class IssueReporter {
414
421
  errorMessage: lastArg.message,
415
422
  errorStack: lastArg.stack,
416
423
  errorType: lastArg.constructor.name,
424
+ skipSendToRemote: lastArg.skipSendToRemote,
417
425
  };
418
426
  } else {
419
427
  extra = lastArg;
@@ -422,6 +430,11 @@ class IssueReporter {
422
430
  args.splice(1, 1);
423
431
  }
424
432
 
433
+ if (extra.skipSendToRemote) {
434
+ skipSendToRemote = true;
435
+ delete extra.skipSendToRemote;
436
+ }
437
+
425
438
  const date = moment().format('YYYY-MM-DD HH:mm:ss.SSS');
426
439
  const message = args.join(', ');
427
440
  let consoleMessage = message;
@@ -442,7 +455,13 @@ class IssueReporter {
442
455
  const oldMethod = this.oldConsoleMethods[consoleLevel] || this.oldConsoleMethods.log;
443
456
  oldMethod.apply(oldMethod, [date, consoleMessage]);
444
457
 
445
- this._sendToRemoteLogger(level, { date, message, category, ...extra });
458
+ if (this._callback) {
459
+ this._callback(level, consoleMessage);
460
+ }
461
+
462
+ if (!skipSendToRemote) {
463
+ this._sendToRemoteLogger(level, { date, message, category, ...extra });
464
+ }
446
465
  }
447
466
 
448
467
  logRequest(url , options , response , start ) {
@@ -587,7 +606,11 @@ class IssueReporter {
587
606
  },
588
607
  // $FlowFixMe
589
608
  body,
590
- }).catch(() => {
609
+ }).catch((e ) => {
610
+ // $FlowFixMe
611
+ e.skipSendToRemote = true;
612
+ this.log('error', this._makeCategory('grafana'), 'Sending log to grafana, error', e);
613
+
591
614
  setTimeout(() => {
592
615
  if (isArray) {
593
616
  payload = payload.map(message => {
@@ -599,7 +622,7 @@ class IssueReporter {
599
622
  payload._retry = retry + 1;
600
623
  }
601
624
 
602
- this._sendDebugToGrafana(body, retry + 1);
625
+ this._sendDebugToGrafana(payload, retry + 1);
603
626
  }, 5000 + retry * 1000);
604
627
  });
605
628
  }
@@ -2791,7 +2814,8 @@ class ExternalApp {
2791
2814
 
2792
2815
 
2793
2816
 
2794
-
2817
+
2818
+
2795
2819
 
2796
2820
 
2797
2821
  class Meeting {
@@ -2803,6 +2827,7 @@ class Meeting {
2803
2827
 
2804
2828
 
2805
2829
 
2830
+
2806
2831
 
2807
2832
 
2808
2833
  static parse(plain ) {
@@ -2814,14 +2839,28 @@ class Meeting {
2814
2839
  port: plain.port,
2815
2840
  uuid: plain.uuid,
2816
2841
  number: plain.number,
2842
+ persistent: plain.persistent,
2817
2843
  });
2818
2844
  }
2819
2845
 
2846
+ static parseMany(items ) {
2847
+ return items.map(plain => Meeting.parse(plain));
2848
+ }
2849
+
2820
2850
  static newFrom(meeting ) {
2821
2851
  return newFrom(meeting, Meeting);
2822
2852
  }
2823
2853
 
2824
- constructor({ uuid, name, guestSipAuthorization, ownerUuids, port, uri, number } = {}) {
2854
+ constructor({
2855
+ uuid,
2856
+ name,
2857
+ guestSipAuthorization,
2858
+ ownerUuids,
2859
+ port,
2860
+ uri,
2861
+ number,
2862
+ persistent,
2863
+ } = {}) {
2825
2864
  this.guestSipAuthorization = guestSipAuthorization;
2826
2865
  this.uri = uri;
2827
2866
  this.name = name;
@@ -2829,6 +2868,7 @@ class Meeting {
2829
2868
  this.port = port;
2830
2869
  this.uuid = uuid;
2831
2870
  this.number = number;
2871
+ this.persistent = persistent;
2832
2872
 
2833
2873
  // Useful to compare instead of instanceof with minified code
2834
2874
  this.type = 'Meeting';
@@ -2906,8 +2946,11 @@ var confdMethods = (client , baseUrl ) => ({
2906
2946
  }
2907
2947
  },
2908
2948
 
2909
- createMyMeeting: (name ) =>
2910
- client.post(`${baseUrl}/users/me/meetings`, { name }).then(Meeting.parse),
2949
+ getMyMeetings: () =>
2950
+ client.get(`${baseUrl}/users/me/meetings`).then(response => Meeting.parseMany(response.items)),
2951
+
2952
+ createMyMeeting: (name , persistent ) =>
2953
+ client.post(`${baseUrl}/users/me/meetings`, { name, persistent }).then(Meeting.parse),
2911
2954
 
2912
2955
  deleteMyMeeting: (meetingUuid ) =>
2913
2956
  client.delete(`${baseUrl}/users/me/meetings/${meetingUuid}`, null),
@@ -3186,7 +3229,7 @@ class Recording {
3186
3229
 
3187
3230
 
3188
3231
 
3189
- static parseMany(recordings ) {
3232
+ static parseMany(recordings = []) {
3190
3233
  return recordings.map(item => Recording.parse(item));
3191
3234
  }
3192
3235
 
@@ -3312,7 +3355,7 @@ class CallLog {
3312
3355
  duration: (plain.duration || 0) * 1000, // duration is in seconds
3313
3356
  start: moment(plain.start).toDate(),
3314
3357
  end: plain.end ? moment(plain.end).toDate() : null,
3315
- recordings: Recording.parseMany(plain.recordings),
3358
+ recordings: Recording.parseMany(plain.recordings || []),
3316
3359
  });
3317
3360
  }
3318
3361
 
@@ -4783,4 +4826,4 @@ class AdHocAPIConference {
4783
4826
  }
4784
4827
  }
4785
4828
 
4786
- export { AdHocAPIConference as default };
4829
+ export default AdHocAPIConference;
@@ -61,4 +61,4 @@ class Agent {
61
61
  }
62
62
  }
63
63
 
64
- export { Agent as default };
64
+ export default Agent;
@@ -41,4 +41,4 @@ class BadResponse extends Error {
41
41
  }
42
42
  }
43
43
 
44
- export { BadResponse as default };
44
+ export default BadResponse;
@@ -201,4 +201,4 @@ class Call {
201
201
  }
202
202
  }
203
203
 
204
- export { Call as default };
204
+ export default Call;
@@ -53,7 +53,7 @@ class Recording {
53
53
 
54
54
 
55
55
 
56
- static parseMany(recordings ) {
56
+ static parseMany(recordings = []) {
57
57
  return recordings.map(item => Recording.parse(item));
58
58
  }
59
59
 
@@ -179,7 +179,7 @@ class CallLog {
179
179
  duration: (plain.duration || 0) * 1000, // duration is in seconds
180
180
  start: moment(plain.start).toDate(),
181
181
  end: plain.end ? moment(plain.end).toDate() : null,
182
- recordings: Recording.parseMany(plain.recordings),
182
+ recordings: Recording.parseMany(plain.recordings || []),
183
183
  });
184
184
  }
185
185
 
@@ -303,4 +303,4 @@ class CallLog {
303
303
  }
304
304
  }
305
305
 
306
- export { CallLog as default };
306
+ export default CallLog;
@@ -373,4 +373,4 @@ class CallSession {
373
373
  }
374
374
  }
375
375
 
376
- export { CallSession as default };
376
+ export default CallSession;
@@ -101,4 +101,4 @@ class ChatMessage {
101
101
  }
102
102
  }
103
103
 
104
- export { ChatMessage as default };
104
+ export default ChatMessage;
@@ -56,4 +56,4 @@ class ChatRoom {
56
56
  }
57
57
  }
58
58
 
59
- export { ChatRoom as default };
59
+ export default ChatRoom;
@@ -740,4 +740,5 @@ class Contact {
740
740
  }
741
741
  }
742
742
 
743
- export { BACKEND, Contact as default };
743
+ export default Contact;
744
+ export { BACKEND };
@@ -17,4 +17,4 @@ var Country = {
17
17
  SWITZERLAND: 'CH',
18
18
  };
19
19
 
20
- export { Country as default };
20
+ export default Country;
@@ -45,4 +45,4 @@ class DebugDevice {
45
45
  }
46
46
  }
47
47
 
48
- export { DebugDevice as default };
48
+ export default DebugDevice;
@@ -54,4 +54,4 @@ class ExternalApp {
54
54
  }
55
55
  }
56
56
 
57
- export { ExternalApp as default };
57
+ export default ExternalApp;