@wazo/sdk 0.37.18 → 0.37.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/wazo-sdk.js +13 -5
- package/esm/__tests__/api-client.test.js +52 -9
- package/esm/__tests__/web-rtc-client.test.js +80 -20
- package/esm/api/agentd.js +27 -4
- package/esm/api/amid.js +27 -4
- package/esm/api/application.js +27 -4
- package/esm/api/auth.js +29 -5
- package/esm/api/call-logd.js +29 -6
- package/esm/api/calld.js +27 -4
- package/esm/api/chatd.js +27 -4
- package/esm/api/confd.js +51 -8
- package/esm/api/ctid-ng.js +27 -4
- package/esm/api/dird.js +27 -4
- package/esm/api/webhookd.js +27 -4
- package/esm/api-client.js +54 -11
- package/esm/checker/Checker.js +83 -21
- package/esm/checker/checks/aor.js +54 -11
- package/esm/checker/checks/api.js +54 -11
- package/esm/checker/checks/ice-ipv4.js +1 -1
- package/esm/checker/checks/index.js +84 -22
- package/esm/checker/checks/symmetric-nat.js +1 -1
- package/esm/checker/checks/wazo-websocket.js +29 -4
- package/esm/checker/checks/webrtc-transport.js +82 -22
- package/esm/checker/checks/webrtc.js +82 -22
- package/esm/domain/AdHocAPIConference.js +54 -11
- 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 +54 -10
- 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 +20 -3
- package/esm/domain/NotificationOptions.js +1 -1
- package/esm/domain/Phone/CTIPhone.js +55 -11
- package/esm/domain/Phone/WebRTCPhone.js +39 -6
- 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 +101 -24
- package/esm/lib/WazoSessionDescriptionHandler.js +28 -4
- package/esm/service/CallApi.js +54 -11
- package/esm/service/IssueReporter.js +27 -4
- package/esm/service/__tests__/IssueReporter.test.js +26 -3
- package/esm/service/getApiClient.js +55 -11
- package/esm/simple/Auth.js +101 -23
- package/esm/simple/Configuration.js +100 -23
- package/esm/simple/Directory.js +53 -10
- package/esm/simple/Phone.js +100 -23
- package/esm/simple/Websocket.js +30 -4
- package/esm/simple/index.js +100 -23
- package/esm/simple/room/LocalParticipant.js +113 -40
- package/esm/simple/room/Participant.js +112 -37
- package/esm/simple/room/RemoteParticipant.js +114 -41
- package/esm/simple/room/Room.js +113 -37
- package/esm/simple/room/SipRoom.js +101 -26
- package/esm/simple/room/Stream.js +101 -26
- package/esm/simple/room/__tests__/RemoteParticipant.test.js +99 -22
- package/esm/simple/utils.js +99 -22
- package/esm/utils/Emitter.js +1 -1
- package/esm/utils/Heartbeat.js +1 -1
- package/esm/utils/__tests__/api-requester.test.js +26 -3
- package/esm/utils/api-requester.js +28 -4
- 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 +83 -22
- package/esm/websocket-client.js +30 -4
- package/lib/__tests__/api-client.test.js +61 -18
- package/lib/__tests__/web-rtc-client.test.js +97 -37
- package/lib/api/agentd.js +27 -4
- package/lib/api/amid.js +27 -4
- package/lib/api/application.js +27 -4
- package/lib/api/auth.js +28 -5
- package/lib/api/call-logd.js +34 -11
- package/lib/api/calld.js +30 -7
- package/lib/api/chatd.js +28 -5
- package/lib/api/confd.js +51 -8
- package/lib/api/ctid-ng.js +30 -7
- package/lib/api/dird.js +27 -4
- package/lib/api/webhookd.js +27 -4
- package/lib/api-client.js +61 -18
- package/lib/checker/Checker.js +100 -38
- package/lib/checker/checks/aor.js +61 -18
- package/lib/checker/checks/api.js +61 -18
- package/lib/checker/checks/index.js +100 -38
- package/lib/checker/checks/wazo-websocket.js +31 -6
- package/lib/checker/checks/webrtc-transport.js +97 -37
- package/lib/checker/checks/webrtc.js +97 -37
- package/lib/domain/AdHocAPIConference.js +61 -18
- 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 +62 -19
- package/lib/domain/ForwardOption.js +1 -1
- package/lib/domain/Meeting.js +19 -2
- package/lib/domain/Phone/CTIPhone.js +63 -20
- package/lib/domain/Phone/WebRTCPhone.js +40 -8
- 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 +120 -43
- package/lib/lib/WazoSessionDescriptionHandler.js +32 -9
- package/lib/service/CallApi.js +61 -18
- package/lib/service/IssueReporter.js +27 -4
- package/lib/service/__tests__/IssueReporter.test.js +27 -4
- package/lib/service/getApiClient.js +62 -19
- package/lib/simple/Auth.js +119 -42
- package/lib/simple/Configuration.js +118 -41
- package/lib/simple/Directory.js +61 -18
- package/lib/simple/Phone.js +118 -41
- package/lib/simple/Websocket.js +32 -6
- package/lib/simple/index.js +118 -41
- package/lib/simple/room/LocalParticipant.js +132 -59
- package/lib/simple/room/Participant.js +130 -55
- package/lib/simple/room/RemoteParticipant.js +133 -60
- package/lib/simple/room/Room.js +131 -56
- package/lib/simple/room/SipRoom.js +120 -45
- package/lib/simple/room/Stream.js +120 -45
- package/lib/simple/room/__tests__/RemoteParticipant.test.js +118 -41
- package/lib/simple/utils.js +118 -41
- 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 +27 -4
- package/lib/utils/__tests__/sdp.test.js +12 -12
- package/lib/utils/api-requester.js +28 -5
- package/lib/utils/sdp.js +10 -10
- package/lib/web-rtc-client.js +98 -38
- package/lib/websocket-client.js +33 -7
- package/package.json +2 -2
- package/src/api/confd.js +5 -2
- package/src/domain/CallLog.js +1 -1
- package/src/domain/Meeting.js +19 -2
- package/src/domain/Phone/WebRTCPhone.js +11 -2
- package/src/domain/Recording.js +1 -1
- package/src/service/IssueReporter.js +26 -3
- package/src/simple/Phone.js +5 -0
- package/src/types/WebSocketMessage.js +5 -1
- package/src/web-rtc-client.js +28 -11
- package/src/websocket-client.js +2 -0
package/lib/simple/utils.js
CHANGED
|
@@ -1646,6 +1646,7 @@ class IssueReporter {
|
|
|
1646
1646
|
|
|
1647
1647
|
|
|
1648
1648
|
|
|
1649
|
+
|
|
1649
1650
|
|
|
1650
1651
|
constructor() {
|
|
1651
1652
|
addLevelsTo(this);
|
|
@@ -1657,12 +1658,17 @@ class IssueReporter {
|
|
|
1657
1658
|
this.bufferTimeout = null;
|
|
1658
1659
|
this._boundProcessBuffer = this._processBuffer.bind(this);
|
|
1659
1660
|
this._boundParseLoggerBody = this._parseLoggerBody.bind(this);
|
|
1661
|
+
this._callback = null;
|
|
1660
1662
|
}
|
|
1661
1663
|
|
|
1662
1664
|
init() {
|
|
1663
1665
|
this._catchConsole();
|
|
1664
1666
|
}
|
|
1665
1667
|
|
|
1668
|
+
setCallback(cb ) {
|
|
1669
|
+
this._callback = cb;
|
|
1670
|
+
}
|
|
1671
|
+
|
|
1666
1672
|
configureRemoteClient(configuration = { tag: 'wazo-sdk', host: null, port: null, level: null, extra: {} }) {
|
|
1667
1673
|
this.remoteClientConfiguration = configuration;
|
|
1668
1674
|
}
|
|
@@ -1698,6 +1704,7 @@ class IssueReporter {
|
|
|
1698
1704
|
|
|
1699
1705
|
// Handle category label
|
|
1700
1706
|
let category = null;
|
|
1707
|
+
let skipSendToRemote = false;
|
|
1701
1708
|
let extra = {};
|
|
1702
1709
|
if (args[0].indexOf(CATEGORY_PREFIX) === 0) {
|
|
1703
1710
|
category = args[0].split('=')[1];
|
|
@@ -1713,6 +1720,7 @@ class IssueReporter {
|
|
|
1713
1720
|
errorMessage: lastArg.message,
|
|
1714
1721
|
errorStack: lastArg.stack,
|
|
1715
1722
|
errorType: lastArg.constructor.name,
|
|
1723
|
+
skipSendToRemote: lastArg.skipSendToRemote,
|
|
1716
1724
|
};
|
|
1717
1725
|
} else {
|
|
1718
1726
|
extra = lastArg;
|
|
@@ -1721,7 +1729,12 @@ class IssueReporter {
|
|
|
1721
1729
|
args.splice(1, 1);
|
|
1722
1730
|
}
|
|
1723
1731
|
|
|
1724
|
-
|
|
1732
|
+
if (extra.skipSendToRemote) {
|
|
1733
|
+
skipSendToRemote = true;
|
|
1734
|
+
delete extra.skipSendToRemote;
|
|
1735
|
+
}
|
|
1736
|
+
|
|
1737
|
+
const date = moment__default['default']().format('YYYY-MM-DD HH:mm:ss.SSS');
|
|
1725
1738
|
const message = args.join(', ');
|
|
1726
1739
|
let consoleMessage = message;
|
|
1727
1740
|
|
|
@@ -1741,7 +1754,13 @@ class IssueReporter {
|
|
|
1741
1754
|
const oldMethod = this.oldConsoleMethods[consoleLevel] || this.oldConsoleMethods.log;
|
|
1742
1755
|
oldMethod.apply(oldMethod, [date, consoleMessage]);
|
|
1743
1756
|
|
|
1744
|
-
this.
|
|
1757
|
+
if (this._callback) {
|
|
1758
|
+
this._callback(level, consoleMessage);
|
|
1759
|
+
}
|
|
1760
|
+
|
|
1761
|
+
if (!skipSendToRemote) {
|
|
1762
|
+
this._sendToRemoteLogger(level, { date, message, category, ...extra });
|
|
1763
|
+
}
|
|
1745
1764
|
}
|
|
1746
1765
|
|
|
1747
1766
|
logRequest(url , options , response , start ) {
|
|
@@ -1886,7 +1905,11 @@ class IssueReporter {
|
|
|
1886
1905
|
},
|
|
1887
1906
|
// $FlowFixMe
|
|
1888
1907
|
body,
|
|
1889
|
-
}).catch(() => {
|
|
1908
|
+
}).catch((e ) => {
|
|
1909
|
+
// $FlowFixMe
|
|
1910
|
+
e.skipSendToRemote = true;
|
|
1911
|
+
this.log('error', this._makeCategory('grafana'), 'Sending log to grafana, error', e);
|
|
1912
|
+
|
|
1890
1913
|
setTimeout(() => {
|
|
1891
1914
|
if (isArray) {
|
|
1892
1915
|
payload = payload.map(message => {
|
|
@@ -1898,7 +1921,7 @@ class IssueReporter {
|
|
|
1898
1921
|
payload._retry = retry + 1;
|
|
1899
1922
|
}
|
|
1900
1923
|
|
|
1901
|
-
this._sendDebugToGrafana(
|
|
1924
|
+
this._sendDebugToGrafana(payload, retry + 1);
|
|
1902
1925
|
}, 5000 + retry * 1000);
|
|
1903
1926
|
});
|
|
1904
1927
|
}
|
|
@@ -2616,7 +2639,8 @@ class ExternalApp {
|
|
|
2616
2639
|
|
|
2617
2640
|
|
|
2618
2641
|
|
|
2619
|
-
|
|
2642
|
+
|
|
2643
|
+
|
|
2620
2644
|
|
|
2621
2645
|
|
|
2622
2646
|
class Meeting {
|
|
@@ -2628,6 +2652,7 @@ class Meeting {
|
|
|
2628
2652
|
|
|
2629
2653
|
|
|
2630
2654
|
|
|
2655
|
+
|
|
2631
2656
|
|
|
2632
2657
|
|
|
2633
2658
|
static parse(plain ) {
|
|
@@ -2639,14 +2664,28 @@ class Meeting {
|
|
|
2639
2664
|
port: plain.port,
|
|
2640
2665
|
uuid: plain.uuid,
|
|
2641
2666
|
number: plain.number,
|
|
2667
|
+
persistent: plain.persistent,
|
|
2642
2668
|
});
|
|
2643
2669
|
}
|
|
2644
2670
|
|
|
2671
|
+
static parseMany(items ) {
|
|
2672
|
+
return items.map(plain => Meeting.parse(plain));
|
|
2673
|
+
}
|
|
2674
|
+
|
|
2645
2675
|
static newFrom(meeting ) {
|
|
2646
2676
|
return newFrom(meeting, Meeting);
|
|
2647
2677
|
}
|
|
2648
2678
|
|
|
2649
|
-
constructor({
|
|
2679
|
+
constructor({
|
|
2680
|
+
uuid,
|
|
2681
|
+
name,
|
|
2682
|
+
guestSipAuthorization,
|
|
2683
|
+
ownerUuids,
|
|
2684
|
+
port,
|
|
2685
|
+
uri,
|
|
2686
|
+
number,
|
|
2687
|
+
persistent,
|
|
2688
|
+
} = {}) {
|
|
2650
2689
|
this.guestSipAuthorization = guestSipAuthorization;
|
|
2651
2690
|
this.uri = uri;
|
|
2652
2691
|
this.name = name;
|
|
@@ -2654,6 +2693,7 @@ class Meeting {
|
|
|
2654
2693
|
this.port = port;
|
|
2655
2694
|
this.uuid = uuid;
|
|
2656
2695
|
this.number = number;
|
|
2696
|
+
this.persistent = persistent;
|
|
2657
2697
|
|
|
2658
2698
|
// Useful to compare instead of instanceof with minified code
|
|
2659
2699
|
this.type = 'Meeting';
|
|
@@ -2731,8 +2771,11 @@ var confdMethods = (client , baseUrl ) => ({
|
|
|
2731
2771
|
}
|
|
2732
2772
|
},
|
|
2733
2773
|
|
|
2734
|
-
|
|
2735
|
-
client.
|
|
2774
|
+
getMyMeetings: () =>
|
|
2775
|
+
client.get(`${baseUrl}/users/me/meetings`).then(response => Meeting.parseMany(response.items)),
|
|
2776
|
+
|
|
2777
|
+
createMyMeeting: (name , persistent ) =>
|
|
2778
|
+
client.post(`${baseUrl}/users/me/meetings`, { name, persistent }).then(Meeting.parse),
|
|
2736
2779
|
|
|
2737
2780
|
deleteMyMeeting: (meetingUuid ) =>
|
|
2738
2781
|
client.delete(`${baseUrl}/users/me/meetings/${meetingUuid}`, null),
|
|
@@ -2834,7 +2877,7 @@ class ChatMessage {
|
|
|
2834
2877
|
static parse(plain ) {
|
|
2835
2878
|
return new ChatMessage({
|
|
2836
2879
|
uuid: plain.uuid,
|
|
2837
|
-
date: moment__default[
|
|
2880
|
+
date: moment__default['default'](plain.created_at).toDate(),
|
|
2838
2881
|
content: plain.content,
|
|
2839
2882
|
alias: plain.alias,
|
|
2840
2883
|
userUuid: plain.user_uuid,
|
|
@@ -2926,7 +2969,7 @@ class Voicemail {
|
|
|
2926
2969
|
static parse(plain ) {
|
|
2927
2970
|
return new Voicemail({
|
|
2928
2971
|
id: plain.id,
|
|
2929
|
-
date: moment__default[
|
|
2972
|
+
date: moment__default['default'](plain.timestamp * 1000).toDate(),
|
|
2930
2973
|
duration: plain.duration * 1000,
|
|
2931
2974
|
caller: {
|
|
2932
2975
|
name: plain.caller_id_name,
|
|
@@ -3063,7 +3106,7 @@ class Call {
|
|
|
3063
3106
|
onHold: plain.on_hold,
|
|
3064
3107
|
status: plain.status,
|
|
3065
3108
|
lineId: plain.line_id,
|
|
3066
|
-
startingTime: moment__default[
|
|
3109
|
+
startingTime: moment__default['default'](plain.creation_time).toDate(),
|
|
3067
3110
|
talkingToIds: Object.keys(plain.talking_to || {}),
|
|
3068
3111
|
recording: plain.record_state === RECORD_STATE_ACTIVE,
|
|
3069
3112
|
});
|
|
@@ -3543,7 +3586,7 @@ class Emitter {
|
|
|
3543
3586
|
|
|
3544
3587
|
|
|
3545
3588
|
constructor() {
|
|
3546
|
-
this.eventEmitter = new EventEmitter__default[
|
|
3589
|
+
this.eventEmitter = new EventEmitter__default['default']();
|
|
3547
3590
|
}
|
|
3548
3591
|
|
|
3549
3592
|
on(event , callback ) {
|
|
@@ -3588,7 +3631,7 @@ class Recording {
|
|
|
3588
3631
|
|
|
3589
3632
|
|
|
3590
3633
|
|
|
3591
|
-
static parseMany(recordings
|
|
3634
|
+
static parseMany(recordings = []) {
|
|
3592
3635
|
return recordings.map(item => Recording.parse(item));
|
|
3593
3636
|
}
|
|
3594
3637
|
|
|
@@ -3596,8 +3639,8 @@ class Recording {
|
|
|
3596
3639
|
return new Recording({
|
|
3597
3640
|
deleted: plain.deleted,
|
|
3598
3641
|
fileName: plain.filename,
|
|
3599
|
-
end: plain.end_time ? moment__default[
|
|
3600
|
-
start: moment__default[
|
|
3642
|
+
end: plain.end_time ? moment__default['default'](plain.end_time).toDate() : null,
|
|
3643
|
+
start: moment__default['default'](plain.start_time).toDate(),
|
|
3601
3644
|
uuid: plain.uuid,
|
|
3602
3645
|
});
|
|
3603
3646
|
}
|
|
@@ -3695,7 +3738,7 @@ class CallLog {
|
|
|
3695
3738
|
|
|
3696
3739
|
static parse(plain ) {
|
|
3697
3740
|
return new CallLog({
|
|
3698
|
-
answer: plain.answer ? moment__default[
|
|
3741
|
+
answer: plain.answer ? moment__default['default'](plain.answer).toDate() : null,
|
|
3699
3742
|
answered: plain.answered,
|
|
3700
3743
|
callDirection: plain.call_direction,
|
|
3701
3744
|
destination: {
|
|
@@ -3712,9 +3755,9 @@ class CallLog {
|
|
|
3712
3755
|
},
|
|
3713
3756
|
id: plain.id,
|
|
3714
3757
|
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),
|
|
3758
|
+
start: moment__default['default'](plain.start).toDate(),
|
|
3759
|
+
end: plain.end ? moment__default['default'](plain.end).toDate() : null,
|
|
3760
|
+
recordings: Recording.parseMany(plain.recordings || []),
|
|
3718
3761
|
});
|
|
3719
3762
|
}
|
|
3720
3763
|
|
|
@@ -5888,7 +5931,7 @@ const parseCandidate$1 = (candidate ) => {
|
|
|
5888
5931
|
if (!candidate) {
|
|
5889
5932
|
return null;
|
|
5890
5933
|
}
|
|
5891
|
-
const result = sdpParser__default[
|
|
5934
|
+
const result = sdpParser__default['default'].parse(candidate.indexOf('a=') === 0 ? candidate : `a=${candidate}`);
|
|
5892
5935
|
|
|
5893
5936
|
return result.candidates ? result.candidates[0] : null;
|
|
5894
5937
|
};
|
|
@@ -5902,7 +5945,7 @@ const areCandidateValid = (candidates ) =>
|
|
|
5902
5945
|
.length > 0;
|
|
5903
5946
|
|
|
5904
5947
|
const getVideoDirection = (sdp ) => {
|
|
5905
|
-
const parsedSdp = sdpParser__default[
|
|
5948
|
+
const parsedSdp = sdpParser__default['default'].parse(sdp);
|
|
5906
5949
|
const videoMedia = parsedSdp.media.find(media => media.type === 'video');
|
|
5907
5950
|
if (!videoMedia) {
|
|
5908
5951
|
return null;
|
|
@@ -5916,14 +5959,14 @@ const hasAnActiveVideo = (sdp ) => {
|
|
|
5916
5959
|
return false;
|
|
5917
5960
|
}
|
|
5918
5961
|
|
|
5919
|
-
const parsedSdp = sdpParser__default[
|
|
5962
|
+
const parsedSdp = sdpParser__default['default'].parse(sdp);
|
|
5920
5963
|
|
|
5921
5964
|
return !!parsedSdp.media.find(media =>
|
|
5922
5965
|
media.type === 'video' && media.port > 10 && (!media.direction || media.direction !== 'inactive'));
|
|
5923
5966
|
};
|
|
5924
5967
|
|
|
5925
5968
|
const fixSdp = (sdp , candidates , forcePort = true) => {
|
|
5926
|
-
const parsedSdp = sdpParser__default[
|
|
5969
|
+
const parsedSdp = sdpParser__default['default'].parse(sdp);
|
|
5927
5970
|
const mainCandidate = getSrflxOrRelay(candidates)[0];
|
|
5928
5971
|
const ip = mainCandidate ? mainCandidate.ip : null;
|
|
5929
5972
|
|
|
@@ -5941,7 +5984,7 @@ const fixSdp = (sdp , candidates , forcePort = true)
|
|
|
5941
5984
|
};
|
|
5942
5985
|
});
|
|
5943
5986
|
|
|
5944
|
-
let fixed = sdpParser__default[
|
|
5987
|
+
let fixed = sdpParser__default['default'].write(parsedSdp);
|
|
5945
5988
|
|
|
5946
5989
|
if (ip) {
|
|
5947
5990
|
fixed = fixed.replace(/IN IP4 0.0.0.0/g, `IN IP4 ${ip}`);
|
|
@@ -5987,7 +6030,7 @@ class WazoSessionDescriptionHandler extends sessionDescriptionHandler.SessionDes
|
|
|
5987
6030
|
) {
|
|
5988
6031
|
super(logger, mediaStreamFactory, sessionDescriptionHandlerConfiguration);
|
|
5989
6032
|
|
|
5990
|
-
this.eventEmitter = new EventEmitter__default[
|
|
6033
|
+
this.eventEmitter = new EventEmitter__default['default']();
|
|
5991
6034
|
this.isWeb = isWeb;
|
|
5992
6035
|
this.session = session;
|
|
5993
6036
|
}
|
|
@@ -6968,7 +7011,9 @@ class WebRTCClient extends Emitter {
|
|
|
6968
7011
|
const inviteOptions = {
|
|
6969
7012
|
requestDelegate: {
|
|
6970
7013
|
onAccept: (response ) => {
|
|
6971
|
-
session.sessionDescriptionHandler.peerConnection
|
|
7014
|
+
if (session.sessionDescriptionHandler.peerConnection) {
|
|
7015
|
+
session.sessionDescriptionHandler.peerConnection.sfu = conference;
|
|
7016
|
+
}
|
|
6972
7017
|
this._onAccepted(session, response.session, true);
|
|
6973
7018
|
},
|
|
6974
7019
|
onReject: (response ) => {
|
|
@@ -7304,7 +7349,7 @@ class WebRTCClient extends Emitter {
|
|
|
7304
7349
|
// We search for the last transceiver without `video-` in the mid (video- means remote transceiver)
|
|
7305
7350
|
const transceivers = pc.getTransceivers();
|
|
7306
7351
|
const transceiverIdx = lastIndexOf(transceivers, transceiver =>
|
|
7307
|
-
transceiver.sender.track === null && transceiver.mid.indexOf('video') === -1);
|
|
7352
|
+
transceiver.sender.track === null && transceiver.mid && transceiver.mid.indexOf('video') === -1);
|
|
7308
7353
|
|
|
7309
7354
|
videoSender = transceiverIdx !== -1 ? transceivers[transceiverIdx].sender : null;
|
|
7310
7355
|
} else {
|
|
@@ -7840,6 +7885,16 @@ class WebRTCClient extends Emitter {
|
|
|
7840
7885
|
return this.hasRemoteVideo(sessionId) ? this.getRemoteStream(sessionId) : null;
|
|
7841
7886
|
}
|
|
7842
7887
|
|
|
7888
|
+
// Useful in a react-native environment when remoteMediaStream is not updated
|
|
7889
|
+
getRemoteVideoStreamFromPc(sessionId ) {
|
|
7890
|
+
const pc = this.getPeerConnection(sessionId);
|
|
7891
|
+
if (!pc) {
|
|
7892
|
+
return null;
|
|
7893
|
+
}
|
|
7894
|
+
|
|
7895
|
+
return pc.getRemoteStreams().find(stream => !!stream.getVideoTracks().length);
|
|
7896
|
+
}
|
|
7897
|
+
|
|
7843
7898
|
hasVideo(sessionId ) {
|
|
7844
7899
|
return this.hasLocalVideo(sessionId) || this.hasRemoteVideo(sessionId);
|
|
7845
7900
|
}
|
|
@@ -8350,6 +8405,7 @@ class WebRTCClient extends Emitter {
|
|
|
8350
8405
|
session.sessionDescriptionHandler.remoteMediaStream.onaddtrack = onTrack;
|
|
8351
8406
|
|
|
8352
8407
|
pc.oniceconnectionstatechange = () => {
|
|
8408
|
+
logger$8.info('on ice connection state changed', { state: pc.iceConnectionState });
|
|
8353
8409
|
if (pc.iceConnectionState === 'disconnected') {
|
|
8354
8410
|
this.eventEmitter.emit(ON_DISCONNECTED$1);
|
|
8355
8411
|
}
|
|
@@ -8509,7 +8565,7 @@ class WebRTCClient extends Emitter {
|
|
|
8509
8565
|
}
|
|
8510
8566
|
const sessionId = this.getSipSessionId(session);
|
|
8511
8567
|
|
|
8512
|
-
getStats__default[
|
|
8568
|
+
getStats__default['default'](pc, (result ) => {
|
|
8513
8569
|
const { results, internal, nomore, ...stats } = result;
|
|
8514
8570
|
this.statsIntervals[sessionId] = nomore;
|
|
8515
8571
|
|
|
@@ -8618,18 +8674,22 @@ class WebRTCClient extends Emitter {
|
|
|
8618
8674
|
});
|
|
8619
8675
|
|
|
8620
8676
|
networkStats.packetsLost = packetsLost;
|
|
8621
|
-
networkStats.
|
|
8677
|
+
networkStats.totalAudioBytesSent = audioBytesSent;
|
|
8678
|
+
networkStats.audioBytesSent = audioBytesSent - lastAudioSent;
|
|
8679
|
+
networkStats.totalAudioBytesReceived = audioBytesReceived - lastAudioReceived;
|
|
8622
8680
|
networkStats.audioBytesReceived = audioBytesReceived;
|
|
8623
|
-
networkStats.
|
|
8624
|
-
networkStats.
|
|
8681
|
+
networkStats.totalVideoBytesSent = videoBytesSent;
|
|
8682
|
+
networkStats.videoBytesSent = videoBytesSent - lastVideoSent;
|
|
8683
|
+
networkStats.totalVideoBytesReceived = videoBytesReceived;
|
|
8684
|
+
networkStats.videoBytesReceived = videoBytesReceived - lastVideoReceived;
|
|
8685
|
+
networkStats.totalTransportSent = transportSent - lastTransportSent;
|
|
8625
8686
|
networkStats.transportSent = transportSent;
|
|
8626
|
-
networkStats.
|
|
8627
|
-
|
|
8628
|
-
const bandwidth = (networkStats.audioBytesSent - lastAudioSent) + (networkStats.videoBytesSent - lastVideoSent)
|
|
8629
|
-
+ (networkStats.audioBytesReceived - lastAudioReceived) + (networkStats.videoBytesReceived - lastVideoReceived)
|
|
8630
|
-
+ (networkStats.transportReceived - lastTransportReceived) + (networkStats.transportSent - lastTransportSent);
|
|
8687
|
+
networkStats.totalTransportReceived = transportReceived;
|
|
8688
|
+
networkStats.transportReceived = transportReceived - lastTransportReceived;
|
|
8631
8689
|
|
|
8632
|
-
networkStats.bandwidth =
|
|
8690
|
+
networkStats.bandwidth = networkStats.audioBytesSent + networkStats.audioBytesReceived
|
|
8691
|
+
+ networkStats.videoBytesSent + networkStats.videoBytesReceived + networkStats.transportReceived
|
|
8692
|
+
+ networkStats.transportSent;
|
|
8633
8693
|
|
|
8634
8694
|
this.eventEmitter.emit(ON_NETWORK_STATS$1, session, networkStats, this.sessionNetworkStats[sessionId]);
|
|
8635
8695
|
this.sessionNetworkStats[sessionId].push(networkStats);
|
|
@@ -9011,7 +9071,10 @@ class WebRTCPhone extends Emitter {
|
|
|
9011
9071
|
|
|
9012
9072
|
onCancel(message);
|
|
9013
9073
|
const elsewhere = message.data.indexOf('cause=26') !== -1 && message.data.indexOf('completed elsewhere') !== -1;
|
|
9014
|
-
|
|
9074
|
+
const callSession = this._createCallSession(sipSession);
|
|
9075
|
+
delete this.callSessions[callSession.getId()];
|
|
9076
|
+
|
|
9077
|
+
this.eventEmitter.emit(ON_CALL_CANCELED, callSession, elsewhere);
|
|
9015
9078
|
};
|
|
9016
9079
|
} else if (sipSession instanceof invitation.Invitation) {
|
|
9017
9080
|
console.warn('sipSession._onCancel not found, please update the wazo SDK accordingly');
|
|
@@ -9040,9 +9103,11 @@ class WebRTCPhone extends Emitter {
|
|
|
9040
9103
|
case sessionState.SessionState.Terminated: {
|
|
9041
9104
|
logger$7.info('WebRTC phone - call terminated', { sipId: sipSession.id });
|
|
9042
9105
|
|
|
9106
|
+
// Should be called before `_onCallTerminated` or the callCount will not decrement...
|
|
9107
|
+
const callSession = this._createCallSession(sipSession);
|
|
9043
9108
|
const wasCurrentSession = this._onCallTerminated(sipSession);
|
|
9044
9109
|
|
|
9045
|
-
return this.eventEmitter.emit(ON_CALL_ENDED,
|
|
9110
|
+
return this.eventEmitter.emit(ON_CALL_ENDED, callSession, wasCurrentSession);
|
|
9046
9111
|
}
|
|
9047
9112
|
}
|
|
9048
9113
|
});
|
|
@@ -9990,6 +10055,10 @@ class WebRTCPhone extends Emitter {
|
|
|
9990
10055
|
return callSession ? this.client.getRemoteVideoStream(callSession.sipCallId) : null;
|
|
9991
10056
|
}
|
|
9992
10057
|
|
|
10058
|
+
getRemoteVideoStreamFromPc(callSession ) {
|
|
10059
|
+
return callSession ? this.client.getRemoteVideoStreamFromPc(callSession.sipCallId) : null;
|
|
10060
|
+
}
|
|
10061
|
+
|
|
9993
10062
|
hasRemoteVideo(callSession ) {
|
|
9994
10063
|
return callSession ? this.client.hasRemoteVideo(callSession.sipCallId) : false;
|
|
9995
10064
|
}
|
|
@@ -10673,6 +10742,11 @@ class Phone extends Emitter {
|
|
|
10673
10742
|
return this.getRemoteVideoStream(callSession);
|
|
10674
10743
|
}
|
|
10675
10744
|
|
|
10745
|
+
// Useful in a react-native environment when remoteMediaStream is not updated
|
|
10746
|
+
getRemoteVideoStreamFromPc(callSession ) {
|
|
10747
|
+
return this.phone ? this.phone.getRemoteVideoStreamFromPc(callSession) : false;
|
|
10748
|
+
}
|
|
10749
|
+
|
|
10676
10750
|
hasVideo(callSession ) {
|
|
10677
10751
|
return this.phone ? this.phone.hasVideo(callSession) : false;
|
|
10678
10752
|
}
|
|
@@ -10832,6 +10906,7 @@ const AGENT_PAUSED = 'agent_paused';
|
|
|
10832
10906
|
const AGENT_UNPAUSED = 'agent_unpaused';
|
|
10833
10907
|
const CONFERENCE_ADHOC_PARTICIPANT_LEFT = 'conference_adhoc_participant_left';
|
|
10834
10908
|
const CONFERENCE_ADHOC_DELETED = 'conference_adhoc_deleted';
|
|
10909
|
+
const MEETING_USER_PROGRESS = 'meeting_user_progress';
|
|
10835
10910
|
|
|
10836
10911
|
const BLACKLIST_EVENTS = [
|
|
10837
10912
|
CHAT_MESSAGE_SENT,
|
|
@@ -10891,7 +10966,7 @@ class WebSocketClient extends Emitter {
|
|
|
10891
10966
|
|
|
10892
10967
|
connect() {
|
|
10893
10968
|
logger$5.info('connect method started', { host: this.host, token: this.token });
|
|
10894
|
-
this.socket = new ReconnectingWebSocket__default[
|
|
10969
|
+
this.socket = new ReconnectingWebSocket__default['default'](this._getUrl.bind(this), [], this.options);
|
|
10895
10970
|
if (this.options.binaryType) {
|
|
10896
10971
|
this.socket.binaryType = this.options.binaryType;
|
|
10897
10972
|
}
|
|
@@ -11182,6 +11257,7 @@ WebSocketClient.eventLists = [
|
|
|
11182
11257
|
AGENT_UNPAUSED,
|
|
11183
11258
|
CONFERENCE_ADHOC_PARTICIPANT_LEFT,
|
|
11184
11259
|
CONFERENCE_ADHOC_DELETED,
|
|
11260
|
+
MEETING_USER_PROGRESS,
|
|
11185
11261
|
];
|
|
11186
11262
|
|
|
11187
11263
|
var WebSocketClient$1 = /*#__PURE__*/Object.freeze({
|
|
@@ -11252,6 +11328,7 @@ var WebSocketClient$1 = /*#__PURE__*/Object.freeze({
|
|
|
11252
11328
|
AGENT_UNPAUSED: AGENT_UNPAUSED,
|
|
11253
11329
|
CONFERENCE_ADHOC_PARTICIPANT_LEFT: CONFERENCE_ADHOC_PARTICIPANT_LEFT,
|
|
11254
11330
|
CONFERENCE_ADHOC_DELETED: CONFERENCE_ADHOC_DELETED,
|
|
11331
|
+
MEETING_USER_PROGRESS: MEETING_USER_PROGRESS,
|
|
11255
11332
|
HEARTBEAT_ENGINE_VERSION: HEARTBEAT_ENGINE_VERSION,
|
|
11256
11333
|
'default': WebSocketClient
|
|
11257
11334
|
});
|
|
@@ -12144,7 +12221,7 @@ class Room$1 extends Emitter {
|
|
|
12144
12221
|
}
|
|
12145
12222
|
|
|
12146
12223
|
_mapMsid(rawSdp ) {
|
|
12147
|
-
const sdp = sdpParser__default[
|
|
12224
|
+
const sdp = sdpParser__default['default'].parse(rawSdp);
|
|
12148
12225
|
const labelMsidArray = sdp.media.filter(media => !!media.label).map(({ label, msid }) => ({
|
|
12149
12226
|
label: String(label),
|
|
12150
12227
|
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;
|
|
@@ -132,6 +132,7 @@ class IssueReporter {
|
|
|
132
132
|
|
|
133
133
|
|
|
134
134
|
|
|
135
|
+
|
|
135
136
|
|
|
136
137
|
constructor() {
|
|
137
138
|
addLevelsTo(this);
|
|
@@ -143,12 +144,17 @@ class IssueReporter {
|
|
|
143
144
|
this.bufferTimeout = null;
|
|
144
145
|
this._boundProcessBuffer = this._processBuffer.bind(this);
|
|
145
146
|
this._boundParseLoggerBody = this._parseLoggerBody.bind(this);
|
|
147
|
+
this._callback = null;
|
|
146
148
|
}
|
|
147
149
|
|
|
148
150
|
init() {
|
|
149
151
|
this._catchConsole();
|
|
150
152
|
}
|
|
151
153
|
|
|
154
|
+
setCallback(cb ) {
|
|
155
|
+
this._callback = cb;
|
|
156
|
+
}
|
|
157
|
+
|
|
152
158
|
configureRemoteClient(configuration = { tag: 'wazo-sdk', host: null, port: null, level: null, extra: {} }) {
|
|
153
159
|
this.remoteClientConfiguration = configuration;
|
|
154
160
|
}
|
|
@@ -184,6 +190,7 @@ class IssueReporter {
|
|
|
184
190
|
|
|
185
191
|
// Handle category label
|
|
186
192
|
let category = null;
|
|
193
|
+
let skipSendToRemote = false;
|
|
187
194
|
let extra = {};
|
|
188
195
|
if (args[0].indexOf(CATEGORY_PREFIX) === 0) {
|
|
189
196
|
category = args[0].split('=')[1];
|
|
@@ -199,6 +206,7 @@ class IssueReporter {
|
|
|
199
206
|
errorMessage: lastArg.message,
|
|
200
207
|
errorStack: lastArg.stack,
|
|
201
208
|
errorType: lastArg.constructor.name,
|
|
209
|
+
skipSendToRemote: lastArg.skipSendToRemote,
|
|
202
210
|
};
|
|
203
211
|
} else {
|
|
204
212
|
extra = lastArg;
|
|
@@ -207,7 +215,12 @@ class IssueReporter {
|
|
|
207
215
|
args.splice(1, 1);
|
|
208
216
|
}
|
|
209
217
|
|
|
210
|
-
|
|
218
|
+
if (extra.skipSendToRemote) {
|
|
219
|
+
skipSendToRemote = true;
|
|
220
|
+
delete extra.skipSendToRemote;
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
const date = moment__default['default']().format('YYYY-MM-DD HH:mm:ss.SSS');
|
|
211
224
|
const message = args.join(', ');
|
|
212
225
|
let consoleMessage = message;
|
|
213
226
|
|
|
@@ -227,7 +240,13 @@ class IssueReporter {
|
|
|
227
240
|
const oldMethod = this.oldConsoleMethods[consoleLevel] || this.oldConsoleMethods.log;
|
|
228
241
|
oldMethod.apply(oldMethod, [date, consoleMessage]);
|
|
229
242
|
|
|
230
|
-
this.
|
|
243
|
+
if (this._callback) {
|
|
244
|
+
this._callback(level, consoleMessage);
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
if (!skipSendToRemote) {
|
|
248
|
+
this._sendToRemoteLogger(level, { date, message, category, ...extra });
|
|
249
|
+
}
|
|
231
250
|
}
|
|
232
251
|
|
|
233
252
|
logRequest(url , options , response , start ) {
|
|
@@ -372,7 +391,11 @@ class IssueReporter {
|
|
|
372
391
|
},
|
|
373
392
|
// $FlowFixMe
|
|
374
393
|
body,
|
|
375
|
-
}).catch(() => {
|
|
394
|
+
}).catch((e ) => {
|
|
395
|
+
// $FlowFixMe
|
|
396
|
+
e.skipSendToRemote = true;
|
|
397
|
+
this.log('error', this._makeCategory('grafana'), 'Sending log to grafana, error', e);
|
|
398
|
+
|
|
376
399
|
setTimeout(() => {
|
|
377
400
|
if (isArray) {
|
|
378
401
|
payload = payload.map(message => {
|
|
@@ -384,7 +407,7 @@ class IssueReporter {
|
|
|
384
407
|
payload._retry = retry + 1;
|
|
385
408
|
}
|
|
386
409
|
|
|
387
|
-
this._sendDebugToGrafana(
|
|
410
|
+
this._sendDebugToGrafana(payload, retry + 1);
|
|
388
411
|
}, 5000 + retry * 1000);
|
|
389
412
|
});
|
|
390
413
|
}
|
|
@@ -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');
|