@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.
- package/dist/wazo-sdk.js +13 -5
- package/esm/__tests__/api-client.test.js +9 -5
- package/esm/__tests__/web-rtc-client.test.js +10 -6
- package/esm/api/agentd.js +2 -2
- package/esm/api/amid.js +2 -2
- package/esm/api/application.js +2 -2
- package/esm/api/auth.js +4 -3
- package/esm/api/call-logd.js +4 -4
- package/esm/api/calld.js +2 -2
- package/esm/api/chatd.js +2 -2
- package/esm/api/confd.js +8 -4
- package/esm/api/ctid-ng.js +2 -2
- package/esm/api/dird.js +2 -2
- package/esm/api/webhookd.js +2 -2
- package/esm/api-client.js +11 -7
- package/esm/checker/Checker.js +11 -7
- package/esm/checker/checks/aor.js +11 -7
- package/esm/checker/checks/api.js +11 -7
- package/esm/checker/checks/ice-ipv4.js +1 -1
- package/esm/checker/checks/index.js +12 -8
- package/esm/checker/checks/symmetric-nat.js +1 -1
- package/esm/checker/checks/wazo-websocket.js +2 -2
- package/esm/checker/checks/webrtc-transport.js +12 -8
- package/esm/checker/checks/webrtc.js +12 -8
- package/esm/domain/AdHocAPIConference.js +11 -7
- package/esm/domain/Agent.js +1 -1
- package/esm/domain/BadResponse.js +1 -1
- package/esm/domain/Call.js +1 -1
- package/esm/domain/CallLog.js +3 -3
- package/esm/domain/CallSession.js +1 -1
- package/esm/domain/ChatMessage.js +1 -1
- package/esm/domain/ChatRoom.js +1 -1
- package/esm/domain/Contact.js +2 -1
- package/esm/domain/Country.js +1 -1
- package/esm/domain/Device/DebugDevice.js +1 -1
- package/esm/domain/ExternalApp.js +1 -1
- package/esm/domain/Features.js +11 -6
- package/esm/domain/ForwardOption.js +2 -1
- package/esm/domain/IndirectTransfer.js +1 -1
- package/esm/domain/Line.js +1 -1
- package/esm/domain/Meeting.js +7 -3
- package/esm/domain/NotificationOptions.js +1 -1
- package/esm/domain/Phone/CTIPhone.js +12 -7
- package/esm/domain/Phone/WebRTCPhone.js +3 -2
- package/esm/domain/Profile.js +2 -1
- package/esm/domain/Recording.js +2 -2
- package/esm/domain/Relocation.js +1 -1
- package/esm/domain/Room.js +1 -1
- package/esm/domain/ServerError.js +1 -1
- package/esm/domain/Session.js +2 -2
- package/esm/domain/SipLine.js +1 -1
- package/esm/domain/Subscription.js +1 -1
- package/esm/domain/SwitchboardCall.js +1 -1
- package/esm/domain/Voicemail.js +1 -1
- package/esm/domain/__tests__/CallLog.test.js +2 -2
- package/esm/index.js +12 -8
- package/esm/lib/WazoSessionDescriptionHandler.js +3 -2
- package/esm/service/CallApi.js +11 -7
- package/esm/service/IssueReporter.js +2 -2
- package/esm/service/__tests__/IssueReporter.test.js +1 -1
- package/esm/service/getApiClient.js +12 -7
- package/esm/simple/Auth.js +12 -7
- package/esm/simple/Configuration.js +11 -7
- package/esm/simple/Directory.js +10 -6
- package/esm/simple/Phone.js +11 -7
- package/esm/simple/Websocket.js +2 -2
- package/esm/simple/index.js +11 -7
- package/esm/simple/room/LocalParticipant.js +24 -24
- package/esm/simple/room/Participant.js +23 -21
- package/esm/simple/room/RemoteParticipant.js +25 -25
- package/esm/simple/room/Room.js +24 -21
- package/esm/simple/room/SipRoom.js +12 -10
- package/esm/simple/room/Stream.js +12 -10
- package/esm/simple/room/__tests__/RemoteParticipant.test.js +10 -6
- package/esm/simple/utils.js +10 -6
- package/esm/utils/Emitter.js +1 -1
- package/esm/utils/Heartbeat.js +1 -1
- package/esm/utils/__tests__/api-requester.test.js +1 -1
- package/esm/utils/api-requester.js +3 -2
- package/esm/utils/compare-version.js +1 -1
- package/esm/utils/isMobile.js +1 -1
- package/esm/utils/new-from.js +1 -1
- package/esm/utils/once.js +1 -1
- package/esm/utils/update-from.js +1 -1
- package/esm/web-rtc-client.js +13 -8
- package/esm/websocket-client.js +3 -2
- package/lib/__tests__/api-client.test.js +18 -14
- package/lib/__tests__/web-rtc-client.test.js +27 -23
- package/lib/api/agentd.js +2 -2
- package/lib/api/amid.js +2 -2
- package/lib/api/application.js +2 -2
- package/lib/api/auth.js +3 -3
- package/lib/api/call-logd.js +9 -9
- package/lib/api/calld.js +5 -5
- package/lib/api/chatd.js +3 -3
- package/lib/api/confd.js +8 -4
- package/lib/api/ctid-ng.js +5 -5
- package/lib/api/dird.js +2 -2
- package/lib/api/webhookd.js +2 -2
- package/lib/api-client.js +18 -14
- package/lib/checker/Checker.js +28 -24
- package/lib/checker/checks/aor.js +18 -14
- package/lib/checker/checks/api.js +18 -14
- package/lib/checker/checks/index.js +28 -24
- package/lib/checker/checks/wazo-websocket.js +4 -4
- package/lib/checker/checks/webrtc-transport.js +27 -23
- package/lib/checker/checks/webrtc.js +27 -23
- package/lib/domain/AdHocAPIConference.js +18 -14
- package/lib/domain/Call.js +1 -1
- package/lib/domain/CallLog.js +7 -7
- package/lib/domain/ChatMessage.js +1 -1
- package/lib/domain/Contact.js +1 -1
- package/lib/domain/Features.js +19 -15
- package/lib/domain/ForwardOption.js +1 -1
- package/lib/domain/Meeting.js +6 -2
- package/lib/domain/Phone/CTIPhone.js +20 -16
- package/lib/domain/Phone/WebRTCPhone.js +4 -4
- package/lib/domain/Profile.js +1 -1
- package/lib/domain/Recording.js +3 -3
- package/lib/domain/Voicemail.js +1 -1
- package/lib/domain/__tests__/Call.test.js +1 -1
- package/lib/domain/__tests__/CallLog.test.js +13 -13
- package/lib/domain/__tests__/Voicemail.test.js +1 -1
- package/lib/index.js +31 -27
- package/lib/lib/WazoSessionDescriptionHandler.js +7 -7
- package/lib/service/CallApi.js +18 -14
- package/lib/service/IssueReporter.js +2 -2
- package/lib/service/__tests__/IssueReporter.test.js +2 -2
- package/lib/service/getApiClient.js +19 -15
- package/lib/simple/Auth.js +30 -26
- package/lib/simple/Configuration.js +29 -25
- package/lib/simple/Directory.js +18 -14
- package/lib/simple/Phone.js +29 -25
- package/lib/simple/Websocket.js +4 -4
- package/lib/simple/index.js +29 -25
- package/lib/simple/room/LocalParticipant.js +43 -43
- package/lib/simple/room/Participant.js +41 -39
- package/lib/simple/room/RemoteParticipant.js +44 -44
- package/lib/simple/room/Room.js +42 -40
- package/lib/simple/room/SipRoom.js +31 -29
- package/lib/simple/room/Stream.js +31 -29
- package/lib/simple/room/__tests__/RemoteParticipant.test.js +29 -25
- package/lib/simple/utils.js +29 -25
- package/lib/utils/Emitter.js +1 -1
- package/lib/utils/PhoneNumberUtil.js +2 -2
- package/lib/utils/__tests__/PhoneNumberUtil.test.js +2 -2
- package/lib/utils/__tests__/api-requester.test.js +2 -2
- package/lib/utils/__tests__/sdp.test.js +12 -12
- package/lib/utils/api-requester.js +3 -3
- package/lib/utils/sdp.js +10 -10
- package/lib/web-rtc-client.js +28 -24
- package/lib/websocket-client.js +5 -5
- package/package.json +1 -1
- package/src/domain/CallLog.js +1 -1
- package/src/domain/Meeting.js +6 -2
- package/src/domain/Recording.js +1 -1
- package/src/service/IssueReporter.js +1 -1
- package/src/web-rtc-client.js +1 -1
|
@@ -1719,7 +1719,7 @@ class IssueReporter {
|
|
|
1719
1719
|
args.splice(1, 1);
|
|
1720
1720
|
}
|
|
1721
1721
|
|
|
1722
|
-
const date = moment__default[
|
|
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(
|
|
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[
|
|
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[
|
|
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[
|
|
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[
|
|
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[
|
|
3598
|
-
start: moment__default[
|
|
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[
|
|
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[
|
|
3714
|
-
end: plain.end ? moment__default[
|
|
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
|
|
|
@@ -5886,7 +5890,7 @@ const parseCandidate$1 = (candidate ) => {
|
|
|
5886
5890
|
if (!candidate) {
|
|
5887
5891
|
return null;
|
|
5888
5892
|
}
|
|
5889
|
-
const result = sdpParser__default[
|
|
5893
|
+
const result = sdpParser__default['default'].parse(candidate.indexOf('a=') === 0 ? candidate : `a=${candidate}`);
|
|
5890
5894
|
|
|
5891
5895
|
return result.candidates ? result.candidates[0] : null;
|
|
5892
5896
|
};
|
|
@@ -5900,7 +5904,7 @@ const areCandidateValid = (candidates ) =>
|
|
|
5900
5904
|
.length > 0;
|
|
5901
5905
|
|
|
5902
5906
|
const getVideoDirection = (sdp ) => {
|
|
5903
|
-
const parsedSdp = sdpParser__default[
|
|
5907
|
+
const parsedSdp = sdpParser__default['default'].parse(sdp);
|
|
5904
5908
|
const videoMedia = parsedSdp.media.find(media => media.type === 'video');
|
|
5905
5909
|
if (!videoMedia) {
|
|
5906
5910
|
return null;
|
|
@@ -5914,14 +5918,14 @@ const hasAnActiveVideo = (sdp ) => {
|
|
|
5914
5918
|
return false;
|
|
5915
5919
|
}
|
|
5916
5920
|
|
|
5917
|
-
const parsedSdp = sdpParser__default[
|
|
5921
|
+
const parsedSdp = sdpParser__default['default'].parse(sdp);
|
|
5918
5922
|
|
|
5919
5923
|
return !!parsedSdp.media.find(media =>
|
|
5920
5924
|
media.type === 'video' && media.port > 10 && (!media.direction || media.direction !== 'inactive'));
|
|
5921
5925
|
};
|
|
5922
5926
|
|
|
5923
5927
|
const fixSdp = (sdp , candidates , forcePort = true) => {
|
|
5924
|
-
const parsedSdp = sdpParser__default[
|
|
5928
|
+
const parsedSdp = sdpParser__default['default'].parse(sdp);
|
|
5925
5929
|
const mainCandidate = getSrflxOrRelay(candidates)[0];
|
|
5926
5930
|
const ip = mainCandidate ? mainCandidate.ip : null;
|
|
5927
5931
|
|
|
@@ -5939,7 +5943,7 @@ const fixSdp = (sdp , candidates , forcePort = true)
|
|
|
5939
5943
|
};
|
|
5940
5944
|
});
|
|
5941
5945
|
|
|
5942
|
-
let fixed = sdpParser__default[
|
|
5946
|
+
let fixed = sdpParser__default['default'].write(parsedSdp);
|
|
5943
5947
|
|
|
5944
5948
|
if (ip) {
|
|
5945
5949
|
fixed = fixed.replace(/IN IP4 0.0.0.0/g, `IN IP4 ${ip}`);
|
|
@@ -5985,7 +5989,7 @@ class WazoSessionDescriptionHandler extends sessionDescriptionHandler.SessionDes
|
|
|
5985
5989
|
) {
|
|
5986
5990
|
super(logger, mediaStreamFactory, sessionDescriptionHandlerConfiguration);
|
|
5987
5991
|
|
|
5988
|
-
this.eventEmitter = new EventEmitter__default[
|
|
5992
|
+
this.eventEmitter = new EventEmitter__default['default']();
|
|
5989
5993
|
this.isWeb = isWeb;
|
|
5990
5994
|
this.session = session;
|
|
5991
5995
|
}
|
|
@@ -7302,7 +7306,7 @@ class WebRTCClient extends Emitter {
|
|
|
7302
7306
|
// We search for the last transceiver without `video-` in the mid (video- means remote transceiver)
|
|
7303
7307
|
const transceivers = pc.getTransceivers();
|
|
7304
7308
|
const transceiverIdx = lastIndexOf(transceivers, transceiver =>
|
|
7305
|
-
transceiver.sender.track === null && transceiver.mid.indexOf('video') === -1);
|
|
7309
|
+
transceiver.sender.track === null && transceiver.mid && transceiver.mid.indexOf('video') === -1);
|
|
7306
7310
|
|
|
7307
7311
|
videoSender = transceiverIdx !== -1 ? transceivers[transceiverIdx].sender : null;
|
|
7308
7312
|
} else {
|
|
@@ -8507,7 +8511,7 @@ class WebRTCClient extends Emitter {
|
|
|
8507
8511
|
}
|
|
8508
8512
|
const sessionId = this.getSipSessionId(session);
|
|
8509
8513
|
|
|
8510
|
-
getStats__default[
|
|
8514
|
+
getStats__default['default'](pc, (result ) => {
|
|
8511
8515
|
const { results, internal, nomore, ...stats } = result;
|
|
8512
8516
|
this.statsIntervals[sessionId] = nomore;
|
|
8513
8517
|
|
|
@@ -10889,7 +10893,7 @@ class WebSocketClient extends Emitter {
|
|
|
10889
10893
|
|
|
10890
10894
|
connect() {
|
|
10891
10895
|
logger$5.info('connect method started', { host: this.host, token: this.token });
|
|
10892
|
-
this.socket = new ReconnectingWebSocket__default[
|
|
10896
|
+
this.socket = new ReconnectingWebSocket__default['default'](this._getUrl.bind(this), [], this.options);
|
|
10893
10897
|
if (this.options.binaryType) {
|
|
10894
10898
|
this.socket.binaryType = this.options.binaryType;
|
|
10895
10899
|
}
|
|
@@ -12142,7 +12146,7 @@ class Room$1 extends Emitter {
|
|
|
12142
12146
|
}
|
|
12143
12147
|
|
|
12144
12148
|
_mapMsid(rawSdp ) {
|
|
12145
|
-
const sdp = sdpParser__default[
|
|
12149
|
+
const sdp = sdpParser__default['default'].parse(rawSdp);
|
|
12146
12150
|
const labelMsidArray = sdp.media.filter(media => !!media.label).map(({ label, msid }) => ({
|
|
12147
12151
|
label: String(label),
|
|
12148
12152
|
streamId: msid.split(' ')[0],
|
package/lib/simple/utils.js
CHANGED
|
@@ -1721,7 +1721,7 @@ class IssueReporter {
|
|
|
1721
1721
|
args.splice(1, 1);
|
|
1722
1722
|
}
|
|
1723
1723
|
|
|
1724
|
-
const date = moment__default[
|
|
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(
|
|
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[
|
|
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[
|
|
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[
|
|
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[
|
|
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[
|
|
3600
|
-
start: moment__default[
|
|
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[
|
|
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[
|
|
3716
|
-
end: plain.end ? moment__default[
|
|
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
|
|
|
@@ -5888,7 +5892,7 @@ const parseCandidate$1 = (candidate ) => {
|
|
|
5888
5892
|
if (!candidate) {
|
|
5889
5893
|
return null;
|
|
5890
5894
|
}
|
|
5891
|
-
const result = sdpParser__default[
|
|
5895
|
+
const result = sdpParser__default['default'].parse(candidate.indexOf('a=') === 0 ? candidate : `a=${candidate}`);
|
|
5892
5896
|
|
|
5893
5897
|
return result.candidates ? result.candidates[0] : null;
|
|
5894
5898
|
};
|
|
@@ -5902,7 +5906,7 @@ const areCandidateValid = (candidates ) =>
|
|
|
5902
5906
|
.length > 0;
|
|
5903
5907
|
|
|
5904
5908
|
const getVideoDirection = (sdp ) => {
|
|
5905
|
-
const parsedSdp = sdpParser__default[
|
|
5909
|
+
const parsedSdp = sdpParser__default['default'].parse(sdp);
|
|
5906
5910
|
const videoMedia = parsedSdp.media.find(media => media.type === 'video');
|
|
5907
5911
|
if (!videoMedia) {
|
|
5908
5912
|
return null;
|
|
@@ -5916,14 +5920,14 @@ const hasAnActiveVideo = (sdp ) => {
|
|
|
5916
5920
|
return false;
|
|
5917
5921
|
}
|
|
5918
5922
|
|
|
5919
|
-
const parsedSdp = sdpParser__default[
|
|
5923
|
+
const parsedSdp = sdpParser__default['default'].parse(sdp);
|
|
5920
5924
|
|
|
5921
5925
|
return !!parsedSdp.media.find(media =>
|
|
5922
5926
|
media.type === 'video' && media.port > 10 && (!media.direction || media.direction !== 'inactive'));
|
|
5923
5927
|
};
|
|
5924
5928
|
|
|
5925
5929
|
const fixSdp = (sdp , candidates , forcePort = true) => {
|
|
5926
|
-
const parsedSdp = sdpParser__default[
|
|
5930
|
+
const parsedSdp = sdpParser__default['default'].parse(sdp);
|
|
5927
5931
|
const mainCandidate = getSrflxOrRelay(candidates)[0];
|
|
5928
5932
|
const ip = mainCandidate ? mainCandidate.ip : null;
|
|
5929
5933
|
|
|
@@ -5941,7 +5945,7 @@ const fixSdp = (sdp , candidates , forcePort = true)
|
|
|
5941
5945
|
};
|
|
5942
5946
|
});
|
|
5943
5947
|
|
|
5944
|
-
let fixed = sdpParser__default[
|
|
5948
|
+
let fixed = sdpParser__default['default'].write(parsedSdp);
|
|
5945
5949
|
|
|
5946
5950
|
if (ip) {
|
|
5947
5951
|
fixed = fixed.replace(/IN IP4 0.0.0.0/g, `IN IP4 ${ip}`);
|
|
@@ -5987,7 +5991,7 @@ class WazoSessionDescriptionHandler extends sessionDescriptionHandler.SessionDes
|
|
|
5987
5991
|
) {
|
|
5988
5992
|
super(logger, mediaStreamFactory, sessionDescriptionHandlerConfiguration);
|
|
5989
5993
|
|
|
5990
|
-
this.eventEmitter = new EventEmitter__default[
|
|
5994
|
+
this.eventEmitter = new EventEmitter__default['default']();
|
|
5991
5995
|
this.isWeb = isWeb;
|
|
5992
5996
|
this.session = session;
|
|
5993
5997
|
}
|
|
@@ -7304,7 +7308,7 @@ class WebRTCClient extends Emitter {
|
|
|
7304
7308
|
// We search for the last transceiver without `video-` in the mid (video- means remote transceiver)
|
|
7305
7309
|
const transceivers = pc.getTransceivers();
|
|
7306
7310
|
const transceiverIdx = lastIndexOf(transceivers, transceiver =>
|
|
7307
|
-
transceiver.sender.track === null && transceiver.mid.indexOf('video') === -1);
|
|
7311
|
+
transceiver.sender.track === null && transceiver.mid && transceiver.mid.indexOf('video') === -1);
|
|
7308
7312
|
|
|
7309
7313
|
videoSender = transceiverIdx !== -1 ? transceivers[transceiverIdx].sender : null;
|
|
7310
7314
|
} else {
|
|
@@ -8509,7 +8513,7 @@ class WebRTCClient extends Emitter {
|
|
|
8509
8513
|
}
|
|
8510
8514
|
const sessionId = this.getSipSessionId(session);
|
|
8511
8515
|
|
|
8512
|
-
getStats__default[
|
|
8516
|
+
getStats__default['default'](pc, (result ) => {
|
|
8513
8517
|
const { results, internal, nomore, ...stats } = result;
|
|
8514
8518
|
this.statsIntervals[sessionId] = nomore;
|
|
8515
8519
|
|
|
@@ -10891,7 +10895,7 @@ class WebSocketClient extends Emitter {
|
|
|
10891
10895
|
|
|
10892
10896
|
connect() {
|
|
10893
10897
|
logger$5.info('connect method started', { host: this.host, token: this.token });
|
|
10894
|
-
this.socket = new ReconnectingWebSocket__default[
|
|
10898
|
+
this.socket = new ReconnectingWebSocket__default['default'](this._getUrl.bind(this), [], this.options);
|
|
10895
10899
|
if (this.options.binaryType) {
|
|
10896
10900
|
this.socket.binaryType = this.options.binaryType;
|
|
10897
10901
|
}
|
|
@@ -12144,7 +12148,7 @@ class Room$1 extends Emitter {
|
|
|
12144
12148
|
}
|
|
12145
12149
|
|
|
12146
12150
|
_mapMsid(rawSdp ) {
|
|
12147
|
-
const sdp = sdpParser__default[
|
|
12151
|
+
const sdp = sdpParser__default['default'].parse(rawSdp);
|
|
12148
12152
|
const labelMsidArray = sdp.media.filter(media => !!media.label).map(({ label, msid }) => ({
|
|
12149
12153
|
label: String(label),
|
|
12150
12154
|
streamId: msid.split(' ')[0],
|
package/lib/utils/Emitter.js
CHANGED
|
@@ -10,8 +10,8 @@ var LibPhoneNumber__default = /*#__PURE__*/_interopDefaultLegacy(LibPhoneNumber)
|
|
|
10
10
|
|
|
11
11
|
//
|
|
12
12
|
|
|
13
|
-
const PhoneNumberUtil = LibPhoneNumber__default[
|
|
14
|
-
const { PhoneNumberFormat, AsYouTypeFormatter } = LibPhoneNumber__default[
|
|
13
|
+
const PhoneNumberUtil = LibPhoneNumber__default['default'].PhoneNumberUtil.getInstance();
|
|
14
|
+
const { PhoneNumberFormat, AsYouTypeFormatter } = LibPhoneNumber__default['default'];
|
|
15
15
|
|
|
16
16
|
// eslint-disable-next-line
|
|
17
17
|
const EXTRA_CHAR_REGEXP = /[^+*\d]/g;
|
|
@@ -8,8 +8,8 @@ var LibPhoneNumber__default = /*#__PURE__*/_interopDefaultLegacy(LibPhoneNumber)
|
|
|
8
8
|
|
|
9
9
|
//
|
|
10
10
|
|
|
11
|
-
const PhoneNumberUtil = LibPhoneNumber__default[
|
|
12
|
-
const { PhoneNumberFormat, AsYouTypeFormatter } = LibPhoneNumber__default[
|
|
11
|
+
const PhoneNumberUtil = LibPhoneNumber__default['default'].PhoneNumberUtil.getInstance();
|
|
12
|
+
const { PhoneNumberFormat, AsYouTypeFormatter } = LibPhoneNumber__default['default'];
|
|
13
13
|
|
|
14
14
|
// eslint-disable-next-line
|
|
15
15
|
const EXTRA_CHAR_REGEXP = /[^+*\d]/g;
|
|
@@ -207,7 +207,7 @@ class IssueReporter {
|
|
|
207
207
|
args.splice(1, 1);
|
|
208
208
|
}
|
|
209
209
|
|
|
210
|
-
const date = moment__default[
|
|
210
|
+
const date = moment__default['default']().format('YYYY-MM-DD HH:mm:ss.SSS');
|
|
211
211
|
const message = args.join(', ');
|
|
212
212
|
let consoleMessage = message;
|
|
213
213
|
|
|
@@ -384,7 +384,7 @@ class IssueReporter {
|
|
|
384
384
|
payload._retry = retry + 1;
|
|
385
385
|
}
|
|
386
386
|
|
|
387
|
-
this._sendDebugToGrafana(
|
|
387
|
+
this._sendDebugToGrafana(payload, retry + 1);
|
|
388
388
|
}, 5000 + retry * 1000);
|
|
389
389
|
});
|
|
390
390
|
}
|
|
@@ -13,7 +13,7 @@ const getCandidates = (rawSdp ) => {
|
|
|
13
13
|
return [];
|
|
14
14
|
}
|
|
15
15
|
|
|
16
|
-
const sdp = sdpParser__default[
|
|
16
|
+
const sdp = sdpParser__default['default'].parse(rawSdp);
|
|
17
17
|
if (!sdp || !sdp.media) {
|
|
18
18
|
return [];
|
|
19
19
|
}
|
|
@@ -25,7 +25,7 @@ const parseCandidate = (candidate ) => {
|
|
|
25
25
|
if (!candidate) {
|
|
26
26
|
return null;
|
|
27
27
|
}
|
|
28
|
-
const result = sdpParser__default[
|
|
28
|
+
const result = sdpParser__default['default'].parse(candidate.indexOf('a=') === 0 ? candidate : `a=${candidate}`);
|
|
29
29
|
|
|
30
30
|
return result.candidates ? result.candidates[0] : null;
|
|
31
31
|
};
|
|
@@ -45,24 +45,24 @@ const isSdpValid = (sdp ) => {
|
|
|
45
45
|
};
|
|
46
46
|
|
|
47
47
|
const fixBundle = (sdp ) => {
|
|
48
|
-
const parsedSdp = sdpParser__default[
|
|
48
|
+
const parsedSdp = sdpParser__default['default'].parse(sdp);
|
|
49
49
|
const bundleIndex = parsedSdp.groups.findIndex(group => group.type === 'BUNDLE');
|
|
50
50
|
if (bundleIndex !== -1) {
|
|
51
51
|
parsedSdp.groups[bundleIndex].mids = parsedSdp.media
|
|
52
52
|
.map((media, index) => ('mid' in media ? media.mid : index)).join(' ');
|
|
53
53
|
}
|
|
54
54
|
|
|
55
|
-
return sdpParser__default[
|
|
55
|
+
return sdpParser__default['default'].write(parsedSdp);
|
|
56
56
|
};
|
|
57
57
|
|
|
58
58
|
const toggleVideoDirection = (sdp , direction ) => {
|
|
59
|
-
const parsedSdp = sdpParser__default[
|
|
59
|
+
const parsedSdp = sdpParser__default['default'].parse(sdp);
|
|
60
60
|
parsedSdp.media = parsedSdp.media.map(media => ({
|
|
61
61
|
...media,
|
|
62
62
|
...(media.type === 'video' ? { direction } : {}),
|
|
63
63
|
}));
|
|
64
64
|
|
|
65
|
-
return sdpParser__default[
|
|
65
|
+
return sdpParser__default['default'].write(parsedSdp);
|
|
66
66
|
};
|
|
67
67
|
|
|
68
68
|
const hasAnActiveVideo = (sdp ) => {
|
|
@@ -70,14 +70,14 @@ const hasAnActiveVideo = (sdp ) => {
|
|
|
70
70
|
return false;
|
|
71
71
|
}
|
|
72
72
|
|
|
73
|
-
const parsedSdp = sdpParser__default[
|
|
73
|
+
const parsedSdp = sdpParser__default['default'].parse(sdp);
|
|
74
74
|
|
|
75
75
|
return !!parsedSdp.media.find(media =>
|
|
76
76
|
media.type === 'video' && media.port > 10 && (!media.direction || media.direction !== 'inactive'));
|
|
77
77
|
};
|
|
78
78
|
|
|
79
79
|
const fixSdp = (sdp , candidates , forcePort = true) => {
|
|
80
|
-
const parsedSdp = sdpParser__default[
|
|
80
|
+
const parsedSdp = sdpParser__default['default'].parse(sdp);
|
|
81
81
|
const mainCandidate = getSrflxOrRelay(candidates)[0];
|
|
82
82
|
const ip = mainCandidate ? mainCandidate.ip : null;
|
|
83
83
|
|
|
@@ -95,7 +95,7 @@ const fixSdp = (sdp , candidates , forcePort = true)
|
|
|
95
95
|
};
|
|
96
96
|
});
|
|
97
97
|
|
|
98
|
-
let fixed = sdpParser__default[
|
|
98
|
+
let fixed = sdpParser__default['default'].write(parsedSdp);
|
|
99
99
|
|
|
100
100
|
if (ip) {
|
|
101
101
|
fixed = fixed.replace(/IN IP4 0.0.0.0/g, `IN IP4 ${ip}`);
|
|
@@ -234,7 +234,7 @@ describe('SDP utils', () => {
|
|
|
234
234
|
const candidates = [parseCandidate(candidate)];
|
|
235
235
|
|
|
236
236
|
const fixedSdp = fixSdp(badMobileSdp, candidates);
|
|
237
|
-
const parsed = sdpParser__default[
|
|
237
|
+
const parsed = sdpParser__default['default'].parse(fixedSdp);
|
|
238
238
|
|
|
239
239
|
expect(parsed.media[0].candidates.length).toBe(1);
|
|
240
240
|
expect(parsed.media[0].port).toBe(57021);
|
|
@@ -246,7 +246,7 @@ describe('SDP utils', () => {
|
|
|
246
246
|
describe('Fixing group bundle', () => {
|
|
247
247
|
it('should set a bundle for each m section', async () => {
|
|
248
248
|
const invalid = fixBundle(invalidBundle);
|
|
249
|
-
const parsed = sdpParser__default[
|
|
249
|
+
const parsed = sdpParser__default['default'].parse(invalid);
|
|
250
250
|
|
|
251
251
|
expect(parsed.groups[0].mids).toBe('0 1');
|
|
252
252
|
});
|
|
@@ -255,7 +255,7 @@ describe('SDP utils', () => {
|
|
|
255
255
|
describe('Deactivate video', () => {
|
|
256
256
|
it('should set inactive to each video sections', async () => {
|
|
257
257
|
const sdp = toggleVideoDirection(videoReinvite, 'inactive');
|
|
258
|
-
const parsed = sdpParser__default[
|
|
258
|
+
const parsed = sdpParser__default['default'].parse(sdp);
|
|
259
259
|
|
|
260
260
|
expect(parsed.media[1].direction).toBe('inactive');
|
|
261
261
|
expect(parsed.media[2].direction).toBe('inactive');
|
|
@@ -209,7 +209,7 @@ class IssueReporter {
|
|
|
209
209
|
args.splice(1, 1);
|
|
210
210
|
}
|
|
211
211
|
|
|
212
|
-
const date = moment__default[
|
|
212
|
+
const date = moment__default['default']().format('YYYY-MM-DD HH:mm:ss.SSS');
|
|
213
213
|
const message = args.join(', ');
|
|
214
214
|
let consoleMessage = message;
|
|
215
215
|
|
|
@@ -386,7 +386,7 @@ class IssueReporter {
|
|
|
386
386
|
payload._retry = retry + 1;
|
|
387
387
|
}
|
|
388
388
|
|
|
389
|
-
this._sendDebugToGrafana(
|
|
389
|
+
this._sendDebugToGrafana(payload, retry + 1);
|
|
390
390
|
}, 5000 + retry * 1000);
|
|
391
391
|
});
|
|
392
392
|
}
|
|
@@ -673,5 +673,5 @@ class ApiRequester {
|
|
|
673
673
|
}
|
|
674
674
|
}
|
|
675
675
|
|
|
676
|
-
exports
|
|
676
|
+
exports.default = ApiRequester;
|
|
677
677
|
exports.realFetch = realFetch;
|