@wazo/sdk 0.37.18 → 0.37.19

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 (158) hide show
  1. package/dist/wazo-sdk.js +13 -5
  2. package/esm/__tests__/api-client.test.js +9 -5
  3. package/esm/__tests__/web-rtc-client.test.js +10 -6
  4. package/esm/api/agentd.js +2 -2
  5. package/esm/api/amid.js +2 -2
  6. package/esm/api/application.js +2 -2
  7. package/esm/api/auth.js +4 -3
  8. package/esm/api/call-logd.js +4 -4
  9. package/esm/api/calld.js +2 -2
  10. package/esm/api/chatd.js +2 -2
  11. package/esm/api/confd.js +8 -4
  12. package/esm/api/ctid-ng.js +2 -2
  13. package/esm/api/dird.js +2 -2
  14. package/esm/api/webhookd.js +2 -2
  15. package/esm/api-client.js +11 -7
  16. package/esm/checker/Checker.js +11 -7
  17. package/esm/checker/checks/aor.js +11 -7
  18. package/esm/checker/checks/api.js +11 -7
  19. package/esm/checker/checks/ice-ipv4.js +1 -1
  20. package/esm/checker/checks/index.js +12 -8
  21. package/esm/checker/checks/symmetric-nat.js +1 -1
  22. package/esm/checker/checks/wazo-websocket.js +2 -2
  23. package/esm/checker/checks/webrtc-transport.js +12 -8
  24. package/esm/checker/checks/webrtc.js +12 -8
  25. package/esm/domain/AdHocAPIConference.js +11 -7
  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 +11 -6
  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 +7 -3
  42. package/esm/domain/NotificationOptions.js +1 -1
  43. package/esm/domain/Phone/CTIPhone.js +12 -7
  44. package/esm/domain/Phone/WebRTCPhone.js +3 -2
  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 +12 -8
  57. package/esm/lib/WazoSessionDescriptionHandler.js +3 -2
  58. package/esm/service/CallApi.js +11 -7
  59. package/esm/service/IssueReporter.js +2 -2
  60. package/esm/service/__tests__/IssueReporter.test.js +1 -1
  61. package/esm/service/getApiClient.js +12 -7
  62. package/esm/simple/Auth.js +12 -7
  63. package/esm/simple/Configuration.js +11 -7
  64. package/esm/simple/Directory.js +10 -6
  65. package/esm/simple/Phone.js +11 -7
  66. package/esm/simple/Websocket.js +2 -2
  67. package/esm/simple/index.js +11 -7
  68. package/esm/simple/room/LocalParticipant.js +24 -24
  69. package/esm/simple/room/Participant.js +23 -21
  70. package/esm/simple/room/RemoteParticipant.js +25 -25
  71. package/esm/simple/room/Room.js +24 -21
  72. package/esm/simple/room/SipRoom.js +12 -10
  73. package/esm/simple/room/Stream.js +12 -10
  74. package/esm/simple/room/__tests__/RemoteParticipant.test.js +10 -6
  75. package/esm/simple/utils.js +10 -6
  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 +1 -1
  79. package/esm/utils/api-requester.js +3 -2
  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 +13 -8
  86. package/esm/websocket-client.js +3 -2
  87. package/lib/__tests__/api-client.test.js +18 -14
  88. package/lib/__tests__/web-rtc-client.test.js +27 -23
  89. package/lib/api/agentd.js +2 -2
  90. package/lib/api/amid.js +2 -2
  91. package/lib/api/application.js +2 -2
  92. package/lib/api/auth.js +3 -3
  93. package/lib/api/call-logd.js +9 -9
  94. package/lib/api/calld.js +5 -5
  95. package/lib/api/chatd.js +3 -3
  96. package/lib/api/confd.js +8 -4
  97. package/lib/api/ctid-ng.js +5 -5
  98. package/lib/api/dird.js +2 -2
  99. package/lib/api/webhookd.js +2 -2
  100. package/lib/api-client.js +18 -14
  101. package/lib/checker/Checker.js +28 -24
  102. package/lib/checker/checks/aor.js +18 -14
  103. package/lib/checker/checks/api.js +18 -14
  104. package/lib/checker/checks/index.js +28 -24
  105. package/lib/checker/checks/wazo-websocket.js +4 -4
  106. package/lib/checker/checks/webrtc-transport.js +27 -23
  107. package/lib/checker/checks/webrtc.js +27 -23
  108. package/lib/domain/AdHocAPIConference.js +18 -14
  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 +19 -15
  114. package/lib/domain/ForwardOption.js +1 -1
  115. package/lib/domain/Meeting.js +6 -2
  116. package/lib/domain/Phone/CTIPhone.js +20 -16
  117. package/lib/domain/Phone/WebRTCPhone.js +4 -4
  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 +31 -27
  125. package/lib/lib/WazoSessionDescriptionHandler.js +7 -7
  126. package/lib/service/CallApi.js +18 -14
  127. package/lib/service/IssueReporter.js +2 -2
  128. package/lib/service/__tests__/IssueReporter.test.js +2 -2
  129. package/lib/service/getApiClient.js +19 -15
  130. package/lib/simple/Auth.js +30 -26
  131. package/lib/simple/Configuration.js +29 -25
  132. package/lib/simple/Directory.js +18 -14
  133. package/lib/simple/Phone.js +29 -25
  134. package/lib/simple/Websocket.js +4 -4
  135. package/lib/simple/index.js +29 -25
  136. package/lib/simple/room/LocalParticipant.js +43 -43
  137. package/lib/simple/room/Participant.js +41 -39
  138. package/lib/simple/room/RemoteParticipant.js +44 -44
  139. package/lib/simple/room/Room.js +42 -40
  140. package/lib/simple/room/SipRoom.js +31 -29
  141. package/lib/simple/room/Stream.js +31 -29
  142. package/lib/simple/room/__tests__/RemoteParticipant.test.js +29 -25
  143. package/lib/simple/utils.js +29 -25
  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 +2 -2
  148. package/lib/utils/__tests__/sdp.test.js +12 -12
  149. package/lib/utils/api-requester.js +3 -3
  150. package/lib/utils/sdp.js +10 -10
  151. package/lib/web-rtc-client.js +28 -24
  152. package/lib/websocket-client.js +5 -5
  153. package/package.json +1 -1
  154. package/src/domain/CallLog.js +1 -1
  155. package/src/domain/Meeting.js +6 -2
  156. package/src/domain/Recording.js +1 -1
  157. package/src/service/IssueReporter.js +1 -1
  158. package/src/web-rtc-client.js +1 -1
