@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
@@ -233,7 +233,7 @@ class IssueReporter {
233
233
  args.splice(1, 1);
234
234
  }
235
235
 
236
- const date = moment__default["default"]().format('YYYY-MM-DD HH:mm:ss.SSS');
236
+ const date = moment__default['default']().format('YYYY-MM-DD HH:mm:ss.SSS');
237
237
  const message = args.join(', ');
238
238
  let consoleMessage = message;
239
239
 
@@ -410,7 +410,7 @@ class IssueReporter {
410
410
  payload._retry = retry + 1;
411
411
  }
412
412
 
413
- this._sendDebugToGrafana(body, retry + 1);
413
+ this._sendDebugToGrafana(payload, retry + 1);
414
414
  }, 5000 + retry * 1000);
415
415
  });
416
416
  }
@@ -2613,7 +2613,8 @@ class ExternalApp {
2613
2613
 
2614
2614
 
2615
2615
 
2616
-
2616
+
2617
+
2617
2618
 
2618
2619
 
2619
2620
  class Meeting {
@@ -2625,6 +2626,7 @@ class Meeting {
2625
2626
 
2626
2627
 
2627
2628
 
2629
+
2628
2630
 
2629
2631
 
2630
2632
  static parse(plain ) {
@@ -2636,6 +2638,7 @@ class Meeting {
2636
2638
  port: plain.port,
2637
2639
  uuid: plain.uuid,
2638
2640
  number: plain.number,
2641
+ persistent: plain.persistent,
2639
2642
  });
2640
2643
  }
2641
2644
 
@@ -2643,7 +2646,7 @@ class Meeting {
2643
2646
  return newFrom(meeting, Meeting);
2644
2647
  }
2645
2648
 
2646
- constructor({ uuid, name, guestSipAuthorization, ownerUuids, port, uri, number } = {}) {
2649
+ constructor({ uuid, name, guestSipAuthorization, ownerUuids, port, uri, number, persistent } = {}) {
2647
2650
  this.guestSipAuthorization = guestSipAuthorization;
2648
2651
  this.uri = uri;
2649
2652
  this.name = name;
@@ -2651,6 +2654,7 @@ class Meeting {
2651
2654
  this.port = port;
2652
2655
  this.uuid = uuid;
2653
2656
  this.number = number;
2657
+ this.persistent = persistent;
2654
2658
 
2655
2659
  // Useful to compare instead of instanceof with minified code
2656
2660
  this.type = 'Meeting';
@@ -2831,7 +2835,7 @@ class ChatMessage {
2831
2835
  static parse(plain ) {
2832
2836
  return new ChatMessage({
2833
2837
  uuid: plain.uuid,
2834
- date: moment__default["default"](plain.created_at).toDate(),
2838
+ date: moment__default['default'](plain.created_at).toDate(),
2835
2839
  content: plain.content,
2836
2840
  alias: plain.alias,
2837
2841
  userUuid: plain.user_uuid,
@@ -2923,7 +2927,7 @@ class Voicemail {
2923
2927
  static parse(plain ) {
2924
2928
  return new Voicemail({
2925
2929
  id: plain.id,
2926
- date: moment__default["default"](plain.timestamp * 1000).toDate(),
2930
+ date: moment__default['default'](plain.timestamp * 1000).toDate(),
2927
2931
  duration: plain.duration * 1000,
2928
2932
  caller: {
2929
2933
  name: plain.caller_id_name,
@@ -3060,7 +3064,7 @@ class Call {
3060
3064
  onHold: plain.on_hold,
3061
3065
  status: plain.status,
3062
3066
  lineId: plain.line_id,
3063
- startingTime: moment__default["default"](plain.creation_time).toDate(),
3067
+ startingTime: moment__default['default'](plain.creation_time).toDate(),
3064
3068
  talkingToIds: Object.keys(plain.talking_to || {}),
3065
3069
  recording: plain.record_state === RECORD_STATE_ACTIVE,
3066
3070
  });
@@ -3195,7 +3199,7 @@ class Emitter {
3195
3199
 
3196
3200
 
3197
3201
  constructor() {
3198
- this.eventEmitter = new EventEmitter__default["default"]();
3202
+ this.eventEmitter = new EventEmitter__default['default']();
3199
3203
  }
3200
3204
 
3201
3205
  on(event , callback ) {
@@ -3240,7 +3244,7 @@ class Recording {
3240
3244
 
3241
3245
 
3242
3246
 
3243
- static parseMany(recordings ) {
3247
+ static parseMany(recordings = []) {
3244
3248
  return recordings.map(item => Recording.parse(item));
3245
3249
  }
3246
3250
 
@@ -3248,8 +3252,8 @@ class Recording {
3248
3252
  return new Recording({
3249
3253
  deleted: plain.deleted,
3250
3254
  fileName: plain.filename,
3251
- end: plain.end_time ? moment__default["default"](plain.end_time).toDate() : null,
3252
- start: moment__default["default"](plain.start_time).toDate(),
3255
+ end: plain.end_time ? moment__default['default'](plain.end_time).toDate() : null,
3256
+ start: moment__default['default'](plain.start_time).toDate(),
3253
3257
  uuid: plain.uuid,
3254
3258
  });
3255
3259
  }
@@ -3347,7 +3351,7 @@ class CallLog {
3347
3351
 
3348
3352
  static parse(plain ) {
3349
3353
  return new CallLog({
3350
- answer: plain.answer ? moment__default["default"](plain.answer).toDate() : null,
3354
+ answer: plain.answer ? moment__default['default'](plain.answer).toDate() : null,
3351
3355
  answered: plain.answered,
3352
3356
  callDirection: plain.call_direction,
3353
3357
  destination: {
@@ -3364,9 +3368,9 @@ class CallLog {
3364
3368
  },
3365
3369
  id: plain.id,
3366
3370
  duration: (plain.duration || 0) * 1000, // duration is in seconds
3367
- start: moment__default["default"](plain.start).toDate(),
3368
- end: plain.end ? moment__default["default"](plain.end).toDate() : null,
3369
- recordings: Recording.parseMany(plain.recordings),
3371
+ start: moment__default['default'](plain.start).toDate(),
3372
+ end: plain.end ? moment__default['default'](plain.end).toDate() : null,
3373
+ recordings: Recording.parseMany(plain.recordings || []),
3370
3374
  });
3371
3375
  }
3372
3376
 
@@ -4968,7 +4972,7 @@ class WebSocketClient extends Emitter {
4968
4972
 
4969
4973
  connect() {
4970
4974
  logger$1.info('connect method started', { host: this.host, token: this.token });
4971
- this.socket = new ReconnectingWebSocket__default["default"](this._getUrl.bind(this), [], this.options);
4975
+ this.socket = new ReconnectingWebSocket__default['default'](this._getUrl.bind(this), [], this.options);
4972
4976
  if (this.options.binaryType) {
4973
4977
  this.socket.binaryType = this.options.binaryType;
4974
4978
  }
@@ -5305,7 +5309,7 @@ const parseCandidate$1 = (candidate ) => {
5305
5309
  if (!candidate) {
5306
5310
  return null;
5307
5311
  }
5308
- const result = sdpParser__default["default"].parse(candidate.indexOf('a=') === 0 ? candidate : `a=${candidate}`);
5312
+ const result = sdpParser__default['default'].parse(candidate.indexOf('a=') === 0 ? candidate : `a=${candidate}`);
5309
5313
 
5310
5314
  return result.candidates ? result.candidates[0] : null;
5311
5315
  };
@@ -5319,7 +5323,7 @@ const areCandidateValid = (candidates ) =>
5319
5323
  .length > 0;
5320
5324
 
5321
5325
  const getVideoDirection = (sdp ) => {
5322
- const parsedSdp = sdpParser__default["default"].parse(sdp);
5326
+ const parsedSdp = sdpParser__default['default'].parse(sdp);
5323
5327
  const videoMedia = parsedSdp.media.find(media => media.type === 'video');
5324
5328
  if (!videoMedia) {
5325
5329
  return null;
@@ -5333,14 +5337,14 @@ const hasAnActiveVideo = (sdp ) => {
5333
5337
  return false;
5334
5338
  }
5335
5339
 
5336
- const parsedSdp = sdpParser__default["default"].parse(sdp);
5340
+ const parsedSdp = sdpParser__default['default'].parse(sdp);
5337
5341
 
5338
5342
  return !!parsedSdp.media.find(media =>
5339
5343
  media.type === 'video' && media.port > 10 && (!media.direction || media.direction !== 'inactive'));
5340
5344
  };
5341
5345
 
5342
5346
  const fixSdp = (sdp , candidates , forcePort = true) => {
5343
- const parsedSdp = sdpParser__default["default"].parse(sdp);
5347
+ const parsedSdp = sdpParser__default['default'].parse(sdp);
5344
5348
  const mainCandidate = getSrflxOrRelay(candidates)[0];
5345
5349
  const ip = mainCandidate ? mainCandidate.ip : null;
5346
5350
 
@@ -5358,7 +5362,7 @@ const fixSdp = (sdp , candidates , forcePort = true)
5358
5362
  };
5359
5363
  });
5360
5364
 
5361
- let fixed = sdpParser__default["default"].write(parsedSdp);
5365
+ let fixed = sdpParser__default['default'].write(parsedSdp);
5362
5366
 
5363
5367
  if (ip) {
5364
5368
  fixed = fixed.replace(/IN IP4 0.0.0.0/g, `IN IP4 ${ip}`);
@@ -5404,7 +5408,7 @@ class WazoSessionDescriptionHandler extends sessionDescriptionHandler.SessionDes
5404
5408
  ) {
5405
5409
  super(logger, mediaStreamFactory, sessionDescriptionHandlerConfiguration);
5406
5410
 
5407
- this.eventEmitter = new EventEmitter__default["default"]();
5411
+ this.eventEmitter = new EventEmitter__default['default']();
5408
5412
  this.isWeb = isWeb;
5409
5413
  this.session = session;
5410
5414
  }
@@ -6623,7 +6627,7 @@ class WebRTCClient extends Emitter {
6623
6627
  // We search for the last transceiver without `video-` in the mid (video- means remote transceiver)
6624
6628
  const transceivers = pc.getTransceivers();
6625
6629
  const transceiverIdx = lastIndexOf(transceivers, transceiver =>
6626
- transceiver.sender.track === null && transceiver.mid.indexOf('video') === -1);
6630
+ transceiver.sender.track === null && transceiver.mid && transceiver.mid.indexOf('video') === -1);
6627
6631
 
6628
6632
  videoSender = transceiverIdx !== -1 ? transceivers[transceiverIdx].sender : null;
6629
6633
  } else {
@@ -7828,7 +7832,7 @@ class WebRTCClient extends Emitter {
7828
7832
  }
7829
7833
  const sessionId = this.getSipSessionId(session);
7830
7834
 
7831
- getStats__default["default"](pc, (result ) => {
7835
+ getStats__default['default'](pc, (result ) => {
7832
7836
  const { results, internal, nomore, ...stats } = result;
7833
7837
  this.statsIntervals[sessionId] = nomore;
7834
7838
 
@@ -17,7 +17,7 @@ class Emitter {
17
17
 
18
18
 
19
19
  constructor() {
20
- this.eventEmitter = new EventEmitter__default["default"]();
20
+ this.eventEmitter = new EventEmitter__default['default']();
21
21
  }
22
22
 
23
23
  on(event , callback ) {
@@ -204,7 +204,7 @@ class IssueReporter {
204
204
  args.splice(1, 1);
205
205
  }
206
206
 
207
- const date = moment__default["default"]().format('YYYY-MM-DD HH:mm:ss.SSS');
207
+ const date = moment__default['default']().format('YYYY-MM-DD HH:mm:ss.SSS');
208
208
  const message = args.join(', ');
209
209
  let consoleMessage = message;
210
210
 
@@ -381,7 +381,7 @@ class IssueReporter {
381
381
  payload._retry = retry + 1;
382
382
  }
383
383
 
384
- this._sendDebugToGrafana(body, retry + 1);
384
+ this._sendDebugToGrafana(payload, retry + 1);
385
385
  }, 5000 + retry * 1000);
386
386
  });
387
387
  }
@@ -645,7 +645,7 @@ class WebSocketClient extends Emitter {
645
645
 
646
646
  connect() {
647
647
  logger.info('connect method started', { host: this.host, token: this.token });
648
- this.socket = new ReconnectingWebSocket__default["default"](this._getUrl.bind(this), [], this.options);
648
+ this.socket = new ReconnectingWebSocket__default['default'](this._getUrl.bind(this), [], this.options);
649
649
  if (this.options.binaryType) {
650
650
  this.socket.binaryType = this.options.binaryType;
651
651
  }
@@ -496,7 +496,7 @@ class IssueReporter {
496
496
  args.splice(1, 1);
497
497
  }
498
498
 
499
- const date = moment__default["default"]().format('YYYY-MM-DD HH:mm:ss.SSS');
499
+ const date = moment__default['default']().format('YYYY-MM-DD HH:mm:ss.SSS');
500
500
  const message = args.join(', ');
501
501
  let consoleMessage = message;
502
502
 
@@ -673,7 +673,7 @@ class IssueReporter {
673
673
  payload._retry = retry + 1;
674
674
  }
675
675
 
676
- this._sendDebugToGrafana(body, retry + 1);
676
+ this._sendDebugToGrafana(payload, retry + 1);
677
677
  }, 5000 + retry * 1000);
678
678
  });
679
679
  }
@@ -701,7 +701,7 @@ const parseCandidate = (candidate ) => {
701
701
  if (!candidate) {
702
702
  return null;
703
703
  }
704
- const result = sdpParser__default["default"].parse(candidate.indexOf('a=') === 0 ? candidate : `a=${candidate}`);
704
+ const result = sdpParser__default['default'].parse(candidate.indexOf('a=') === 0 ? candidate : `a=${candidate}`);
705
705
 
706
706
  return result.candidates ? result.candidates[0] : null;
707
707
  };
@@ -715,7 +715,7 @@ const areCandidateValid = (candidates ) =>
715
715
  .length > 0;
716
716
 
717
717
  const getVideoDirection = (sdp ) => {
718
- const parsedSdp = sdpParser__default["default"].parse(sdp);
718
+ const parsedSdp = sdpParser__default['default'].parse(sdp);
719
719
  const videoMedia = parsedSdp.media.find(media => media.type === 'video');
720
720
  if (!videoMedia) {
721
721
  return null;
@@ -729,14 +729,14 @@ const hasAnActiveVideo = (sdp ) => {
729
729
  return false;
730
730
  }
731
731
 
732
- const parsedSdp = sdpParser__default["default"].parse(sdp);
732
+ const parsedSdp = sdpParser__default['default'].parse(sdp);
733
733
 
734
734
  return !!parsedSdp.media.find(media =>
735
735
  media.type === 'video' && media.port > 10 && (!media.direction || media.direction !== 'inactive'));
736
736
  };
737
737
 
738
738
  const fixSdp = (sdp , candidates , forcePort = true) => {
739
- const parsedSdp = sdpParser__default["default"].parse(sdp);
739
+ const parsedSdp = sdpParser__default['default'].parse(sdp);
740
740
  const mainCandidate = getSrflxOrRelay(candidates)[0];
741
741
  const ip = mainCandidate ? mainCandidate.ip : null;
742
742
 
@@ -754,7 +754,7 @@ const fixSdp = (sdp , candidates , forcePort = true)
754
754
  };
755
755
  });
756
756
 
757
- let fixed = sdpParser__default["default"].write(parsedSdp);
757
+ let fixed = sdpParser__default['default'].write(parsedSdp);
758
758
 
759
759
  if (ip) {
760
760
  fixed = fixed.replace(/IN IP4 0.0.0.0/g, `IN IP4 ${ip}`);
@@ -800,7 +800,7 @@ class WazoSessionDescriptionHandler extends sessionDescriptionHandler.SessionDes
800
800
  ) {
801
801
  super(logger, mediaStreamFactory, sessionDescriptionHandlerConfiguration);
802
802
 
803
- this.eventEmitter = new EventEmitter__default["default"]();
803
+ this.eventEmitter = new EventEmitter__default['default']();
804
804
  this.isWeb = isWeb;
805
805
  this.session = session;
806
806
  }
@@ -1239,7 +1239,7 @@ class Emitter {
1239
1239
 
1240
1240
 
1241
1241
  constructor() {
1242
- this.eventEmitter = new EventEmitter__default["default"]();
1242
+ this.eventEmitter = new EventEmitter__default['default']();
1243
1243
  }
1244
1244
 
1245
1245
  on(event , callback ) {
@@ -3175,7 +3175,8 @@ class ExternalApp {
3175
3175
 
3176
3176
 
3177
3177
 
3178
-
3178
+
3179
+
3179
3180
 
3180
3181
 
3181
3182
  class Meeting {
@@ -3187,6 +3188,7 @@ class Meeting {
3187
3188
 
3188
3189
 
3189
3190
 
3191
+
3190
3192
 
3191
3193
 
3192
3194
  static parse(plain ) {
@@ -3198,6 +3200,7 @@ class Meeting {
3198
3200
  port: plain.port,
3199
3201
  uuid: plain.uuid,
3200
3202
  number: plain.number,
3203
+ persistent: plain.persistent,
3201
3204
  });
3202
3205
  }
3203
3206
 
@@ -3205,7 +3208,7 @@ class Meeting {
3205
3208
  return newFrom(meeting, Meeting);
3206
3209
  }
3207
3210
 
3208
- constructor({ uuid, name, guestSipAuthorization, ownerUuids, port, uri, number } = {}) {
3211
+ constructor({ uuid, name, guestSipAuthorization, ownerUuids, port, uri, number, persistent } = {}) {
3209
3212
  this.guestSipAuthorization = guestSipAuthorization;
3210
3213
  this.uri = uri;
3211
3214
  this.name = name;
@@ -3213,6 +3216,7 @@ class Meeting {
3213
3216
  this.port = port;
3214
3217
  this.uuid = uuid;
3215
3218
  this.number = number;
3219
+ this.persistent = persistent;
3216
3220
 
3217
3221
  // Useful to compare instead of instanceof with minified code
3218
3222
  this.type = 'Meeting';
@@ -3393,7 +3397,7 @@ class ChatMessage {
3393
3397
  static parse(plain ) {
3394
3398
  return new ChatMessage({
3395
3399
  uuid: plain.uuid,
3396
- date: moment__default["default"](plain.created_at).toDate(),
3400
+ date: moment__default['default'](plain.created_at).toDate(),
3397
3401
  content: plain.content,
3398
3402
  alias: plain.alias,
3399
3403
  userUuid: plain.user_uuid,
@@ -3485,7 +3489,7 @@ class Voicemail {
3485
3489
  static parse(plain ) {
3486
3490
  return new Voicemail({
3487
3491
  id: plain.id,
3488
- date: moment__default["default"](plain.timestamp * 1000).toDate(),
3492
+ date: moment__default['default'](plain.timestamp * 1000).toDate(),
3489
3493
  duration: plain.duration * 1000,
3490
3494
  caller: {
3491
3495
  name: plain.caller_id_name,
@@ -3622,7 +3626,7 @@ class Call {
3622
3626
  onHold: plain.on_hold,
3623
3627
  status: plain.status,
3624
3628
  lineId: plain.line_id,
3625
- startingTime: moment__default["default"](plain.creation_time).toDate(),
3629
+ startingTime: moment__default['default'](plain.creation_time).toDate(),
3626
3630
  talkingToIds: Object.keys(plain.talking_to || {}),
3627
3631
  recording: plain.record_state === RECORD_STATE_ACTIVE,
3628
3632
  });
@@ -3776,7 +3780,7 @@ class Recording {
3776
3780
 
3777
3781
 
3778
3782
 
3779
- static parseMany(recordings ) {
3783
+ static parseMany(recordings = []) {
3780
3784
  return recordings.map(item => Recording.parse(item));
3781
3785
  }
3782
3786
 
@@ -3784,8 +3788,8 @@ class Recording {
3784
3788
  return new Recording({
3785
3789
  deleted: plain.deleted,
3786
3790
  fileName: plain.filename,
3787
- end: plain.end_time ? moment__default["default"](plain.end_time).toDate() : null,
3788
- start: moment__default["default"](plain.start_time).toDate(),
3791
+ end: plain.end_time ? moment__default['default'](plain.end_time).toDate() : null,
3792
+ start: moment__default['default'](plain.start_time).toDate(),
3789
3793
  uuid: plain.uuid,
3790
3794
  });
3791
3795
  }
@@ -3883,7 +3887,7 @@ class CallLog {
3883
3887
 
3884
3888
  static parse(plain ) {
3885
3889
  return new CallLog({
3886
- answer: plain.answer ? moment__default["default"](plain.answer).toDate() : null,
3890
+ answer: plain.answer ? moment__default['default'](plain.answer).toDate() : null,
3887
3891
  answered: plain.answered,
3888
3892
  callDirection: plain.call_direction,
3889
3893
  destination: {
@@ -3900,9 +3904,9 @@ class CallLog {
3900
3904
  },
3901
3905
  id: plain.id,
3902
3906
  duration: (plain.duration || 0) * 1000, // duration is in seconds
3903
- start: moment__default["default"](plain.start).toDate(),
3904
- end: plain.end ? moment__default["default"](plain.end).toDate() : null,
3905
- recordings: Recording.parseMany(plain.recordings),
3907
+ start: moment__default['default'](plain.start).toDate(),
3908
+ end: plain.end ? moment__default['default'](plain.end).toDate() : null,
3909
+ recordings: Recording.parseMany(plain.recordings || []),
3906
3910
  });
3907
3911
  }
3908
3912
 
@@ -6039,7 +6043,7 @@ class WebRTCClient extends Emitter {
6039
6043
  // We search for the last transceiver without `video-` in the mid (video- means remote transceiver)
6040
6044
  const transceivers = pc.getTransceivers();
6041
6045
  const transceiverIdx = lastIndexOf(transceivers, transceiver =>
6042
- transceiver.sender.track === null && transceiver.mid.indexOf('video') === -1);
6046
+ transceiver.sender.track === null && transceiver.mid && transceiver.mid.indexOf('video') === -1);
6043
6047
 
6044
6048
  videoSender = transceiverIdx !== -1 ? transceivers[transceiverIdx].sender : null;
6045
6049
  } else {
@@ -7244,7 +7248,7 @@ class WebRTCClient extends Emitter {
7244
7248
  }
7245
7249
  const sessionId = this.getSipSessionId(session);
7246
7250
 
7247
- getStats__default["default"](pc, (result ) => {
7251
+ getStats__default['default'](pc, (result ) => {
7248
7252
  const { results, internal, nomore, ...stats } = result;
7249
7253
  this.statsIntervals[sessionId] = nomore;
7250
7254
 
@@ -496,7 +496,7 @@ class IssueReporter {
496
496
  args.splice(1, 1);
497
497
  }
498
498
 
499
- const date = moment__default["default"]().format('YYYY-MM-DD HH:mm:ss.SSS');
499
+ const date = moment__default['default']().format('YYYY-MM-DD HH:mm:ss.SSS');
500
500
  const message = args.join(', ');
501
501
  let consoleMessage = message;
502
502
 
@@ -673,7 +673,7 @@ class IssueReporter {
673
673
  payload._retry = retry + 1;
674
674
  }
675
675
 
676
- this._sendDebugToGrafana(body, retry + 1);
676
+ this._sendDebugToGrafana(payload, retry + 1);
677
677
  }, 5000 + retry * 1000);
678
678
  });
679
679
  }
@@ -701,7 +701,7 @@ const parseCandidate = (candidate ) => {
701
701
  if (!candidate) {
702
702
  return null;
703
703
  }
704
- const result = sdpParser__default["default"].parse(candidate.indexOf('a=') === 0 ? candidate : `a=${candidate}`);
704
+ const result = sdpParser__default['default'].parse(candidate.indexOf('a=') === 0 ? candidate : `a=${candidate}`);
705
705
 
706
706
  return result.candidates ? result.candidates[0] : null;
707
707
  };
@@ -715,7 +715,7 @@ const areCandidateValid = (candidates ) =>
715
715
  .length > 0;
716
716
 
717
717
  const getVideoDirection = (sdp ) => {
718
- const parsedSdp = sdpParser__default["default"].parse(sdp);
718
+ const parsedSdp = sdpParser__default['default'].parse(sdp);
719
719
  const videoMedia = parsedSdp.media.find(media => media.type === 'video');
720
720
  if (!videoMedia) {
721
721
  return null;
@@ -729,14 +729,14 @@ const hasAnActiveVideo = (sdp ) => {
729
729
  return false;
730
730
  }
731
731
 
732
- const parsedSdp = sdpParser__default["default"].parse(sdp);
732
+ const parsedSdp = sdpParser__default['default'].parse(sdp);
733
733
 
734
734
  return !!parsedSdp.media.find(media =>
735
735
  media.type === 'video' && media.port > 10 && (!media.direction || media.direction !== 'inactive'));
736
736
  };
737
737
 
738
738
  const fixSdp = (sdp , candidates , forcePort = true) => {
739
- const parsedSdp = sdpParser__default["default"].parse(sdp);
739
+ const parsedSdp = sdpParser__default['default'].parse(sdp);
740
740
  const mainCandidate = getSrflxOrRelay(candidates)[0];
741
741
  const ip = mainCandidate ? mainCandidate.ip : null;
742
742
 
@@ -754,7 +754,7 @@ const fixSdp = (sdp , candidates , forcePort = true)
754
754
  };
755
755
  });
756
756
 
757
- let fixed = sdpParser__default["default"].write(parsedSdp);
757
+ let fixed = sdpParser__default['default'].write(parsedSdp);
758
758
 
759
759
  if (ip) {
760
760
  fixed = fixed.replace(/IN IP4 0.0.0.0/g, `IN IP4 ${ip}`);
@@ -800,7 +800,7 @@ class WazoSessionDescriptionHandler extends sessionDescriptionHandler.SessionDes
800
800
  ) {
801
801
  super(logger, mediaStreamFactory, sessionDescriptionHandlerConfiguration);
802
802
 
803
- this.eventEmitter = new EventEmitter__default["default"]();
803
+ this.eventEmitter = new EventEmitter__default['default']();
804
804
  this.isWeb = isWeb;
805
805
  this.session = session;
806
806
  }
@@ -1239,7 +1239,7 @@ class Emitter {
1239
1239
 
1240
1240
 
1241
1241
  constructor() {
1242
- this.eventEmitter = new EventEmitter__default["default"]();
1242
+ this.eventEmitter = new EventEmitter__default['default']();
1243
1243
  }
1244
1244
 
1245
1245
  on(event , callback ) {
@@ -3175,7 +3175,8 @@ class ExternalApp {
3175
3175
 
3176
3176
 
3177
3177
 
3178
-
3178
+
3179
+
3179
3180
 
3180
3181
 
3181
3182
  class Meeting {
@@ -3187,6 +3188,7 @@ class Meeting {
3187
3188
 
3188
3189
 
3189
3190
 
3191
+
3190
3192
 
3191
3193
 
3192
3194
  static parse(plain ) {
@@ -3198,6 +3200,7 @@ class Meeting {
3198
3200
  port: plain.port,
3199
3201
  uuid: plain.uuid,
3200
3202
  number: plain.number,
3203
+ persistent: plain.persistent,
3201
3204
  });
3202
3205
  }
3203
3206
 
@@ -3205,7 +3208,7 @@ class Meeting {
3205
3208
  return newFrom(meeting, Meeting);
3206
3209
  }
3207
3210
 
3208
- constructor({ uuid, name, guestSipAuthorization, ownerUuids, port, uri, number } = {}) {
3211
+ constructor({ uuid, name, guestSipAuthorization, ownerUuids, port, uri, number, persistent } = {}) {
3209
3212
  this.guestSipAuthorization = guestSipAuthorization;
3210
3213
  this.uri = uri;
3211
3214
  this.name = name;
@@ -3213,6 +3216,7 @@ class Meeting {
3213
3216
  this.port = port;
3214
3217
  this.uuid = uuid;
3215
3218
  this.number = number;
3219
+ this.persistent = persistent;
3216
3220
 
3217
3221
  // Useful to compare instead of instanceof with minified code
3218
3222
  this.type = 'Meeting';
@@ -3393,7 +3397,7 @@ class ChatMessage {
3393
3397
  static parse(plain ) {
3394
3398
  return new ChatMessage({
3395
3399
  uuid: plain.uuid,
3396
- date: moment__default["default"](plain.created_at).toDate(),
3400
+ date: moment__default['default'](plain.created_at).toDate(),
3397
3401
  content: plain.content,
3398
3402
  alias: plain.alias,
3399
3403
  userUuid: plain.user_uuid,
@@ -3485,7 +3489,7 @@ class Voicemail {
3485
3489
  static parse(plain ) {
3486
3490
  return new Voicemail({
3487
3491
  id: plain.id,
3488
- date: moment__default["default"](plain.timestamp * 1000).toDate(),
3492
+ date: moment__default['default'](plain.timestamp * 1000).toDate(),
3489
3493
  duration: plain.duration * 1000,
3490
3494
  caller: {
3491
3495
  name: plain.caller_id_name,
@@ -3622,7 +3626,7 @@ class Call {
3622
3626
  onHold: plain.on_hold,
3623
3627
  status: plain.status,
3624
3628
  lineId: plain.line_id,
3625
- startingTime: moment__default["default"](plain.creation_time).toDate(),
3629
+ startingTime: moment__default['default'](plain.creation_time).toDate(),
3626
3630
  talkingToIds: Object.keys(plain.talking_to || {}),
3627
3631
  recording: plain.record_state === RECORD_STATE_ACTIVE,
3628
3632
  });
@@ -3776,7 +3780,7 @@ class Recording {
3776
3780
 
3777
3781
 
3778
3782
 
3779
- static parseMany(recordings ) {
3783
+ static parseMany(recordings = []) {
3780
3784
  return recordings.map(item => Recording.parse(item));
3781
3785
  }
3782
3786
 
@@ -3784,8 +3788,8 @@ class Recording {
3784
3788
  return new Recording({
3785
3789
  deleted: plain.deleted,
3786
3790
  fileName: plain.filename,
3787
- end: plain.end_time ? moment__default["default"](plain.end_time).toDate() : null,
3788
- start: moment__default["default"](plain.start_time).toDate(),
3791
+ end: plain.end_time ? moment__default['default'](plain.end_time).toDate() : null,
3792
+ start: moment__default['default'](plain.start_time).toDate(),
3789
3793
  uuid: plain.uuid,
3790
3794
  });
3791
3795
  }
@@ -3883,7 +3887,7 @@ class CallLog {
3883
3887
 
3884
3888
  static parse(plain ) {
3885
3889
  return new CallLog({
3886
- answer: plain.answer ? moment__default["default"](plain.answer).toDate() : null,
3890
+ answer: plain.answer ? moment__default['default'](plain.answer).toDate() : null,
3887
3891
  answered: plain.answered,
3888
3892
  callDirection: plain.call_direction,
3889
3893
  destination: {
@@ -3900,9 +3904,9 @@ class CallLog {
3900
3904
  },
3901
3905
  id: plain.id,
3902
3906
  duration: (plain.duration || 0) * 1000, // duration is in seconds
3903
- start: moment__default["default"](plain.start).toDate(),
3904
- end: plain.end ? moment__default["default"](plain.end).toDate() : null,
3905
- recordings: Recording.parseMany(plain.recordings),
3907
+ start: moment__default['default'](plain.start).toDate(),
3908
+ end: plain.end ? moment__default['default'](plain.end).toDate() : null,
3909
+ recordings: Recording.parseMany(plain.recordings || []),
3906
3910
  });
3907
3911
  }
3908
3912
 
@@ -6039,7 +6043,7 @@ class WebRTCClient extends Emitter {
6039
6043
  // We search for the last transceiver without `video-` in the mid (video- means remote transceiver)
6040
6044
  const transceivers = pc.getTransceivers();
6041
6045
  const transceiverIdx = lastIndexOf(transceivers, transceiver =>
6042
- transceiver.sender.track === null && transceiver.mid.indexOf('video') === -1);
6046
+ transceiver.sender.track === null && transceiver.mid && transceiver.mid.indexOf('video') === -1);
6043
6047
 
6044
6048
  videoSender = transceiverIdx !== -1 ? transceivers[transceiverIdx].sender : null;
6045
6049
  } else {
@@ -7244,7 +7248,7 @@ class WebRTCClient extends Emitter {
7244
7248
  }
7245
7249
  const sessionId = this.getSipSessionId(session);
7246
7250
 
7247
- getStats__default["default"](pc, (result ) => {
7251
+ getStats__default['default'](pc, (result ) => {
7248
7252
  const { results, internal, nomore, ...stats } = result;
7249
7253
  this.statsIntervals[sessionId] = nomore;
7250
7254