@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
|
@@ -1634,6 +1634,7 @@ class IssueReporter {
|
|
|
1634
1634
|
|
|
1635
1635
|
|
|
1636
1636
|
|
|
1637
|
+
|
|
1637
1638
|
|
|
1638
1639
|
constructor() {
|
|
1639
1640
|
addLevelsTo(this);
|
|
@@ -1645,12 +1646,17 @@ class IssueReporter {
|
|
|
1645
1646
|
this.bufferTimeout = null;
|
|
1646
1647
|
this._boundProcessBuffer = this._processBuffer.bind(this);
|
|
1647
1648
|
this._boundParseLoggerBody = this._parseLoggerBody.bind(this);
|
|
1649
|
+
this._callback = null;
|
|
1648
1650
|
}
|
|
1649
1651
|
|
|
1650
1652
|
init() {
|
|
1651
1653
|
this._catchConsole();
|
|
1652
1654
|
}
|
|
1653
1655
|
|
|
1656
|
+
setCallback(cb ) {
|
|
1657
|
+
this._callback = cb;
|
|
1658
|
+
}
|
|
1659
|
+
|
|
1654
1660
|
configureRemoteClient(configuration = { tag: 'wazo-sdk', host: null, port: null, level: null, extra: {} }) {
|
|
1655
1661
|
this.remoteClientConfiguration = configuration;
|
|
1656
1662
|
}
|
|
@@ -1686,6 +1692,7 @@ class IssueReporter {
|
|
|
1686
1692
|
|
|
1687
1693
|
// Handle category label
|
|
1688
1694
|
let category = null;
|
|
1695
|
+
let skipSendToRemote = false;
|
|
1689
1696
|
let extra = {};
|
|
1690
1697
|
if (args[0].indexOf(CATEGORY_PREFIX) === 0) {
|
|
1691
1698
|
category = args[0].split('=')[1];
|
|
@@ -1701,6 +1708,7 @@ class IssueReporter {
|
|
|
1701
1708
|
errorMessage: lastArg.message,
|
|
1702
1709
|
errorStack: lastArg.stack,
|
|
1703
1710
|
errorType: lastArg.constructor.name,
|
|
1711
|
+
skipSendToRemote: lastArg.skipSendToRemote,
|
|
1704
1712
|
};
|
|
1705
1713
|
} else {
|
|
1706
1714
|
extra = lastArg;
|
|
@@ -1709,6 +1717,11 @@ class IssueReporter {
|
|
|
1709
1717
|
args.splice(1, 1);
|
|
1710
1718
|
}
|
|
1711
1719
|
|
|
1720
|
+
if (extra.skipSendToRemote) {
|
|
1721
|
+
skipSendToRemote = true;
|
|
1722
|
+
delete extra.skipSendToRemote;
|
|
1723
|
+
}
|
|
1724
|
+
|
|
1712
1725
|
const date = moment().format('YYYY-MM-DD HH:mm:ss.SSS');
|
|
1713
1726
|
const message = args.join(', ');
|
|
1714
1727
|
let consoleMessage = message;
|
|
@@ -1729,7 +1742,13 @@ class IssueReporter {
|
|
|
1729
1742
|
const oldMethod = this.oldConsoleMethods[consoleLevel] || this.oldConsoleMethods.log;
|
|
1730
1743
|
oldMethod.apply(oldMethod, [date, consoleMessage]);
|
|
1731
1744
|
|
|
1732
|
-
this.
|
|
1745
|
+
if (this._callback) {
|
|
1746
|
+
this._callback(level, consoleMessage);
|
|
1747
|
+
}
|
|
1748
|
+
|
|
1749
|
+
if (!skipSendToRemote) {
|
|
1750
|
+
this._sendToRemoteLogger(level, { date, message, category, ...extra });
|
|
1751
|
+
}
|
|
1733
1752
|
}
|
|
1734
1753
|
|
|
1735
1754
|
logRequest(url , options , response , start ) {
|
|
@@ -1874,7 +1893,11 @@ class IssueReporter {
|
|
|
1874
1893
|
},
|
|
1875
1894
|
// $FlowFixMe
|
|
1876
1895
|
body,
|
|
1877
|
-
}).catch(() => {
|
|
1896
|
+
}).catch((e ) => {
|
|
1897
|
+
// $FlowFixMe
|
|
1898
|
+
e.skipSendToRemote = true;
|
|
1899
|
+
this.log('error', this._makeCategory('grafana'), 'Sending log to grafana, error', e);
|
|
1900
|
+
|
|
1878
1901
|
setTimeout(() => {
|
|
1879
1902
|
if (isArray) {
|
|
1880
1903
|
payload = payload.map(message => {
|
|
@@ -1886,7 +1909,7 @@ class IssueReporter {
|
|
|
1886
1909
|
payload._retry = retry + 1;
|
|
1887
1910
|
}
|
|
1888
1911
|
|
|
1889
|
-
this._sendDebugToGrafana(
|
|
1912
|
+
this._sendDebugToGrafana(payload, retry + 1);
|
|
1890
1913
|
}, 5000 + retry * 1000);
|
|
1891
1914
|
});
|
|
1892
1915
|
}
|
|
@@ -2604,7 +2627,8 @@ class ExternalApp {
|
|
|
2604
2627
|
|
|
2605
2628
|
|
|
2606
2629
|
|
|
2607
|
-
|
|
2630
|
+
|
|
2631
|
+
|
|
2608
2632
|
|
|
2609
2633
|
|
|
2610
2634
|
class Meeting {
|
|
@@ -2616,6 +2640,7 @@ class Meeting {
|
|
|
2616
2640
|
|
|
2617
2641
|
|
|
2618
2642
|
|
|
2643
|
+
|
|
2619
2644
|
|
|
2620
2645
|
|
|
2621
2646
|
static parse(plain ) {
|
|
@@ -2627,14 +2652,28 @@ class Meeting {
|
|
|
2627
2652
|
port: plain.port,
|
|
2628
2653
|
uuid: plain.uuid,
|
|
2629
2654
|
number: plain.number,
|
|
2655
|
+
persistent: plain.persistent,
|
|
2630
2656
|
});
|
|
2631
2657
|
}
|
|
2632
2658
|
|
|
2659
|
+
static parseMany(items ) {
|
|
2660
|
+
return items.map(plain => Meeting.parse(plain));
|
|
2661
|
+
}
|
|
2662
|
+
|
|
2633
2663
|
static newFrom(meeting ) {
|
|
2634
2664
|
return newFrom(meeting, Meeting);
|
|
2635
2665
|
}
|
|
2636
2666
|
|
|
2637
|
-
constructor({
|
|
2667
|
+
constructor({
|
|
2668
|
+
uuid,
|
|
2669
|
+
name,
|
|
2670
|
+
guestSipAuthorization,
|
|
2671
|
+
ownerUuids,
|
|
2672
|
+
port,
|
|
2673
|
+
uri,
|
|
2674
|
+
number,
|
|
2675
|
+
persistent,
|
|
2676
|
+
} = {}) {
|
|
2638
2677
|
this.guestSipAuthorization = guestSipAuthorization;
|
|
2639
2678
|
this.uri = uri;
|
|
2640
2679
|
this.name = name;
|
|
@@ -2642,6 +2681,7 @@ class Meeting {
|
|
|
2642
2681
|
this.port = port;
|
|
2643
2682
|
this.uuid = uuid;
|
|
2644
2683
|
this.number = number;
|
|
2684
|
+
this.persistent = persistent;
|
|
2645
2685
|
|
|
2646
2686
|
// Useful to compare instead of instanceof with minified code
|
|
2647
2687
|
this.type = 'Meeting';
|
|
@@ -2719,8 +2759,11 @@ var confdMethods = (client , baseUrl ) => ({
|
|
|
2719
2759
|
}
|
|
2720
2760
|
},
|
|
2721
2761
|
|
|
2722
|
-
|
|
2723
|
-
client.
|
|
2762
|
+
getMyMeetings: () =>
|
|
2763
|
+
client.get(`${baseUrl}/users/me/meetings`).then(response => Meeting.parseMany(response.items)),
|
|
2764
|
+
|
|
2765
|
+
createMyMeeting: (name , persistent ) =>
|
|
2766
|
+
client.post(`${baseUrl}/users/me/meetings`, { name, persistent }).then(Meeting.parse),
|
|
2724
2767
|
|
|
2725
2768
|
deleteMyMeeting: (meetingUuid ) =>
|
|
2726
2769
|
client.delete(`${baseUrl}/users/me/meetings/${meetingUuid}`, null),
|
|
@@ -3576,7 +3619,7 @@ class Recording {
|
|
|
3576
3619
|
|
|
3577
3620
|
|
|
3578
3621
|
|
|
3579
|
-
static parseMany(recordings
|
|
3622
|
+
static parseMany(recordings = []) {
|
|
3580
3623
|
return recordings.map(item => Recording.parse(item));
|
|
3581
3624
|
}
|
|
3582
3625
|
|
|
@@ -3702,7 +3745,7 @@ class CallLog {
|
|
|
3702
3745
|
duration: (plain.duration || 0) * 1000, // duration is in seconds
|
|
3703
3746
|
start: moment(plain.start).toDate(),
|
|
3704
3747
|
end: plain.end ? moment(plain.end).toDate() : null,
|
|
3705
|
-
recordings: Recording.parseMany(plain.recordings),
|
|
3748
|
+
recordings: Recording.parseMany(plain.recordings || []),
|
|
3706
3749
|
});
|
|
3707
3750
|
}
|
|
3708
3751
|
|
|
@@ -6956,7 +6999,9 @@ class WebRTCClient extends Emitter {
|
|
|
6956
6999
|
const inviteOptions = {
|
|
6957
7000
|
requestDelegate: {
|
|
6958
7001
|
onAccept: (response ) => {
|
|
6959
|
-
session.sessionDescriptionHandler.peerConnection
|
|
7002
|
+
if (session.sessionDescriptionHandler.peerConnection) {
|
|
7003
|
+
session.sessionDescriptionHandler.peerConnection.sfu = conference;
|
|
7004
|
+
}
|
|
6960
7005
|
this._onAccepted(session, response.session, true);
|
|
6961
7006
|
},
|
|
6962
7007
|
onReject: (response ) => {
|
|
@@ -7292,7 +7337,7 @@ class WebRTCClient extends Emitter {
|
|
|
7292
7337
|
// We search for the last transceiver without `video-` in the mid (video- means remote transceiver)
|
|
7293
7338
|
const transceivers = pc.getTransceivers();
|
|
7294
7339
|
const transceiverIdx = lastIndexOf(transceivers, transceiver =>
|
|
7295
|
-
transceiver.sender.track === null && transceiver.mid.indexOf('video') === -1);
|
|
7340
|
+
transceiver.sender.track === null && transceiver.mid && transceiver.mid.indexOf('video') === -1);
|
|
7296
7341
|
|
|
7297
7342
|
videoSender = transceiverIdx !== -1 ? transceivers[transceiverIdx].sender : null;
|
|
7298
7343
|
} else {
|
|
@@ -7828,6 +7873,16 @@ class WebRTCClient extends Emitter {
|
|
|
7828
7873
|
return this.hasRemoteVideo(sessionId) ? this.getRemoteStream(sessionId) : null;
|
|
7829
7874
|
}
|
|
7830
7875
|
|
|
7876
|
+
// Useful in a react-native environment when remoteMediaStream is not updated
|
|
7877
|
+
getRemoteVideoStreamFromPc(sessionId ) {
|
|
7878
|
+
const pc = this.getPeerConnection(sessionId);
|
|
7879
|
+
if (!pc) {
|
|
7880
|
+
return null;
|
|
7881
|
+
}
|
|
7882
|
+
|
|
7883
|
+
return pc.getRemoteStreams().find(stream => !!stream.getVideoTracks().length);
|
|
7884
|
+
}
|
|
7885
|
+
|
|
7831
7886
|
hasVideo(sessionId ) {
|
|
7832
7887
|
return this.hasLocalVideo(sessionId) || this.hasRemoteVideo(sessionId);
|
|
7833
7888
|
}
|
|
@@ -8338,6 +8393,7 @@ class WebRTCClient extends Emitter {
|
|
|
8338
8393
|
session.sessionDescriptionHandler.remoteMediaStream.onaddtrack = onTrack;
|
|
8339
8394
|
|
|
8340
8395
|
pc.oniceconnectionstatechange = () => {
|
|
8396
|
+
logger$8.info('on ice connection state changed', { state: pc.iceConnectionState });
|
|
8341
8397
|
if (pc.iceConnectionState === 'disconnected') {
|
|
8342
8398
|
this.eventEmitter.emit(ON_DISCONNECTED$1);
|
|
8343
8399
|
}
|
|
@@ -8606,18 +8662,22 @@ class WebRTCClient extends Emitter {
|
|
|
8606
8662
|
});
|
|
8607
8663
|
|
|
8608
8664
|
networkStats.packetsLost = packetsLost;
|
|
8609
|
-
networkStats.
|
|
8665
|
+
networkStats.totalAudioBytesSent = audioBytesSent;
|
|
8666
|
+
networkStats.audioBytesSent = audioBytesSent - lastAudioSent;
|
|
8667
|
+
networkStats.totalAudioBytesReceived = audioBytesReceived - lastAudioReceived;
|
|
8610
8668
|
networkStats.audioBytesReceived = audioBytesReceived;
|
|
8611
|
-
networkStats.
|
|
8612
|
-
networkStats.
|
|
8669
|
+
networkStats.totalVideoBytesSent = videoBytesSent;
|
|
8670
|
+
networkStats.videoBytesSent = videoBytesSent - lastVideoSent;
|
|
8671
|
+
networkStats.totalVideoBytesReceived = videoBytesReceived;
|
|
8672
|
+
networkStats.videoBytesReceived = videoBytesReceived - lastVideoReceived;
|
|
8673
|
+
networkStats.totalTransportSent = transportSent - lastTransportSent;
|
|
8613
8674
|
networkStats.transportSent = transportSent;
|
|
8614
|
-
networkStats.
|
|
8615
|
-
|
|
8616
|
-
const bandwidth = (networkStats.audioBytesSent - lastAudioSent) + (networkStats.videoBytesSent - lastVideoSent)
|
|
8617
|
-
+ (networkStats.audioBytesReceived - lastAudioReceived) + (networkStats.videoBytesReceived - lastVideoReceived)
|
|
8618
|
-
+ (networkStats.transportReceived - lastTransportReceived) + (networkStats.transportSent - lastTransportSent);
|
|
8675
|
+
networkStats.totalTransportReceived = transportReceived;
|
|
8676
|
+
networkStats.transportReceived = transportReceived - lastTransportReceived;
|
|
8619
8677
|
|
|
8620
|
-
networkStats.bandwidth =
|
|
8678
|
+
networkStats.bandwidth = networkStats.audioBytesSent + networkStats.audioBytesReceived
|
|
8679
|
+
+ networkStats.videoBytesSent + networkStats.videoBytesReceived + networkStats.transportReceived
|
|
8680
|
+
+ networkStats.transportSent;
|
|
8621
8681
|
|
|
8622
8682
|
this.eventEmitter.emit(ON_NETWORK_STATS$1, session, networkStats, this.sessionNetworkStats[sessionId]);
|
|
8623
8683
|
this.sessionNetworkStats[sessionId].push(networkStats);
|
|
@@ -8999,7 +9059,10 @@ class WebRTCPhone extends Emitter {
|
|
|
8999
9059
|
|
|
9000
9060
|
onCancel(message);
|
|
9001
9061
|
const elsewhere = message.data.indexOf('cause=26') !== -1 && message.data.indexOf('completed elsewhere') !== -1;
|
|
9002
|
-
|
|
9062
|
+
const callSession = this._createCallSession(sipSession);
|
|
9063
|
+
delete this.callSessions[callSession.getId()];
|
|
9064
|
+
|
|
9065
|
+
this.eventEmitter.emit(ON_CALL_CANCELED, callSession, elsewhere);
|
|
9003
9066
|
};
|
|
9004
9067
|
} else if (sipSession instanceof Invitation) {
|
|
9005
9068
|
console.warn('sipSession._onCancel not found, please update the wazo SDK accordingly');
|
|
@@ -9028,9 +9091,11 @@ class WebRTCPhone extends Emitter {
|
|
|
9028
9091
|
case SessionState.Terminated: {
|
|
9029
9092
|
logger$7.info('WebRTC phone - call terminated', { sipId: sipSession.id });
|
|
9030
9093
|
|
|
9094
|
+
// Should be called before `_onCallTerminated` or the callCount will not decrement...
|
|
9095
|
+
const callSession = this._createCallSession(sipSession);
|
|
9031
9096
|
const wasCurrentSession = this._onCallTerminated(sipSession);
|
|
9032
9097
|
|
|
9033
|
-
return this.eventEmitter.emit(ON_CALL_ENDED,
|
|
9098
|
+
return this.eventEmitter.emit(ON_CALL_ENDED, callSession, wasCurrentSession);
|
|
9034
9099
|
}
|
|
9035
9100
|
}
|
|
9036
9101
|
});
|
|
@@ -9978,6 +10043,10 @@ class WebRTCPhone extends Emitter {
|
|
|
9978
10043
|
return callSession ? this.client.getRemoteVideoStream(callSession.sipCallId) : null;
|
|
9979
10044
|
}
|
|
9980
10045
|
|
|
10046
|
+
getRemoteVideoStreamFromPc(callSession ) {
|
|
10047
|
+
return callSession ? this.client.getRemoteVideoStreamFromPc(callSession.sipCallId) : null;
|
|
10048
|
+
}
|
|
10049
|
+
|
|
9981
10050
|
hasRemoteVideo(callSession ) {
|
|
9982
10051
|
return callSession ? this.client.hasRemoteVideo(callSession.sipCallId) : false;
|
|
9983
10052
|
}
|
|
@@ -10661,6 +10730,11 @@ class Phone extends Emitter {
|
|
|
10661
10730
|
return this.getRemoteVideoStream(callSession);
|
|
10662
10731
|
}
|
|
10663
10732
|
|
|
10733
|
+
// Useful in a react-native environment when remoteMediaStream is not updated
|
|
10734
|
+
getRemoteVideoStreamFromPc(callSession ) {
|
|
10735
|
+
return this.phone ? this.phone.getRemoteVideoStreamFromPc(callSession) : false;
|
|
10736
|
+
}
|
|
10737
|
+
|
|
10664
10738
|
hasVideo(callSession ) {
|
|
10665
10739
|
return this.phone ? this.phone.hasVideo(callSession) : false;
|
|
10666
10740
|
}
|
|
@@ -10820,6 +10894,7 @@ const AGENT_PAUSED = 'agent_paused';
|
|
|
10820
10894
|
const AGENT_UNPAUSED = 'agent_unpaused';
|
|
10821
10895
|
const CONFERENCE_ADHOC_PARTICIPANT_LEFT = 'conference_adhoc_participant_left';
|
|
10822
10896
|
const CONFERENCE_ADHOC_DELETED = 'conference_adhoc_deleted';
|
|
10897
|
+
const MEETING_USER_PROGRESS = 'meeting_user_progress';
|
|
10823
10898
|
|
|
10824
10899
|
const BLACKLIST_EVENTS = [
|
|
10825
10900
|
CHAT_MESSAGE_SENT,
|
|
@@ -11170,6 +11245,7 @@ WebSocketClient.eventLists = [
|
|
|
11170
11245
|
AGENT_UNPAUSED,
|
|
11171
11246
|
CONFERENCE_ADHOC_PARTICIPANT_LEFT,
|
|
11172
11247
|
CONFERENCE_ADHOC_DELETED,
|
|
11248
|
+
MEETING_USER_PROGRESS,
|
|
11173
11249
|
];
|
|
11174
11250
|
|
|
11175
11251
|
var WebSocketClient$1 = /*#__PURE__*/Object.freeze({
|
|
@@ -11240,6 +11316,7 @@ var WebSocketClient$1 = /*#__PURE__*/Object.freeze({
|
|
|
11240
11316
|
AGENT_UNPAUSED: AGENT_UNPAUSED,
|
|
11241
11317
|
CONFERENCE_ADHOC_PARTICIPANT_LEFT: CONFERENCE_ADHOC_PARTICIPANT_LEFT,
|
|
11242
11318
|
CONFERENCE_ADHOC_DELETED: CONFERENCE_ADHOC_DELETED,
|
|
11319
|
+
MEETING_USER_PROGRESS: MEETING_USER_PROGRESS,
|
|
11243
11320
|
HEARTBEAT_ENGINE_VERSION: HEARTBEAT_ENGINE_VERSION,
|
|
11244
11321
|
'default': WebSocketClient
|
|
11245
11322
|
});
|
package/esm/simple/utils.js
CHANGED
|
@@ -1634,6 +1634,7 @@ class IssueReporter {
|
|
|
1634
1634
|
|
|
1635
1635
|
|
|
1636
1636
|
|
|
1637
|
+
|
|
1637
1638
|
|
|
1638
1639
|
constructor() {
|
|
1639
1640
|
addLevelsTo(this);
|
|
@@ -1645,12 +1646,17 @@ class IssueReporter {
|
|
|
1645
1646
|
this.bufferTimeout = null;
|
|
1646
1647
|
this._boundProcessBuffer = this._processBuffer.bind(this);
|
|
1647
1648
|
this._boundParseLoggerBody = this._parseLoggerBody.bind(this);
|
|
1649
|
+
this._callback = null;
|
|
1648
1650
|
}
|
|
1649
1651
|
|
|
1650
1652
|
init() {
|
|
1651
1653
|
this._catchConsole();
|
|
1652
1654
|
}
|
|
1653
1655
|
|
|
1656
|
+
setCallback(cb ) {
|
|
1657
|
+
this._callback = cb;
|
|
1658
|
+
}
|
|
1659
|
+
|
|
1654
1660
|
configureRemoteClient(configuration = { tag: 'wazo-sdk', host: null, port: null, level: null, extra: {} }) {
|
|
1655
1661
|
this.remoteClientConfiguration = configuration;
|
|
1656
1662
|
}
|
|
@@ -1686,6 +1692,7 @@ class IssueReporter {
|
|
|
1686
1692
|
|
|
1687
1693
|
// Handle category label
|
|
1688
1694
|
let category = null;
|
|
1695
|
+
let skipSendToRemote = false;
|
|
1689
1696
|
let extra = {};
|
|
1690
1697
|
if (args[0].indexOf(CATEGORY_PREFIX) === 0) {
|
|
1691
1698
|
category = args[0].split('=')[1];
|
|
@@ -1701,6 +1708,7 @@ class IssueReporter {
|
|
|
1701
1708
|
errorMessage: lastArg.message,
|
|
1702
1709
|
errorStack: lastArg.stack,
|
|
1703
1710
|
errorType: lastArg.constructor.name,
|
|
1711
|
+
skipSendToRemote: lastArg.skipSendToRemote,
|
|
1704
1712
|
};
|
|
1705
1713
|
} else {
|
|
1706
1714
|
extra = lastArg;
|
|
@@ -1709,6 +1717,11 @@ class IssueReporter {
|
|
|
1709
1717
|
args.splice(1, 1);
|
|
1710
1718
|
}
|
|
1711
1719
|
|
|
1720
|
+
if (extra.skipSendToRemote) {
|
|
1721
|
+
skipSendToRemote = true;
|
|
1722
|
+
delete extra.skipSendToRemote;
|
|
1723
|
+
}
|
|
1724
|
+
|
|
1712
1725
|
const date = moment().format('YYYY-MM-DD HH:mm:ss.SSS');
|
|
1713
1726
|
const message = args.join(', ');
|
|
1714
1727
|
let consoleMessage = message;
|
|
@@ -1729,7 +1742,13 @@ class IssueReporter {
|
|
|
1729
1742
|
const oldMethod = this.oldConsoleMethods[consoleLevel] || this.oldConsoleMethods.log;
|
|
1730
1743
|
oldMethod.apply(oldMethod, [date, consoleMessage]);
|
|
1731
1744
|
|
|
1732
|
-
this.
|
|
1745
|
+
if (this._callback) {
|
|
1746
|
+
this._callback(level, consoleMessage);
|
|
1747
|
+
}
|
|
1748
|
+
|
|
1749
|
+
if (!skipSendToRemote) {
|
|
1750
|
+
this._sendToRemoteLogger(level, { date, message, category, ...extra });
|
|
1751
|
+
}
|
|
1733
1752
|
}
|
|
1734
1753
|
|
|
1735
1754
|
logRequest(url , options , response , start ) {
|
|
@@ -1874,7 +1893,11 @@ class IssueReporter {
|
|
|
1874
1893
|
},
|
|
1875
1894
|
// $FlowFixMe
|
|
1876
1895
|
body,
|
|
1877
|
-
}).catch(() => {
|
|
1896
|
+
}).catch((e ) => {
|
|
1897
|
+
// $FlowFixMe
|
|
1898
|
+
e.skipSendToRemote = true;
|
|
1899
|
+
this.log('error', this._makeCategory('grafana'), 'Sending log to grafana, error', e);
|
|
1900
|
+
|
|
1878
1901
|
setTimeout(() => {
|
|
1879
1902
|
if (isArray) {
|
|
1880
1903
|
payload = payload.map(message => {
|
|
@@ -1886,7 +1909,7 @@ class IssueReporter {
|
|
|
1886
1909
|
payload._retry = retry + 1;
|
|
1887
1910
|
}
|
|
1888
1911
|
|
|
1889
|
-
this._sendDebugToGrafana(
|
|
1912
|
+
this._sendDebugToGrafana(payload, retry + 1);
|
|
1890
1913
|
}, 5000 + retry * 1000);
|
|
1891
1914
|
});
|
|
1892
1915
|
}
|
|
@@ -2604,7 +2627,8 @@ class ExternalApp {
|
|
|
2604
2627
|
|
|
2605
2628
|
|
|
2606
2629
|
|
|
2607
|
-
|
|
2630
|
+
|
|
2631
|
+
|
|
2608
2632
|
|
|
2609
2633
|
|
|
2610
2634
|
class Meeting {
|
|
@@ -2616,6 +2640,7 @@ class Meeting {
|
|
|
2616
2640
|
|
|
2617
2641
|
|
|
2618
2642
|
|
|
2643
|
+
|
|
2619
2644
|
|
|
2620
2645
|
|
|
2621
2646
|
static parse(plain ) {
|
|
@@ -2627,14 +2652,28 @@ class Meeting {
|
|
|
2627
2652
|
port: plain.port,
|
|
2628
2653
|
uuid: plain.uuid,
|
|
2629
2654
|
number: plain.number,
|
|
2655
|
+
persistent: plain.persistent,
|
|
2630
2656
|
});
|
|
2631
2657
|
}
|
|
2632
2658
|
|
|
2659
|
+
static parseMany(items ) {
|
|
2660
|
+
return items.map(plain => Meeting.parse(plain));
|
|
2661
|
+
}
|
|
2662
|
+
|
|
2633
2663
|
static newFrom(meeting ) {
|
|
2634
2664
|
return newFrom(meeting, Meeting);
|
|
2635
2665
|
}
|
|
2636
2666
|
|
|
2637
|
-
constructor({
|
|
2667
|
+
constructor({
|
|
2668
|
+
uuid,
|
|
2669
|
+
name,
|
|
2670
|
+
guestSipAuthorization,
|
|
2671
|
+
ownerUuids,
|
|
2672
|
+
port,
|
|
2673
|
+
uri,
|
|
2674
|
+
number,
|
|
2675
|
+
persistent,
|
|
2676
|
+
} = {}) {
|
|
2638
2677
|
this.guestSipAuthorization = guestSipAuthorization;
|
|
2639
2678
|
this.uri = uri;
|
|
2640
2679
|
this.name = name;
|
|
@@ -2642,6 +2681,7 @@ class Meeting {
|
|
|
2642
2681
|
this.port = port;
|
|
2643
2682
|
this.uuid = uuid;
|
|
2644
2683
|
this.number = number;
|
|
2684
|
+
this.persistent = persistent;
|
|
2645
2685
|
|
|
2646
2686
|
// Useful to compare instead of instanceof with minified code
|
|
2647
2687
|
this.type = 'Meeting';
|
|
@@ -2719,8 +2759,11 @@ var confdMethods = (client , baseUrl ) => ({
|
|
|
2719
2759
|
}
|
|
2720
2760
|
},
|
|
2721
2761
|
|
|
2722
|
-
|
|
2723
|
-
client.
|
|
2762
|
+
getMyMeetings: () =>
|
|
2763
|
+
client.get(`${baseUrl}/users/me/meetings`).then(response => Meeting.parseMany(response.items)),
|
|
2764
|
+
|
|
2765
|
+
createMyMeeting: (name , persistent ) =>
|
|
2766
|
+
client.post(`${baseUrl}/users/me/meetings`, { name, persistent }).then(Meeting.parse),
|
|
2724
2767
|
|
|
2725
2768
|
deleteMyMeeting: (meetingUuid ) =>
|
|
2726
2769
|
client.delete(`${baseUrl}/users/me/meetings/${meetingUuid}`, null),
|
|
@@ -3576,7 +3619,7 @@ class Recording {
|
|
|
3576
3619
|
|
|
3577
3620
|
|
|
3578
3621
|
|
|
3579
|
-
static parseMany(recordings
|
|
3622
|
+
static parseMany(recordings = []) {
|
|
3580
3623
|
return recordings.map(item => Recording.parse(item));
|
|
3581
3624
|
}
|
|
3582
3625
|
|
|
@@ -3702,7 +3745,7 @@ class CallLog {
|
|
|
3702
3745
|
duration: (plain.duration || 0) * 1000, // duration is in seconds
|
|
3703
3746
|
start: moment(plain.start).toDate(),
|
|
3704
3747
|
end: plain.end ? moment(plain.end).toDate() : null,
|
|
3705
|
-
recordings: Recording.parseMany(plain.recordings),
|
|
3748
|
+
recordings: Recording.parseMany(plain.recordings || []),
|
|
3706
3749
|
});
|
|
3707
3750
|
}
|
|
3708
3751
|
|
|
@@ -6956,7 +6999,9 @@ class WebRTCClient extends Emitter {
|
|
|
6956
6999
|
const inviteOptions = {
|
|
6957
7000
|
requestDelegate: {
|
|
6958
7001
|
onAccept: (response ) => {
|
|
6959
|
-
session.sessionDescriptionHandler.peerConnection
|
|
7002
|
+
if (session.sessionDescriptionHandler.peerConnection) {
|
|
7003
|
+
session.sessionDescriptionHandler.peerConnection.sfu = conference;
|
|
7004
|
+
}
|
|
6960
7005
|
this._onAccepted(session, response.session, true);
|
|
6961
7006
|
},
|
|
6962
7007
|
onReject: (response ) => {
|
|
@@ -7292,7 +7337,7 @@ class WebRTCClient extends Emitter {
|
|
|
7292
7337
|
// We search for the last transceiver without `video-` in the mid (video- means remote transceiver)
|
|
7293
7338
|
const transceivers = pc.getTransceivers();
|
|
7294
7339
|
const transceiverIdx = lastIndexOf(transceivers, transceiver =>
|
|
7295
|
-
transceiver.sender.track === null && transceiver.mid.indexOf('video') === -1);
|
|
7340
|
+
transceiver.sender.track === null && transceiver.mid && transceiver.mid.indexOf('video') === -1);
|
|
7296
7341
|
|
|
7297
7342
|
videoSender = transceiverIdx !== -1 ? transceivers[transceiverIdx].sender : null;
|
|
7298
7343
|
} else {
|
|
@@ -7828,6 +7873,16 @@ class WebRTCClient extends Emitter {
|
|
|
7828
7873
|
return this.hasRemoteVideo(sessionId) ? this.getRemoteStream(sessionId) : null;
|
|
7829
7874
|
}
|
|
7830
7875
|
|
|
7876
|
+
// Useful in a react-native environment when remoteMediaStream is not updated
|
|
7877
|
+
getRemoteVideoStreamFromPc(sessionId ) {
|
|
7878
|
+
const pc = this.getPeerConnection(sessionId);
|
|
7879
|
+
if (!pc) {
|
|
7880
|
+
return null;
|
|
7881
|
+
}
|
|
7882
|
+
|
|
7883
|
+
return pc.getRemoteStreams().find(stream => !!stream.getVideoTracks().length);
|
|
7884
|
+
}
|
|
7885
|
+
|
|
7831
7886
|
hasVideo(sessionId ) {
|
|
7832
7887
|
return this.hasLocalVideo(sessionId) || this.hasRemoteVideo(sessionId);
|
|
7833
7888
|
}
|
|
@@ -8338,6 +8393,7 @@ class WebRTCClient extends Emitter {
|
|
|
8338
8393
|
session.sessionDescriptionHandler.remoteMediaStream.onaddtrack = onTrack;
|
|
8339
8394
|
|
|
8340
8395
|
pc.oniceconnectionstatechange = () => {
|
|
8396
|
+
logger$8.info('on ice connection state changed', { state: pc.iceConnectionState });
|
|
8341
8397
|
if (pc.iceConnectionState === 'disconnected') {
|
|
8342
8398
|
this.eventEmitter.emit(ON_DISCONNECTED$1);
|
|
8343
8399
|
}
|
|
@@ -8606,18 +8662,22 @@ class WebRTCClient extends Emitter {
|
|
|
8606
8662
|
});
|
|
8607
8663
|
|
|
8608
8664
|
networkStats.packetsLost = packetsLost;
|
|
8609
|
-
networkStats.
|
|
8665
|
+
networkStats.totalAudioBytesSent = audioBytesSent;
|
|
8666
|
+
networkStats.audioBytesSent = audioBytesSent - lastAudioSent;
|
|
8667
|
+
networkStats.totalAudioBytesReceived = audioBytesReceived - lastAudioReceived;
|
|
8610
8668
|
networkStats.audioBytesReceived = audioBytesReceived;
|
|
8611
|
-
networkStats.
|
|
8612
|
-
networkStats.
|
|
8669
|
+
networkStats.totalVideoBytesSent = videoBytesSent;
|
|
8670
|
+
networkStats.videoBytesSent = videoBytesSent - lastVideoSent;
|
|
8671
|
+
networkStats.totalVideoBytesReceived = videoBytesReceived;
|
|
8672
|
+
networkStats.videoBytesReceived = videoBytesReceived - lastVideoReceived;
|
|
8673
|
+
networkStats.totalTransportSent = transportSent - lastTransportSent;
|
|
8613
8674
|
networkStats.transportSent = transportSent;
|
|
8614
|
-
networkStats.
|
|
8615
|
-
|
|
8616
|
-
const bandwidth = (networkStats.audioBytesSent - lastAudioSent) + (networkStats.videoBytesSent - lastVideoSent)
|
|
8617
|
-
+ (networkStats.audioBytesReceived - lastAudioReceived) + (networkStats.videoBytesReceived - lastVideoReceived)
|
|
8618
|
-
+ (networkStats.transportReceived - lastTransportReceived) + (networkStats.transportSent - lastTransportSent);
|
|
8675
|
+
networkStats.totalTransportReceived = transportReceived;
|
|
8676
|
+
networkStats.transportReceived = transportReceived - lastTransportReceived;
|
|
8619
8677
|
|
|
8620
|
-
networkStats.bandwidth =
|
|
8678
|
+
networkStats.bandwidth = networkStats.audioBytesSent + networkStats.audioBytesReceived
|
|
8679
|
+
+ networkStats.videoBytesSent + networkStats.videoBytesReceived + networkStats.transportReceived
|
|
8680
|
+
+ networkStats.transportSent;
|
|
8621
8681
|
|
|
8622
8682
|
this.eventEmitter.emit(ON_NETWORK_STATS$1, session, networkStats, this.sessionNetworkStats[sessionId]);
|
|
8623
8683
|
this.sessionNetworkStats[sessionId].push(networkStats);
|
|
@@ -8999,7 +9059,10 @@ class WebRTCPhone extends Emitter {
|
|
|
8999
9059
|
|
|
9000
9060
|
onCancel(message);
|
|
9001
9061
|
const elsewhere = message.data.indexOf('cause=26') !== -1 && message.data.indexOf('completed elsewhere') !== -1;
|
|
9002
|
-
|
|
9062
|
+
const callSession = this._createCallSession(sipSession);
|
|
9063
|
+
delete this.callSessions[callSession.getId()];
|
|
9064
|
+
|
|
9065
|
+
this.eventEmitter.emit(ON_CALL_CANCELED, callSession, elsewhere);
|
|
9003
9066
|
};
|
|
9004
9067
|
} else if (sipSession instanceof Invitation) {
|
|
9005
9068
|
console.warn('sipSession._onCancel not found, please update the wazo SDK accordingly');
|
|
@@ -9028,9 +9091,11 @@ class WebRTCPhone extends Emitter {
|
|
|
9028
9091
|
case SessionState.Terminated: {
|
|
9029
9092
|
logger$7.info('WebRTC phone - call terminated', { sipId: sipSession.id });
|
|
9030
9093
|
|
|
9094
|
+
// Should be called before `_onCallTerminated` or the callCount will not decrement...
|
|
9095
|
+
const callSession = this._createCallSession(sipSession);
|
|
9031
9096
|
const wasCurrentSession = this._onCallTerminated(sipSession);
|
|
9032
9097
|
|
|
9033
|
-
return this.eventEmitter.emit(ON_CALL_ENDED,
|
|
9098
|
+
return this.eventEmitter.emit(ON_CALL_ENDED, callSession, wasCurrentSession);
|
|
9034
9099
|
}
|
|
9035
9100
|
}
|
|
9036
9101
|
});
|
|
@@ -9978,6 +10043,10 @@ class WebRTCPhone extends Emitter {
|
|
|
9978
10043
|
return callSession ? this.client.getRemoteVideoStream(callSession.sipCallId) : null;
|
|
9979
10044
|
}
|
|
9980
10045
|
|
|
10046
|
+
getRemoteVideoStreamFromPc(callSession ) {
|
|
10047
|
+
return callSession ? this.client.getRemoteVideoStreamFromPc(callSession.sipCallId) : null;
|
|
10048
|
+
}
|
|
10049
|
+
|
|
9981
10050
|
hasRemoteVideo(callSession ) {
|
|
9982
10051
|
return callSession ? this.client.hasRemoteVideo(callSession.sipCallId) : false;
|
|
9983
10052
|
}
|
|
@@ -10661,6 +10730,11 @@ class Phone extends Emitter {
|
|
|
10661
10730
|
return this.getRemoteVideoStream(callSession);
|
|
10662
10731
|
}
|
|
10663
10732
|
|
|
10733
|
+
// Useful in a react-native environment when remoteMediaStream is not updated
|
|
10734
|
+
getRemoteVideoStreamFromPc(callSession ) {
|
|
10735
|
+
return this.phone ? this.phone.getRemoteVideoStreamFromPc(callSession) : false;
|
|
10736
|
+
}
|
|
10737
|
+
|
|
10664
10738
|
hasVideo(callSession ) {
|
|
10665
10739
|
return this.phone ? this.phone.hasVideo(callSession) : false;
|
|
10666
10740
|
}
|
|
@@ -10820,6 +10894,7 @@ const AGENT_PAUSED = 'agent_paused';
|
|
|
10820
10894
|
const AGENT_UNPAUSED = 'agent_unpaused';
|
|
10821
10895
|
const CONFERENCE_ADHOC_PARTICIPANT_LEFT = 'conference_adhoc_participant_left';
|
|
10822
10896
|
const CONFERENCE_ADHOC_DELETED = 'conference_adhoc_deleted';
|
|
10897
|
+
const MEETING_USER_PROGRESS = 'meeting_user_progress';
|
|
10823
10898
|
|
|
10824
10899
|
const BLACKLIST_EVENTS = [
|
|
10825
10900
|
CHAT_MESSAGE_SENT,
|
|
@@ -11170,6 +11245,7 @@ WebSocketClient.eventLists = [
|
|
|
11170
11245
|
AGENT_UNPAUSED,
|
|
11171
11246
|
CONFERENCE_ADHOC_PARTICIPANT_LEFT,
|
|
11172
11247
|
CONFERENCE_ADHOC_DELETED,
|
|
11248
|
+
MEETING_USER_PROGRESS,
|
|
11173
11249
|
];
|
|
11174
11250
|
|
|
11175
11251
|
var WebSocketClient$1 = /*#__PURE__*/Object.freeze({
|
|
@@ -11240,6 +11316,7 @@ var WebSocketClient$1 = /*#__PURE__*/Object.freeze({
|
|
|
11240
11316
|
AGENT_UNPAUSED: AGENT_UNPAUSED,
|
|
11241
11317
|
CONFERENCE_ADHOC_PARTICIPANT_LEFT: CONFERENCE_ADHOC_PARTICIPANT_LEFT,
|
|
11242
11318
|
CONFERENCE_ADHOC_DELETED: CONFERENCE_ADHOC_DELETED,
|
|
11319
|
+
MEETING_USER_PROGRESS: MEETING_USER_PROGRESS,
|
|
11243
11320
|
HEARTBEAT_ENGINE_VERSION: HEARTBEAT_ENGINE_VERSION,
|
|
11244
11321
|
'default': WebSocketClient
|
|
11245
11322
|
});
|
package/esm/utils/Emitter.js
CHANGED
package/esm/utils/Heartbeat.js
CHANGED