@@ -1721,7 +1721,7 @@ class IssueReporter {
1721
1721
  args.splice(1, 1);
1722
1722
  }
1723
1723
 
1724
- const date = moment__default["default"]().format('YYYY-MM-DD HH:mm:ss.SSS');
1724
+ const date = moment__default['default']().format('YYYY-MM-DD HH:mm:ss.SSS');
1725
1725
  const message = args.join(', ');
1726
1726
  let consoleMessage = message;
1727
1727
 
@@ -1898,7 +1898,7 @@ class IssueReporter {
1898
1898
  payload._retry = retry + 1;
1899
1899
  }
1900
1900
 
1901
- this._sendDebugToGrafana(body, retry + 1);
1901
+ this._sendDebugToGrafana(payload, retry + 1);
1902
1902
  }, 5000 + retry * 1000);
1903
1903
  });
1904
1904
  }
@@ -2616,7 +2616,8 @@ class ExternalApp {
2616
2616
 
2617
2617
 
2618
2618
 
2619
-
2619
+
2620
+
2620
2621
 
2621
2622
 
2622
2623
  class Meeting {
@@ -2628,6 +2629,7 @@ class Meeting {
2628
2629
 
2629
2630
 
2630
2631
 
2632
+
2631
2633
 
2632
2634
 
2633
2635
  static parse(plain ) {
@@ -2639,6 +2641,7 @@ class Meeting {
2639
2641
  port: plain.port,
2640
2642
  uuid: plain.uuid,
2641
2643
  number: plain.number,
2644
+ persistent: plain.persistent,
2642
2645
  });
2643
2646
  }
2644
2647
 
@@ -2646,7 +2649,7 @@ class Meeting {
2646
2649
  return newFrom(meeting, Meeting);
2647
2650
  }
2648
2651
 
2649
- constructor({ uuid, name, guestSipAuthorization, ownerUuids, port, uri, number } = {}) {
2652
+ constructor({ uuid, name, guestSipAuthorization, ownerUuids, port, uri, number, persistent } = {}) {
2650
2653
  this.guestSipAuthorization = guestSipAuthorization;
2651
2654
  this.uri = uri;
2652
2655
  this.name = name;
@@ -2654,6 +2657,7 @@ class Meeting {
2654
2657
  this.port = port;
2655
2658
  this.uuid = uuid;
2656
2659
  this.number = number;
2660
+ this.persistent = persistent;
2657
2661
 
2658
2662
  // Useful to compare instead of instanceof with minified code
2659
2663
  this.type = 'Meeting';
@@ -2834,7 +2838,7 @@ class ChatMessage {
2834
2838
  static parse(plain ) {
2835
2839
  return new ChatMessage({
2836
2840
  uuid: plain.uuid,
2837
- date: moment__default["default"](plain.created_at).toDate(),
2841
+ date: moment__default['default'](plain.created_at).toDate(),
2838
2842
  content: plain.content,
2839
2843
  alias: plain.alias,
2840
2844
  userUuid: plain.user_uuid,
@@ -2926,7 +2930,7 @@ class Voicemail {
2926
2930
  static parse(plain ) {
2927
2931
  return new Voicemail({
2928
2932
  id: plain.id,
2929
- date: moment__default["default"](plain.timestamp * 1000).toDate(),
2933
+ date: moment__default['default'](plain.timestamp * 1000).toDate(),
2930
2934
  duration: plain.duration * 1000,
2931
2935
  caller: {
2932
2936
  name: plain.caller_id_name,
@@ -3063,7 +3067,7 @@ class Call {
3063
3067
  onHold: plain.on_hold,
3064
3068
  status: plain.status,
3065
3069
  lineId: plain.line_id,
3066
- startingTime: moment__default["default"](plain.creation_time).toDate(),
3070
+ startingTime: moment__default['default'](plain.creation_time).toDate(),
3067
3071
  talkingToIds: Object.keys(plain.talking_to || {}),
3068
3072
  recording: plain.record_state === RECORD_STATE_ACTIVE,
3069
3073
  });
@@ -3543,7 +3547,7 @@ class Emitter {
3543
3547
 
3544
3548
 
3545
3549
  constructor() {
3546
- this.eventEmitter = new EventEmitter__default["default"]();
3550
+ this.eventEmitter = new EventEmitter__default['default']();
3547
3551
  }
3548
3552
 
3549
3553
  on(event , callback ) {
@@ -3588,7 +3592,7 @@ class Recording {
3588
3592
 
3589
3593
 
3590
3594
 
3591
- static parseMany(recordings ) {
3595
+ static parseMany(recordings = []) {
3592
3596
  return recordings.map(item => Recording.parse(item));
3593
3597
  }
3594
3598
 
@@ -3596,8 +3600,8 @@ class Recording {
3596
3600
  return new Recording({
3597
3601
  deleted: plain.deleted,
3598
3602
  fileName: plain.filename,
3599
- end: plain.end_time ? moment__default["default"](plain.end_time).toDate() : null,
3600
- start: moment__default["default"](plain.start_time).toDate(),
3603
+ end: plain.end_time ? moment__default['default'](plain.end_time).toDate() : null,
3604
+ start: moment__default['default'](plain.start_time).toDate(),
3601
3605
  uuid: plain.uuid,
3602
3606
  });
3603
3607
  }
@@ -3695,7 +3699,7 @@ class CallLog {
3695
3699
 
3696
3700
  static parse(plain ) {
3697
3701
  return new CallLog({
3698
- answer: plain.answer ? moment__default["default"](plain.answer).toDate() : null,
3702
+ answer: plain.answer ? moment__default['default'](plain.answer).toDate() : null,
3699
3703
  answered: plain.answered,
3700
3704
  callDirection: plain.call_direction,
3701
3705
  destination: {
@@ -3712,9 +3716,9 @@ class CallLog {
3712
3716
  },
3713
3717
  id: plain.id,
3714
3718
  duration: (plain.duration || 0) * 1000, // duration is in seconds
3715
- start: moment__default["default"](plain.start).toDate(),
3716
- end: plain.end ? moment__default["default"](plain.end).toDate() : null,
3717
- recordings: Recording.parseMany(plain.recordings),
3719
+ start: moment__default['default'](plain.start).toDate(),
3720
+ end: plain.end ? moment__default['default'](plain.end).toDate() : null,
3721
+ recordings: Recording.parseMany(plain.recordings || []),
3718
3722
  });
3719
3723
  }
3720
3724
 
@@ -5624,7 +5628,7 @@ const parseCandidate$1 = (candidate ) => {
5624
5628
  if (!candidate) {
5625
5629
  return null;
5626
5630
  }
5627
- const result = sdpParser__default["default"].parse(candidate.indexOf('a=') === 0 ? candidate : `a=${candidate}`);
5631
+ const result = sdpParser__default['default'].parse(candidate.indexOf('a=') === 0 ? candidate : `a=${candidate}`);
5628
5632
 
5629
5633
  return result.candidates ? result.candidates[0] : null;
5630
5634
  };
@@ -5638,7 +5642,7 @@ const areCandidateValid = (candidates ) =>
5638
5642
  .length > 0;
5639
5643
 
5640
5644
  const getVideoDirection = (sdp ) => {
5641
- const parsedSdp = sdpParser__default["default"].parse(sdp);
5645
+ const parsedSdp = sdpParser__default['default'].parse(sdp);
5642
5646
  const videoMedia = parsedSdp.media.find(media => media.type === 'video');
5643
5647
  if (!videoMedia) {
5644
5648
  return null;
@@ -5652,14 +5656,14 @@ const hasAnActiveVideo = (sdp ) => {
5652
5656
  return false;
5653
5657
  }
5654
5658
 
5655
- const parsedSdp = sdpParser__default["default"].parse(sdp);
5659
+ const parsedSdp = sdpParser__default['default'].parse(sdp);
5656
5660
 
5657
5661
  return !!parsedSdp.media.find(media =>
5658
5662
  media.type === 'video' && media.port > 10 && (!media.direction || media.direction !== 'inactive'));
5659
5663
  };
5660
5664
 
5661
5665
  const fixSdp = (sdp , candidates , forcePort = true) => {
5662
- const parsedSdp = sdpParser__default["default"].parse(sdp);
5666
+ const parsedSdp = sdpParser__default['default'].parse(sdp);
5663
5667
  const mainCandidate = getSrflxOrRelay(candidates)[0];
5664
5668
  const ip = mainCandidate ? mainCandidate.ip : null;
5665
5669
 
@@ -5677,7 +5681,7 @@ const fixSdp = (sdp , candidates , forcePort = true)
5677
5681
  };
5678
5682
  });
5679
5683
 
5680
- let fixed = sdpParser__default["default"].write(parsedSdp);
5684
+ let fixed = sdpParser__default['default'].write(parsedSdp);
5681
5685
 
5682
5686
  if (ip) {
5683
5687
  fixed = fixed.replace(/IN IP4 0.0.0.0/g, `IN IP4 ${ip}`);
@@ -5723,7 +5727,7 @@ class WazoSessionDescriptionHandler extends sessionDescriptionHandler.SessionDes
5723
5727
  ) {
5724
5728
  super(logger, mediaStreamFactory, sessionDescriptionHandlerConfiguration);
5725
5729
 
5726
- this.eventEmitter = new EventEmitter__default["default"]();
5730
+ this.eventEmitter = new EventEmitter__default['default']();
5727
5731
  this.isWeb = isWeb;
5728
5732
  this.session = session;
5729
5733
  }
@@ -7040,7 +7044,7 @@ class WebRTCClient extends Emitter {
7040
7044
  // We search for the last transceiver without `video-` in the mid (video- means remote transceiver)
7041
7045
  const transceivers = pc.getTransceivers();
7042
7046
  const transceiverIdx = lastIndexOf(transceivers, transceiver =>
7043
- transceiver.sender.track === null && transceiver.mid.indexOf('video') === -1);
7047
+ transceiver.sender.track === null && transceiver.mid && transceiver.mid.indexOf('video') === -1);
7044
7048
 
7045
7049
  videoSender = transceiverIdx !== -1 ? transceivers[transceiverIdx].sender : null;
7046
7050
  } else {
@@ -8245,7 +8249,7 @@ class WebRTCClient extends Emitter {
8245
8249
  }
8246
8250
  const sessionId = this.getSipSessionId(session);
8247
8251
 
8248
- getStats__default["default"](pc, (result ) => {
8252
+ getStats__default['default'](pc, (result ) => {
8249
8253
  const { results, internal, nomore, ...stats } = result;
8250
8254
  this.statsIntervals[sessionId] = nomore;
8251
8255
 
@@ -10627,7 +10631,7 @@ class WebSocketClient extends Emitter {
10627
10631
 
10628
10632
  connect() {
10629
10633
  logger$6.info('connect method started', { host: this.host, token: this.token });
10630
- this.socket = new ReconnectingWebSocket__default["default"](this._getUrl.bind(this), [], this.options);
10634
+ this.socket = new ReconnectingWebSocket__default['default'](this._getUrl.bind(this), [], this.options);
10631
10635
  if (this.options.binaryType) {
10632
10636
  this.socket.binaryType = this.options.binaryType;
10633
10637
  }
@@ -11880,7 +11884,7 @@ class Room$1 extends Emitter {
11880
11884
  }
11881
11885
 
11882
11886
  _mapMsid(rawSdp ) {
11883
- const sdp = sdpParser__default["default"].parse(rawSdp);
11887
+ const sdp = sdpParser__default['default'].parse(rawSdp);
11884
11888
  const labelMsidArray = sdp.media.filter(media => !!media.label).map(({ label, msid }) => ({
11885
11889
  label: String(label),
11886
11890
  streamId: msid.split(' ')[0],
@@ -13639,4 +13643,4 @@ var Auth$1 = global.wazoAuthInstance;
13639
13643
 
13640
13644
  exports.InvalidAuthorization = InvalidAuthorization;
13641
13645
  exports.InvalidSubscription = InvalidSubscription;
13642
- exports["default"] = Auth$1;
13646
+ exports.default = Auth$1;
@@ -1719,7 +1719,7 @@ class IssueReporter {
1719
1719
  args.splice(1, 1);
1720
1720
  }
1721
1721
 
1722
- const date = moment__default["default"]().format('YYYY-MM-DD HH:mm:ss.SSS');
1722
+ const date = moment__default['default']().format('YYYY-MM-DD HH:mm:ss.SSS');
1723
1723
  const message = args.join(', ');
1724
1724
  let consoleMessage = message;
1725
1725
 
@@ -1896,7 +1896,7 @@ class IssueReporter {
1896
1896
  payload._retry = retry + 1;
1897
1897
  }
1898
1898
 
1899
- this._sendDebugToGrafana(body, retry + 1);
1899
+ this._sendDebugToGrafana(payload, retry + 1);
1900
1900
  }, 5000 + retry * 1000);
1901
1901
  });
1902
1902
  }
@@ -2614,7 +2614,8 @@ class ExternalApp {
2614
2614
 
2615
2615
 
2616
2616
 
2617
-
2617
+
2618
+
2618
2619
 
2619
2620
 
2620
2621
  class Meeting {
@@ -2626,6 +2627,7 @@ class Meeting {
2626
2627
 
2627
2628
 
2628
2629
 
2630
+
2629
2631
 
2630
2632
 
2631
2633
  static parse(plain ) {
@@ -2637,6 +2639,7 @@ class Meeting {
2637
2639
  port: plain.port,
2638
2640
  uuid: plain.uuid,
2639
2641
  number: plain.number,
2642
+ persistent: plain.persistent,
2640
2643
  });
2641
2644
  }
2642
2645
 
@@ -2644,7 +2647,7 @@ class Meeting {
2644
2647
  return newFrom(meeting, Meeting);
2645
2648
  }
2646
2649
 
2647
- constructor({ uuid, name, guestSipAuthorization, ownerUuids, port, uri, number } = {}) {
2650
+ constructor({ uuid, name, guestSipAuthorization, ownerUuids, port, uri, number, persistent } = {}) {
2648
2651
  this.guestSipAuthorization = guestSipAuthorization;
2649
2652
  this.uri = uri;
2650
2653
  this.name = name;
@@ -2652,6 +2655,7 @@ class Meeting {
2652
2655
  this.port = port;
2653
2656
  this.uuid = uuid;
2654
2657
  this.number = number;
2658
+ this.persistent = persistent;
2655
2659
 
2656
2660
  // Useful to compare instead of instanceof with minified code
2657
2661
  this.type = 'Meeting';
@@ -2832,7 +2836,7 @@ class ChatMessage {
2832
2836
  static parse(plain ) {
2833
2837
  return new ChatMessage({
2834
2838
  uuid: plain.uuid,
2835
- date: moment__default["default"](plain.created_at).toDate(),
2839
+ date: moment__default['default'](plain.created_at).toDate(),
2836
2840
  content: plain.content,
2837
2841
  alias: plain.alias,
2838
2842
  userUuid: plain.user_uuid,
@@ -2924,7 +2928,7 @@ class Voicemail {
2924
2928
  static parse(plain ) {
2925
2929
  return new Voicemail({
2926
2930
  id: plain.id,
2927
- date: moment__default["default"](plain.timestamp * 1000).toDate(),
2931
+ date: moment__default['default'](plain.timestamp * 1000).toDate(),
2928
2932
  duration: plain.duration * 1000,
2929
2933
  caller: {
2930
2934
  name: plain.caller_id_name,
@@ -3061,7 +3065,7 @@ class Call {
3061
3065
  onHold: plain.on_hold,
3062
3066
  status: plain.status,
3063
3067
  lineId: plain.line_id,
3064
- startingTime: moment__default["default"](plain.creation_time).toDate(),
3068
+ startingTime: moment__default['default'](plain.creation_time).toDate(),
3065
3069
  talkingToIds: Object.keys(plain.talking_to || {}),
3066
3070
  recording: plain.record_state === RECORD_STATE_ACTIVE,
3067
3071
  });
@@ -3541,7 +3545,7 @@ class Emitter {
3541
3545
 
3542
3546
 
3543
3547
  constructor() {
3544
- this.eventEmitter = new EventEmitter__default["default"]();
3548
+ this.eventEmitter = new EventEmitter__default['default']();
3545
3549
  }
3546
3550
 
3547
3551
  on(event , callback ) {
@@ -3586,7 +3590,7 @@ class Recording {
3586
3590
 
3587
3591
 
3588
3592
 
3589
- static parseMany(recordings ) {
3593
+ static parseMany(recordings = []) {
3590
3594
  return recordings.map(item => Recording.parse(item));
3591
3595
  }
3592
3596
 
@@ -3594,8 +3598,8 @@ class Recording {
3594
3598
  return new Recording({
3595
3599
  deleted: plain.deleted,
3596
3600
  fileName: plain.filename,
3597
- end: plain.end_time ? moment__default["default"](plain.end_time).toDate() : null,
3598
- start: moment__default["default"](plain.start_time).toDate(),
3601
+ end: plain.end_time ? moment__default['default'](plain.end_time).toDate() : null,
3602
+ start: moment__default['default'](plain.start_time).toDate(),
3599
3603
  uuid: plain.uuid,
3600
3604
  });
3601
3605
  }
@@ -3693,7 +3697,7 @@ class CallLog {
3693
3697
 
3694
3698
  static parse(plain ) {
3695
3699
  return new CallLog({
3696
- answer: plain.answer ? moment__default["default"](plain.answer).toDate() : null,
3700
+ answer: plain.answer ? moment__default['default'](plain.answer).toDate() : null,
3697
3701
  answered: plain.answered,
3698
3702
  callDirection: plain.call_direction,
3699
3703
  destination: {
@@ -3710,9 +3714,9 @@ class CallLog {
3710
3714
  },
3711
3715
  id: plain.id,
3712
3716
  duration: (plain.duration || 0) * 1000, // duration is in seconds
3713
- start: moment__default["default"](plain.start).toDate(),
3714
- end: plain.end ? moment__default["default"](plain.end).toDate() : null,
3715
- recordings: Recording.parseMany(plain.recordings),
3717
+ start: moment__default['default'](plain.start).toDate(),
3718
+ end: plain.end ? moment__default['default'](plain.end).toDate() : null,
3719
+ recordings: Recording.parseMany(plain.recordings || []),
3716
3720
  });
3717
3721
  }
3718
3722
 
@@ -5622,7 +5626,7 @@ const parseCandidate$1 = (candidate ) => {
5622
5626
  if (!candidate) {
5623
5627
  return null;
5624
5628
  }
5625
- const result = sdpParser__default["default"].parse(candidate.indexOf('a=') === 0 ? candidate : `a=${candidate}`);
5629
+ const result = sdpParser__default['default'].parse(candidate.indexOf('a=') === 0 ? candidate : `a=${candidate}`);
5626
5630
 
5627
5631
  return result.candidates ? result.candidates[0] : null;
5628
5632
  };
@@ -5636,7 +5640,7 @@ const areCandidateValid = (candidates ) =>
5636
5640
  .length > 0;
5637
5641
 
5638
5642
  const getVideoDirection = (sdp ) => {
5639
- const parsedSdp = sdpParser__default["default"].parse(sdp);
5643
+ const parsedSdp = sdpParser__default['default'].parse(sdp);
5640
5644
  const videoMedia = parsedSdp.media.find(media => media.type === 'video');
5641
5645
  if (!videoMedia) {
5642
5646
  return null;
@@ -5650,14 +5654,14 @@ const hasAnActiveVideo = (sdp ) => {
5650
5654
  return false;
5651
5655
  }
5652
5656
 
5653
- const parsedSdp = sdpParser__default["default"].parse(sdp);
5657
+ const parsedSdp = sdpParser__default['default'].parse(sdp);
5654
5658
 
5655
5659
  return !!parsedSdp.media.find(media =>
5656
5660
  media.type === 'video' && media.port > 10 && (!media.direction || media.direction !== 'inactive'));
5657
5661
  };
5658
5662
 
5659
5663
  const fixSdp = (sdp , candidates , forcePort = true) => {
5660
- const parsedSdp = sdpParser__default["default"].parse(sdp);
5664
+ const parsedSdp = sdpParser__default['default'].parse(sdp);
5661
5665
  const mainCandidate = getSrflxOrRelay(candidates)[0];
5662
5666
  const ip = mainCandidate ? mainCandidate.ip : null;
5663
5667
 
@@ -5675,7 +5679,7 @@ const fixSdp = (sdp , candidates , forcePort = true)
5675
5679
  };
5676
5680
  });
5677
5681
 
5678
- let fixed = sdpParser__default["default"].write(parsedSdp);
5682
+ let fixed = sdpParser__default['default'].write(parsedSdp);
5679
5683
 
5680
5684
  if (ip) {
5681
5685
  fixed = fixed.replace(/IN IP4 0.0.0.0/g, `IN IP4 ${ip}`);
@@ -5721,7 +5725,7 @@ class WazoSessionDescriptionHandler extends sessionDescriptionHandler.SessionDes
5721
5725
  ) {
5722
5726
  super(logger, mediaStreamFactory, sessionDescriptionHandlerConfiguration);
5723
5727
 
5724
- this.eventEmitter = new EventEmitter__default["default"]();
5728
+ this.eventEmitter = new EventEmitter__default['default']();
5725
5729
  this.isWeb = isWeb;
5726
5730
  this.session = session;
5727
5731
  }
@@ -7038,7 +7042,7 @@ class WebRTCClient extends Emitter {
7038
7042
  // We search for the last transceiver without `video-` in the mid (video- means remote transceiver)
7039
7043
  const transceivers = pc.getTransceivers();
7040
7044
  const transceiverIdx = lastIndexOf(transceivers, transceiver =>
7041
- transceiver.sender.track === null && transceiver.mid.indexOf('video') === -1);
7045
+ transceiver.sender.track === null && transceiver.mid && transceiver.mid.indexOf('video') === -1);
7042
7046
 
7043
7047
  videoSender = transceiverIdx !== -1 ? transceivers[transceiverIdx].sender : null;
7044
7048
  } else {
@@ -8243,7 +8247,7 @@ class WebRTCClient extends Emitter {
8243
8247
  }
8244
8248
  const sessionId = this.getSipSessionId(session);
8245
8249
 
8246
- getStats__default["default"](pc, (result ) => {
8250
+ getStats__default['default'](pc, (result ) => {
8247
8251
  const { results, internal, nomore, ...stats } = result;
8248
8252
  this.statsIntervals[sessionId] = nomore;
8249
8253
 
@@ -10625,7 +10629,7 @@ class WebSocketClient extends Emitter {
10625
10629
 
10626
10630
  connect() {
10627
10631
  logger$6.info('connect method started', { host: this.host, token: this.token });
10628
- this.socket = new ReconnectingWebSocket__default["default"](this._getUrl.bind(this), [], this.options);
10632
+ this.socket = new ReconnectingWebSocket__default['default'](this._getUrl.bind(this), [], this.options);
10629
10633
  if (this.options.binaryType) {
10630
10634
  this.socket.binaryType = this.options.binaryType;
10631
10635
  }
@@ -11878,7 +11882,7 @@ class Room$1 extends Emitter {
11878
11882
  }
11879
11883
 
11880
11884
  _mapMsid(rawSdp ) {
11881
- const sdp = sdpParser__default["default"].parse(rawSdp);
11885
+ const sdp = sdpParser__default['default'].parse(rawSdp);
11882
11886
  const labelMsidArray = sdp.media.filter(media => !!media.label).map(({ label, msid }) => ({
11883
11887
  label: String(label),
11884
11888
  streamId: msid.split(' ')[0],
@@ -211,7 +211,7 @@ class IssueReporter {
211
211
  args.splice(1, 1);
212
212
  }
213
213
 
214
- const date = moment__default["default"]().format('YYYY-MM-DD HH:mm:ss.SSS');
214
+ const date = moment__default['default']().format('YYYY-MM-DD HH:mm:ss.SSS');
215
215
  const message = args.join(', ');
216
216
  let consoleMessage = message;
217
217
 
@@ -388,7 +388,7 @@ class IssueReporter {
388
388
  payload._retry = retry + 1;
389
389
  }
390
390
 
391
- this._sendDebugToGrafana(body, retry + 1);
391
+ this._sendDebugToGrafana(payload, retry + 1);
392
392
  }, 5000 + retry * 1000);
393
393
  });
394
394
  }
@@ -2591,7 +2591,8 @@ class ExternalApp {
2591
2591
 
2592
2592
 
2593
2593
 
2594
-
2594
+
2595
+
2595
2596
 
2596
2597
 
2597
2598
  class Meeting {
@@ -2603,6 +2604,7 @@ class Meeting {
2603
2604
 
2604
2605
 
2605
2606
 
2607
+
2606
2608
 
2607
2609
 
2608
2610
  static parse(plain ) {
@@ -2614,6 +2616,7 @@ class Meeting {
2614
2616
  port: plain.port,
2615
2617
  uuid: plain.uuid,
2616
2618
  number: plain.number,
2619
+ persistent: plain.persistent,
2617
2620
  });
2618
2621
  }
2619
2622
 
@@ -2621,7 +2624,7 @@ class Meeting {
2621
2624
  return newFrom(meeting, Meeting);
2622
2625
  }
2623
2626
 
2624
- constructor({ uuid, name, guestSipAuthorization, ownerUuids, port, uri, number } = {}) {
2627
+ constructor({ uuid, name, guestSipAuthorization, ownerUuids, port, uri, number, persistent } = {}) {
2625
2628
  this.guestSipAuthorization = guestSipAuthorization;
2626
2629
  this.uri = uri;
2627
2630
  this.name = name;
@@ -2629,6 +2632,7 @@ class Meeting {
2629
2632
  this.port = port;
2630
2633
  this.uuid = uuid;
2631
2634
  this.number = number;
2635
+ this.persistent = persistent;
2632
2636
 
2633
2637
  // Useful to compare instead of instanceof with minified code
2634
2638
  this.type = 'Meeting';
@@ -2809,7 +2813,7 @@ class ChatMessage {
2809
2813
  static parse(plain ) {
2810
2814
  return new ChatMessage({
2811
2815
  uuid: plain.uuid,
2812
- date: moment__default["default"](plain.created_at).toDate(),
2816
+ date: moment__default['default'](plain.created_at).toDate(),
2813
2817
  content: plain.content,
2814
2818
  alias: plain.alias,
2815
2819
  userUuid: plain.user_uuid,
@@ -2901,7 +2905,7 @@ class Voicemail {
2901
2905
  static parse(plain ) {
2902
2906
  return new Voicemail({
2903
2907
  id: plain.id,
2904
- date: moment__default["default"](plain.timestamp * 1000).toDate(),
2908
+ date: moment__default['default'](plain.timestamp * 1000).toDate(),
2905
2909
  duration: plain.duration * 1000,
2906
2910
  caller: {
2907
2911
  name: plain.caller_id_name,
@@ -3038,7 +3042,7 @@ class Call {
3038
3042
  onHold: plain.on_hold,
3039
3043
  status: plain.status,
3040
3044
  lineId: plain.line_id,
3041
- startingTime: moment__default["default"](plain.creation_time).toDate(),
3045
+ startingTime: moment__default['default'](plain.creation_time).toDate(),
3042
3046
  talkingToIds: Object.keys(plain.talking_to || {}),
3043
3047
  recording: plain.record_state === RECORD_STATE_ACTIVE,
3044
3048
  });
@@ -3192,7 +3196,7 @@ class Recording {
3192
3196
 
3193
3197
 
3194
3198
 
3195
- static parseMany(recordings ) {
3199
+ static parseMany(recordings = []) {
3196
3200
  return recordings.map(item => Recording.parse(item));
3197
3201
  }
3198
3202
 
@@ -3200,8 +3204,8 @@ class Recording {
3200
3204
  return new Recording({
3201
3205
  deleted: plain.deleted,
3202
3206
  fileName: plain.filename,
3203
- end: plain.end_time ? moment__default["default"](plain.end_time).toDate() : null,
3204
- start: moment__default["default"](plain.start_time).toDate(),
3207
+ end: plain.end_time ? moment__default['default'](plain.end_time).toDate() : null,
3208
+ start: moment__default['default'](plain.start_time).toDate(),
3205
3209
  uuid: plain.uuid,
3206
3210
  });
3207
3211
  }
@@ -3299,7 +3303,7 @@ class CallLog {
3299
3303
 
3300
3304
  static parse(plain ) {
3301
3305
  return new CallLog({
3302
- answer: plain.answer ? moment__default["default"](plain.answer).toDate() : null,
3306
+ answer: plain.answer ? moment__default['default'](plain.answer).toDate() : null,
3303
3307
  answered: plain.answered,
3304
3308
  callDirection: plain.call_direction,
3305
3309
  destination: {
@@ -3316,9 +3320,9 @@ class CallLog {
3316
3320
  },
3317
3321
  id: plain.id,
3318
3322
  duration: (plain.duration || 0) * 1000, // duration is in seconds
3319
- start: moment__default["default"](plain.start).toDate(),
3320
- end: plain.end ? moment__default["default"](plain.end).toDate() : null,
3321
- recordings: Recording.parseMany(plain.recordings),
3323
+ start: moment__default['default'](plain.start).toDate(),
3324
+ end: plain.end ? moment__default['default'](plain.end).toDate() : null,
3325
+ recordings: Recording.parseMany(plain.recordings || []),
3322
3326
  });
3323
3327
  }
3324
3328