@vkontakte/calls-sdk 2.8.13-dev.c9243c68.0 → 2.8.13-dev.da97cd25.0
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/abstract/BaseApi.d.ts +8 -10
- package/calls-sdk.cjs.js +6 -6
- package/calls-sdk.esm.js +1028 -888
- package/classes/ExternalIdCache.d.ts +9 -13
- package/classes/conversation/Conversation.d.ts +6 -4
- package/classes/conversation/Conversation.testUtils.d.ts +2 -0
- package/classes/conversation/DisplayLayoutRequester.d.ts +3 -1
- package/classes/stat/PeerConnectionStats.d.ts +19 -0
- package/classes/transport/DirectTransport.d.ts +1 -0
- package/classes/transport/PerfStatReporter.d.ts +2 -0
- package/classes/transport/ServerTransport.d.ts +1 -0
- package/default/Api.d.ts +8 -10
- package/enums/Stat.d.ts +7 -0
- package/package.json +1 -1
- package/static/External.d.ts +10 -0
- package/static/Params.d.ts +29 -1
package/calls-sdk.esm.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* @vkontakte/calls-sdk v2.8.13-dev.
|
|
3
|
-
*
|
|
2
|
+
* @vkontakte/calls-sdk v2.8.13-dev.da97cd25.0
|
|
3
|
+
* Fri, 18 Sep 2026 10:02:42 GMT
|
|
4
4
|
* https://calls-sdk.cdn-vk.ru/doc/latest/index.html
|
|
5
5
|
*/
|
|
6
6
|
|
|
@@ -1029,7 +1029,7 @@ var w;
|
|
|
1029
1029
|
function g() {
|
|
1030
1030
|
if (!yt || yt.readyState === "ended") {
|
|
1031
1031
|
let e = w.getAudioContext(), t = e.createMediaStreamDestination(), n = e.createGain();
|
|
1032
|
-
n.gain.value = 1e-5, n.connect(t), n.connect(e.destination);
|
|
1032
|
+
n.gain.value = 1e-5, n.connect(t), w.browserName() === "Safari" && n.connect(e.destination);
|
|
1033
1033
|
let r = e.createOscillator();
|
|
1034
1034
|
r.type = "sine", r.frequency.value = 0, r.connect(n), r.start(), yt = t.stream.getAudioTracks()[0];
|
|
1035
1035
|
}
|
|
@@ -2152,10 +2152,13 @@ var yn = vn.getInstance(), M = class e {
|
|
|
2152
2152
|
return "ok.calls.sdk.js";
|
|
2153
2153
|
}
|
|
2154
2154
|
static get appVersion() {
|
|
2155
|
+
return e._params.appVersion;
|
|
2156
|
+
}
|
|
2157
|
+
static get apiClientVersion() {
|
|
2155
2158
|
return 1.1;
|
|
2156
2159
|
}
|
|
2157
2160
|
static get sdkVersion() {
|
|
2158
|
-
return "2.8.13-dev.
|
|
2161
|
+
return "2.8.13-dev.da97cd25.0";
|
|
2159
2162
|
}
|
|
2160
2163
|
static get debug() {
|
|
2161
2164
|
return e._params.debug;
|
|
@@ -2410,6 +2413,9 @@ var yn = vn.getInstance(), M = class e {
|
|
|
2410
2413
|
static get callStatReportEnabled() {
|
|
2411
2414
|
return e._params.callStatReportEnabled;
|
|
2412
2415
|
}
|
|
2416
|
+
static get iceCandidateErrorStatEnabled() {
|
|
2417
|
+
return e._params.iceCandidateErrorStatEnabled;
|
|
2418
|
+
}
|
|
2413
2419
|
static get enableLogPerfStatReport() {
|
|
2414
2420
|
return e._params.enableLogPerfStatReport;
|
|
2415
2421
|
}
|
|
@@ -2574,10 +2580,12 @@ var yn = vn.getInstance(), M = class e {
|
|
|
2574
2580
|
videoSuspend: e._params.videoSuspend,
|
|
2575
2581
|
debugLog: e._params.debugLog,
|
|
2576
2582
|
callStatReportEnabled: e._params.callStatReportEnabled,
|
|
2583
|
+
iceCandidateErrorStatEnabled: e._params.iceCandidateErrorStatEnabled,
|
|
2577
2584
|
joinFromMultipleDevices: e._params.joinFromMultipleDevices,
|
|
2578
2585
|
movieShare: e._params.movieShare,
|
|
2579
2586
|
clientType: e._params.clientType,
|
|
2580
2587
|
clientStatsPlatform: e._params.clientStatsPlatform,
|
|
2588
|
+
appVersion: e._params.appVersion,
|
|
2581
2589
|
consumerScreenDataChannelPacketSize: e._params.consumerScreenDataChannelPacketSize,
|
|
2582
2590
|
switchVideoAtBadNetwork: e._params.switchVideoAtBadNetwork,
|
|
2583
2591
|
simulcast: e._params.simulcast,
|
|
@@ -2593,6 +2601,7 @@ var yn = vn.getInstance(), M = class e {
|
|
|
2593
2601
|
h(M, "_params", {
|
|
2594
2602
|
platform: "WEB",
|
|
2595
2603
|
clientStatsPlatform: "",
|
|
2604
|
+
appVersion: "0.0.0",
|
|
2596
2605
|
clientType: "PORTAL",
|
|
2597
2606
|
externalUserType: "",
|
|
2598
2607
|
device: "browser",
|
|
@@ -2642,6 +2651,7 @@ h(M, "_params", {
|
|
|
2642
2651
|
networkStatisticsInterval: 2e4,
|
|
2643
2652
|
perfStatReportEnabled: !0,
|
|
2644
2653
|
callStatReportEnabled: !1,
|
|
2654
|
+
iceCandidateErrorStatEnabled: !1,
|
|
2645
2655
|
enableLogPerfStatReport: !1,
|
|
2646
2656
|
voiceParams: {
|
|
2647
2657
|
smoothing: .8,
|
|
@@ -3065,6 +3075,10 @@ var xn;
|
|
|
3065
3075
|
P("onPeerRegistered", e, t);
|
|
3066
3076
|
}
|
|
3067
3077
|
e.onPeerRegistered = ot;
|
|
3078
|
+
function st(e, t) {
|
|
3079
|
+
P("onNonFatalError", e, t);
|
|
3080
|
+
}
|
|
3081
|
+
e.onNonFatalError = st;
|
|
3068
3082
|
})(xn || (xn = {}));
|
|
3069
3083
|
var L = xn, Sn = /* @__PURE__ */ function(e) {
|
|
3070
3084
|
return e.DEBUG = "DEBUG", e.LOG = "LOG", e.WARN = "WARN", e.ERROR = "ERROR", e;
|
|
@@ -3581,7 +3595,7 @@ var Rn = 0, zn = 1, Bn = 2, Vn = 3, Hn = 4, Un = 5, Wn = 6, Gn = 7, Kn = 0, qn =
|
|
|
3581
3595
|
};
|
|
3582
3596
|
}
|
|
3583
3597
|
}, H = /* @__PURE__ */ function(e) {
|
|
3584
|
-
return e.CALL_INIT = "call_init", e.CALL_START = "call_start", e.CALL_ACCEPTED_OUTGOING = "call_accepted_outgoing", e.CALL_ACCEPTED_INCOMING = "call_accepted_incoming", e.FIRST_MEDIA_SENT = "first_media_sent", e.CALL_FINISH = "call_finish", e.CODEC_USAGE = "codec_usage", e.SIGNALING_CONNECTED = "signaling_connected", e.SCREENSHARE_FIRST_FRAME = "screen_share_first_frame", e.FIRST_MEDIA_RECEIVED = "first_media_received", e.CALL_DECLINED_OR_HANGED_LOCALLY = "CallDeclinedOrHangedLocally", e.USER_FEEDBACK_RECEIVED = "UserFeedbackReceived", e.SIGNALING_PING_SUMMARY = "signaling_ping_summary", e.SIGNALING_COMMAND_SUMMARY = "signaling_command_summary", e.WEBSOCKET_CONNECTED = "websocket_connected", e.WEBSOCKET_RECONNECTED = "websocket_reconnected", e.WEBSOCKET_FAILED_PINGS = "websocket_failed_pings", e.WEBSOCKET_FAILED_EXCEPTION = "websocket_failed_exception", e.WEBSOCKET_TIMEOUT = "websocket_timeout", e.WEBSOCKET_RESTART = "websocket_restart", e.WEBTRANSPORT_CONNECTED = "webtransport_connected", e.WEBTRANSPORT_RECONNECTED = "webtransport_reconnected", e.WEBTRANSPORT_FAILED_PINGS = "webtransport_failed_pings", e.WEBTRANSPORT_FAILED_EXCEPTION = "webtransport_failed_exception", e.WEBTRANSPORT_TIMEOUT = "webtransport_timeout", e.WEBTRANSPORT_RESTART = "webtransport_restart", e;
|
|
3598
|
+
return e.CALL_INIT = "call_init", e.CALL_START = "call_start", e.CALL_ACCEPTED_OUTGOING = "call_accepted_outgoing", e.CALL_ACCEPTED_INCOMING = "call_accepted_incoming", e.FIRST_MEDIA_SENT = "first_media_sent", e.CALL_FINISH = "call_finish", e.CODEC_USAGE = "codec_usage", e.SIGNALING_CONNECTED = "signaling_connected", e.SCREENSHARE_FIRST_FRAME = "screen_share_first_frame", e.FIRST_MEDIA_RECEIVED = "first_media_received", e.CALL_DECLINED_OR_HANGED_LOCALLY = "CallDeclinedOrHangedLocally", e.USER_FEEDBACK_RECEIVED = "UserFeedbackReceived", e.SIGNALING_PING_SUMMARY = "signaling_ping_summary", e.SIGNALING_COMMAND_SUMMARY = "signaling_command_summary", e.CONNECTION_STATE_CHANGED = "connection_state_changed", e.SIGNALING_STATE_CHANGED = "signaling_state_changed", e.GATHERING_STATE_CHANGED = "gathering_state_changed", e.ICE_RESTART = "ice_restart", e.ICE_CANDIDATES_CHANGED = "ice_candidates_changed", e.ICE_CANDIDATE_GATHERING_FAILED = "ice_candidate_gathering_failed", e.ICE_CANDIDATE_ADD_FAILED = "ice_candidate_add_failed", e.WEBSOCKET_CONNECTED = "websocket_connected", e.WEBSOCKET_RECONNECTED = "websocket_reconnected", e.WEBSOCKET_FAILED_PINGS = "websocket_failed_pings", e.WEBSOCKET_FAILED_EXCEPTION = "websocket_failed_exception", e.WEBSOCKET_TIMEOUT = "websocket_timeout", e.WEBSOCKET_RESTART = "websocket_restart", e.WEBTRANSPORT_CONNECTED = "webtransport_connected", e.WEBTRANSPORT_RECONNECTED = "webtransport_reconnected", e.WEBTRANSPORT_FAILED_PINGS = "webtransport_failed_pings", e.WEBTRANSPORT_FAILED_EXCEPTION = "webtransport_failed_exception", e.WEBTRANSPORT_TIMEOUT = "webtransport_timeout", e.WEBTRANSPORT_RESTART = "webtransport_restart", e;
|
|
3585
3599
|
}(H || {}), er = 1e3;
|
|
3586
3600
|
function U(e, t, n = 0) {
|
|
3587
3601
|
return t in e && e[t] ? e[t] : n;
|
|
@@ -3819,14 +3833,83 @@ function kr() {
|
|
|
3819
3833
|
};
|
|
3820
3834
|
}
|
|
3821
3835
|
//#endregion
|
|
3822
|
-
//#region src/classes/stat/
|
|
3823
|
-
var Ar =
|
|
3824
|
-
|
|
3836
|
+
//#region src/classes/stat/PeerConnectionStats.ts
|
|
3837
|
+
var Ar = /[?&]transport=(tcp|udp)/i, jr = {
|
|
3838
|
+
stable: "stable",
|
|
3839
|
+
"have-local-offer": "have.local.offer",
|
|
3840
|
+
"have-local-pranswer": "have.local.answer",
|
|
3841
|
+
"have-remote-offer": "have.remote.offer",
|
|
3842
|
+
"have-remote-pranswer": "have.remote.answer",
|
|
3843
|
+
closed: "closed"
|
|
3844
|
+
}, Mr = class {
|
|
3845
|
+
constructor(e) {
|
|
3846
|
+
h(this, "_statAggregator", void 0), h(this, "_pc", null), h(this, "_lastSignalingStateChange", 0), h(this, "_lastGatheringStateChange", 0), h(this, "_handleConnectionStateChange", () => {
|
|
3847
|
+
this._log({
|
|
3848
|
+
name: H.CONNECTION_STATE_CHANGED,
|
|
3849
|
+
value: 0,
|
|
3850
|
+
connection_state: this._pc?.connectionState
|
|
3851
|
+
});
|
|
3852
|
+
}), h(this, "_handleSignalingStateChange", () => {
|
|
3853
|
+
let e = this._pc?.signalingState;
|
|
3854
|
+
this._log({
|
|
3855
|
+
name: H.SIGNALING_STATE_CHANGED,
|
|
3856
|
+
value: this._sinceLastChange("_lastSignalingStateChange"),
|
|
3857
|
+
string_value: e ? jr[e] : void 0
|
|
3858
|
+
});
|
|
3859
|
+
}), h(this, "_handleGatheringStateChange", () => {
|
|
3860
|
+
let e = this._pc?.iceGatheringState, t = this._sinceLastChange("_lastGatheringStateChange");
|
|
3861
|
+
this._log({
|
|
3862
|
+
name: H.GATHERING_STATE_CHANGED,
|
|
3863
|
+
value: e === "new" ? 0 : t,
|
|
3864
|
+
string_value: e
|
|
3865
|
+
});
|
|
3866
|
+
}), h(this, "_handleIceCandidateError", (e) => {
|
|
3867
|
+
if (!M.iceCandidateErrorStatEnabled) return;
|
|
3868
|
+
let t = e;
|
|
3869
|
+
this._log({
|
|
3870
|
+
name: H.ICE_CANDIDATE_GATHERING_FAILED,
|
|
3871
|
+
value: t.errorCode,
|
|
3872
|
+
string_value: t.errorText,
|
|
3873
|
+
local_address: t.address ?? void 0,
|
|
3874
|
+
remote_url: t.url,
|
|
3875
|
+
transport: Ar.exec(t.url ?? "")?.[1]?.toLowerCase()
|
|
3876
|
+
});
|
|
3877
|
+
}), this._statAggregator = e;
|
|
3878
|
+
}
|
|
3879
|
+
observe(e) {
|
|
3880
|
+
this.stop(), this._pc = e, this._lastSignalingStateChange = 0, this._lastGatheringStateChange = 0, e.addEventListener("connectionstatechange", this._handleConnectionStateChange), e.addEventListener("signalingstatechange", this._handleSignalingStateChange), e.addEventListener("icegatheringstatechange", this._handleGatheringStateChange), e.addEventListener("icecandidateerror", this._handleIceCandidateError);
|
|
3881
|
+
}
|
|
3882
|
+
stop() {
|
|
3883
|
+
this._pc && (this._pc.removeEventListener("connectionstatechange", this._handleConnectionStateChange), this._pc.removeEventListener("signalingstatechange", this._handleSignalingStateChange), this._pc.removeEventListener("icegatheringstatechange", this._handleGatheringStateChange), this._pc.removeEventListener("icecandidateerror", this._handleIceCandidateError), this._pc = null);
|
|
3884
|
+
}
|
|
3885
|
+
logIceRestart() {
|
|
3886
|
+
this._log({
|
|
3887
|
+
name: H.ICE_RESTART,
|
|
3888
|
+
value: 0
|
|
3889
|
+
});
|
|
3890
|
+
}
|
|
3891
|
+
logIceCandidateAddFailed(e, t) {
|
|
3892
|
+
this._log({
|
|
3893
|
+
name: H.ICE_CANDIDATE_ADD_FAILED,
|
|
3894
|
+
value: t instanceof DOMException ? t.code : 0,
|
|
3895
|
+
string_value: t instanceof Error ? `${t.name}: ${t.message}` : String(t),
|
|
3896
|
+
remote_url: e.candidate
|
|
3897
|
+
});
|
|
3898
|
+
}
|
|
3899
|
+
_sinceLastChange(e) {
|
|
3900
|
+
let t = Date.now(), n = this[e] === 0 ? 0 : t - this[e];
|
|
3901
|
+
return this[e] = t, n;
|
|
3902
|
+
}
|
|
3903
|
+
_log(e) {
|
|
3904
|
+
this._statAggregator?.logEventualStat(e);
|
|
3905
|
+
}
|
|
3906
|
+
}, Nr = 200;
|
|
3907
|
+
function Pr(e) {
|
|
3825
3908
|
for (let t of e.values()) if (t.type === "outbound-rtp" && (t.packetsSent ?? 0) > 0) return !0;
|
|
3826
3909
|
return !1;
|
|
3827
3910
|
}
|
|
3828
|
-
var
|
|
3829
|
-
constructor(e, t, n =
|
|
3911
|
+
var Fr = class {
|
|
3912
|
+
constructor(e, t, n = Nr) {
|
|
3830
3913
|
h(this, "_peerConnection", void 0), h(this, "_onFirstMediaSent", void 0), h(this, "_pollIntervalMs", void 0), h(this, "_timer", null), h(this, "_state", "idle"), this._peerConnection = e, this._onFirstMediaSent = t, this._pollIntervalMs = n;
|
|
3831
3914
|
}
|
|
3832
3915
|
start() {
|
|
@@ -3849,7 +3932,7 @@ var Mr = class {
|
|
|
3849
3932
|
try {
|
|
3850
3933
|
let e = await this._getStatsReports();
|
|
3851
3934
|
if (this._state !== "polling") return;
|
|
3852
|
-
if (e.some(
|
|
3935
|
+
if (e.some(Pr)) {
|
|
3853
3936
|
this._state = "stopped", this._onFirstMediaSent();
|
|
3854
3937
|
return;
|
|
3855
3938
|
}
|
|
@@ -3862,7 +3945,7 @@ var Mr = class {
|
|
|
3862
3945
|
this._timer = null, this._poll();
|
|
3863
3946
|
}, this._pollIntervalMs));
|
|
3864
3947
|
}
|
|
3865
|
-
},
|
|
3948
|
+
}, Ir = class extends b {
|
|
3866
3949
|
constructor(e, t, n = null) {
|
|
3867
3950
|
super(), h(this, "_signaling", void 0), h(this, "_mediaSource", void 0), h(this, "_state", q.IDLE), h(this, "_pc", null), h(this, "_onFirstMediaSent", void 0), h(this, "_firstMediaSentProbe", null), h(this, "_firstMediaSentProbeStopped", !1), this._signaling = e, this._mediaSource = t, this._onFirstMediaSent = n;
|
|
3868
3951
|
}
|
|
@@ -3873,12 +3956,12 @@ var Mr = class {
|
|
|
3873
3956
|
this._firstMediaSentProbeStopped = !0, this._disposeFirstMediaSentProbe();
|
|
3874
3957
|
}
|
|
3875
3958
|
_startFirstMediaSentProbe() {
|
|
3876
|
-
this._disposeFirstMediaSentProbe(), !(!this._pc || !this._onFirstMediaSent || this._firstMediaSentProbeStopped) && (this._firstMediaSentProbe = new
|
|
3959
|
+
this._disposeFirstMediaSentProbe(), !(!this._pc || !this._onFirstMediaSent || this._firstMediaSentProbeStopped) && (this._firstMediaSentProbe = new Fr(this._pc, this._onFirstMediaSent), this._firstMediaSentProbe.start());
|
|
3877
3960
|
}
|
|
3878
3961
|
_disposeFirstMediaSentProbe() {
|
|
3879
3962
|
this._firstMediaSentProbe?.destroy(), this._firstMediaSentProbe = null;
|
|
3880
3963
|
}
|
|
3881
|
-
},
|
|
3964
|
+
}, Lr = class {
|
|
3882
3965
|
constructor(e, t = null) {
|
|
3883
3966
|
h(this, "weightUp", void 0), h(this, "weightDown", void 0), h(this, "value", NaN), this.weightUp = e, this.weightDown = t ?? e;
|
|
3884
3967
|
}
|
|
@@ -3896,7 +3979,7 @@ var Mr = class {
|
|
|
3896
3979
|
getValue() {
|
|
3897
3980
|
return this.value;
|
|
3898
3981
|
}
|
|
3899
|
-
},
|
|
3982
|
+
}, Rr = .25, zr = .35, Br = 85, Vr = .1, Hr = 1.5, Ur = .1, Wr = 1, Gr = .6, Kr = .3, qr = class extends b {
|
|
3900
3983
|
constructor(e, t = R) {
|
|
3901
3984
|
super(), h(this, "_signaling", void 0), h(this, "_localNetworkStat", void 0), h(this, "_remoteNetworkStat", void 0), h(this, "_lastNetworkStat", void 0), h(this, "_networkLimits", {
|
|
3902
3985
|
badNet: {
|
|
@@ -3908,8 +3991,8 @@ var Mr = class {
|
|
|
3908
3991
|
rtt: 600
|
|
3909
3992
|
}
|
|
3910
3993
|
}), h(this, "_lastStatSentTimestamp", 0), h(this, "_currentState", "good"), h(this, "_debug", void 0), this._debug = t, this._signaling = e, this._localNetworkStat = {
|
|
3911
|
-
rtt: new
|
|
3912
|
-
loss: new
|
|
3994
|
+
rtt: new Lr(Rr, Rr),
|
|
3995
|
+
loss: new Lr(zr, zr),
|
|
3913
3996
|
bitrate: 0
|
|
3914
3997
|
}, this._remoteNetworkStat = {
|
|
3915
3998
|
rtt: 0,
|
|
@@ -3924,20 +4007,20 @@ var Mr = class {
|
|
|
3924
4007
|
_calcRttRating(e) {
|
|
3925
4008
|
let t = typeof e == "number" ? e : e.getValue(), n = 1;
|
|
3926
4009
|
if (isNaN(t)) return n;
|
|
3927
|
-
let r = Math.round((t - this._networkLimits.goodNet.rtt) /
|
|
3928
|
-
for (let e = 0; e < r; e++) n *= 1 -
|
|
4010
|
+
let r = Math.round((t - this._networkLimits.goodNet.rtt) / Br);
|
|
4011
|
+
for (let e = 0; e < r; e++) n *= 1 - Vr;
|
|
3929
4012
|
return n;
|
|
3930
4013
|
}
|
|
3931
4014
|
_calcLossRating(e) {
|
|
3932
4015
|
let t = typeof e == "number" ? e : e.getValue(), n = 1;
|
|
3933
4016
|
if (isNaN(t)) return n;
|
|
3934
|
-
let r = Math.round((t - this._networkLimits.goodNet.loss) /
|
|
3935
|
-
for (let e = 0; e < r; e++) n *= 1 -
|
|
4017
|
+
let r = Math.round((t - this._networkLimits.goodNet.loss) / Hr);
|
|
4018
|
+
for (let e = 0; e < r; e++) n *= 1 - Ur;
|
|
3936
4019
|
return n;
|
|
3937
4020
|
}
|
|
3938
4021
|
_calcBitrateRating(e, t) {
|
|
3939
4022
|
if (!e || !t) return 1;
|
|
3940
|
-
let n = 1 - (1 - Math.min(e, t) / Math.max(e, t)) *
|
|
4023
|
+
let n = 1 - (1 - Math.min(e, t) / Math.max(e, t)) * Wr;
|
|
3941
4024
|
return Math.min(n, 1);
|
|
3942
4025
|
}
|
|
3943
4026
|
_calcUDPRating({ rtt: e, loss: t }) {
|
|
@@ -3947,7 +4030,7 @@ var Mr = class {
|
|
|
3947
4030
|
return n ? this._calcBitrateRating(e.bitrate, t.bitrate) : this._calcUDPRating(e) * this._calcUDPRating(t);
|
|
3948
4031
|
}
|
|
3949
4032
|
_getNetworkState(e) {
|
|
3950
|
-
return isNaN(e) || e >=
|
|
4033
|
+
return isNaN(e) || e >= Gr ? "good" : e >= Kr ? "medium" : "bad";
|
|
3951
4034
|
}
|
|
3952
4035
|
updateSettings(e) {
|
|
3953
4036
|
Object.assign(this._networkLimits.badNet, e?.badNet || {}), Object.assign(this._networkLimits.goodNet, e?.goodNet || {});
|
|
@@ -3971,7 +4054,7 @@ var Mr = class {
|
|
|
3971
4054
|
let { rtt: t, loss: n, bitrate: r } = e || {};
|
|
3972
4055
|
this._remoteNetworkStat.rtt = t || 0, this._remoteNetworkStat.loss = n || 0, this._remoteNetworkStat.bitrate = r || 0;
|
|
3973
4056
|
}
|
|
3974
|
-
},
|
|
4057
|
+
}, Jr = 30 * 1e3, Yr = class e extends Ir {
|
|
3975
4058
|
constructor(e, t, n, r, i, a = R, o = null, s = null, c = null, l = null) {
|
|
3976
4059
|
super(n, r, l), h(this, "_participantId", void 0), h(this, "_isMaster", void 0), h(this, "_remoteSDP", {}), h(this, "_remoteCandidates", {}), h(this, "_lastRemoteSDP", null), h(this, "_animojiDataChannel", null), h(this, "_animojiReceiver", null), h(this, "_animojiSender", null), h(this, "_remoteAnimojiVersion", 1), h(this, "_isOpen", !1), h(this, "_remotePeerId", null), h(this, "_statInterval", null), h(this, "_settingsInterval", null), h(this, "_failedOnCreate", null), h(this, "_remoteStream", null), h(this, "_iceRestartTimeout", null), h(this, "_reconnectionTimeout", null), h(this, "_reconnectionPrevented", !1), h(this, "_remoteHold", !1), h(this, "_lastStat", null), h(this, "_fingerprint", null), h(this, "_neverConnected", !0), h(this, "_serverSettings", void 0), h(this, "_prevConsumerSettings", {}), h(this, "_networkLimitsForVideo", {
|
|
3977
4060
|
bad: {
|
|
@@ -3986,7 +4069,7 @@ var Mr = class {
|
|
|
3986
4069
|
worst: 320,
|
|
3987
4070
|
bad: 640,
|
|
3988
4071
|
good: 1280
|
|
3989
|
-
}), h(this, "_lastVideoMaxDimension", this._videoMaxDimensionsForNet.good), h(this, "_lastBadConnection", 0), h(this, "_perfStatReporter", void 0), h(this, "_directStatReporter", void 0), h(this, "_debug", void 0), h(this, "_logger", void 0), h(this, "_statAggregator", void 0), h(this, "_codecStatsAggregator", void 0), this._participantId = e, this._isMaster = t, this._serverSettings = i, this._debug = a, this._logger = o, this._statAggregator = s, this._codecStatsAggregator = c, this._perfStatReporter = new
|
|
4072
|
+
}), h(this, "_lastVideoMaxDimension", this._videoMaxDimensionsForNet.good), h(this, "_lastBadConnection", 0), h(this, "_perfStatReporter", void 0), h(this, "_directStatReporter", void 0), h(this, "_peerConnectionStats", void 0), h(this, "_debug", void 0), h(this, "_logger", void 0), h(this, "_statAggregator", void 0), h(this, "_codecStatsAggregator", void 0), this._participantId = e, this._isMaster = t, this._serverSettings = i, this._debug = a, this._logger = o, this._statAggregator = s, this._codecStatsAggregator = c, this._perfStatReporter = new ga(this, n, this._statAggregator, !0, this._debug), this._directStatReporter = new qr(n, this._debug), this._peerConnectionStats = new Mr(this._statAggregator), this.subscribe(this._signaling, G.NOTIFICATION, this._onSignalingNotification.bind(this)), this.subscribe(this._mediaSource, qt.TRACK_REPLACED, this._onReplacedTrack.bind(this)), this.subscribe(this._mediaSource, qt.SOURCE_CHANGED, this._applySettings.bind(this)), this.subscribe(this._directStatReporter, X.NETWORK_STATUS, this._onNetworkStatus.bind(this));
|
|
3990
4073
|
try {
|
|
3991
4074
|
this._pc = this._createPeerConnection();
|
|
3992
4075
|
} catch (e) {
|
|
@@ -4090,12 +4173,12 @@ var Mr = class {
|
|
|
4090
4173
|
iceServers: M.iceServers,
|
|
4091
4174
|
iceTransportPolicy: M.forceRelayPolicy ? "relay" : "all"
|
|
4092
4175
|
});
|
|
4093
|
-
return e.onicecandidate = this._handleIceCandidate.bind(this), e.ontrack = this._onAddTrack.bind(this), e.oniceconnectionstatechange = this._onIceConnectionStateChange.bind(this), e.onconnectionstatechange = this._onConnectionStateChange.bind(this), e.onsignalingstatechange = this._onSignalingStateChange.bind(this), this._prevConsumerSettings = {}, M.vmoji && this._createDataChannel(e, Sr.animoji, (e) => {
|
|
4176
|
+
return e.onicecandidate = this._handleIceCandidate.bind(this), e.ontrack = this._onAddTrack.bind(this), e.oniceconnectionstatechange = this._onIceConnectionStateChange.bind(this), e.onconnectionstatechange = this._onConnectionStateChange.bind(this), e.onsignalingstatechange = this._onSignalingStateChange.bind(this), this._peerConnectionStats.observe(e), this._prevConsumerSettings = {}, M.vmoji && this._createDataChannel(e, Sr.animoji, (e) => {
|
|
4094
4177
|
this._animojiDataChannel = e, this._animojiDataChannel.binaryType = "arraybuffer", this._animojiReceiver?.setDataChannel(this._animojiDataChannel), this._animojiSender?.setDataChannel(this._animojiDataChannel);
|
|
4095
4178
|
}), e;
|
|
4096
4179
|
}
|
|
4097
4180
|
_disposePeerConnection() {
|
|
4098
|
-
if (this._disposeFirstMediaSentProbe(), this._lastStat = null, this._remoteStream) {
|
|
4181
|
+
if (this._disposeFirstMediaSentProbe(), this._peerConnectionStats.stop(), this._lastStat = null, this._remoteStream) {
|
|
4099
4182
|
let e = this._remoteStream;
|
|
4100
4183
|
e.getTracks().forEach((t) => {
|
|
4101
4184
|
t.stop(), this._triggerEvent(X.REMOTE_TRACK_REMOVED, e, t);
|
|
@@ -4144,7 +4227,7 @@ var Mr = class {
|
|
|
4144
4227
|
try {
|
|
4145
4228
|
await this._pc.addIceCandidate(new RTCIceCandidate(t));
|
|
4146
4229
|
} catch (e) {
|
|
4147
|
-
throw this._logger?.log(C.ERROR, "addIceCandidate-direct"), this._debug.error("Unable to add remote ice candidate", e, {
|
|
4230
|
+
throw this._logger?.log(C.ERROR, "addIceCandidate-direct"), this._peerConnectionStats.logIceCandidateAddFailed(t, e), this._debug.error("Unable to add remote ice candidate", e, {
|
|
4148
4231
|
participantId: this._participantId,
|
|
4149
4232
|
candidate: t
|
|
4150
4233
|
}), e;
|
|
@@ -4263,7 +4346,7 @@ var Mr = class {
|
|
|
4263
4346
|
this._reconnectionTimeout && (clearTimeout(this._reconnectionTimeout), this._reconnectionTimeout = null), this._iceRestartTimeout && (clearTimeout(this._iceRestartTimeout), this._iceRestartTimeout = null);
|
|
4264
4347
|
}
|
|
4265
4348
|
_startIceRestart() {
|
|
4266
|
-
this._isMaster ? (this._logger?.log(C.ICE_RESTART), this._debug.log("Ice restart", { participantId: this._participantId }), this._createOffer(!0).catch(this.close.bind(this))) : this._debug.debug("Waiting for ice restart...", { participantId: this._participantId }), this._iceRestartTimeout = window.setTimeout(() => {
|
|
4349
|
+
this._isMaster ? (this._peerConnectionStats.logIceRestart(), this._logger?.log(C.ICE_RESTART), this._debug.log("Ice restart", { participantId: this._participantId }), this._createOffer(!0).catch(this.close.bind(this))) : this._debug.debug("Waiting for ice restart...", { participantId: this._participantId }), this._iceRestartTimeout = window.setTimeout(() => {
|
|
4267
4350
|
this._iceRestartTimeout = null, this._debug.error("Ice restart failed", { participantId: this._participantId }), this._logger?.log(C.ERROR, "iceRestart-direct"), this._requestTopologySwitch();
|
|
4268
4351
|
}, M.iceRestartWaitTime);
|
|
4269
4352
|
}
|
|
@@ -4385,7 +4468,7 @@ var Mr = class {
|
|
|
4385
4468
|
async _checkPPTNetwork(e) {
|
|
4386
4469
|
if (!M.switchVideoAtBadNetwork || !e.inbound.transport.averageNetStat) return;
|
|
4387
4470
|
let { averageNetStat: t } = e.inbound.transport, n = t.currentRoundTripTime <= this._networkLimitsForVideo.good.rtt && t.lostPercent <= this._networkLimitsForVideo.good.loss, r = t.currentRoundTripTime >= this._networkLimitsForVideo.bad.rtt || t.lostPercent >= this._networkLimitsForVideo.bad.loss, i = t.currentRoundTripTime < this._networkLimitsForVideo.bad.rtt, a = this._videoMaxDimensionsForNet.good, o = Er.L1T1;
|
|
4388
|
-
if (r ? (this._lastBadConnection = Date.now(), i ? (a = this._videoMaxDimensionsForNet.bad, o = Er.L1T2) : (a = this._videoMaxDimensionsForNet.worst, o = Er.L1T3)) : n && (a = this._videoMaxDimensionsForNet.good, o = Er.L1T1), !(a < this._lastVideoMaxDimension || Date.now() - this._lastBadConnection >
|
|
4471
|
+
if (r ? (this._lastBadConnection = Date.now(), i ? (a = this._videoMaxDimensionsForNet.bad, o = Er.L1T2) : (a = this._videoMaxDimensionsForNet.worst, o = Er.L1T3)) : n && (a = this._videoMaxDimensionsForNet.good, o = Er.L1T1), !(a < this._lastVideoMaxDimension || Date.now() - this._lastBadConnection > Jr) || this._lastVideoMaxDimension === a) return;
|
|
4389
4472
|
let s = this._serverSettings.camera;
|
|
4390
4473
|
if (!s || !await this._isSVCSupported(e, o)) return;
|
|
4391
4474
|
this._debug.debug("Switch outbound video frame size and scalabilityMode", {
|
|
@@ -4450,9 +4533,9 @@ var Mr = class {
|
|
|
4450
4533
|
}, n(r)) : this._debug.error(`[${t}] data channel open failed, state [${e}]`);
|
|
4451
4534
|
};
|
|
4452
4535
|
}
|
|
4453
|
-
},
|
|
4536
|
+
}, Xr = /* @__PURE__ */ function(e) {
|
|
4454
4537
|
return e.AUDIO_MIX = "audio-mix", e.PARTICIPANT_AGNOSTIC_TRACK_PREFIX = "pat", e.TRANSPARENT_AUDIO_TRACK_PREFIX = "ta", e;
|
|
4455
|
-
}({}),
|
|
4538
|
+
}({}), Zr = 16, Qr = class e {
|
|
4456
4539
|
constructor(e, t, n, r = R) {
|
|
4457
4540
|
h(this, "_datachannel", void 0), h(this, "_participantIdRegistry", void 0), h(this, "_asrCallback", void 0), h(this, "_textDecoder", void 0), h(this, "_debug", void 0), this._debug = r, this._debug.debug("AsrReceiver started"), this._datachannel = e, this._participantIdRegistry = t, this._asrCallback = n, this._textDecoder = new TextDecoder(), this._datachannel.onmessage = (e) => this._onDataChannelMessage(e.data);
|
|
4458
4541
|
}
|
|
@@ -4466,7 +4549,7 @@ var Mr = class {
|
|
|
4466
4549
|
ssrc: a,
|
|
4467
4550
|
timestamp: o,
|
|
4468
4551
|
duration: s,
|
|
4469
|
-
data: e.slice(
|
|
4552
|
+
data: e.slice(Zr)
|
|
4470
4553
|
};
|
|
4471
4554
|
}
|
|
4472
4555
|
_onDataChannelMessage(t) {
|
|
@@ -4486,7 +4569,7 @@ var Mr = class {
|
|
|
4486
4569
|
destroy() {
|
|
4487
4570
|
this._datachannel.onmessage = null;
|
|
4488
4571
|
}
|
|
4489
|
-
},
|
|
4572
|
+
}, $r, ei = class {
|
|
4490
4573
|
constructor() {
|
|
4491
4574
|
h(this, "_value", 1);
|
|
4492
4575
|
}
|
|
@@ -4497,10 +4580,10 @@ var Mr = class {
|
|
|
4497
4580
|
this._value = e;
|
|
4498
4581
|
}
|
|
4499
4582
|
};
|
|
4500
|
-
|
|
4583
|
+
$r = ei, h(ei, "_instance", null), h(ei, "getInstance", () => ($r._instance || ($r._instance = new $r()), $r._instance));
|
|
4501
4584
|
//#endregion
|
|
4502
4585
|
//#region src/classes/ParticipantIdRegistry.ts
|
|
4503
|
-
var
|
|
4586
|
+
var ti = class {
|
|
4504
4587
|
constructor(e = R) {
|
|
4505
4588
|
h(this, "streamDescriptionByCompactId", /* @__PURE__ */ new Map()), h(this, "compactIdByStreamDescription", /* @__PURE__ */ new Map()), h(this, "_debug", void 0), this._debug = e;
|
|
4506
4589
|
}
|
|
@@ -4616,7 +4699,7 @@ var Qr = class {
|
|
|
4616
4699
|
this._debug.error("unexpected null sequenceNumber", e, r);
|
|
4617
4700
|
continue;
|
|
4618
4701
|
}
|
|
4619
|
-
let l =
|
|
4702
|
+
let l = Xr.PARTICIPANT_AGNOSTIC_TRACK_PREFIX + "-" + e, u = i ? i >>> 0 : null;
|
|
4620
4703
|
n.push({
|
|
4621
4704
|
participantStreamDescription: c,
|
|
4622
4705
|
streamId: l,
|
|
@@ -4634,7 +4717,7 @@ var Qr = class {
|
|
|
4634
4717
|
}
|
|
4635
4718
|
}, Y = /* @__PURE__ */ function(e) {
|
|
4636
4719
|
return e.INIT = "init", e.READY = "ready", e.FRAME = "frame", e.SET_BITRATE = "set_bitrate", e.ERROR = "error", e.DEBUG = "debug", e.LOG_ERROR = "log_error", e;
|
|
4637
|
-
}({}),
|
|
4720
|
+
}({}), ni = class {
|
|
4638
4721
|
constructor(e = R, t = null) {
|
|
4639
4722
|
h(this, "_worker", null), h(this, "_debug", void 0), h(this, "_logger", void 0), this._debug = e, this._logger = t;
|
|
4640
4723
|
}
|
|
@@ -4699,7 +4782,7 @@ var Qr = class {
|
|
|
4699
4782
|
static isBrowserSupported() {
|
|
4700
4783
|
throw Error("Not implemented");
|
|
4701
4784
|
}
|
|
4702
|
-
},
|
|
4785
|
+
}, ri = class extends ni {
|
|
4703
4786
|
constructor(e = R, t = null) {
|
|
4704
4787
|
super(e, t);
|
|
4705
4788
|
}
|
|
@@ -4723,7 +4806,7 @@ var Qr = class {
|
|
|
4723
4806
|
static isBrowserSupported() {
|
|
4724
4807
|
return "WebAssembly" in window && "Worker" in window;
|
|
4725
4808
|
}
|
|
4726
|
-
},
|
|
4809
|
+
}, ii = class extends ni {
|
|
4727
4810
|
constructor(e = R, t = null) {
|
|
4728
4811
|
super(e, t);
|
|
4729
4812
|
}
|
|
@@ -4746,7 +4829,7 @@ var Qr = class {
|
|
|
4746
4829
|
static isBrowserSupported() {
|
|
4747
4830
|
return "VideoDecoder" in window && "Worker" in window && "VideoFrame" in window && !T.isBrokenVP9Decoder() && T.browserName() !== "Firefox";
|
|
4748
4831
|
}
|
|
4749
|
-
},
|
|
4832
|
+
}, ai = class {
|
|
4750
4833
|
constructor(e = null, t = 0) {
|
|
4751
4834
|
h(this, "_counter", 0), h(this, "_interval", 0), h(this, "_lastCalculationTime", Date.now()), h(this, "_onCalculated", null), this._onCalculated = e, t && (this._interval = window.setInterval(() => this.calculate(), t));
|
|
4752
4835
|
}
|
|
@@ -4760,7 +4843,7 @@ var Qr = class {
|
|
|
4760
4843
|
destroy() {
|
|
4761
4844
|
window.clearInterval(this._interval), this._interval = 0;
|
|
4762
4845
|
}
|
|
4763
|
-
},
|
|
4846
|
+
}, oi = class {
|
|
4764
4847
|
constructor(e, t) {
|
|
4765
4848
|
h(this, "_participantId", void 0), h(this, "_statAggregator", void 0), h(this, "_firstFrameReceived", !1), this._participantId = e, this._statAggregator = t;
|
|
4766
4849
|
}
|
|
@@ -4775,14 +4858,14 @@ var Qr = class {
|
|
|
4775
4858
|
height: t
|
|
4776
4859
|
});
|
|
4777
4860
|
}
|
|
4778
|
-
},
|
|
4861
|
+
}, si = 65536, ci = "MARK_SCREENSHARE_FREEZE_DURATION", li = class e {
|
|
4779
4862
|
constructor(e, t, n, r, i, a = R) {
|
|
4780
|
-
h(this, "_participantId", void 0), h(this, "_onStream", void 0), h(this, "_onStat", void 0), h(this, "_onKeyFrameRequested", void 0), h(this, "_statScreenShareFirstFrame", void 0), h(this, "_debug", void 0), h(this, "_chunks", []), this._participantId = e, this._onStream = t, this._onStat = n, this._onKeyFrameRequested = i, this._statScreenShareFirstFrame = new
|
|
4863
|
+
h(this, "_participantId", void 0), h(this, "_onStream", void 0), h(this, "_onStat", void 0), h(this, "_onKeyFrameRequested", void 0), h(this, "_statScreenShareFirstFrame", void 0), h(this, "_debug", void 0), h(this, "_chunks", []), this._participantId = e, this._onStream = t, this._onStat = n, this._onKeyFrameRequested = i, this._statScreenShareFirstFrame = new oi(e, r), this._debug = a;
|
|
4781
4864
|
}
|
|
4782
4865
|
appendChunk(t) {
|
|
4783
4866
|
let n = this._chunks.length;
|
|
4784
4867
|
if (t.start) this._measureFreezeDuration(!1), this._measureFreezeDuration(!0), n && (this._debug.warn("[FrameBuilder] Cleanup buffer", Array.prototype.slice.call(this._chunks)), this._chunks = []);
|
|
4785
|
-
else if (!n || (this._chunks[n - 1].sequence + 1) %
|
|
4868
|
+
else if (!n || (this._chunks[n - 1].sequence + 1) % si !== t.sequence) {
|
|
4786
4869
|
this._debug.warn("[FrameBuilder] Got incorrect chunk");
|
|
4787
4870
|
return;
|
|
4788
4871
|
}
|
|
@@ -4799,7 +4882,7 @@ var Qr = class {
|
|
|
4799
4882
|
}
|
|
4800
4883
|
}
|
|
4801
4884
|
destroy() {
|
|
4802
|
-
W.clearMark(
|
|
4885
|
+
W.clearMark(ci), W.clearMark(W.getMarkNameScreenshareFirstFrame(this._participantId)), this._chunks = [];
|
|
4803
4886
|
}
|
|
4804
4887
|
_processFrameData() {
|
|
4805
4888
|
let e = this._chunks;
|
|
@@ -4822,13 +4905,13 @@ var Qr = class {
|
|
|
4822
4905
|
}
|
|
4823
4906
|
_measureFreezeDuration(e) {
|
|
4824
4907
|
if (e) {
|
|
4825
|
-
W.setMark(
|
|
4908
|
+
W.setMark(ci);
|
|
4826
4909
|
return;
|
|
4827
4910
|
}
|
|
4828
|
-
let t = W.measureMark(
|
|
4911
|
+
let t = W.measureMark(ci);
|
|
4829
4912
|
t !== null && t > 1e3 && this._onStat({ freeze_duration: t });
|
|
4830
4913
|
}
|
|
4831
|
-
},
|
|
4914
|
+
}, ui = class {
|
|
4832
4915
|
constructor(e) {
|
|
4833
4916
|
h(this, "_onStream", void 0), this._onStream = e;
|
|
4834
4917
|
}
|
|
@@ -4841,7 +4924,7 @@ var Qr = class {
|
|
|
4841
4924
|
static isBrowserSupported() {
|
|
4842
4925
|
throw Error("Method `isBrowserSupported` is not implemented");
|
|
4843
4926
|
}
|
|
4844
|
-
},
|
|
4927
|
+
}, di = class extends ui {
|
|
4845
4928
|
constructor(e, t = R) {
|
|
4846
4929
|
super(e), h(this, "_useImageBitmap", void 0), h(this, "_canvas", null), h(this, "_canvasContext", null), h(this, "_stream", null), h(this, "_track", null), h(this, "_debug", void 0), this._debug = t, this._debug.debug("CanvasRenderer started"), this._useImageBitmap = "ImageBitmap" in window;
|
|
4847
4930
|
}
|
|
@@ -4901,7 +4984,7 @@ var Qr = class {
|
|
|
4901
4984
|
static isBrowserSupported() {
|
|
4902
4985
|
return ("CanvasCaptureMediaStream" in window || "CanvasCaptureMediaStreamTrack" in window) && !(T.browserName() === "Safari" && Number(T.browserVersion()) === 15);
|
|
4903
4986
|
}
|
|
4904
|
-
},
|
|
4987
|
+
}, fi = class extends ui {
|
|
4905
4988
|
constructor(e, t = R) {
|
|
4906
4989
|
super(e), h(this, "_generator", void 0), h(this, "_writer", void 0), h(this, "_stream", void 0), h(this, "_debug", void 0), this._debug = t, this._debug.debug("TrackGeneratorRenderer started"), this._generator = new MediaStreamTrackGenerator({ kind: k.video }), this._writer = this._generator.writable.getWriter(), this._stream = new MediaStream([this._generator]), this._onStream(this._stream);
|
|
4907
4990
|
}
|
|
@@ -4912,9 +4995,9 @@ var Qr = class {
|
|
|
4912
4995
|
this._writer.releaseLock(), this._generator.writable.close().then(() => this._generator.stop()), this._debug.debug("TrackGeneratorRenderer destroyed");
|
|
4913
4996
|
}
|
|
4914
4997
|
static isBrowserSupported() {
|
|
4915
|
-
return "VideoFrame" in window && "MediaStreamTrackGenerator" in window &&
|
|
4998
|
+
return "VideoFrame" in window && "MediaStreamTrackGenerator" in window && ii.isBrowserSupported();
|
|
4916
4999
|
}
|
|
4917
|
-
},
|
|
5000
|
+
}, pi = class extends li {
|
|
4918
5001
|
constructor(e, t, n, r, i, a = R, o = null) {
|
|
4919
5002
|
super(e, t, n, r, i, a), h(this, "_renderer", void 0), h(this, "_decoder", void 0), h(this, "_decoderReady", !1), h(this, "_decoderBusy", !1), h(this, "_decoderQueue", []), h(this, "_webCodecsRetryAttempted", !1), h(this, "_fpsMeter", void 0), h(this, "_logger", void 0), this._logger = o, this._debug.debug(`StreamBuilder started for participant [${e}]`), this._initFpsMeter(), this._initRenderer(), this._initDecoder();
|
|
4920
5003
|
}
|
|
@@ -4922,16 +5005,16 @@ var Qr = class {
|
|
|
4922
5005
|
e.keyframe && (this._decoderQueue = []), this._decoderQueue.push(e), this._decodeQueue();
|
|
4923
5006
|
}
|
|
4924
5007
|
_initFpsMeter() {
|
|
4925
|
-
this._fpsMeter = new
|
|
5008
|
+
this._fpsMeter = new ai((e) => this._debug.log(`[StreamBuilder][${this._participantId}] fps: ${e}`), 2e4);
|
|
4926
5009
|
}
|
|
4927
5010
|
_initRenderer(e = !1) {
|
|
4928
|
-
e || !
|
|
5011
|
+
e || !fi.isBrowserSupported() ? this._renderer = new di(this._onStream, this._debug) : this._renderer = new fi(this._onStream, this._debug);
|
|
4929
5012
|
}
|
|
4930
5013
|
_initDecoder(e = !1) {
|
|
4931
|
-
e || !
|
|
5014
|
+
e || !ii.isBrowserSupported() ? this._decoder = new ri(this._debug, this._logger) : this._decoder = new ii(this._debug, this._logger), this._decoder.init(async (e) => {
|
|
4932
5015
|
this._decoderBusy = !1, "VideoFrame" in window && e instanceof VideoFrame ? await this._renderer.drawFrame(e) : await this._renderer.drawImage(e), this._fpsMeter.increment(), this._decodeQueue();
|
|
4933
5016
|
}, (e) => {
|
|
4934
|
-
if (this._decoderBusy = !1, this._decoder instanceof
|
|
5017
|
+
if (this._decoderBusy = !1, this._decoder instanceof ii && typeof e == "string" && e.includes("EncodingError")) {
|
|
4935
5018
|
this._decoderQueue = [], !this._webCodecsRetryAttempted && e.includes("reset because error during decoding") ? (this._webCodecsRetryAttempted = !0, this._debug.warn("StreamBuilder retry WebCodecs with software decoder"), this._onKeyFrameRequested?.()) : this._switchToLibVPXDecoder();
|
|
4936
5019
|
return;
|
|
4937
5020
|
}
|
|
@@ -4939,7 +5022,7 @@ var Qr = class {
|
|
|
4939
5022
|
}, this._onKeyFrameRequested).then(() => {
|
|
4940
5023
|
this._decoderReady = !0, this._decodeQueue();
|
|
4941
5024
|
}).catch((e) => {
|
|
4942
|
-
this._debug.warn("StreamBuilder decoder init failed", e), this._decoder instanceof
|
|
5025
|
+
this._debug.warn("StreamBuilder decoder init failed", e), this._decoder instanceof ii && this._switchToLibVPXDecoder();
|
|
4943
5026
|
});
|
|
4944
5027
|
}
|
|
4945
5028
|
_switchToLibVPXDecoder() {
|
|
@@ -4954,20 +5037,20 @@ var Qr = class {
|
|
|
4954
5037
|
super.destroy(), this._fpsMeter.destroy(), this._decoder.destroy(), this._renderer.destroy(), this._debug.debug(`StreamBuilder destroyed for participant ${this._participantId}`);
|
|
4955
5038
|
}
|
|
4956
5039
|
static isBrowserSupported() {
|
|
4957
|
-
return
|
|
5040
|
+
return di.isBrowserSupported() || fi.isBrowserSupported();
|
|
4958
5041
|
}
|
|
4959
|
-
},
|
|
4960
|
-
function
|
|
5042
|
+
}, mi = 1, hi = 1, gi = 2, _i = 0, vi = 1, yi = 2, bi = 4, xi = 8;
|
|
5043
|
+
function Si(e, t, n, r, i, a, o) {
|
|
4961
5044
|
let s = 0;
|
|
4962
|
-
t && (s |=
|
|
5045
|
+
t && (s |= vi), n && (s |= yi), r && (s |= bi), o || (s |= xi);
|
|
4963
5046
|
let c = /* @__PURE__ */ new ArrayBuffer(11), l = new DataView(c);
|
|
4964
|
-
if (l.setUint8(0,
|
|
5047
|
+
if (l.setUint8(0, mi), l.setUint16(1, i), l.setUint32(3, e), l.setUint8(7, +!!a), l.setUint16(8, _i), l.setUint8(10, s), !o) return c;
|
|
4965
5048
|
let u = new Uint8Array(c.byteLength + o.byteLength);
|
|
4966
5049
|
return u.set(new Uint8Array(c), 0), u.set(new Uint8Array(o), c.byteLength), u.buffer;
|
|
4967
5050
|
}
|
|
4968
|
-
function
|
|
4969
|
-
let t = new DataView(e), n = t.getUint8(0), r = t.getUint16(1), i = t.getUint32(3), a = t.getUint8(7) === 1, o = t.getUint16(8), s = t.getUint8(10), c = !!(s &
|
|
4970
|
-
if (n !==
|
|
5051
|
+
function Ci(e) {
|
|
5052
|
+
let t = new DataView(e), n = t.getUint8(0), r = t.getUint16(1), i = t.getUint32(3), a = t.getUint8(7) === 1, o = t.getUint16(8), s = t.getUint8(10), c = !!(s & vi), l = !!(s & yi), u = !!(s & bi), d = !!(s & xi);
|
|
5053
|
+
if (n !== mi) throw Error(`Unexpected protocol version. Got ${n}, expected ${mi}`);
|
|
4971
5054
|
return {
|
|
4972
5055
|
timestamp: i,
|
|
4973
5056
|
start: c,
|
|
@@ -4980,26 +5063,26 @@ function bi(e) {
|
|
|
4980
5063
|
data: e.slice(11)
|
|
4981
5064
|
};
|
|
4982
5065
|
}
|
|
4983
|
-
function
|
|
5066
|
+
function wi(e) {
|
|
4984
5067
|
if (!e || !e.byteLength || e.byteLength !== 4) return !1;
|
|
4985
5068
|
let t = new DataView(e);
|
|
4986
|
-
return !(t.getUint8(0) !==
|
|
5069
|
+
return !(t.getUint8(0) !== mi || t.getUint8(1) !== hi || t.getUint16(2) !== _i);
|
|
4987
5070
|
}
|
|
4988
|
-
function
|
|
5071
|
+
function Ti(e) {
|
|
4989
5072
|
if (!e || !e.byteLength || e.byteLength !== 10) return null;
|
|
4990
5073
|
let t = new DataView(e);
|
|
4991
|
-
return t.getUint8(0) !==
|
|
5074
|
+
return t.getUint8(0) !== mi || t.getUint8(1) !== gi || t.getUint16(2) !== _i ? null : {
|
|
4992
5075
|
seq: t.getUint16(4),
|
|
4993
5076
|
ts2: t.getUint32(6)
|
|
4994
5077
|
};
|
|
4995
5078
|
}
|
|
4996
|
-
function
|
|
5079
|
+
function Ei(e) {
|
|
4997
5080
|
let t = /* @__PURE__ */ new ArrayBuffer(4), n = new DataView(t);
|
|
4998
|
-
return n.setUint8(0,
|
|
5081
|
+
return n.setUint8(0, mi), n.setUint8(1, hi), n.setUint16(2, e), t;
|
|
4999
5082
|
}
|
|
5000
5083
|
//#endregion
|
|
5001
5084
|
//#region src/classes/screenshare/WebmBuilder.ts
|
|
5002
|
-
var
|
|
5085
|
+
var Di = 2 ** 15 - 1, Oi = 1, ki = 5, Ai = 5, ji = class e {
|
|
5003
5086
|
constructor(e, t = R) {
|
|
5004
5087
|
h(this, "_mediaSource", void 0), h(this, "_codec", void 0), h(this, "_sourceBuffer", null), h(this, "_queue", []), h(this, "_clearBufferTill", 0), h(this, "_debug", void 0), this._mediaSource = new MediaSource(), this._codec = e, this._debug = t;
|
|
5005
5088
|
let n = () => {
|
|
@@ -5042,8 +5125,8 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
|
|
|
5042
5125
|
this._mediaSource?.readyState === "open" && this._sourceBuffer?.abort();
|
|
5043
5126
|
let e = this._sourceBuffer?.buffered, t = e?.length;
|
|
5044
5127
|
if (!t) return;
|
|
5045
|
-
let n = e.start(0), r = Math.max(0, e.end(t - 1) -
|
|
5046
|
-
r - n >
|
|
5128
|
+
let n = e.start(0), r = Math.max(0, e.end(t - 1) - ki);
|
|
5129
|
+
r - n > Ai && (this._clearBufferTill = r);
|
|
5047
5130
|
}
|
|
5048
5131
|
destroy() {
|
|
5049
5132
|
this._queue = [], this._mediaSource.readyState === "open" && (this._sourceBuffer?.abort(), this._mediaSource.endOfStream()), this._sourceBuffer = null, this._clearBufferTill = 0;
|
|
@@ -5057,7 +5140,7 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
|
|
|
5057
5140
|
get buffered() {
|
|
5058
5141
|
return this._sourceBuffer?.buffered;
|
|
5059
5142
|
}
|
|
5060
|
-
},
|
|
5143
|
+
}, Mi = class e extends li {
|
|
5061
5144
|
constructor(e, t, n, r, i = R) {
|
|
5062
5145
|
super(e, t, n, r, void 0, i), h(this, "_mediaBuffer", null), h(this, "_video", null), h(this, "_stream", null), h(this, "_earliestTimestamp", 0), h(this, "_clusterStartTime", 0), h(this, "_lastFrameTimestamp", 0), this._debug.debug(`[WebmBuilder] started for participant [${e}]`);
|
|
5063
5146
|
}
|
|
@@ -5081,8 +5164,8 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
|
|
|
5081
5164
|
u.element(u.ID.MuxingApp, u.string("vk-webm-builder")),
|
|
5082
5165
|
u.element(u.ID.WritingApp, u.string("vk-webm-builder"))
|
|
5083
5166
|
]), i = [u.element(u.ID.PixelWidth, u.number(e)), u.element(u.ID.PixelHeight, u.number(t))], a = u.element(u.ID.Tracks, u.element(u.ID.TrackEntry, [
|
|
5084
|
-
u.element(u.ID.TrackNumber, u.number(
|
|
5085
|
-
u.element(u.ID.TrackUID, u.number(
|
|
5167
|
+
u.element(u.ID.TrackNumber, u.number(Oi)),
|
|
5168
|
+
u.element(u.ID.TrackUID, u.number(Oi)),
|
|
5086
5169
|
u.element(u.ID.TrackType, u.number(1)),
|
|
5087
5170
|
u.element(u.ID.FlagLacing, u.number(0)),
|
|
5088
5171
|
u.element(u.ID.DefaultDuration, u.number(1e9)),
|
|
@@ -5095,7 +5178,7 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
|
|
|
5095
5178
|
return u.unknownSizeElement(u.ID.Cluster, [u.element(u.ID.Timecode, u.number(Math.round(e)))]);
|
|
5096
5179
|
}
|
|
5097
5180
|
_createVideo(e) {
|
|
5098
|
-
this._mediaBuffer = new
|
|
5181
|
+
this._mediaBuffer = new ji(e, this._debug), this._video = document.createElement("video"), this._video.autoplay = !0, this._video.controls = !1, this._video.muted = !0, this._video.style.pointerEvents = "none", this._video.style.visibility = "hidden", this._video.style.position = "absolute", this._video.style.width = "160px", this._video.style.height = "90px", this._video.style.bottom = "0", this._video.style.right = "0", this._video.style.zIndex = "5000", this._video.src = URL.createObjectURL(this._mediaBuffer.mediaSource), document.body.appendChild(this._video);
|
|
5099
5182
|
let t = () => {
|
|
5100
5183
|
if (this._video?.src) {
|
|
5101
5184
|
this._debug.warn(`[WebmBuilder] Video paused for participant [${this._participantId}], try to play again`);
|
|
@@ -5122,13 +5205,13 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
|
|
|
5122
5205
|
this._mediaBuffer?.append(a);
|
|
5123
5206
|
}
|
|
5124
5207
|
let i = Math.round(r - this._clusterStartTime);
|
|
5125
|
-
if (i >
|
|
5208
|
+
if (i > Di && (this._clusterStartTime = r, i = 0), i === 0) {
|
|
5126
5209
|
this._debug.debug(`[WebmBuilder] Cluster header for participant [${this._participantId}]`);
|
|
5127
5210
|
let t = e._genClusterHeader(this._clusterStartTime);
|
|
5128
5211
|
this._mediaBuffer?.append(t);
|
|
5129
5212
|
}
|
|
5130
5213
|
let a = u.element(u.ID.SimpleBlock, [
|
|
5131
|
-
u.vintEncodedNumber(
|
|
5214
|
+
u.vintEncodedNumber(Oi),
|
|
5132
5215
|
u.bytes(e._intToU16BE(i)),
|
|
5133
5216
|
u.number(!!t.keyframe << 7),
|
|
5134
5217
|
u.bytes(t.frameData)
|
|
@@ -5141,12 +5224,12 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
|
|
|
5141
5224
|
static isBrowserSupported() {
|
|
5142
5225
|
return "captureStream" in window.HTMLVideoElement?.prototype && window.MediaSource?.isTypeSupported("video/webm; codecs=\"vp8\"") && window.MediaSource?.isTypeSupported("video/webm; codecs=\"vp9\"");
|
|
5143
5226
|
}
|
|
5144
|
-
},
|
|
5227
|
+
}, Ni = class {
|
|
5145
5228
|
constructor(e, t, n, r, i, a = null, o = R, s = null) {
|
|
5146
5229
|
h(this, "_datachannel", void 0), h(this, "_participantIdRegistry", null), h(this, "_streamBuilders", {}), h(this, "_onStream", () => {}), h(this, "_onEos", () => {}), h(this, "_onStat", void 0), h(this, "_debug", void 0), h(this, "_logger", void 0), h(this, "_statAggregator", void 0), this._debug = o, this._logger = s, this._statAggregator = a, this._debug.debug("ScreenCaptureReceiver started"), this._datachannel = e, this._participantIdRegistry = t, this._onStream = n, this._onEos = r, this._onStat = i, this._datachannel.onmessage = (e) => this._onDataChannelMessage(e.data);
|
|
5147
5230
|
}
|
|
5148
5231
|
_onDataChannelMessage(e) {
|
|
5149
|
-
let t =
|
|
5232
|
+
let t = Ci(e), n = this._participantIdRegistry?.getStreamDescription(t.ssrc)?.participantId;
|
|
5150
5233
|
if (!n) {
|
|
5151
5234
|
this._debug.warn(`Participant id for ssrc ${t.ssrc} not found in registry`);
|
|
5152
5235
|
return;
|
|
@@ -5158,7 +5241,7 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
|
|
|
5158
5241
|
let r = this._streamBuilders[n];
|
|
5159
5242
|
if (!r) {
|
|
5160
5243
|
let e = (e) => this._onStream(n, e);
|
|
5161
|
-
r = M.screenShareWebmBuilder &&
|
|
5244
|
+
r = M.screenShareWebmBuilder && Mi.isBrowserSupported() ? new Mi(n, e, this._onStat, this._statAggregator, this._debug) : new pi(n, e, this._onStat, this._statAggregator, () => {
|
|
5162
5245
|
this._requestKeyFrame(t.ssrc);
|
|
5163
5246
|
}, this._debug, this._logger), this._streamBuilders[n] = r;
|
|
5164
5247
|
}
|
|
@@ -5166,7 +5249,7 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
|
|
|
5166
5249
|
}
|
|
5167
5250
|
_requestKeyFrame(e) {
|
|
5168
5251
|
if (!(!this._datachannel || this._datachannel.readyState !== "open")) try {
|
|
5169
|
-
let t =
|
|
5252
|
+
let t = Ei(e);
|
|
5170
5253
|
this._datachannel.send(t), this._debug.debug(`ScreenCaptureReceiver request for keyframe for ssrc ${e}`);
|
|
5171
5254
|
} catch (e) {
|
|
5172
5255
|
this._debug.warn("Failed to send keyframe request", e);
|
|
@@ -5179,7 +5262,7 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
|
|
|
5179
5262
|
destroy() {
|
|
5180
5263
|
this._datachannel.onbufferedamountlow = null, this._datachannel.onmessage = null, this._onStream = () => {}, Object.values(this._streamBuilders).forEach((e) => e.destroy()), this._streamBuilders = {}, this._participantIdRegistry = null, this._debug.debug("ScreenCaptureReceiver destroyed");
|
|
5181
5264
|
}
|
|
5182
|
-
},
|
|
5265
|
+
}, Pi = class {
|
|
5183
5266
|
constructor(e, t, n) {
|
|
5184
5267
|
h(this, "_prev", void 0), h(this, "_next", void 0), h(this, "_data", void 0), this._next = n, n && (n.prev = this), this._prev = t, t && (t.next = this), this._data = e;
|
|
5185
5268
|
}
|
|
@@ -5198,7 +5281,7 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
|
|
|
5198
5281
|
get data() {
|
|
5199
5282
|
return this._data;
|
|
5200
5283
|
}
|
|
5201
|
-
},
|
|
5284
|
+
}, Fi = class {
|
|
5202
5285
|
constructor() {
|
|
5203
5286
|
h(this, "_head", null), h(this, "_tail", null), h(this, "_length", 0);
|
|
5204
5287
|
}
|
|
@@ -5206,7 +5289,7 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
|
|
|
5206
5289
|
return this._length;
|
|
5207
5290
|
}
|
|
5208
5291
|
push(...e) {
|
|
5209
|
-
for (let t of e) this._tail = new
|
|
5292
|
+
for (let t of e) this._tail = new Pi(t, this._tail, null), this._head || (this._head = this._tail), this._length++;
|
|
5210
5293
|
}
|
|
5211
5294
|
merge(e) {
|
|
5212
5295
|
this._tail && (this._tail.next = e._head), this._head || (this._head = e._head), this._tail = e._tail, this._length += e._length, e.clear();
|
|
@@ -5236,7 +5319,7 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
|
|
|
5236
5319
|
for (; t !== null;) e.push(t.data), t = t.next;
|
|
5237
5320
|
return e.length ? JSON.stringify(e, (e, t) => t instanceof Error ? String(t) : t) : "";
|
|
5238
5321
|
}
|
|
5239
|
-
},
|
|
5322
|
+
}, Ii = 1e3, Li = class extends ni {
|
|
5240
5323
|
constructor(e, t, n, r, i = R, a = null) {
|
|
5241
5324
|
super(i, a), h(this, "_sourceTrack", void 0), h(this, "_onFrame", void 0), h(this, "_useCongestionControl", void 0), h(this, "_maxBitrate", void 0), h(this, "_useImageCapture", void 0), h(this, "_video", null), h(this, "_imageCapture", null), h(this, "_canvas", null), h(this, "_canvasCtx", null), h(this, "_frameReadTimeout", 0), h(this, "_lastFrame", null), this._sourceTrack = e, this._onFrame = t, this._useCongestionControl = n, this._maxBitrate = r, this._useImageCapture = "ImageCapture" in window && ImageCapture.prototype.grabFrame !== void 0 && "ImageBitmap" in window, (e.readyState !== "live" || !e.enabled || e.muted) && (this._useImageCapture = !1);
|
|
5242
5325
|
}
|
|
@@ -5322,7 +5405,7 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
|
|
|
5322
5405
|
let t = this._drawFrameData(this._lastFrame);
|
|
5323
5406
|
this._encode(t, e);
|
|
5324
5407
|
} else this._onFrame(null);
|
|
5325
|
-
},
|
|
5408
|
+
}, Ii), this._getFrameBitmap().then((t) => {
|
|
5326
5409
|
window.clearTimeout(this._frameReadTimeout), this._lastFrame?.close(), this._lastFrame = t;
|
|
5327
5410
|
let n = this._drawFrameData(t);
|
|
5328
5411
|
this._encode(n, e);
|
|
@@ -5343,7 +5426,7 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
|
|
|
5343
5426
|
destroy() {
|
|
5344
5427
|
this._removeWorker(), this._removeStream(), this._removeDom(), this._debug.debug("LibVPxEncoder destroyed");
|
|
5345
5428
|
}
|
|
5346
|
-
},
|
|
5429
|
+
}, Ri = class extends ni {
|
|
5347
5430
|
constructor(e, t, n, r, i, a, o = R, s = null) {
|
|
5348
5431
|
super(o, s), h(this, "_sourceTrack", void 0), h(this, "_trackProcessor", void 0), h(this, "_onFrame", void 0), h(this, "_useCongestionControl", void 0), h(this, "_maxBitrate", void 0), h(this, "_useCbr", void 0), h(this, "_frameRate", void 0), this._sourceTrack = e, this._onFrame = t, this._useCongestionControl = n, this._maxBitrate = r, this._useCbr = i, this._frameRate = a, this._trackProcessor = new MediaStreamTrackProcessor({ track: e });
|
|
5349
5432
|
}
|
|
@@ -5389,11 +5472,11 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
|
|
|
5389
5472
|
static isBrowserSupported() {
|
|
5390
5473
|
return "VideoEncoder" in window && "Worker" in window && "EncodedVideoChunk" in window && "MediaStreamTrackProcessor" in window;
|
|
5391
5474
|
}
|
|
5392
|
-
},
|
|
5475
|
+
}, zi = 2100, Bi = 600, Vi = 1.2, Hi = .8, Ui = 2e3, Wi = 8e3, Gi = 8e3, Ki = 16e3, qi = 4, Ji = 2e3, Yi = /* @__PURE__ */ function(e) {
|
|
5393
5476
|
return e[e.NONE = 0] = "NONE", e[e.UP = 1] = "UP", e[e.DOWN = 2] = "DOWN", e;
|
|
5394
|
-
}(
|
|
5477
|
+
}(Yi || {}), Xi = class {
|
|
5395
5478
|
constructor(e, t, n, r, i, a, o, s = R) {
|
|
5396
|
-
h(this, "_onCongestion", void 0), h(this, "_ccEnabled", void 0), h(this, "_fastSharing", void 0), h(this, "_trendDelayThreshold", void 0), h(this, "_highDelayThreshold", void 0), h(this, "_targetFps", void 0), h(this, "_minBitrate", void 0), h(this, "_maxBitrate", void 0), h(this, "_targetBitrate", void 0), h(this, "_lastDown", void 0), h(this, "_lastUp", void 0), h(this, "_lastProbing", void 0), h(this, "_lastCheckDelay", void 0), h(this, "_upPenalty", 0), h(this, "_probing", void 0), h(this, "_delayAvgShort", -1), h(this, "_delayAvgLong", -1), h(this, "_minDelay", Number.MAX_VALUE), h(this, "_maxDelay", 0), h(this, "_largeDelayDuration", 0), h(this, "_lastFpsCalcMs", void 0), h(this, "_frames", 0), h(this, "_fps", 0), h(this, "_debug", void 0), this._onCongestion = e, this._ccEnabled = r, this._debug = s, this._minBitrate = t, this._maxBitrate = n, this._fastSharing = i, this._targetFps = o, a > 0 ? this._highDelayThreshold = a : this._highDelayThreshold =
|
|
5479
|
+
h(this, "_onCongestion", void 0), h(this, "_ccEnabled", void 0), h(this, "_fastSharing", void 0), h(this, "_trendDelayThreshold", void 0), h(this, "_highDelayThreshold", void 0), h(this, "_targetFps", void 0), h(this, "_minBitrate", void 0), h(this, "_maxBitrate", void 0), h(this, "_targetBitrate", void 0), h(this, "_lastDown", void 0), h(this, "_lastUp", void 0), h(this, "_lastProbing", void 0), h(this, "_lastCheckDelay", void 0), h(this, "_upPenalty", 0), h(this, "_probing", void 0), h(this, "_delayAvgShort", -1), h(this, "_delayAvgLong", -1), h(this, "_minDelay", Number.MAX_VALUE), h(this, "_maxDelay", 0), h(this, "_largeDelayDuration", 0), h(this, "_lastFpsCalcMs", void 0), h(this, "_frames", 0), h(this, "_fps", 0), h(this, "_debug", void 0), this._onCongestion = e, this._ccEnabled = r, this._debug = s, this._minBitrate = t, this._maxBitrate = n, this._fastSharing = i, this._targetFps = o, a > 0 ? this._highDelayThreshold = a : this._highDelayThreshold = zi, i && (this._highDelayThreshold = Bi), this._trendDelayThreshold = Math.round(this._highDelayThreshold / 3), this._targetBitrate = this._maxBitrate, this._probing = !1;
|
|
5397
5480
|
let c = Date.now();
|
|
5398
5481
|
this._lastDown = 0, this._lastUp = c, this._lastProbing = c, this._lastCheckDelay = 0, this._lastFpsCalcMs = 0;
|
|
5399
5482
|
}
|
|
@@ -5403,27 +5486,27 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
|
|
|
5403
5486
|
let i = 0, a = this._delayAvgShort - this._delayAvgLong, o = Math.round(Math.abs(a) * 100 / this._delayAvgLong), s = a > 40 && o > 30 && this._delayAvgShort > this._trendDelayThreshold, c = this._delayAvgShort > this._highDelayThreshold;
|
|
5404
5487
|
s || c ? i = 2 : Math.abs(a) < 40 && o < 10 && !c && (i = 1);
|
|
5405
5488
|
let l = Math.round(this._targetBitrate / 1e3), u = n;
|
|
5406
|
-
e % 20 == 0 && this._debug.debug(`#${e}: cc: delay=${t} short=${this._delayAvgShort} long=${this._delayAvgLong} delta=${a} percent=${o} -> ${
|
|
5489
|
+
e % 20 == 0 && this._debug.debug(`#${e}: cc: delay=${t} short=${this._delayAvgShort} long=${this._delayAvgLong} delta=${a} percent=${o} -> ${Yi[i]} tr=${l} br=${n}`);
|
|
5407
5490
|
let d = r - this._lastDown;
|
|
5408
|
-
if (i === 2 && d >
|
|
5409
|
-
this._probing && (this._upPenalty = Math.min(++this._upPenalty,
|
|
5410
|
-
let n =
|
|
5411
|
-
if (n >= this._targetBitrate && (n = this._targetBitrate *
|
|
5412
|
-
let r = Math.round(n / 1e3), s = Math.round(this._upPenalty *
|
|
5413
|
-
this._debug.log(`#${e}: cc: delay=${t} short=${this._delayAvgShort} long=${this._delayAvgLong} delta=${a} percent=${o} -> ${
|
|
5491
|
+
if (i === 2 && d > Ui) {
|
|
5492
|
+
this._probing && (this._upPenalty = Math.min(++this._upPenalty, qi), this._probing = !1);
|
|
5493
|
+
let n = Hi * u * 1e3;
|
|
5494
|
+
if (n >= this._targetBitrate && (n = this._targetBitrate * Hi), n = Math.max(n, this._minBitrate), n < this._targetBitrate) {
|
|
5495
|
+
let r = Math.round(n / 1e3), s = Math.round(this._upPenalty * Gi / 1e3);
|
|
5496
|
+
this._debug.log(`#${e}: cc: delay=${t} short=${this._delayAvgShort} long=${this._delayAvgLong} delta=${a} percent=${o} -> ${Yi[i]}`), this._debug.log(`#${e}: cc: DOWN delay=${t} bitrate=${u} target=${l} -> newBitrate=${r} penalty=${s}s`), this._setBitrate(n, !0), this._targetBitrate = n;
|
|
5414
5497
|
}
|
|
5415
5498
|
this._lastDown = r;
|
|
5416
5499
|
}
|
|
5417
|
-
let f = r - this._lastUp, p =
|
|
5500
|
+
let f = r - this._lastUp, p = Wi + this._upPenalty * Gi;
|
|
5418
5501
|
if (i === 1 && f > p && d > p) {
|
|
5419
|
-
let n = Math.min(this._targetBitrate *
|
|
5502
|
+
let n = Math.min(this._targetBitrate * Vi, this._maxBitrate);
|
|
5420
5503
|
if (n > this._targetBitrate) {
|
|
5421
|
-
let s = Math.round(n / 1e3), c = Math.round(this._targetBitrate / 1e3), l = Math.round(this._upPenalty *
|
|
5422
|
-
this._debug.log(`#${e}: cc: delay=${t} short=${this._delayAvgShort} long=${this._delayAvgLong} delta=${a} percent=${o} -> ${
|
|
5504
|
+
let s = Math.round(n / 1e3), c = Math.round(this._targetBitrate / 1e3), l = Math.round(this._upPenalty * Gi / 1e3);
|
|
5505
|
+
this._debug.log(`#${e}: cc: delay=${t} short=${this._delayAvgShort} long=${this._delayAvgLong} delta=${a} percent=${o} -> ${Yi[i]}`), this._debug.log(`#${e}: cc: UP bitrate=${u} target=${c} -> newBitrate=${s} penalty=${l}s`), this._setBitrate(n, !1), this._targetBitrate = n, this._probing = !0, this._lastProbing = r, this._lastUp = r;
|
|
5423
5506
|
}
|
|
5424
5507
|
}
|
|
5425
5508
|
let m = r - this._lastProbing;
|
|
5426
|
-
this._probing && m >
|
|
5509
|
+
this._probing && m > Ki && (this._probing = !1);
|
|
5427
5510
|
let ee = r - this._lastDown;
|
|
5428
5511
|
this._upPenalty > 0 && ee > 3 * p && (this._debug.log(`#${e}: cc: UP reset penalty: oldPenalty=${this._upPenalty}`), this._upPenalty = 0);
|
|
5429
5512
|
}
|
|
@@ -5434,7 +5517,7 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
|
|
|
5434
5517
|
}
|
|
5435
5518
|
_calcDelay(e, t) {
|
|
5436
5519
|
if (!(e <= 0)) {
|
|
5437
|
-
if (this._delayAvgShort === -1 && (this._delayAvgShort = e, this._delayAvgLong = e), this._delayAvgShort = Math.round((this._delayAvgShort * 3 + e) / 4), this._delayAvgLong = Math.round((this._delayAvgLong * 23 + e) / 24), e > 0 && e < this._minDelay ? this._minDelay = e : e > this._maxDelay && (this._maxDelay = e), this._lastCheckDelay === 0 && (this._lastCheckDelay = t), e >
|
|
5520
|
+
if (this._delayAvgShort === -1 && (this._delayAvgShort = e, this._delayAvgLong = e), this._delayAvgShort = Math.round((this._delayAvgShort * 3 + e) / 4), this._delayAvgLong = Math.round((this._delayAvgLong * 23 + e) / 24), e > 0 && e < this._minDelay ? this._minDelay = e : e > this._maxDelay && (this._maxDelay = e), this._lastCheckDelay === 0 && (this._lastCheckDelay = t), e > Ji) {
|
|
5438
5521
|
let e = t - this._lastCheckDelay;
|
|
5439
5522
|
this._largeDelayDuration += e;
|
|
5440
5523
|
}
|
|
@@ -5463,7 +5546,7 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
|
|
|
5463
5546
|
this._fps === 0 ? this._fps = Math.round(r) : this._fps = Math.round((this._fps * 3 + r) / 4), this._frames = 0, this._fps !== n && this._debug.log(`cc: fps=${this._fps}`);
|
|
5464
5547
|
}
|
|
5465
5548
|
}
|
|
5466
|
-
},
|
|
5549
|
+
}, Zi = class {
|
|
5467
5550
|
constructor(e) {
|
|
5468
5551
|
h(this, "_maxSize", void 0), h(this, "_size", 0), h(this, "_buffer", void 0), h(this, "_head", 0), h(this, "_tail", 0), this._maxSize = e, this._buffer = Array(e);
|
|
5469
5552
|
}
|
|
@@ -5537,11 +5620,11 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
|
|
|
5537
5620
|
clear() {
|
|
5538
5621
|
this._buffer.fill(void 0), this._size = 0, this._head = 0, this._tail = 0;
|
|
5539
5622
|
}
|
|
5540
|
-
},
|
|
5623
|
+
}, Qi = 65536, $i = 50, ea = 400, ta = 1e6, na = 3e5, ra = 3e4, ia = 2e3, aa = 5, oa = 0, sa = class {
|
|
5541
5624
|
constructor(e, t, n, r, i = R, a = null) {
|
|
5542
|
-
h(this, "_encoder", void 0), h(this, "_datachannel", void 0), h(this, "_signaling", void 0), h(this, "_fastSharing", void 0), h(this, "_destroyed", !1), h(this, "_needKeyframe", !0), h(this, "DATA_SIZE", void 0), h(this, "_congestionControl", void 0), h(this, "_frameNum", 0), h(this, "_width", void 0), h(this, "_height", void 0), h(this, "_feedback", new
|
|
5625
|
+
h(this, "_encoder", void 0), h(this, "_datachannel", void 0), h(this, "_signaling", void 0), h(this, "_fastSharing", void 0), h(this, "_destroyed", !1), h(this, "_needKeyframe", !0), h(this, "DATA_SIZE", void 0), h(this, "_congestionControl", void 0), h(this, "_frameNum", 0), h(this, "_width", void 0), h(this, "_height", void 0), h(this, "_feedback", new Zi(1024)), h(this, "_lastSentFrameSeq", 0), h(this, "_lastDeliveredFrameSeq", 0), h(this, "_lastFrameDelay", 0), h(this, "_lastFramerateReduced", Date.now()), h(this, "_lastSharingStat", Date.now()), h(this, "_congestionControlEnabled", void 0), h(this, "_queue", new Fi()), h(this, "_fpsMeter", void 0), h(this, "_maxFrameDelay", void 0), h(this, "_debug", void 0), h(this, "_logger", void 0), this._debug = i, this._logger = a, this._debug.debug("ScreenCaptureSender started"), this.DATA_SIZE = M.consumerScreenDataChannelPacketSize - 11, this._datachannel = t, this._signaling = n, this._fastSharing = r, this._congestionControlEnabled = M.screenShareCongestionControl || this._fastSharing, this._width = e.getSettings().width, this._height = e.getSettings().height, this._maxFrameDelay = this._fastSharing ? M.screenShareCongestionControlThreshold : M.screenShareCongestionControlThreshold * 2;
|
|
5543
5626
|
let o = M.getScreenFrameRate(this._fastSharing), { minBitrate: s, maxBitrate: c } = this._calcMinMaxBitrate(this._width, this._height), l = this._onCongestionCallback.bind(this);
|
|
5544
|
-
this._debug.log(`ScreenCaptureSender: CongestionControl: enabled=${this._congestionControlEnabled} minBitrate=${Math.round(s / 1e3)}k maxBitrate=${Math.round(c / 1e3)}k delayThreshold=${M.screenShareCongestionControlThreshold}`), this._congestionControl = new
|
|
5627
|
+
this._debug.log(`ScreenCaptureSender: CongestionControl: enabled=${this._congestionControlEnabled} minBitrate=${Math.round(s / 1e3)}k maxBitrate=${Math.round(c / 1e3)}k delayThreshold=${M.screenShareCongestionControlThreshold}`), this._congestionControl = new Xi(l, s, c, this._congestionControlEnabled, this._fastSharing, M.screenShareCongestionControlThreshold, o, this._debug);
|
|
5545
5628
|
let u = (e, t) => {
|
|
5546
5629
|
if (this._destroyed) return;
|
|
5547
5630
|
if (!e) {
|
|
@@ -5552,23 +5635,23 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
|
|
|
5552
5635
|
let n = this._sliceFrame(e);
|
|
5553
5636
|
this._queue.merge(n), this._handleQueue(), this._sendSharingStat();
|
|
5554
5637
|
};
|
|
5555
|
-
if (
|
|
5638
|
+
if (Ri.isBrowserSupported()) {
|
|
5556
5639
|
let t = this._fastSharing;
|
|
5557
|
-
this._encoder = new
|
|
5558
|
-
} else this._encoder = new
|
|
5640
|
+
this._encoder = new Ri(e, u, this._congestionControlEnabled, c, t, o, this._debug, this._logger);
|
|
5641
|
+
} else this._encoder = new Li(e, u, this._congestionControlEnabled, c, this._debug, this._logger);
|
|
5559
5642
|
this._datachannel.onmessage = (e) => {
|
|
5560
|
-
|
|
5561
|
-
let t =
|
|
5643
|
+
wi(e.data) && (this._debug.debug(`[${this._datachannel.label}] Requested keyframe`), this._needKeyframe = !0);
|
|
5644
|
+
let t = Ti(e.data);
|
|
5562
5645
|
t !== null && this._checkCcFeedback(t);
|
|
5563
|
-
}, this._encoder.init().then(() => this._handleQueue()).catch((e) => this._debug.warn("ScreenCaptureSender init failed", e)), this._fpsMeter = new
|
|
5646
|
+
}, this._encoder.init().then(() => this._handleQueue()).catch((e) => this._debug.warn("ScreenCaptureSender init failed", e)), this._fpsMeter = new ai((e) => this._debug.log(`[ScreenCaptureSender] fps: ${e}`), 5e3);
|
|
5564
5647
|
}
|
|
5565
5648
|
_handleQueue() {
|
|
5566
5649
|
if (this._destroyed) return;
|
|
5567
5650
|
let e = this._queue.shift();
|
|
5568
5651
|
if (!e) {
|
|
5569
|
-
if ((this._lastSentFrameSeq - this._lastDeliveredFrameSeq +
|
|
5652
|
+
if ((this._lastSentFrameSeq - this._lastDeliveredFrameSeq + Qi) % Qi > aa && this._lastFrameDelay > this._maxFrameDelay) {
|
|
5570
5653
|
let e = Date.now();
|
|
5571
|
-
e - this._lastFramerateReduced >
|
|
5654
|
+
e - this._lastFramerateReduced > ia && (this._lastFramerateReduced = e, this._debug.debug(`[ScreenCaptureSender] reduce framerate: delay=${this._lastFrameDelay} maxDelay=${this._maxFrameDelay}`));
|
|
5572
5655
|
} else this._requestFrame();
|
|
5573
5656
|
return;
|
|
5574
5657
|
}
|
|
@@ -5594,7 +5677,7 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
|
|
|
5594
5677
|
this._destroyed || (this._encoder.requestFrame(this._needKeyframe), this._needKeyframe = !1);
|
|
5595
5678
|
}
|
|
5596
5679
|
_sliceFrame(e) {
|
|
5597
|
-
let t = e.type === "key", n = e.data.byteLength, r = new
|
|
5680
|
+
let t = e.type === "key", n = e.data.byteLength, r = new Fi();
|
|
5598
5681
|
for (let i = 0; i < n; i += this.DATA_SIZE) {
|
|
5599
5682
|
let a = e.data.slice(i, i + this.DATA_SIZE), o = i === 0, s = n <= i + a.byteLength, c = this._wrapHeader(e.timestamp, o, s, t, a);
|
|
5600
5683
|
r.push({
|
|
@@ -5610,11 +5693,11 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
|
|
|
5610
5693
|
return r;
|
|
5611
5694
|
}
|
|
5612
5695
|
_wrapHeader(e, t, n, r, i) {
|
|
5613
|
-
let a =
|
|
5614
|
-
sequence:
|
|
5696
|
+
let a = Si(e, t, n, r, oa, this._encoder.isVP9(), i), o = {
|
|
5697
|
+
sequence: oa,
|
|
5615
5698
|
data: a
|
|
5616
5699
|
};
|
|
5617
|
-
return
|
|
5700
|
+
return oa = (oa + 1) % Qi, o;
|
|
5618
5701
|
}
|
|
5619
5702
|
_stopPacket() {
|
|
5620
5703
|
return this._wrapHeader(Date.now(), !1, !1, !1, null).data;
|
|
@@ -5631,7 +5714,7 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
|
|
|
5631
5714
|
this._queue.clear(), this._fpsMeter.destroy(), this._datachannel.onmessage = null, this._feedback.clear(), this._datachannel.readyState === "open" && this._datachannel.send(this._stopPacket()), this._destroyed = !0, this._encoder.destroy(), this._debug.debug("ScreenCaptureSender destroyed");
|
|
5632
5715
|
}
|
|
5633
5716
|
static isBrowserSupported() {
|
|
5634
|
-
return
|
|
5717
|
+
return Ri.isBrowserSupported() || Li.isBrowserSupported();
|
|
5635
5718
|
}
|
|
5636
5719
|
_onCongestionCallback(e, t, n) {
|
|
5637
5720
|
this._encoder.setBitrate(e, t, n);
|
|
@@ -5644,8 +5727,8 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
|
|
|
5644
5727
|
(e === void 0 || e < 640) && (e = 640), (t === void 0 || t < 360) && (t = 360);
|
|
5645
5728
|
let n = e * t / 256;
|
|
5646
5729
|
return {
|
|
5647
|
-
minBitrate: Math.max(
|
|
5648
|
-
maxBitrate: Math.round(n *
|
|
5730
|
+
minBitrate: Math.max(na, Math.min(ta, Math.round(n * $i))),
|
|
5731
|
+
maxBitrate: Math.round(n * ea)
|
|
5649
5732
|
};
|
|
5650
5733
|
}
|
|
5651
5734
|
_checkCcFeedback(e) {
|
|
@@ -5659,14 +5742,14 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
|
|
|
5659
5742
|
}
|
|
5660
5743
|
_sendSharingStat() {
|
|
5661
5744
|
let e = Date.now();
|
|
5662
|
-
if (e - this._lastSharingStat >
|
|
5745
|
+
if (e - this._lastSharingStat > ra) {
|
|
5663
5746
|
let t = this._congestionControl.getStat();
|
|
5664
5747
|
t !== null && (this._debug.debug(`cc: send stats: ${JSON.stringify(t)}`), this._signaling.reportSharingStat(t).catch((e) => {
|
|
5665
5748
|
!(e instanceof wn) && !(e instanceof Tn) && this._debug.warn("Unable to send sharing stats", e);
|
|
5666
5749
|
})), this._lastSharingStat = e;
|
|
5667
5750
|
}
|
|
5668
5751
|
}
|
|
5669
|
-
},
|
|
5752
|
+
}, ca = class {
|
|
5670
5753
|
constructor(e, t, n, r = R, i = null) {
|
|
5671
5754
|
h(this, "_pc", null), h(this, "_transceiver", null), h(this, "_currentSimulcastInfo", null), h(this, "_signaling", void 0), h(this, "_mediaSource", void 0), h(this, "_getCameraSettings", void 0), h(this, "_debug", void 0), h(this, "_logger", void 0), this._signaling = e, this._mediaSource = t, this._getCameraSettings = n, this._debug = r, this._logger = i;
|
|
5672
5755
|
}
|
|
@@ -5798,9 +5881,9 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
|
|
|
5798
5881
|
if (!(e instanceof Tn)) throw e;
|
|
5799
5882
|
}
|
|
5800
5883
|
}
|
|
5801
|
-
},
|
|
5884
|
+
}, la = 90, ua = 4294967295, da = class e extends Ir {
|
|
5802
5885
|
constructor(e, t, n, r = R, i = null, a = null, o = null, s = null) {
|
|
5803
|
-
super(e, t, s), h(this, "_producerNotification", null), h(this, "_producerCommand", null), h(this, "_producerScreen", null), h(this, "_consumerScreen", null), h(this, "_asr", null), h(this, "_animojiDataChannel", null), h(this, "_animojiReceiver", null), h(this, "_animojiSender", null), h(this, "_isOpen", !1), h(this, "_observer", !1), h(this, "_reconnectionPrevented", !1), h(this, "_statInterval", null), h(this, "_settingsInterval", null), h(this, "_monitorRtpShareInterval", null), h(this, "_statBytes", {}), h(this, "_ssrcMap", {}), h(this, "_ssrcMapUpdated", !1), h(this, "_perfStatReporter", void 0), h(this, "_producerOfferIsProcessing", !1), h(this, "_producerNextOffer", null), h(this, "_producerNextSessionId", null), h(this, "_lastStat", null), h(this, "_serverSettings", void 0), h(this, "_prevConsumerSettings", {}), h(this, "_prevConsumerFastSharingSettings", {}), h(this, "_asrTrack", null), h(this, "_captureSender", null), h(this, "_captureReceiver", null), h(this, "_participantIdRegistry", null), h(this, "_disabledSenders", /* @__PURE__ */ new Set()), h(this, "_rtpReceiversByStreamId", {}), h(this, "_producerSessionId", ""), h(this, "_newAudioShareTrack", null), h(this, "_debug", void 0), h(this, "_logger", void 0), h(this, "_statAggregator", void 0), h(this, "_codecStatsAggregator", void 0), h(this, "_simulcast", void 0), this._debug = r, this._logger = i, this._statAggregator = a, this._codecStatsAggregator = o, this._serverSettings = n, this._simulcast = new
|
|
5886
|
+
super(e, t, s), h(this, "_producerNotification", null), h(this, "_producerCommand", null), h(this, "_producerScreen", null), h(this, "_consumerScreen", null), h(this, "_asr", null), h(this, "_animojiDataChannel", null), h(this, "_animojiReceiver", null), h(this, "_animojiSender", null), h(this, "_isOpen", !1), h(this, "_observer", !1), h(this, "_reconnectionPrevented", !1), h(this, "_statInterval", null), h(this, "_settingsInterval", null), h(this, "_monitorRtpShareInterval", null), h(this, "_statBytes", {}), h(this, "_ssrcMap", {}), h(this, "_ssrcMapUpdated", !1), h(this, "_perfStatReporter", void 0), h(this, "_producerOfferIsProcessing", !1), h(this, "_producerNextOffer", null), h(this, "_producerNextSessionId", null), h(this, "_lastStat", null), h(this, "_serverSettings", void 0), h(this, "_prevConsumerSettings", {}), h(this, "_prevConsumerFastSharingSettings", {}), h(this, "_asrTrack", null), h(this, "_captureSender", null), h(this, "_captureReceiver", null), h(this, "_participantIdRegistry", null), h(this, "_disabledSenders", /* @__PURE__ */ new Set()), h(this, "_rtpReceiversByStreamId", {}), h(this, "_producerSessionId", ""), h(this, "_newAudioShareTrack", null), h(this, "_debug", void 0), h(this, "_logger", void 0), h(this, "_statAggregator", void 0), h(this, "_peerConnectionStats", void 0), h(this, "_codecStatsAggregator", void 0), h(this, "_simulcast", void 0), this._debug = r, this._logger = i, this._statAggregator = a, this._peerConnectionStats = new Mr(a), this._codecStatsAggregator = o, this._serverSettings = n, this._simulcast = new ca(e, t, () => this._serverSettings.camera, r, i), this.subscribe(this._signaling, G.NOTIFICATION, this._onSignalingNotification.bind(this)), this.subscribe(this._mediaSource, qt.TRACK_REPLACED, this._onReplacedTrack.bind(this)), this.subscribe(this._mediaSource, qt.SOURCE_CHANGED, this._onSourcesChanged.bind(this)), this.subscribe(this._mediaSource, qt.SCREEN_STATUS, this._onScreenSharingStatus.bind(this)), this._createPerfStatsReporter(), this._debug.debug("ServerTransport: Created");
|
|
5804
5887
|
}
|
|
5805
5888
|
updateStatisticsInterval() {
|
|
5806
5889
|
this._stopStatInterval();
|
|
@@ -5839,10 +5922,10 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
|
|
|
5839
5922
|
await this._simulcast.sync();
|
|
5840
5923
|
}
|
|
5841
5924
|
_createPerfStatsReporter() {
|
|
5842
|
-
this._perfStatReporter?.destroy(), this._perfStatReporter = new
|
|
5925
|
+
this._perfStatReporter?.destroy(), this._perfStatReporter = new ga(this, this._signaling, this._statAggregator, !1, this._debug);
|
|
5843
5926
|
}
|
|
5844
5927
|
_closeConnection() {
|
|
5845
|
-
this._signaling.resetProducerConnection(), this._disposeFirstMediaSentProbe(), this._stopStatInterval(), this._stopSettingsInterval(), this._stopMonitorRtpShareInterval(), this._removeAsrTrack(), this._removeCaptureSender(), this._removeCaptureReceiver(), this._simulcast.reset(), this._pc && (this._rtpReceiversByStreamId = {}, this._disabledSenders.forEach((e) => e.track?.stop()), this._disabledSenders.clear(), this._pc.ontrack = null, this._pc.onconnectionstatechange = null, this._pc.onsignalingstatechange = null, this._participantIdRegistry = null, e._closeDataChannel(this._producerNotification), e._closeDataChannel(this._producerCommand), e._closeDataChannel(this._producerScreen), e._closeDataChannel(this._consumerScreen), e._closeDataChannel(this._asr), e._closeDataChannel(this._animojiDataChannel), this._pc.close(), this._pc = null, this._producerOfferIsProcessing = !1, this._producerNextOffer = null), this._triggerEvent(X.PEER_CONNECTION_CLOSED);
|
|
5928
|
+
this._signaling.resetProducerConnection(), this._ssrcMap = {}, this._ssrcMapUpdated = !0, this._disposeFirstMediaSentProbe(), this._stopStatInterval(), this._stopSettingsInterval(), this._stopMonitorRtpShareInterval(), this._removeAsrTrack(), this._removeCaptureSender(), this._removeCaptureReceiver(), this._simulcast.reset(), this._pc && (this._rtpReceiversByStreamId = {}, this._disabledSenders.forEach((e) => e.track?.stop()), this._disabledSenders.clear(), this._pc.ontrack = null, this._pc.onconnectionstatechange = null, this._pc.onsignalingstatechange = null, this._peerConnectionStats.stop(), this._participantIdRegistry = null, e._closeDataChannel(this._producerNotification), e._closeDataChannel(this._producerCommand), e._closeDataChannel(this._producerScreen), e._closeDataChannel(this._consumerScreen), e._closeDataChannel(this._asr), e._closeDataChannel(this._animojiDataChannel), this._pc.close(), this._pc = null, this._producerOfferIsProcessing = !1, this._producerNextOffer = null), this._triggerEvent(X.PEER_CONNECTION_CLOSED);
|
|
5846
5929
|
}
|
|
5847
5930
|
static _closeDataChannel(e) {
|
|
5848
5931
|
e && (e.onopen = null, e.onmessage = null, e.onerror = null, e.close());
|
|
@@ -5868,14 +5951,14 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
|
|
|
5868
5951
|
}
|
|
5869
5952
|
this._pc.ontrack = this._onAddTrack.bind(this, this._pc), this._pc.onconnectionstatechange = j.debounce((e) => {
|
|
5870
5953
|
this._pc && this._onConnectionStateChange(this._pc, e);
|
|
5871
|
-
}, 500), this._pc.onsignalingstatechange = this._onSignalingStateChange.bind(this, this._pc), this._participantIdRegistry = new
|
|
5954
|
+
}, 500), this._pc.onsignalingstatechange = this._onSignalingStateChange.bind(this, this._pc), this._peerConnectionStats.observe(this._pc), this._participantIdRegistry = new ti(this._debug), this._signaling.setParticipantIdRegistry(this._participantIdRegistry), this._createDataChannel(this._pc, Sr.producerNotification, (e) => {
|
|
5872
5955
|
this._producerNotification = e, this._producerNotification.binaryType = "arraybuffer", this._signaling.setProducerNotificationDataChannel(e);
|
|
5873
5956
|
}), this._signaling.useCommandDataChannel(!0), this._createDataChannel(this._pc, Sr.producerCommand, (e) => {
|
|
5874
5957
|
this._producerCommand = e, this._signaling.setProducerCommandDataChannel(e);
|
|
5875
5958
|
}), this._createDataChannel(this._pc, Sr.producerScreenShare, (e) => {
|
|
5876
5959
|
this._producerScreen = e, this._producerScreen.binaryType = "arraybuffer", this._createCaptureReceiver();
|
|
5877
5960
|
}), M.asrDataChannel && this._createDataChannel(this._pc, Sr.asr, (e) => {
|
|
5878
|
-
this._asr = e, this._asr.binaryType = "arraybuffer", this._removeAsrTrack(), this._asrTrack = new
|
|
5961
|
+
this._asr = e, this._asr.binaryType = "arraybuffer", this._removeAsrTrack(), this._asrTrack = new Qr(e, this._participantIdRegistry, (e) => {
|
|
5879
5962
|
this._onAsrTranscription(e);
|
|
5880
5963
|
}, this._debug);
|
|
5881
5964
|
}), M.vmoji && this._createDataChannel(this._pc, Sr.animoji, (e) => {
|
|
@@ -5912,20 +5995,20 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
|
|
|
5912
5995
|
this._triggerEvent(X.NETWORK_STATUS, e);
|
|
5913
5996
|
}
|
|
5914
5997
|
_updateSSRCMap(e) {
|
|
5915
|
-
e && ln(e.sdp).forEach((e) => {
|
|
5916
|
-
let t = `a=ssrc:([0-9]+) label:(audio|video)-((?:[ug]?[\\d]+)|(?:mix)|(?:${
|
|
5917
|
-
n && (this._ssrcMap[n[1]] = n[3]
|
|
5918
|
-
});
|
|
5998
|
+
e && (this._ssrcMap = {}, this._ssrcMapUpdated = !0, ln(e.sdp).forEach((e) => {
|
|
5999
|
+
let t = `a=ssrc:([0-9]+) label:(audio|video)-((?:[ug]?[\\d]+)|(?:mix)|(?:${Xr.PARTICIPANT_AGNOSTIC_TRACK_PREFIX}-[0-9]+)|(?:${Xr.TRANSPARENT_AUDIO_TRACK_PREFIX}-[0-9]+))`, n = new RegExp(t).exec(e);
|
|
6000
|
+
n && (this._ssrcMap[n[1]] = n[3]);
|
|
6001
|
+
}));
|
|
5919
6002
|
}
|
|
5920
6003
|
_createCaptureSender(e) {
|
|
5921
6004
|
let t = this._mediaSource.mediaSettings;
|
|
5922
|
-
!e || !this._consumerScreen || !t.isScreenSharingEnabled || (this._captureSender && this._removeCaptureSender(), this._captureSender = new
|
|
6005
|
+
!e || !this._consumerScreen || !t.isScreenSharingEnabled || (this._captureSender && this._removeCaptureSender(), this._captureSender = new sa(e, this._consumerScreen, this._signaling, t.isFastScreenSharingEnabled, this._debug, this._logger));
|
|
5923
6006
|
}
|
|
5924
6007
|
_removeCaptureSender() {
|
|
5925
6008
|
this._captureSender?.destroy(), this._captureSender = null;
|
|
5926
6009
|
}
|
|
5927
6010
|
_createCaptureReceiver() {
|
|
5928
|
-
this._producerScreen && (this._captureReceiver && this._removeCaptureReceiver(), this._captureReceiver = new
|
|
6011
|
+
this._producerScreen && (this._captureReceiver && this._removeCaptureReceiver(), this._captureReceiver = new Ni(this._producerScreen, this._participantIdRegistry, (e, t) => {
|
|
5929
6012
|
this._triggerEvent(X.REMOTE_STREAM_SECOND, e, t);
|
|
5930
6013
|
}, (e) => {
|
|
5931
6014
|
this._triggerEvent(X.REMOTE_STREAM_SECOND, e, null);
|
|
@@ -6035,7 +6118,7 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
|
|
|
6035
6118
|
_detectStaleTracks(e) {
|
|
6036
6119
|
let t = e.rtps.find((e) => e.type === "inbound-rtp" && e.kind === "audio" && this._ssrcMap[e.ssrc] === "mix");
|
|
6037
6120
|
if (!t) return;
|
|
6038
|
-
let n =
|
|
6121
|
+
let n = Xr.AUDIO_MIX, r = this._statBytes[n], i = !1;
|
|
6039
6122
|
if (r) {
|
|
6040
6123
|
let e = t.bytesReceived - r.bytesReceived;
|
|
6041
6124
|
e >= 0 && e <= 5 && (i = !0), r.stalled !== i && this._triggerEvent(X.AUDIO_MIX_STALL, i);
|
|
@@ -6047,7 +6130,7 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
|
|
|
6047
6130
|
}
|
|
6048
6131
|
_allocateConsumer() {
|
|
6049
6132
|
if (!this._signaling.ready) return;
|
|
6050
|
-
let e =
|
|
6133
|
+
let e = Sa.get();
|
|
6051
6134
|
!M.videoTracksCount && !this._observer && this._debug.warn("Setting videoTracksCount to 0 is deprecated"), this._signaling.allocateConsumer(null, e).catch((e) => {
|
|
6052
6135
|
e instanceof wn || this._debug.warn("ServerTransport: Unable to allocate consumer", e);
|
|
6053
6136
|
});
|
|
@@ -6223,11 +6306,11 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
|
|
|
6223
6306
|
if (!r || !r.length) return this._debug.log(`Cannot get stream waiting time, ${e} receiver has no synchronization sources`), 0;
|
|
6224
6307
|
let i = r[0].rtpTimestamp;
|
|
6225
6308
|
if (!Number.isInteger(i)) return this._logger?.log(C.PAT_WAITING_TIME_ERROR, "timestampNotInteger"), this._debug.error(`Cannot get stream waiting time, ${e} receiver's RTP timestamp is not an integer: ${i}`), 0;
|
|
6226
|
-
let a = t - i &
|
|
6309
|
+
let a = t - i & ua, o = Math.ceil(a / la);
|
|
6227
6310
|
return Math.min(100, Math.max(0, o));
|
|
6228
6311
|
}
|
|
6229
6312
|
async _monitorRtpShare() {
|
|
6230
|
-
let e =
|
|
6313
|
+
let e = ei.getInstance().value;
|
|
6231
6314
|
if (!this._mediaSource.mediaSettings.isFastScreenSharingEnabled || !M.consumerFastScreenShare || e < .6) return;
|
|
6232
6315
|
let t = this._pc?.getSenders().find((e) => e.track?.kind === k.video && e.track?.contentHint === "motion");
|
|
6233
6316
|
t && (await t.getStats()).forEach((e) => {
|
|
@@ -6258,7 +6341,7 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
|
|
|
6258
6341
|
}
|
|
6259
6342
|
}, X = /* @__PURE__ */ function(e) {
|
|
6260
6343
|
return e.REMOTE_TRACK_ADDED = "REMOTE_TRACK_ADDED", e.REMOTE_TRACK_REMOVED = "REMOTE_TRACK_REMOVED", e.REMOTE_STREAM_SECOND = "REMOTE_STREAM_SECOND", e.AUDIO_MIX_STALL = "AUDIO_MIX_STALL", e.REMOTE_DATA_STATS = "REMOTE_DATA_STATS", e.STATE_CHANGED = "STATE_CHANGED", e.LOCAL_STATE_CHANGED = "LOCAL_STATE_CHANGED", e.SIGNALLED_ACTIVE_PARTICIPANTS = "SIGNALLED_ACTIVE_PARTICIPANTS", e.SIGNALLED_SPEAKER_CHANGED = "SIGNALLED_SPEAKER_CHANGED", e.SIGNALLED_STALLED_PARTICIPANTS = "SIGNALLED_STALLED_PARTICIPANTS", e.TOPOLOGY_CHANGED = "TOPOLOGY_CHANGED", e.NETWORK_STATUS = "NETWORK_STATUS", e.PEER_CONNECTION_CLOSED = "PEER_CONNECTION_CLOSED", e.ASR_TRANSCRIPTION = "ASR_TRANSCRIPTION", e.ANIMOJI_STREAM = "ANIMOJI_STREAM", e.ANIMOJI_ERROR = "ANIMOJI_ERROR", e.SCREEN_SHARING_STAT = "SCREEN_SHARING_STAT", e;
|
|
6261
|
-
}({}),
|
|
6344
|
+
}({}), fa = class extends b {
|
|
6262
6345
|
constructor(e, t, n, r, i = R, a = null, o = null, s = null, c = null) {
|
|
6263
6346
|
super(), h(this, "_signaling", void 0), h(this, "_mediaSource", void 0), h(this, "_topology", void 0), h(this, "_allocated", []), h(this, "_opened", []), h(this, "_directTransport", null), h(this, "_serverTransport", null), h(this, "_serverSettings", void 0), h(this, "_dtListeners", []), h(this, "_stListeners", []), h(this, "_states", {}), h(this, "_localState", q.IDLE), h(this, "_animojiReceiver", null), h(this, "_animojiSender", null), h(this, "_debug", void 0), h(this, "_logger", void 0), h(this, "_statAggregator", void 0), h(this, "_codecStatsAggregator", void 0), h(this, "_onFirstMediaSent", void 0), h(this, "_firstMediaSentProbeStopped", !1), h(this, "_vadController", null), h(this, "_updateVadTrack", () => {
|
|
6264
6347
|
this._vadController?.setSendTrack(this._mediaSource.getSendAudioTrack());
|
|
@@ -6379,11 +6462,11 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
|
|
|
6379
6462
|
}
|
|
6380
6463
|
}
|
|
6381
6464
|
_createDirectTransport(e, t = !1) {
|
|
6382
|
-
let n = new
|
|
6465
|
+
let n = new Yr(e, t, this._signaling, this._mediaSource, this._serverSettings, this._debug, this._logger, this._statAggregator, this._codecStatsAggregator, this._getFirstMediaSentCallback());
|
|
6383
6466
|
return this._dtListeners.length > 0 && this._debug.warn(`The list of direct listeners for the participant [${e}] is not empty`), this._dtListeners = [], this._dtListeners.push(n.addEventListener("REMOTE_TRACK_ADDED", this._onRemoteTrackAdded.bind(this, e)), n.addEventListener("REMOTE_TRACK_REMOVED", this._onRemoteTrackRemoved.bind(this, e)), n.addEventListener("REMOTE_DATA_STATS", this._onRemoteDataStats.bind(this)), n.addEventListener("STATE_CHANGED", this._onDirectTransportChanged.bind(this)), n.addEventListener("NETWORK_STATUS", this._onTransportNetworkStatus.bind(this)), n.addEventListener("PEER_CONNECTION_CLOSED", this._onPeerConnectionClosed.bind(this, J.DIRECT))), this._animojiReceiver && this._animojiSender && n.setAnimojiTransport(this._animojiReceiver, this._animojiSender), n;
|
|
6384
6467
|
}
|
|
6385
6468
|
_createServerTransport() {
|
|
6386
|
-
let e = new
|
|
6469
|
+
let e = new da(this._signaling, this._mediaSource, this._serverSettings, this._debug, this._logger, this._statAggregator, this._codecStatsAggregator, this._getFirstMediaSentCallback());
|
|
6387
6470
|
return this._stListeners.length > 0 && this._debug.warn("The list of server transport listeners is not empty"), this._stListeners = [], this._stListeners.push(e.addEventListener("REMOTE_TRACK_ADDED", this._onRemoteTrackAdded.bind(this)), e.addEventListener("REMOTE_TRACK_REMOVED", this._onRemoteTrackRemoved.bind(this)), e.addEventListener("AUDIO_MIX_STALL", this._onServerAudioMixStall.bind(this)), e.addEventListener("REMOTE_DATA_STATS", this._onRemoteDataStats.bind(this)), e.addEventListener("STATE_CHANGED", this._onServerTransportChanged.bind(this)), e.addEventListener("SIGNALLED_ACTIVE_PARTICIPANTS", this._onTransportActiveParticipants.bind(this)), e.addEventListener("SIGNALLED_SPEAKER_CHANGED", this._onTransportSpeakerChanged.bind(this)), e.addEventListener("SIGNALLED_STALLED_PARTICIPANTS", this._onTransportStalledParticipants.bind(this)), e.addEventListener("NETWORK_STATUS", this._onTransportNetworkStatus.bind(this)), e.addEventListener("REMOTE_STREAM_SECOND", this._onRemoteStreamSecond.bind(this)), e.addEventListener("PEER_CONNECTION_CLOSED", this._onPeerConnectionClosed.bind(this, J.SERVER)), e.addEventListener("ASR_TRANSCRIPTION", this._onAsrTranscription.bind(this))), this._animojiReceiver && this._animojiSender && e.setAnimojiTransport(this._animojiReceiver, this._animojiSender), e;
|
|
6388
6471
|
}
|
|
6389
6472
|
_releaseDirectTransport() {
|
|
@@ -6475,20 +6558,20 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
|
|
|
6475
6558
|
getStreamWaitingTimeMs(e, t) {
|
|
6476
6559
|
return this._topology === J.SERVER ? this._serverTransport ? this._serverTransport.getStreamWaitingTimeMs(e, t) : (this._logger?.log(C.PAT_WAITING_TIME_ERROR, "noTransport"), this._debug.error("Cannot get stream waiting time, server transport is not initialized"), 0) : (this._logger?.log(C.PAT_WAITING_TIME_ERROR, "wrongTopology"), this._debug.error(`Cannot get stream waiting time, incorrect topology: ${this._topology}`), 0);
|
|
6477
6560
|
}
|
|
6478
|
-
},
|
|
6561
|
+
}, pa = "videochat-epi", ma = 5e3, ha = 500, ga = class extends b {
|
|
6479
6562
|
constructor(e, t, n = null, r = !1, i = R) {
|
|
6480
|
-
super(), h(this, "_previousPerfStatReportTimestamp", 0), h(this, "_previousNetworkStatReportTimestamp", Date.now()), h(this, "_previousCallStatReportTimestamp", Date.now()), h(this, "_previousCallStatReport", null), h(this, "_previousRemoteInboundRtps", /* @__PURE__ */ new Map()), h(this, "_screenShareStats", []), h(this, "_signaling", void 0), h(this, "_directTopology", void 0), h(this, "_debug", void 0), h(this, "_statAggregator", void 0), h(this, "_handleScreenSharingStat", (e) => {
|
|
6563
|
+
super(), h(this, "_previousPerfStatReportTimestamp", 0), h(this, "_previousNetworkStatReportTimestamp", Date.now()), h(this, "_previousCallStatReportTimestamp", Date.now()), h(this, "_previousCallStatReport", null), h(this, "_previousRemoteInboundRtps", /* @__PURE__ */ new Map()), h(this, "_previousCandidatePair", null), h(this, "_screenShareStats", []), h(this, "_signaling", void 0), h(this, "_directTopology", void 0), h(this, "_debug", void 0), h(this, "_statAggregator", void 0), h(this, "_handleScreenSharingStat", (e) => {
|
|
6481
6564
|
this._screenShareStats.push(e);
|
|
6482
6565
|
}), h(this, "_handleTransportStateChanged", (e) => {
|
|
6483
6566
|
(this._directTopology && e === q.CONNECTED || !this._directTopology && e === q.OPENED) && (this._previousNetworkStatReportTimestamp = Date.now(), this._previousCallStatReportTimestamp = Date.now(), this._previousRemoteInboundRtps.clear());
|
|
6484
6567
|
}), this._signaling = t, this._directTopology = r, this._debug = i, this._statAggregator = n, this.subscribe(e, X.REMOTE_DATA_STATS, this._handleStats.bind(this)), this.subscribe(e, X.SCREEN_SHARING_STAT, this._handleScreenSharingStat.bind(this)), this.subscribe(e, X.STATE_CHANGED, this._handleTransportStateChanged.bind(this));
|
|
6485
6568
|
}
|
|
6486
6569
|
destroy() {
|
|
6487
|
-
this._previousRemoteInboundRtps.clear(), this.unsubscribe();
|
|
6570
|
+
this._previousRemoteInboundRtps.clear(), this._previousCandidatePair = null, this.unsubscribe();
|
|
6488
6571
|
}
|
|
6489
6572
|
static getEstimatedPerformanceIndex() {
|
|
6490
6573
|
try {
|
|
6491
|
-
let e = parseInt(localStorage.getItem(
|
|
6574
|
+
let e = parseInt(localStorage.getItem(pa) || "", 10);
|
|
6492
6575
|
return isNaN(e) ? 0 : e;
|
|
6493
6576
|
} catch {
|
|
6494
6577
|
return 0;
|
|
@@ -6497,9 +6580,9 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
|
|
|
6497
6580
|
async _handleStats(e) {
|
|
6498
6581
|
if (!e.inbound || !e.inbound.rtps) return;
|
|
6499
6582
|
let t = Date.now();
|
|
6500
|
-
!this._directTopology && M.perfStatReportEnabled && this._previousPerfStatReportTimestamp +
|
|
6583
|
+
!this._directTopology && M.perfStatReportEnabled && this._previousPerfStatReportTimestamp + ma <= t && (await this.reportPerfStats(e), this._previousPerfStatReportTimestamp = t);
|
|
6501
6584
|
let n = e.outbound.transport.local?.protocol === "tcp";
|
|
6502
|
-
!this._directTopology && n && this._previousNetworkStatReportTimestamp +
|
|
6585
|
+
!this._directTopology && n && this._previousNetworkStatReportTimestamp + ha <= t && (await this.reportNetworkStats(e), this._previousNetworkStatReportTimestamp = t), this._reportCandidatePair(e.inbound.transport.local, e.inbound.transport.remote), M.callStatReportEnabled && this._previousCallStatReportTimestamp + M.statisticsInterval <= t && (this._reportCallStats(e), this._previousCallStatReportTimestamp = t);
|
|
6503
6586
|
}
|
|
6504
6587
|
async reportPerfStats(e) {
|
|
6505
6588
|
let t = e.inbound.rtps.reduce((e, t) => (t.kind === "video" && (e.framesDecoded += t.framesDecoded || 0, e.framesReceived += t.framesReceived || 0), e), {
|
|
@@ -6508,7 +6591,7 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
|
|
|
6508
6591
|
});
|
|
6509
6592
|
if (t.framesDecoded) try {
|
|
6510
6593
|
let e = await this._signaling.reportPerfStat(t);
|
|
6511
|
-
localStorage.setItem(
|
|
6594
|
+
localStorage.setItem(pa, e.estimatedPerformanceIndex);
|
|
6512
6595
|
} catch {}
|
|
6513
6596
|
}
|
|
6514
6597
|
async reportNetworkStats(e) {
|
|
@@ -6548,11 +6631,11 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
|
|
|
6548
6631
|
rtt: Math.round(e.inbound.transport.currentRoundTripTime * 1e3),
|
|
6549
6632
|
ss_freeze_count: 0,
|
|
6550
6633
|
ss_total_freezes_duration: 0,
|
|
6551
|
-
local_address:
|
|
6634
|
+
local_address: va(e.inbound.transport.local),
|
|
6552
6635
|
local_connection_type: e.inbound.transport.local?.type,
|
|
6553
6636
|
network_type: e.inbound.transport.local?.networkType,
|
|
6554
6637
|
transport: e.inbound.transport.local?.protocol,
|
|
6555
|
-
remote_address:
|
|
6638
|
+
remote_address: va(e.inbound.transport.remote),
|
|
6556
6639
|
remote_connection_type: e.inbound.transport.remote?.type
|
|
6557
6640
|
};
|
|
6558
6641
|
this._previousCallStatReport || (this._previousCallStatReport = Object.assign({}, t));
|
|
@@ -6573,14 +6656,29 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
|
|
|
6573
6656
|
frames_dropped: Math.max(0, t.frames_dropped - this._previousCallStatReport.frames_dropped),
|
|
6574
6657
|
rtt: Math.max(0, t.rtt)
|
|
6575
6658
|
};
|
|
6576
|
-
if (M.simulcast && (i.is_simulcast = !0), navigator.hardwareConcurrency && (i.cpu_hardware_concurrency = navigator.hardwareConcurrency), n && !
|
|
6659
|
+
if (M.simulcast && (i.is_simulcast = !0), navigator.hardwareConcurrency && (i.cpu_hardware_concurrency = navigator.hardwareConcurrency), n && !ya(t.jitter_video) && (i.jitter_video = Math.round(t.jitter_video)), r && !ya(t.jitter_audio) && (i.jitter_audio = Math.round(t.jitter_audio)), n && !ya(t.interframe_delay_variance) && (i.interframe_delay_variance = t.interframe_delay_variance), t.freeze_count && t.total_freezes_duration && (i.freeze_count = t.freeze_count, i.total_freezes_duration = Math.round(t.total_freezes_duration * 1e3)), t.ss_freeze_count && t.ss_total_freezes_duration && (i.ss_freeze_count = t.ss_freeze_count, i.ss_total_freezes_duration = t.ss_total_freezes_duration), r && !ya(t.total_audio_samples_received)) {
|
|
6577
6660
|
let e = Math.max(0, t.total_audio_samples_received - this._previousCallStatReport.total_audio_samples_received), n = Math.max(0, t.inserted_audio_samples_for_deceleration - this._previousCallStatReport.inserted_audio_samples_for_deceleration), r = Math.max(0, t.removed_audio_samples_for_acceleration - this._previousCallStatReport.removed_audio_samples_for_acceleration), a = Math.max(0, t.concealed_audio_samples - this._previousCallStatReport.concealed_audio_samples), o = Math.max(0, t.silent_concealed_audio_samples - this._previousCallStatReport.silent_concealed_audio_samples), s = Math.max(0, t.audio_concealment_events - this._previousCallStatReport.audio_concealment_events);
|
|
6578
|
-
i.inserted_audio_samples_for_deceleration =
|
|
6661
|
+
i.inserted_audio_samples_for_deceleration = ba(n / e * 1e3), i.removed_audio_samples_for_acceleration = ba(r / e * 1e3), i.concealed_audio_samples = ba(a / e * 1e3), i.concealed_silent_audio_samples = ba(o / e * 1e3), i.concealment_audio_avg_size = ba(a / s), i.total_audio_energy = t.total_audio_energy;
|
|
6579
6662
|
}
|
|
6580
|
-
|
|
6663
|
+
_a(t, "local_address", "local_connection_type", "network_type", "transport") && (i.local_address = t.local_address, i.local_connection_type = t.local_connection_type, i.network_type = t.network_type, i.transport = t.transport), _a(t, "remote_address", "remote_connection_type") && (i.remote_address = t.remote_address, i.remote_connection_type = t.remote_connection_type);
|
|
6581
6664
|
let a = this._calculatePacketLoss(e.remoteInbound.rtps);
|
|
6582
6665
|
a.video !== void 0 && (i.video_loss = a.video), a.audio !== void 0 && (i.audio_loss = a.audio), this._statAggregator?.logCallStat(i), M.enableLogPerfStatReport && this._debug.log("Sent call stats", i), this._previousCallStatReport = t;
|
|
6583
6666
|
}
|
|
6667
|
+
_reportCandidatePair(e, t) {
|
|
6668
|
+
if (!e?.address || !t?.address) return;
|
|
6669
|
+
let n = JSON.stringify({
|
|
6670
|
+
local: e,
|
|
6671
|
+
remote: t
|
|
6672
|
+
});
|
|
6673
|
+
n !== this._previousCandidatePair && (this._previousCandidatePair = n, this._statAggregator?.logEventualStat({
|
|
6674
|
+
name: H.ICE_CANDIDATES_CHANGED,
|
|
6675
|
+
value: 0,
|
|
6676
|
+
string_value: n,
|
|
6677
|
+
local_address: va(e),
|
|
6678
|
+
remote_address: va(t),
|
|
6679
|
+
transport: e.protocol
|
|
6680
|
+
}));
|
|
6681
|
+
}
|
|
6584
6682
|
_calculatePacketLoss(e) {
|
|
6585
6683
|
let t = /* @__PURE__ */ new Map(), n = {
|
|
6586
6684
|
audio: {
|
|
@@ -6609,26 +6707,26 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
|
|
|
6609
6707
|
return r;
|
|
6610
6708
|
}
|
|
6611
6709
|
};
|
|
6612
|
-
function
|
|
6710
|
+
function _a(e, ...t) {
|
|
6613
6711
|
for (let n of t) if (!Object.hasOwn(e, n) || e[n] === void 0) return !1;
|
|
6614
6712
|
return !0;
|
|
6615
6713
|
}
|
|
6616
|
-
function
|
|
6714
|
+
function va(e, t = !1) {
|
|
6617
6715
|
if (e?.address) return e.address + (t ? `:${e.port}` : "");
|
|
6618
6716
|
}
|
|
6619
|
-
function
|
|
6717
|
+
function ya(e) {
|
|
6620
6718
|
return e === void 0;
|
|
6621
6719
|
}
|
|
6622
|
-
function
|
|
6720
|
+
function ba(e) {
|
|
6623
6721
|
return Number.isNaN(e) ? 0 : e;
|
|
6624
6722
|
}
|
|
6625
6723
|
//#endregion
|
|
6626
6724
|
//#region src/static/Capabilities.ts
|
|
6627
|
-
var
|
|
6725
|
+
var xa;
|
|
6628
6726
|
(function(e) {
|
|
6629
6727
|
function t() {
|
|
6630
6728
|
return {
|
|
6631
|
-
estimatedPerformanceIndex:
|
|
6729
|
+
estimatedPerformanceIndex: ga.getEstimatedPerformanceIndex(),
|
|
6632
6730
|
audioMix: !0,
|
|
6633
6731
|
consumerUpdate: !0,
|
|
6634
6732
|
producerNotificationDataChannelVersion: 8,
|
|
@@ -6654,8 +6752,8 @@ var va;
|
|
|
6654
6752
|
};
|
|
6655
6753
|
}
|
|
6656
6754
|
e.get = t;
|
|
6657
|
-
})(
|
|
6658
|
-
var
|
|
6755
|
+
})(xa || (xa = {}));
|
|
6756
|
+
var Sa = xa, Ca = {
|
|
6659
6757
|
producerScreenTrack: () => !0,
|
|
6660
6758
|
videoTracksCount: () => M.videoTracksCount > 0,
|
|
6661
6759
|
waitingHall: () => !0,
|
|
@@ -6675,28 +6773,28 @@ var ya = va, ba = {
|
|
|
6675
6773
|
p2pRelay: () => !1,
|
|
6676
6774
|
waitForAdmin: () => M.waitForAdminInGroupCalls,
|
|
6677
6775
|
hold: () => M.hold
|
|
6678
|
-
},
|
|
6776
|
+
}, wa = class {
|
|
6679
6777
|
static getFlags() {
|
|
6680
|
-
let e = Object.values(
|
|
6778
|
+
let e = Object.values(Ca), t = 0;
|
|
6681
6779
|
for (let n = 0; n < e.length; n++) e[n]() && (t |= 1 << n);
|
|
6682
6780
|
return t.toString(16).toUpperCase();
|
|
6683
6781
|
}
|
|
6684
6782
|
static parseCapabilities(e) {
|
|
6685
6783
|
let t = parseInt(e || "0", 16);
|
|
6686
|
-
return Object.keys(
|
|
6784
|
+
return Object.keys(Ca).reduce((e, n, r) => (e[n] = !!(t & 1 << r), e), {});
|
|
6687
6785
|
}
|
|
6688
|
-
},
|
|
6786
|
+
}, Ta = 63n, Ea = 16383n, Da = 1073741823, Oa = 4611686018427387903n, ka = class {
|
|
6689
6787
|
encode(e) {
|
|
6690
6788
|
let t = typeof e == "number" ? BigInt(e) : e;
|
|
6691
|
-
if (t <=
|
|
6692
|
-
if (t <=
|
|
6693
|
-
if (t <= BigInt(
|
|
6789
|
+
if (t <= Ta) return new Uint8Array([Number(t)]);
|
|
6790
|
+
if (t <= Ea) return new Uint8Array([64 | Number(t >> 8n), Number(t & 255n)]);
|
|
6791
|
+
if (t <= BigInt(Da)) return new Uint8Array([
|
|
6694
6792
|
128 | Number(t >> 24n),
|
|
6695
6793
|
Number(t >> 16n & 255n),
|
|
6696
6794
|
Number(t >> 8n & 255n),
|
|
6697
6795
|
Number(t & 255n)
|
|
6698
6796
|
]);
|
|
6699
|
-
if (t <=
|
|
6797
|
+
if (t <= Oa) return new Uint8Array([
|
|
6700
6798
|
192 | Number(t >> 56n),
|
|
6701
6799
|
Number(t >> 48n & 255n),
|
|
6702
6800
|
Number(t >> 40n & 255n),
|
|
@@ -6708,7 +6806,7 @@ var ya = va, ba = {
|
|
|
6708
6806
|
]);
|
|
6709
6807
|
throw RangeError("Number is too large to encode using varint");
|
|
6710
6808
|
}
|
|
6711
|
-
},
|
|
6809
|
+
}, Aa = class {
|
|
6712
6810
|
decode(e) {
|
|
6713
6811
|
let t = this.getNumBytesForLengthInteger(e);
|
|
6714
6812
|
if (t < 0) throw Error("Invalid length prefix");
|
|
@@ -6734,9 +6832,9 @@ var ya = va, ba = {
|
|
|
6734
6832
|
let t = e[0] & 192;
|
|
6735
6833
|
return t === 0 ? 1 : t === 64 ? 2 : t === 128 ? 4 : t === 192 ? 8 : -1;
|
|
6736
6834
|
}
|
|
6737
|
-
},
|
|
6835
|
+
}, ja = class {
|
|
6738
6836
|
constructor(e) {
|
|
6739
|
-
h(this, "encoder", void 0), h(this, "compression", void 0), h(this, "lengthEncoder", void 0), this.encoder = new TextEncoder(), this.lengthEncoder = new
|
|
6837
|
+
h(this, "encoder", void 0), h(this, "compression", void 0), h(this, "lengthEncoder", void 0), this.encoder = new TextEncoder(), this.lengthEncoder = new ka(), this.compression = e ?? null;
|
|
6740
6838
|
}
|
|
6741
6839
|
encode(e) {
|
|
6742
6840
|
let t = this.encoder.encode(e);
|
|
@@ -6753,9 +6851,9 @@ var ya = va, ba = {
|
|
|
6753
6851
|
default: return e;
|
|
6754
6852
|
}
|
|
6755
6853
|
}
|
|
6756
|
-
},
|
|
6854
|
+
}, Ma = class {
|
|
6757
6855
|
constructor(e) {
|
|
6758
|
-
h(this, "decoder", void 0), h(this, "compression", void 0), h(this, "lengthDecoder", void 0), h(this, "buffer", void 0), h(this, "expectedLength", void 0), h(this, "offset", void 0), h(this, "lengthPrefixLength", void 0), this.decoder = new TextDecoder(), this.lengthDecoder = new
|
|
6856
|
+
h(this, "decoder", void 0), h(this, "compression", void 0), h(this, "lengthDecoder", void 0), h(this, "buffer", void 0), h(this, "expectedLength", void 0), h(this, "offset", void 0), h(this, "lengthPrefixLength", void 0), this.decoder = new TextDecoder(), this.lengthDecoder = new Aa(), this.compression = e ?? null, this.buffer = new Uint8Array(), this.expectedLength = null, this.offset = 0;
|
|
6759
6857
|
}
|
|
6760
6858
|
decode(e) {
|
|
6761
6859
|
let t = [];
|
|
@@ -6785,12 +6883,12 @@ var ya = va, ba = {
|
|
|
6785
6883
|
default: return e;
|
|
6786
6884
|
}
|
|
6787
6885
|
}
|
|
6788
|
-
},
|
|
6886
|
+
}, Na = class {
|
|
6789
6887
|
static isBrowserSupported() {
|
|
6790
6888
|
return !(!("WebTransport" in window && typeof WebTransport == "function") || T.browserName() === "Safari");
|
|
6791
6889
|
}
|
|
6792
6890
|
constructor(e, t = {}, n = R) {
|
|
6793
|
-
h(this, "onopen", null), h(this, "onmessage", null), h(this, "onerror", null), h(this, "onclose", null), h(this, "readyState", WebSocket.CONNECTING), h(this, "webTransport", null), h(this, "writer", null), h(this, "url", void 0), h(this, "options", void 0), h(this, "compression", void 0), h(this, "encoder", void 0), h(this, "decoder", void 0), h(this, "_debug", void 0), this._debug = n, this.url = e, this.options = t, this.compression = this.getCompressionTypeFromUrl(e), this.encoder = new
|
|
6891
|
+
h(this, "onopen", null), h(this, "onmessage", null), h(this, "onerror", null), h(this, "onclose", null), h(this, "readyState", WebSocket.CONNECTING), h(this, "webTransport", null), h(this, "writer", null), h(this, "url", void 0), h(this, "options", void 0), h(this, "compression", void 0), h(this, "encoder", void 0), h(this, "decoder", void 0), h(this, "_debug", void 0), this._debug = n, this.url = e, this.options = t, this.compression = this.getCompressionTypeFromUrl(e), this.encoder = new ja(this.compression), this.decoder = new Ma(this.compression), this.connect();
|
|
6794
6892
|
}
|
|
6795
6893
|
async send(e) {
|
|
6796
6894
|
if (this.readyState !== WebSocket.OPEN) {
|
|
@@ -6916,9 +7014,9 @@ var ya = va, ba = {
|
|
|
6916
7014
|
compression: this.compression
|
|
6917
7015
|
}, n;
|
|
6918
7016
|
}
|
|
6919
|
-
},
|
|
7017
|
+
}, Pa = /* @__PURE__ */ function(e) {
|
|
6920
7018
|
return e.EMPTY_ENDPOINT = "EMPTY_ENDPOINT", e.NETWORK_ERROR = "NETWORK_ERROR", e.ABORTED = "ABORTED", e;
|
|
6921
|
-
}({}),
|
|
7019
|
+
}({}), Fa = class {
|
|
6922
7020
|
constructor(e = R, t) {
|
|
6923
7021
|
h(this, "handlers", void 0), h(this, "socket", null), h(this, "endpoint", ""), h(this, "wtEndpoint", null), h(this, "peerId", null), h(this, "lastStamp", 0), h(this, "connectionType", void 0), h(this, "reconnectCount", 0), h(this, "reconnectTimer", 0), h(this, "doctorTimer", 0), h(this, "forceWebSocket", !1), h(this, "abortSignal", void 0), h(this, "manualClose", !1), h(this, "currentType", yr.WEBSOCKET), h(this, "_debug", void 0), this.handlers = t, this._debug = e;
|
|
6924
7022
|
}
|
|
@@ -6968,7 +7066,7 @@ var ya = va, ba = {
|
|
|
6968
7066
|
return;
|
|
6969
7067
|
}
|
|
6970
7068
|
let e = this._buildUrl(this.wtEndpoint, !0);
|
|
6971
|
-
this.currentType = yr.WEBTRANSPORT, this.socket = new
|
|
7069
|
+
this.currentType = yr.WEBTRANSPORT, this.socket = new Na(e, { congestionControl: "low-latency" }, this._debug), this._setSocketHandlers();
|
|
6972
7070
|
}
|
|
6973
7071
|
_connectWebSocket() {
|
|
6974
7072
|
if (!this.endpoint) {
|
|
@@ -6991,10 +7089,10 @@ var ya = va, ba = {
|
|
|
6991
7089
|
}
|
|
6992
7090
|
_buildUrl(e, t) {
|
|
6993
7091
|
let n = new URL(e), r = n.searchParams;
|
|
6994
|
-
return r.set("platform", M.platform), r.set("appVersion",
|
|
7092
|
+
return r.set("platform", M.platform), r.set("appVersion", M.appVersion), r.set("version", String(M.protocolVersion)), r.set("device", M.device), r.set("capabilities", wa.getFlags()), r.set("clientType", M.clientType), this.connectionType && r.set("tgt", this.connectionType), this.connectionType === vr.RETRY && this.lastStamp && r.set("recoverTs", String(this.lastStamp)), M.useParticipantListChunk && (r.set("partIdx", String(M.participantListChunkInitIndex)), M.participantListChunkInitCount !== null && r.set("partCount", String(M.participantListChunkInitCount))), t && (r.set("compression", "deflate-raw"), r.set("ua", navigator.userAgent)), this.peerId !== null && r.set("peerId", String(this.peerId)), n.toString();
|
|
6995
7093
|
}
|
|
6996
7094
|
_canUseWebTransport() {
|
|
6997
|
-
return !this.forceWebSocket &&
|
|
7095
|
+
return !this.forceWebSocket && Na.isBrowserSupported() && this.wtEndpoint !== null && M.webtransport;
|
|
6998
7096
|
}
|
|
6999
7097
|
_onOpen() {
|
|
7000
7098
|
this._startDoctor(), this.handlers.onOpen();
|
|
@@ -7048,31 +7146,31 @@ var ya = va, ba = {
|
|
|
7048
7146
|
_stopDoctor() {
|
|
7049
7147
|
window.clearTimeout(this.doctorTimer), this.doctorTimer = 0;
|
|
7050
7148
|
}
|
|
7051
|
-
},
|
|
7149
|
+
}, Ia = "open", La = 10, Ra = {
|
|
7052
7150
|
CONVERSATION_ENDED: "conversation-ended",
|
|
7053
7151
|
OBSOLETE_CLIENT: "gen.obsoleteClient",
|
|
7054
7152
|
INVALID_TOKEN: "invalid-token",
|
|
7055
7153
|
PARTICIPANT_NOT_FOUND: "participant-not-found",
|
|
7056
7154
|
ILLEGAL_PARTICIPANT_STATE: "illegal-participant-state",
|
|
7057
7155
|
SERVICE_UNAVAILABLE: "service-unavailable"
|
|
7058
|
-
},
|
|
7059
|
-
[
|
|
7060
|
-
[
|
|
7061
|
-
[
|
|
7062
|
-
[
|
|
7063
|
-
[
|
|
7064
|
-
[
|
|
7156
|
+
}, za = {
|
|
7157
|
+
[Ra.CONVERSATION_ENDED]: "conversation-ended",
|
|
7158
|
+
[Ra.OBSOLETE_CLIENT]: "obsolete-client",
|
|
7159
|
+
[Ra.INVALID_TOKEN]: "invalid-token",
|
|
7160
|
+
[Ra.PARTICIPANT_NOT_FOUND]: "participant-not-found",
|
|
7161
|
+
[Ra.ILLEGAL_PARTICIPANT_STATE]: "illegal-participant-state",
|
|
7162
|
+
[Ra.SERVICE_UNAVAILABLE]: "service-unavailable"
|
|
7065
7163
|
};
|
|
7066
|
-
function
|
|
7164
|
+
function Ba(e, t) {
|
|
7067
7165
|
return e.errorMessage ?? e.message ?? e.error ?? t;
|
|
7068
7166
|
}
|
|
7069
|
-
var
|
|
7167
|
+
var Va = new Set([
|
|
7070
7168
|
D.CALLER_IS_BLOCKED,
|
|
7071
7169
|
D.ENDED,
|
|
7072
7170
|
D.NOT_FOUND,
|
|
7073
7171
|
D.PARTICIPANT_LIMIT_REACHED,
|
|
7074
7172
|
D.SERVICE_UNAVAILABLE
|
|
7075
|
-
]),
|
|
7173
|
+
]), Ha = class e extends En {
|
|
7076
7174
|
static get WAIT_CONNECTION_DELAY() {
|
|
7077
7175
|
return M.waitConnectionDelay;
|
|
7078
7176
|
}
|
|
@@ -7083,7 +7181,7 @@ var Ra = new Set([
|
|
|
7083
7181
|
return !this.disposed && this.transport.readyState !== null;
|
|
7084
7182
|
}
|
|
7085
7183
|
constructor(e = R, t = null, n = null, r = null, i = null) {
|
|
7086
|
-
super(), h(this, "transport", void 0), h(this, "sequence", 1), h(this, "lastStamp", 0), h(this, "websocketCommandsQueue", []), h(this, "datachannelCommandsQueue", []), h(this, "incomingCache", []), h(this, "responseHandlers", {}), h(this, "disposed", !1), h(this, "connectionType", void 0), h(this, "conversationResolve", null), h(this, "conversationReject", null), h(this, "connected", !1), h(this, "listenersReady", !1), h(this, "peerId", null), h(this, "connectionMessageWaitTimer", 0), h(this, "participantIdRegistry", null), h(this, "producerNotificationDataChannel", null), h(this, "producerCommandDataChannel", null), h(this, "producerCommandDataChannelEnabled", !1), h(this, "producerCommandSerializationService", void 0), h(this, "_debug", void 0), h(this, "_logger", void 0), h(this, "_statAggregator", void 0), h(this, "_statPings", void 0), h(this, "_statSignalingCommands", void 0), this._debug = e, this._logger = t, this._statAggregator = n, this._statPings = r, this._statSignalingCommands = i, this.producerCommandSerializationService = new $n(e), this.transport = new
|
|
7184
|
+
super(), h(this, "transport", void 0), h(this, "sequence", 1), h(this, "lastStamp", 0), h(this, "websocketCommandsQueue", []), h(this, "datachannelCommandsQueue", []), h(this, "incomingCache", []), h(this, "responseHandlers", {}), h(this, "disposed", !1), h(this, "connectionType", void 0), h(this, "conversationResolve", null), h(this, "conversationReject", null), h(this, "connected", !1), h(this, "listenersReady", !1), h(this, "peerId", null), h(this, "connectionMessageWaitTimer", 0), h(this, "participantIdRegistry", null), h(this, "producerNotificationDataChannel", null), h(this, "producerCommandDataChannel", null), h(this, "producerCommandDataChannelEnabled", !1), h(this, "producerCommandSerializationService", void 0), h(this, "_debug", void 0), h(this, "_logger", void 0), h(this, "_statAggregator", void 0), h(this, "_statPings", void 0), h(this, "_statSignalingCommands", void 0), this._debug = e, this._logger = t, this._statAggregator = n, this._statPings = r, this._statSignalingCommands = i, this.producerCommandSerializationService = new $n(e), this.transport = new Fa(e, {
|
|
7087
7185
|
onConnecting: this._onTransportConnecting.bind(this),
|
|
7088
7186
|
onOpen: this._onOpen.bind(this),
|
|
7089
7187
|
onMessage: this._onMessage.bind(this),
|
|
@@ -7170,20 +7268,20 @@ var Ra = new Set([
|
|
|
7170
7268
|
return this._send(B.TRANSMIT_DATA, {
|
|
7171
7269
|
participantId: e,
|
|
7172
7270
|
data: r
|
|
7173
|
-
}, !0,
|
|
7271
|
+
}, !0, La);
|
|
7174
7272
|
}
|
|
7175
7273
|
async acceptCall(e) {
|
|
7176
7274
|
return this._send(B.ACCEPT_CALL, { mediaSettings: e });
|
|
7177
7275
|
}
|
|
7178
7276
|
async changeMediaSettings(e) {
|
|
7179
|
-
return this._send(B.CHANGE_MEDIA_SETTINGS, { mediaSettings: e }, !0,
|
|
7277
|
+
return this._send(B.CHANGE_MEDIA_SETTINGS, { mediaSettings: e }, !0, La);
|
|
7180
7278
|
}
|
|
7181
7279
|
async changeParticipantState(e, t) {
|
|
7182
7280
|
let n = { participantState: { state: e } };
|
|
7183
7281
|
return t && (n.participantId = t), this._sendRaw(B.CHANGE_PARTICIPANT_STATE, n);
|
|
7184
7282
|
}
|
|
7185
7283
|
async hold(e) {
|
|
7186
|
-
let t =
|
|
7284
|
+
let t = Sa.get();
|
|
7187
7285
|
return this._send(B.HOLD, {
|
|
7188
7286
|
hold: e,
|
|
7189
7287
|
capabilities: e ? void 0 : t
|
|
@@ -7415,7 +7513,7 @@ var Ra = new Set([
|
|
|
7415
7513
|
if (this.disposed) throw new wn(e);
|
|
7416
7514
|
switch (t.route) {
|
|
7417
7515
|
case "producer":
|
|
7418
|
-
this.datachannelCommandsQueue.push(t), this.producerCommandDataChannel?.readyState ===
|
|
7516
|
+
this.datachannelCommandsQueue.push(t), this.producerCommandDataChannel?.readyState === Ia && this._handleCommandsQueue(this.datachannelCommandsQueue);
|
|
7419
7517
|
break;
|
|
7420
7518
|
case "websocket":
|
|
7421
7519
|
if (this.transport.readyState === null) {
|
|
@@ -7485,9 +7583,9 @@ var Ra = new Set([
|
|
|
7485
7583
|
}
|
|
7486
7584
|
_handleErrorMessage(e) {
|
|
7487
7585
|
this._logger?.log(C.SOCKET_ACTION, `error-${e.error}`);
|
|
7488
|
-
let t = this._getSocketType(), n = e.error ? this._createSignalingCallError(e.error, e.errorCode, t) : void 0, r =
|
|
7586
|
+
let t = this._getSocketType(), n = e.error ? this._createSignalingCallError(e.error, e.errorCode, t) : void 0, r = Ba(e, "Unknown signaling error");
|
|
7489
7587
|
switch (this._debug.debug(`[signaling] error message [${e.sequence}]`, e), e.sequence && this.responseHandlers[e.sequence] && this._handleCommandResponse(!1, e), e.error) {
|
|
7490
|
-
case
|
|
7588
|
+
case Ra.SERVICE_UNAVAILABLE:
|
|
7491
7589
|
let i = new O(D.SERVICE_UNAVAILABLE, {
|
|
7492
7590
|
callError: n,
|
|
7493
7591
|
message: r,
|
|
@@ -7499,7 +7597,7 @@ var Ra = new Set([
|
|
|
7499
7597
|
reason: D.SERVICE_UNAVAILABLE
|
|
7500
7598
|
});
|
|
7501
7599
|
break;
|
|
7502
|
-
case
|
|
7600
|
+
case Ra.CONVERSATION_ENDED:
|
|
7503
7601
|
this.conversationReject ? this.conversationReject(new O(e.reason || x.SIGNALING_FAILED, {
|
|
7504
7602
|
callError: n,
|
|
7505
7603
|
message: r,
|
|
@@ -7510,22 +7608,22 @@ var Ra = new Set([
|
|
|
7510
7608
|
reason: e.reason
|
|
7511
7609
|
});
|
|
7512
7610
|
break;
|
|
7513
|
-
case
|
|
7514
|
-
case
|
|
7611
|
+
case Ra.ILLEGAL_PARTICIPANT_STATE:
|
|
7612
|
+
case Ra.PARTICIPANT_NOT_FOUND:
|
|
7515
7613
|
this._throwError(new O(x.SIGNALING_FAILED, {
|
|
7516
7614
|
callError: n,
|
|
7517
7615
|
message: r,
|
|
7518
7616
|
remote: !0
|
|
7519
7617
|
}));
|
|
7520
7618
|
break;
|
|
7521
|
-
case
|
|
7619
|
+
case Ra.OBSOLETE_CLIENT:
|
|
7522
7620
|
this.conversationReject?.(new O(e.reason || D.OBSOLETE_CLIENT, {
|
|
7523
7621
|
callError: n,
|
|
7524
7622
|
message: r,
|
|
7525
7623
|
remote: !0
|
|
7526
7624
|
}));
|
|
7527
7625
|
break;
|
|
7528
|
-
case
|
|
7626
|
+
case Ra.INVALID_TOKEN:
|
|
7529
7627
|
default:
|
|
7530
7628
|
if (e.sequence || t === yr.WEBTRANSPORT) break;
|
|
7531
7629
|
if (this.connected) this._throwError(new O(e.reason || x.SIGNALING_FAILED, {
|
|
@@ -7627,13 +7725,13 @@ var Ra = new Set([
|
|
|
7627
7725
|
let r = this.responseHandlers[n.sequence];
|
|
7628
7726
|
window.clearTimeout(r.responseTimer);
|
|
7629
7727
|
let i = W.measureMark(r.statMarkName);
|
|
7630
|
-
i !== null && this._statSignalingCommands?.mark(r.name, i, this._getSocketType()), this._debug.debug(`[signaling] command response [${n.sequence}]`, n), t ? (delete this.responseHandlers[n.sequence], r.resolve(n)) : n.type === "error" ? (delete this.responseHandlers[n.sequence], this._logger?.log(C.SOCKET_ACTION, "response-error"), r.reject(Error(
|
|
7728
|
+
i !== null && this._statSignalingCommands?.mark(r.name, i, this._getSocketType()), this._debug.debug(`[signaling] command response [${n.sequence}]`, n), t ? (delete this.responseHandlers[n.sequence], r.resolve(n)) : n.type === "error" ? (delete this.responseHandlers[n.sequence], this._logger?.log(C.SOCKET_ACTION, "response-error"), r.reject(Error(Ba(n, `Response error [${r.name}]`)), !0)) : this.transport.readyState === WebSocket.OPEN ? (delete this.responseHandlers[n.sequence], this._logger?.log(C.SOCKET_ACTION, "response-timeout"), r.reject(Error(Ba(n, `Response timeout [${r.name}]`)))) : r.responseTimer = window.setTimeout(() => this._handleCommandResponse(t, n), e.WAIT_RESPONSE_DELAY);
|
|
7631
7729
|
}
|
|
7632
7730
|
_handleCommandsQueue(e) {
|
|
7633
7731
|
for (; e.length > 0;) {
|
|
7634
7732
|
let t = e.shift();
|
|
7635
7733
|
if (this._debug.debug(`[signaling] command send [${t.sequence}]`, `'${t.name}'`, t.params), t.route === "producer") {
|
|
7636
|
-
if (this.producerCommandDataChannel?.readyState !==
|
|
7734
|
+
if (this.producerCommandDataChannel?.readyState !== Ia) {
|
|
7637
7735
|
t.reject(/* @__PURE__ */ Error(`Invalid data channel state: ${this.producerCommandDataChannel?.readyState}`));
|
|
7638
7736
|
return;
|
|
7639
7737
|
}
|
|
@@ -7718,7 +7816,7 @@ var Ra = new Set([
|
|
|
7718
7816
|
}
|
|
7719
7817
|
_onTransportFailed(e) {
|
|
7720
7818
|
switch (e.failure) {
|
|
7721
|
-
case
|
|
7819
|
+
case Pa.EMPTY_ENDPOINT:
|
|
7722
7820
|
this.conversationReject?.(new O(x.SIGNALING_FAILED, {
|
|
7723
7821
|
callError: {
|
|
7724
7822
|
scope: "internal",
|
|
@@ -7729,7 +7827,7 @@ var Ra = new Set([
|
|
|
7729
7827
|
remote: e.remote
|
|
7730
7828
|
}));
|
|
7731
7829
|
break;
|
|
7732
|
-
case
|
|
7830
|
+
case Pa.NETWORK_ERROR:
|
|
7733
7831
|
this._fail(new O(D.NETWORK_ERROR, { callError: {
|
|
7734
7832
|
scope: "network",
|
|
7735
7833
|
source: e.source,
|
|
@@ -7737,7 +7835,7 @@ var Ra = new Set([
|
|
|
7737
7835
|
description: "connection-failed"
|
|
7738
7836
|
} }));
|
|
7739
7837
|
break;
|
|
7740
|
-
case
|
|
7838
|
+
case Pa.ABORTED:
|
|
7741
7839
|
this._debug.debug("[signaling] aborted reconnect"), this._fail(new O(D.CANCELED));
|
|
7742
7840
|
break;
|
|
7743
7841
|
}
|
|
@@ -7749,7 +7847,7 @@ var Ra = new Set([
|
|
|
7749
7847
|
this._debug.warn("[signaling] socket is dead, trying to reconnect"), this._logTransportStat(br.FAILED_PINGS);
|
|
7750
7848
|
}
|
|
7751
7849
|
_attachNotificationCallError(e) {
|
|
7752
|
-
e.callError || !e.reason || e.reason === D.FAILED || e.reason === D.UNKNOWN_ERROR || !
|
|
7850
|
+
e.callError || !e.reason || e.reason === D.FAILED || e.reason === D.UNKNOWN_ERROR || !Va.has(e.reason) && !e.errorCode || (e.callError = {
|
|
7753
7851
|
scope: "server",
|
|
7754
7852
|
source: this._getSocketType(),
|
|
7755
7853
|
code: e.errorCode || "protocol",
|
|
@@ -7757,7 +7855,7 @@ var Ra = new Set([
|
|
|
7757
7855
|
});
|
|
7758
7856
|
}
|
|
7759
7857
|
_createSignalingCallError(e, t, n) {
|
|
7760
|
-
let r =
|
|
7858
|
+
let r = za[e];
|
|
7761
7859
|
if (r) return {
|
|
7762
7860
|
scope: "server",
|
|
7763
7861
|
source: n,
|
|
@@ -7779,39 +7877,39 @@ var Ra = new Set([
|
|
|
7779
7877
|
...t
|
|
7780
7878
|
});
|
|
7781
7879
|
}
|
|
7782
|
-
},
|
|
7880
|
+
}, Ua = /* @__PURE__ */ function(e) {
|
|
7783
7881
|
return e.INCOMING = "INCOMING", e.OUTGOING = "OUTGOING", e.JOINING = "JOINING", e;
|
|
7784
|
-
}(
|
|
7882
|
+
}(Ua || {}), Wa = /* @__PURE__ */ function(e) {
|
|
7785
7883
|
return e.USER = "USER", e.GROUP = "GROUP", e.CHAT = "CHAT", e;
|
|
7786
|
-
}(
|
|
7884
|
+
}(Wa || {}), Ga = /* @__PURE__ */ function(e) {
|
|
7787
7885
|
return e.ATTENDEE = "ATTENDEE", e.HAND_UP = "HAND_UP", e;
|
|
7788
|
-
}(
|
|
7886
|
+
}(Ga || {}), Ka = /* @__PURE__ */ function(e) {
|
|
7789
7887
|
return e.ADD_PARTICIPANT = "ADD_PARTICIPANT", e.RECORD = "RECORD", e.MOVIE_SHARE = "MOVIE_SHARE", e;
|
|
7790
|
-
}(
|
|
7888
|
+
}(Ka || {}), qa = /* @__PURE__ */ function(e) {
|
|
7791
7889
|
return e.REQUIRE_AUTH_TO_JOIN = "REQUIRE_AUTH_TO_JOIN", e.AUDIENCE_MODE = "AUDIENCE_MODE", e.WAITING_HALL = "WAITING_HALL", e.WAIT_FOR_ADMIN = "WAIT_FOR_ADMIN", e.ADMIN_IS_HERE = "ADMIN_IS_HERE", e.ASR = "ASR", e.FEEDBACK = "FEEDBACK", e.RECURRING = "RECURRING", e;
|
|
7792
|
-
}(
|
|
7793
|
-
function
|
|
7890
|
+
}(qa || {});
|
|
7891
|
+
function Ja(e, t) {
|
|
7794
7892
|
if (e.length !== t.length) return !1;
|
|
7795
7893
|
for (let n of e) if (!t.includes(n)) return !1;
|
|
7796
7894
|
return !0;
|
|
7797
7895
|
}
|
|
7798
|
-
function
|
|
7896
|
+
function Ya(e, t) {
|
|
7799
7897
|
let n = new Set(e);
|
|
7800
7898
|
for (let [e, r] of Object.entries(t)) r ? n.add(e) : n.delete(e);
|
|
7801
7899
|
return Array.from(n);
|
|
7802
7900
|
}
|
|
7803
7901
|
//#endregion
|
|
7804
7902
|
//#region src/enums/MuteState.ts
|
|
7805
|
-
var
|
|
7903
|
+
var Xa = /* @__PURE__ */ function(e) {
|
|
7806
7904
|
return e.UNMUTE = "UNMUTE", e.MUTE = "MUTE", e.MUTE_PERMANENT = "MUTE_PERMANENT", e;
|
|
7807
|
-
}(
|
|
7905
|
+
}(Xa || {}), Z = /* @__PURE__ */ function(e) {
|
|
7808
7906
|
return e.CALLED = "CALLED", e.ACCEPTED = "ACCEPTED", e.REJECTED = "REJECTED", e.HUNGUP = "HUNGUP", e;
|
|
7809
|
-
}(Z || {}),
|
|
7907
|
+
}(Z || {}), Za = /* @__PURE__ */ function(e) {
|
|
7810
7908
|
return e.UPDATE = "UPDATE", e.REMOVE = "REMOVE", e.ACTIVATE = "ACTIVATE", e.TIMEOUT = "TIMEOUT", e;
|
|
7811
|
-
}(
|
|
7909
|
+
}(Za || {}), Qa = /* @__PURE__ */ function(e) {
|
|
7812
7910
|
return e.NO_AVAILABLE_TRACKS = "no-available-tracks", e.UNKNOWN_ERROR = "unknown-error", e;
|
|
7813
|
-
}(
|
|
7814
|
-
function
|
|
7911
|
+
}(Qa || {});
|
|
7912
|
+
function $a(e) {
|
|
7815
7913
|
switch (e) {
|
|
7816
7914
|
case 1: return "no-available-tracks";
|
|
7817
7915
|
default: return "unknown-error";
|
|
@@ -7819,17 +7917,17 @@ function Xa(e) {
|
|
|
7819
7917
|
}
|
|
7820
7918
|
//#endregion
|
|
7821
7919
|
//#region src/enums/UserRole.ts
|
|
7822
|
-
var
|
|
7920
|
+
var eo = /* @__PURE__ */ function(e) {
|
|
7823
7921
|
return e.CREATOR = "CREATOR", e.ADMIN = "ADMIN", e;
|
|
7824
|
-
}(
|
|
7825
|
-
function
|
|
7922
|
+
}(eo || {});
|
|
7923
|
+
function to(e, t) {
|
|
7826
7924
|
if (e.length !== t.length) return !1;
|
|
7827
7925
|
for (let n of e) if (!t.includes(n)) return !1;
|
|
7828
7926
|
return !0;
|
|
7829
7927
|
}
|
|
7830
7928
|
//#endregion
|
|
7831
7929
|
//#region src/static/ParticipantConnectionStatusUtils.ts
|
|
7832
|
-
var
|
|
7930
|
+
var no;
|
|
7833
7931
|
(function(e) {
|
|
7834
7932
|
function t(e) {
|
|
7835
7933
|
let t = e?.transport ?? e?.lastEffective ?? N.WAITING, n = {
|
|
@@ -7881,8 +7979,8 @@ var $a;
|
|
|
7881
7979
|
shouldNotify: !0
|
|
7882
7980
|
});
|
|
7883
7981
|
}
|
|
7884
|
-
})(
|
|
7885
|
-
var
|
|
7982
|
+
})(no || (no = {}));
|
|
7983
|
+
var ro = no, io = /* @__PURE__ */ function(e) {
|
|
7886
7984
|
return e.USER = "USER", e.ANONYM = "ANONYM", e.GROUP = "GROUP", e;
|
|
7887
7985
|
}({}), Q;
|
|
7888
7986
|
(function(e) {
|
|
@@ -7945,7 +8043,7 @@ var eo = $a, to = /* @__PURE__ */ function(e) {
|
|
|
7945
8043
|
})(Q || (Q = {}));
|
|
7946
8044
|
//#endregion
|
|
7947
8045
|
//#region src/types/WaitingHall.ts
|
|
7948
|
-
function
|
|
8046
|
+
function ao(e) {
|
|
7949
8047
|
try {
|
|
7950
8048
|
return btoa(JSON.stringify(e));
|
|
7951
8049
|
} catch (t) {
|
|
@@ -7953,7 +8051,7 @@ function no(e) {
|
|
|
7953
8051
|
}
|
|
7954
8052
|
return null;
|
|
7955
8053
|
}
|
|
7956
|
-
function
|
|
8054
|
+
function oo(e) {
|
|
7957
8055
|
try {
|
|
7958
8056
|
return JSON.parse(atob(e));
|
|
7959
8057
|
} catch (t) {
|
|
@@ -7963,12 +8061,12 @@ function ro(e) {
|
|
|
7963
8061
|
}
|
|
7964
8062
|
//#endregion
|
|
7965
8063
|
//#region src/utils/Conversation.ts
|
|
7966
|
-
var
|
|
7967
|
-
function
|
|
8064
|
+
var so = (e, t) => j.objectReduce(e, (e, n, r) => (n === t && e.push(r), e), []);
|
|
8065
|
+
function co(e) {
|
|
7968
8066
|
if (e.conversation?.muteStates) return e.conversation.muteStates;
|
|
7969
8067
|
if (e.muteState && e.muteOptions) return e.muteOptions.reduce((t, n) => (t[n] = e.muteState, t), {});
|
|
7970
8068
|
}
|
|
7971
|
-
function
|
|
8069
|
+
function lo(e, t) {
|
|
7972
8070
|
switch (e) {
|
|
7973
8071
|
case S.AUDIO: return !!t.isAudioEnabled;
|
|
7974
8072
|
case S.AUDIO_SHARING: return !!t.isAudioSharingEnabled;
|
|
@@ -7977,12 +8075,12 @@ function oo(e, t) {
|
|
|
7977
8075
|
default: return !1;
|
|
7978
8076
|
}
|
|
7979
8077
|
}
|
|
7980
|
-
function
|
|
8078
|
+
function uo(e, t) {
|
|
7981
8079
|
return j.objectReduce(e, (e, n, r) => {
|
|
7982
8080
|
switch (n) {
|
|
7983
|
-
case
|
|
7984
|
-
case
|
|
7985
|
-
|
|
8081
|
+
case Xa.MUTE:
|
|
8082
|
+
case Xa.MUTE_PERMANENT:
|
|
8083
|
+
lo(r, t) || (e[r] = n);
|
|
7986
8084
|
break;
|
|
7987
8085
|
default:
|
|
7988
8086
|
e[r] = n;
|
|
@@ -7991,19 +8089,19 @@ function so(e, t) {
|
|
|
7991
8089
|
return e;
|
|
7992
8090
|
}, {});
|
|
7993
8091
|
}
|
|
7994
|
-
function
|
|
8092
|
+
function fo(e) {
|
|
7995
8093
|
let { muteStates: t = {}, mediaSettings: n } = e;
|
|
7996
|
-
return
|
|
8094
|
+
return uo(t, n);
|
|
7997
8095
|
}
|
|
7998
|
-
function
|
|
8096
|
+
function po(e, t) {
|
|
7999
8097
|
let n = e.conversation.participants.find((t) => j.comparePeerId(t.peerId, e.peerId));
|
|
8000
8098
|
if (!n) return t;
|
|
8001
8099
|
let { mediaSettings: r } = n;
|
|
8002
|
-
return
|
|
8100
|
+
return uo(t, r);
|
|
8003
8101
|
}
|
|
8004
8102
|
//#endregion
|
|
8005
8103
|
//#region src/utils/IceServers.ts
|
|
8006
|
-
function
|
|
8104
|
+
function mo(e) {
|
|
8007
8105
|
if (!e) return null;
|
|
8008
8106
|
let t = Array.from(new Set((e.urls ?? []).map((e) => e.trim()).filter((e) => e.length > 0)));
|
|
8009
8107
|
return t.length ? {
|
|
@@ -8011,8 +8109,8 @@ function uo(e) {
|
|
|
8011
8109
|
urls: t
|
|
8012
8110
|
} : null;
|
|
8013
8111
|
}
|
|
8014
|
-
function
|
|
8015
|
-
let n = [], r =
|
|
8112
|
+
function ho(e, t) {
|
|
8113
|
+
let n = [], r = mo(e), i = mo(t);
|
|
8016
8114
|
if (r && n.push(r), i) {
|
|
8017
8115
|
let e = [...i.urls];
|
|
8018
8116
|
e.push(`${e[e.length - 1]}?transport=tcp`), n.push({
|
|
@@ -8024,7 +8122,7 @@ function fo(e, t) {
|
|
|
8024
8122
|
}
|
|
8025
8123
|
//#endregion
|
|
8026
8124
|
//#region src/utils/Lz4.ts
|
|
8027
|
-
function
|
|
8125
|
+
function go(e, t) {
|
|
8028
8126
|
let n = new Uint8Array(t), r = 0, i = 0;
|
|
8029
8127
|
for (; r < e.length && i < t;) {
|
|
8030
8128
|
let a = e[r++], o = a >> 4, s = a & 15;
|
|
@@ -8051,7 +8149,7 @@ function po(e, t) {
|
|
|
8051
8149
|
}
|
|
8052
8150
|
//#endregion
|
|
8053
8151
|
//#region src/utils/SerializeLatest.ts
|
|
8054
|
-
function
|
|
8152
|
+
function _o(e) {
|
|
8055
8153
|
let t, n = !1, r, i = async () => {
|
|
8056
8154
|
let t = !1, i;
|
|
8057
8155
|
for (; n;) {
|
|
@@ -8072,7 +8170,7 @@ function mo(e) {
|
|
|
8072
8170
|
}
|
|
8073
8171
|
//#endregion
|
|
8074
8172
|
//#region src/classes/AudioFix.ts
|
|
8075
|
-
var
|
|
8173
|
+
var vo = class {
|
|
8076
8174
|
constructor(e, t = R, n = null) {
|
|
8077
8175
|
h(this, "_fixNoPacketsApplied", !1), h(this, "_fixNoPacketsChecked", !1), h(this, "_fixTooManyPacketsApplied", !1), h(this, "_fixTooManyPacketsSucceeded", !1), h(this, "_fixTooManyPacketsFailed", !1), h(this, "_fixTooManyPacketsTime", void 0), h(this, "_mediaSource", void 0), h(this, "_debug", void 0), h(this, "_logger", void 0), h(this, "_lastPacketsSent", void 0), h(this, "_lastPacketsSentTime", void 0), h(this, "_toggleAudioPromise", null), h(this, "_fixNoPacketsAppliedVideo", !1), this._mediaSource = e, this._debug = t, this._logger = n;
|
|
8078
8176
|
}
|
|
@@ -8110,7 +8208,7 @@ var ho = class {
|
|
|
8110
8208
|
this._debug.warn("[AudioFix] Failed to fix RV (no packets): video restart", e);
|
|
8111
8209
|
}));
|
|
8112
8210
|
}
|
|
8113
|
-
},
|
|
8211
|
+
}, yo = class {
|
|
8114
8212
|
constructor(e, t = !1, n = R, r = null) {
|
|
8115
8213
|
h(this, "_audioElement", null), h(this, "_debug", void 0), h(this, "_preparedAudioElement", void 0), h(this, "_audioTracks", /* @__PURE__ */ new Map()), h(this, "_allowMultipleTracks", void 0), h(this, "_volume", 1), h(this, "_features", { setSinkId: !!Audio.prototype.setSinkId }), h(this, "_statFirstMediaReceived", void 0), h(this, "_logger", void 0), this._statFirstMediaReceived = e, this._allowMultipleTracks = t, this._debug = n, this._logger = r, this._preparedAudioElement = this._prepareAudioElement();
|
|
8116
8214
|
}
|
|
@@ -8211,13 +8309,13 @@ var ho = class {
|
|
|
8211
8309
|
};
|
|
8212
8310
|
//#endregion
|
|
8213
8311
|
//#region src/classes/conversation/ConversationResponseValidator.ts
|
|
8214
|
-
function
|
|
8215
|
-
e ||
|
|
8312
|
+
function bo(e, t) {
|
|
8313
|
+
e || So(t, "response-empty"), e.id || So(t, "id-empty"), e.endpoint || So(t, "endpoint-empty"), !xo(e.stun_server) && !xo(e.turn_server) && So(t, "ice-servers-empty");
|
|
8216
8314
|
}
|
|
8217
|
-
function
|
|
8315
|
+
function xo(e) {
|
|
8218
8316
|
return Array.isArray(e?.urls) && e.urls.length > 0;
|
|
8219
8317
|
}
|
|
8220
|
-
function
|
|
8318
|
+
function So(e, t) {
|
|
8221
8319
|
let n = e.replace(/[A-Z]/g, (e) => `-${e.toLowerCase()}`), r = e === "fastStart" || e === "fastJoin";
|
|
8222
8320
|
throw new O(r ? e === "fastStart" ? D.FAST_START_ERROR : D.FAST_JOIN_ERROR : D.UNKNOWN_ERROR, {
|
|
8223
8321
|
message: `Invalid ${e} response: ${t}`,
|
|
@@ -8236,7 +8334,7 @@ function yo(e, t) {
|
|
|
8236
8334
|
}
|
|
8237
8335
|
//#endregion
|
|
8238
8336
|
//#region src/classes/DebugInfo.ts
|
|
8239
|
-
var
|
|
8337
|
+
var Co = 90, wo = 3, To = class extends b {
|
|
8240
8338
|
constructor(e = R) {
|
|
8241
8339
|
super(), h(this, "_lastMemoryStat", {
|
|
8242
8340
|
percent: 0,
|
|
@@ -8252,11 +8350,11 @@ var bo = 90, xo = 3, So = class extends b {
|
|
|
8252
8350
|
let e = window?.performance?.memory;
|
|
8253
8351
|
if (!e || !e.usedJSHeapSize || !e.jsHeapSizeLimit) return;
|
|
8254
8352
|
let t = Number((100 * e.usedJSHeapSize / e.jsHeapSizeLimit).toFixed(2)), n = Number((e.usedJSHeapSize / 1024 / 1024).toFixed(1));
|
|
8255
|
-
t >
|
|
8353
|
+
t > Co ? this._debug.warn(`High memory usage: ${t}% (${n} MiB)`) : (!this._lastMemoryStat.percent || Math.abs(t - this._lastMemoryStat.percent) >= wo) && (this._debug.debug(`Memory usage: ${t}% (${n} MiB)`), this._lastMemoryStat.percent = t, this._lastMemoryStat.bytes = e.usedJSHeapSize);
|
|
8256
8354
|
}
|
|
8257
|
-
},
|
|
8258
|
-
constructor({ api: e, debug: t, getParticipants: n, isMe: r, updateDisplayLayout: i }) {
|
|
8259
|
-
h(this, "_api", void 0), h(this, "_debug", void 0), h(this, "_getParticipants", void 0), h(this, "_isMe", void 0), h(this, "_updateDisplayLayout", void 0), h(this, "_requestedLayouts", {}), h(this, "_uncertainLayouts", {}), h(this, "_pendingRequests", null), h(this, "_pendingPromises", []), h(this, "_lastRequests", null), h(this, "_timer", null), h(this, "_inFlight", !1), h(this, "_lastFlushAt", null), h(this, "_generation", 0), h(this, "_forceNextFlush", !1), this._api = e, this._debug = t, this._getParticipants = n, this._isMe = r, this._updateDisplayLayout = i;
|
|
8355
|
+
}, Eo = class {
|
|
8356
|
+
constructor({ api: e, debug: t, getParticipants: n, isMe: r, updateDisplayLayout: i, onNonFatalError: a }) {
|
|
8357
|
+
h(this, "_api", void 0), h(this, "_debug", void 0), h(this, "_getParticipants", void 0), h(this, "_isMe", void 0), h(this, "_updateDisplayLayout", void 0), h(this, "_onNonFatalError", void 0), h(this, "_requestedLayouts", {}), h(this, "_uncertainLayouts", {}), h(this, "_pendingRequests", null), h(this, "_pendingPromises", []), h(this, "_lastRequests", null), h(this, "_timer", null), h(this, "_inFlight", !1), h(this, "_lastFlushAt", null), h(this, "_generation", 0), h(this, "_forceNextFlush", !1), this._api = e, this._debug = t, this._getParticipants = n, this._isMe = r, this._updateDisplayLayout = i, this._onNonFatalError = a;
|
|
8260
8358
|
}
|
|
8261
8359
|
request(e) {
|
|
8262
8360
|
this._pendingRequests = e.slice(), this._lastRequests = e.slice();
|
|
@@ -8292,11 +8390,16 @@ var bo = 90, xo = 3, So = class extends b {
|
|
|
8292
8390
|
this._pendingRequests = null, this._pendingPromises = [];
|
|
8293
8391
|
let r = {};
|
|
8294
8392
|
try {
|
|
8295
|
-
|
|
8296
|
-
|
|
8393
|
+
let i = this._getRequestLayouts(t);
|
|
8394
|
+
if (!i) {
|
|
8395
|
+
n.forEach(({ resolve: e }) => e());
|
|
8396
|
+
return;
|
|
8397
|
+
}
|
|
8398
|
+
r = i;
|
|
8399
|
+
let a = this._forceNextFlush || Object.keys(this._uncertainLayouts).length > 0;
|
|
8297
8400
|
this._forceNextFlush = !1;
|
|
8298
|
-
let
|
|
8299
|
-
|
|
8401
|
+
let o = this._getDiff(r, a);
|
|
8402
|
+
o.length && await this._updateDisplayLayout(o), e === this._generation && (this._requestedLayouts = r, this._uncertainLayouts = {}), n.forEach(({ resolve: e }) => e());
|
|
8300
8403
|
} catch (t) {
|
|
8301
8404
|
e === this._generation ? (this._uncertainLayouts = {
|
|
8302
8405
|
...this._uncertainLayouts,
|
|
@@ -8307,30 +8410,30 @@ var bo = 90, xo = 3, So = class extends b {
|
|
|
8307
8410
|
}
|
|
8308
8411
|
}
|
|
8309
8412
|
_getRequestLayouts(e) {
|
|
8310
|
-
let t = {}, n = this._getParticipants();
|
|
8311
|
-
for (let
|
|
8312
|
-
let e = typeof
|
|
8313
|
-
if (!
|
|
8314
|
-
this._debug.log(`Unknown participant external ID ${typeof
|
|
8413
|
+
let t = {}, n = [], r = this._getParticipants();
|
|
8414
|
+
for (let i of e) {
|
|
8415
|
+
let e = typeof i.uid == "object" ? i.uid : Q.fromId(i.uid), a = this._api.getCachedParticipantIdByExternalId(e);
|
|
8416
|
+
if (!a) {
|
|
8417
|
+
this._debug.log(`Unknown participant external ID ${typeof i.uid == "object" ? Q.toString(i.uid) : i.uid}`), n.push(e.id);
|
|
8315
8418
|
continue;
|
|
8316
8419
|
}
|
|
8317
|
-
if (!
|
|
8318
|
-
let
|
|
8319
|
-
participantId:
|
|
8320
|
-
mediaType:
|
|
8321
|
-
streamName:
|
|
8420
|
+
if (!r[a] && !this._isMe(a)) continue;
|
|
8421
|
+
let o = Mn({
|
|
8422
|
+
participantId: a,
|
|
8423
|
+
mediaType: i.mediaType,
|
|
8424
|
+
streamName: i.streamName
|
|
8322
8425
|
});
|
|
8323
|
-
t[
|
|
8324
|
-
uid:
|
|
8325
|
-
mediaType:
|
|
8326
|
-
width:
|
|
8327
|
-
height:
|
|
8328
|
-
fit:
|
|
8329
|
-
...
|
|
8330
|
-
...
|
|
8426
|
+
t[o] = {
|
|
8427
|
+
uid: i.uid,
|
|
8428
|
+
mediaType: i.mediaType,
|
|
8429
|
+
width: i.width,
|
|
8430
|
+
height: i.height,
|
|
8431
|
+
fit: i.cover ? "cv" : "cn",
|
|
8432
|
+
...i.priority === void 0 ? {} : { priority: i.priority },
|
|
8433
|
+
...i.streamName === void 0 ? {} : { streamName: i.streamName }
|
|
8331
8434
|
};
|
|
8332
8435
|
}
|
|
8333
|
-
return t;
|
|
8436
|
+
return n.length ? (this._onNonFatalError(`Participant ID mapping not found for external IDs "${Array.from(new Set(n)).join("\", \"")}" while handling requestDisplayLayout`), null) : t;
|
|
8334
8437
|
}
|
|
8335
8438
|
_getDiff(e, t = !1) {
|
|
8336
8439
|
let n = [];
|
|
@@ -8364,12 +8467,12 @@ var bo = 90, xo = 3, So = class extends b {
|
|
|
8364
8467
|
let n = e, r = t;
|
|
8365
8468
|
return n.width !== r.width || n.height !== r.height || n.fit !== r.fit || n.priority !== r.priority;
|
|
8366
8469
|
}
|
|
8367
|
-
},
|
|
8470
|
+
}, Do = 44100, Oo = class {
|
|
8368
8471
|
constructor(e, t) {
|
|
8369
8472
|
h(this, "_analyser", null), h(this, "_gainNode", null), h(this, "_fftBins", null), h(this, "_mediaStreamSource", null), h(this, "_lastSmoothedLevel", 0), h(this, "_trackId", void 0), h(this, "_track", void 0), h(this, "_stream", void 0), this._trackId = e, this._track = t, this._stream = new MediaStream([t]);
|
|
8370
8473
|
try {
|
|
8371
8474
|
let e = T.getAudioContext();
|
|
8372
|
-
this.
|
|
8475
|
+
this._analyser = e.createAnalyser(), this._analyser.fftSize = 1024, this._analyser.smoothingTimeConstant = 0, T.browserName() === "Safari" && (this._gainNode = e.createGain(), this._gainNode.gain.value = 1e-5, this._gainNode.connect(e.destination), this._analyser.connect(this._gainNode)), this._fftBins = new Uint8Array(this._analyser.frequencyBinCount), this._mediaStreamSource = e.createMediaStreamSource(this._stream), this._mediaStreamSource.connect(this._analyser);
|
|
8373
8476
|
} catch {}
|
|
8374
8477
|
}
|
|
8375
8478
|
get track() {
|
|
@@ -8381,7 +8484,7 @@ var bo = 90, xo = 3, So = class extends b {
|
|
|
8381
8484
|
_getBins() {
|
|
8382
8485
|
if (!this._fftBins || !this._analyser) return new Uint8Array();
|
|
8383
8486
|
this._analyser.getByteFrequencyData(this._fftBins);
|
|
8384
|
-
let e =
|
|
8487
|
+
let e = Do / this._fftBins.length, t = Math.ceil(M.voiceParams.minFreq / e), n = Math.floor(M.voiceParams.maxFreq / e);
|
|
8385
8488
|
return this._fftBins.subarray(t, n);
|
|
8386
8489
|
}
|
|
8387
8490
|
getLevel() {
|
|
@@ -8394,7 +8497,7 @@ var bo = 90, xo = 3, So = class extends b {
|
|
|
8394
8497
|
destroy() {
|
|
8395
8498
|
this._mediaStreamSource && (this._mediaStreamSource.disconnect(), this._mediaStreamSource = null), this._gainNode && (this._gainNode.disconnect(), this._gainNode = null), this._analyser && (this._analyser.disconnect(), this._analyser = null, this._fftBins = null, this._lastSmoothedLevel = 0), this._stream.removeTrack(this._track);
|
|
8396
8499
|
}
|
|
8397
|
-
},
|
|
8500
|
+
}, ko = class extends b {
|
|
8398
8501
|
constructor(e) {
|
|
8399
8502
|
super(), h(this, "_detector", null), h(this, "_interval", null);
|
|
8400
8503
|
let t = () => {
|
|
@@ -8410,7 +8513,7 @@ var bo = 90, xo = 3, So = class extends b {
|
|
|
8410
8513
|
}), this.subscribe(e, qt.SOURCE_READY, n), n();
|
|
8411
8514
|
}
|
|
8412
8515
|
init(e) {
|
|
8413
|
-
this._stopDetector(), this._detector = new
|
|
8516
|
+
this._stopDetector(), this._detector = new Oo("local", e.clone());
|
|
8414
8517
|
}
|
|
8415
8518
|
_stopDetector() {
|
|
8416
8519
|
this._detector && (this._detector.track.stop(), this._detector.destroy(), this._detector = null);
|
|
@@ -8418,7 +8521,7 @@ var bo = 90, xo = 3, So = class extends b {
|
|
|
8418
8521
|
destroy() {
|
|
8419
8522
|
this.unsubscribe(), this._interval && (window.clearTimeout(this._interval), this._interval = null), this._stopDetector();
|
|
8420
8523
|
}
|
|
8421
|
-
},
|
|
8524
|
+
}, Ao = class {
|
|
8422
8525
|
constructor(e, t = R) {
|
|
8423
8526
|
h(this, "processor", void 0), h(this, "queue", []), h(this, "isProcessing", !1), h(this, "_debug", void 0), this.processor = e, this._debug = t;
|
|
8424
8527
|
}
|
|
@@ -8438,9 +8541,9 @@ var bo = 90, xo = 3, So = class extends b {
|
|
|
8438
8541
|
this.isProcessing = !1;
|
|
8439
8542
|
}
|
|
8440
8543
|
}
|
|
8441
|
-
},
|
|
8544
|
+
}, jo = /* @__PURE__ */ function(e) {
|
|
8442
8545
|
return e.VOLUMES_DETECTED = "VOLUMES_DETECTED", e;
|
|
8443
|
-
}({}),
|
|
8546
|
+
}({}), Mo = class extends b {
|
|
8444
8547
|
constructor(e) {
|
|
8445
8548
|
super(), h(this, "_detectors", /* @__PURE__ */ new Map()), h(this, "_interval", null), h(this, "_activeParticipants", void 0), h(this, "_removedParticipants", void 0), h(this, "_topology", void 0), this._topology = e.getTopology(), this.subscribe(e, X.REMOTE_TRACK_ADDED, this._onRemoteTrackAdded.bind(this)), this.subscribe(e, X.REMOTE_TRACK_REMOVED, this._onRemoteTrackRemoved.bind(this)), this.subscribe(e, X.SIGNALLED_ACTIVE_PARTICIPANTS, this._onSignalledActiveParticipants.bind(this)), this.subscribe(e, X.TOPOLOGY_CHANGED, this._onTopologyChanged.bind(this));
|
|
8446
8549
|
}
|
|
@@ -8448,7 +8551,7 @@ var bo = 90, xo = 3, So = class extends b {
|
|
|
8448
8551
|
this._interval && (window.clearTimeout(this._interval), this._interval = null), this.unsubscribe(), this._destroyDetectors();
|
|
8449
8552
|
}
|
|
8450
8553
|
_onRemoteTrackAdded(e, t, n) {
|
|
8451
|
-
if (n.kind === k.audio && (this._detectors.get(e)?.destroy(), this._detectors.set(e, new
|
|
8554
|
+
if (n.kind === k.audio && (this._detectors.get(e)?.destroy(), this._detectors.set(e, new Oo(e, n)), !this._interval)) {
|
|
8452
8555
|
let e = () => {
|
|
8453
8556
|
this._collectVolumes(), this._interval = window.setTimeout(e, M.voiceParams.interval);
|
|
8454
8557
|
};
|
|
@@ -8480,14 +8583,14 @@ var bo = 90, xo = 3, So = class extends b {
|
|
|
8480
8583
|
}
|
|
8481
8584
|
_getAudioTrackLevelByParticipantId(e) {
|
|
8482
8585
|
if (this._isTransparentAudioMode()) return this._getTransparentAudioLevelByParticipantId(e);
|
|
8483
|
-
let t = this._detectors.get(
|
|
8586
|
+
let t = this._detectors.get(Xr.AUDIO_MIX);
|
|
8484
8587
|
return t ? t.getLevel() : null;
|
|
8485
8588
|
}
|
|
8486
8589
|
_getTransparentAudioLevelByParticipantId(e) {
|
|
8487
8590
|
if (!this._activeParticipants?.includes(e)) return null;
|
|
8488
8591
|
let t = null;
|
|
8489
8592
|
return this._detectors.forEach((e, n) => {
|
|
8490
|
-
if (!n.startsWith(`${
|
|
8593
|
+
if (!n.startsWith(`${Xr.TRANSPARENT_AUDIO_TRACK_PREFIX}-`)) return;
|
|
8491
8594
|
let r = e.getLevel();
|
|
8492
8595
|
(!t || r.real > t.real) && (t = r);
|
|
8493
8596
|
}), t;
|
|
@@ -8506,11 +8609,11 @@ var bo = 90, xo = 3, So = class extends b {
|
|
|
8506
8609
|
e.destroy();
|
|
8507
8610
|
}), this._detectors.clear();
|
|
8508
8611
|
}
|
|
8509
|
-
},
|
|
8612
|
+
}, No = /* @__PURE__ */ function(e) {
|
|
8510
8613
|
return e.SPEAKER_CHANGED = "SPEAKER_CHANGED", e;
|
|
8511
|
-
}({}),
|
|
8614
|
+
}({}), Po = class extends b {
|
|
8512
8615
|
constructor(e, t, n) {
|
|
8513
|
-
super(), h(this, "_speakerId", null), h(this, "_serverSideSpeakerDetection", !1), this._serverSideSpeakerDetection = n === J.SERVER, this.subscribe(e,
|
|
8616
|
+
super(), h(this, "_speakerId", null), h(this, "_serverSideSpeakerDetection", !1), this._serverSideSpeakerDetection = n === J.SERVER, this.subscribe(e, jo.VOLUMES_DETECTED, this._onVolumesDetected.bind(this)), this.subscribe(t, X.SIGNALLED_SPEAKER_CHANGED, this._onServerSpeakerChanged.bind(this)), this.subscribe(t, X.TOPOLOGY_CHANGED, this._onTopologyChanged.bind(this));
|
|
8514
8617
|
}
|
|
8515
8618
|
destroy() {
|
|
8516
8619
|
this.unsubscribe();
|
|
@@ -8532,9 +8635,9 @@ var bo = 90, xo = 3, So = class extends b {
|
|
|
8532
8635
|
_onTopologyChanged(e) {
|
|
8533
8636
|
this._serverSideSpeakerDetection = e === J.SERVER;
|
|
8534
8637
|
}
|
|
8535
|
-
},
|
|
8638
|
+
}, Fo = 15e3, Io = 15e3, Lo = class extends b {
|
|
8536
8639
|
constructor(e, t, n, r = R, i = null) {
|
|
8537
|
-
super(), h(this, "_transport", void 0), h(this, "_volumes", {}), h(this, "_participants", {}), h(this, "_debug", void 0), h(this, "_logger", void 0), h(this, "_connectionTimeout", 0), h(this, "_connectionTimeoutSuppressed", !1), h(this, "_volumeTimeout", 0), this._transport = e, this._participants = n, this._debug = r, this._logger = i, this.subscribe(e, X.STATE_CHANGED, this._onTransportStateChanged.bind(this)), this.subscribe(t,
|
|
8640
|
+
super(), h(this, "_transport", void 0), h(this, "_volumes", {}), h(this, "_participants", {}), h(this, "_debug", void 0), h(this, "_logger", void 0), h(this, "_connectionTimeout", 0), h(this, "_connectionTimeoutSuppressed", !1), h(this, "_volumeTimeout", 0), this._transport = e, this._participants = n, this._debug = r, this._logger = i, this.subscribe(e, X.STATE_CHANGED, this._onTransportStateChanged.bind(this)), this.subscribe(t, jo.VOLUMES_DETECTED, this._onVolumesDetected.bind(this));
|
|
8538
8641
|
}
|
|
8539
8642
|
destroy() {
|
|
8540
8643
|
this.unsubscribe(), this._connectionTimeout && window.clearTimeout(this._connectionTimeout), this._volumeTimeout && window.clearTimeout(this._volumeTimeout);
|
|
@@ -8546,10 +8649,10 @@ var bo = 90, xo = 3, So = class extends b {
|
|
|
8546
8649
|
this._connectionTimeout || !this._connectionTimeoutSuppressed || this._reportConnectionTimeout();
|
|
8547
8650
|
}
|
|
8548
8651
|
_getConnectionTimeout() {
|
|
8549
|
-
return this._transport.getTopology() === J.DIRECT ?
|
|
8652
|
+
return this._transport.getTopology() === J.DIRECT ? Fo : M.specListenerParams.connectionTimeout;
|
|
8550
8653
|
}
|
|
8551
8654
|
_getVolumeTimeout() {
|
|
8552
|
-
return this._transport.getTopology() === J.DIRECT ?
|
|
8655
|
+
return this._transport.getTopology() === J.DIRECT ? Io : M.specListenerParams.volumeTimeout;
|
|
8553
8656
|
}
|
|
8554
8657
|
_onTransportStateChanged(e, t) {
|
|
8555
8658
|
t === q.OPENED && (this._connectionTimeout || (this._connectionTimeoutSuppressed = !1, this._connectionTimeout = window.setTimeout(this._onConnectionTimeout.bind(this), this._getConnectionTimeout()))), t === q.CONNECTED && (this._volumeTimeout || (this._volumeTimeout = window.setTimeout(this._onVolumeTimeout.bind(this), this._getVolumeTimeout())), this._volumeTimeout && (window.clearTimeout(this._volumeTimeout), this._volumeTimeout = window.setTimeout(this._onVolumeTimeout.bind(this), this._getVolumeTimeout()))), t === q.FAILED && this._connectionTimeout && (this._debug.warn("Transport failed, send callSpecError"), this._logger?.log(C.CALL_SPEC_ERROR, `${this._transport.getTopology()}_CONNECTION_TIMEOUT`));
|
|
@@ -8582,7 +8685,7 @@ var bo = 90, xo = 3, So = class extends b {
|
|
|
8582
8685
|
r && r.platform && (n = r.platform), e.indexOf(n) < 0 && (e.push(n), this._logger?.log(C.CALL_SPEC_ERROR, `${this._transport.getTopology()}_VOLUME_TIMEOUT_${n}`));
|
|
8583
8686
|
}), e.length && this._debug.warn("There is silent participant, send callSpecError"), this._volumeTimeout = 0;
|
|
8584
8687
|
}
|
|
8585
|
-
},
|
|
8688
|
+
}, Ro = class extends f {
|
|
8586
8689
|
constructor(e, t, n, r = () => void 0) {
|
|
8587
8690
|
super(), h(this, "_externalLogger", void 0), h(this, "_api", void 0), h(this, "_conversationIdProvider", void 0), h(this, "_topologyProvider", void 0), h(this, "_batchInterval", 3e3), h(this, "_batchedClientStats", []), h(this, "_batchTimeout", null), h(this, "_serverTimeDelta", 0), h(this, "_waitingForServerTime", !0), h(this, "_deferredClientStats", []), this._api = e, this._externalLogger = t, this._conversationIdProvider = n, this._topologyProvider = r, this._calculateServerTimeDelta();
|
|
8588
8691
|
}
|
|
@@ -8662,7 +8765,7 @@ var bo = 90, xo = 3, So = class extends b {
|
|
|
8662
8765
|
_now() {
|
|
8663
8766
|
return Date.now() - this._serverTimeDelta;
|
|
8664
8767
|
}
|
|
8665
|
-
},
|
|
8768
|
+
}, zo = "invalid-error-metadata", Bo = 64, Vo = new Set(Object.values(D)), Ho = new Set(Object.values(x)), Uo = {
|
|
8666
8769
|
[D.CANCELED]: {
|
|
8667
8770
|
type: "semantic",
|
|
8668
8771
|
reason: "canceled"
|
|
@@ -8783,7 +8886,7 @@ var bo = 90, xo = 3, So = class extends b {
|
|
|
8783
8886
|
type: "semantic",
|
|
8784
8887
|
reason: "obsolete_client"
|
|
8785
8888
|
}
|
|
8786
|
-
},
|
|
8889
|
+
}, Wo = {
|
|
8787
8890
|
[x.MIC_CAMERA_PERMISSION]: {
|
|
8788
8891
|
type: "direct-error",
|
|
8789
8892
|
error: {
|
|
@@ -8872,14 +8975,14 @@ var bo = 90, xo = 3, So = class extends b {
|
|
|
8872
8975
|
}
|
|
8873
8976
|
}
|
|
8874
8977
|
};
|
|
8875
|
-
function
|
|
8876
|
-
if (typeof e != "string" && typeof e != "number" || typeof e == "number" && !Number.isFinite(e)) return
|
|
8978
|
+
function Go(e) {
|
|
8979
|
+
if (typeof e != "string" && typeof e != "number" || typeof e == "number" && !Number.isFinite(e)) return zo;
|
|
8877
8980
|
let t = String(e).trim();
|
|
8878
|
-
if (!t) return
|
|
8981
|
+
if (!t) return zo;
|
|
8879
8982
|
let n = t.toLowerCase().replace(/[\s_:]+/g, "-").replace(/-+/g, "-").replace(/^-|-$/g, "");
|
|
8880
|
-
return !n || !/^[a-z0-9.-]+$/.test(n) ?
|
|
8983
|
+
return !n || !/^[a-z0-9.-]+$/.test(n) ? zo : n.length > Bo ? `${n.slice(0, Bo - 3)}...` : n;
|
|
8881
8984
|
}
|
|
8882
|
-
function
|
|
8985
|
+
function Ko(e) {
|
|
8883
8986
|
if (!e || typeof e != "object") return !1;
|
|
8884
8987
|
let t = e;
|
|
8885
8988
|
switch (t.scope) {
|
|
@@ -8891,49 +8994,49 @@ function Uo(e) {
|
|
|
8891
8994
|
default: return !1;
|
|
8892
8995
|
}
|
|
8893
8996
|
}
|
|
8894
|
-
function
|
|
8895
|
-
let t =
|
|
8997
|
+
function qo(e) {
|
|
8998
|
+
let t = Go(e.description);
|
|
8896
8999
|
if (e.scope === "unknown") return `unknown:${t}`;
|
|
8897
|
-
let n =
|
|
9000
|
+
let n = Go(e.code);
|
|
8898
9001
|
return e.scope === "internal" ? `internal:${n}:${t}` : `${e.scope}:${e.source}:${n}:${t}`;
|
|
8899
9002
|
}
|
|
8900
|
-
function
|
|
9003
|
+
function Jo(e, t) {
|
|
8901
9004
|
return t === null ? e.type === "direct-error" ? {
|
|
8902
9005
|
reason: "error",
|
|
8903
|
-
string_value:
|
|
8904
|
-
} : { reason: "failed" } :
|
|
9006
|
+
string_value: qo(e.error)
|
|
9007
|
+
} : { reason: "failed" } : Ko(t) ? {
|
|
8905
9008
|
reason: "error",
|
|
8906
|
-
string_value:
|
|
9009
|
+
string_value: qo(t)
|
|
8907
9010
|
} : { reason: "failed" };
|
|
8908
9011
|
}
|
|
8909
|
-
function
|
|
9012
|
+
function Yo(e) {
|
|
8910
9013
|
if (e.hangup) {
|
|
8911
|
-
let t =
|
|
9014
|
+
let t = Uo[e.hangup];
|
|
8912
9015
|
return t ? t.type === "semantic" ? e.hangup === D.OBSOLETE_CLIENT && e.custom_error?.vchat_detailed_api_error.code ? {
|
|
8913
9016
|
reason: t.reason,
|
|
8914
9017
|
string_value: e.custom_error.vchat_detailed_api_error.code
|
|
8915
|
-
} : { reason: t.reason } :
|
|
9018
|
+
} : { reason: t.reason } : Jo(t, e.callError) : { reason: "failed" };
|
|
8916
9019
|
}
|
|
8917
9020
|
if (e.error) {
|
|
8918
|
-
let t =
|
|
8919
|
-
return t ?
|
|
9021
|
+
let t = Wo[e.error];
|
|
9022
|
+
return t ? Jo(t, e.callError) : { reason: "failed" };
|
|
8920
9023
|
}
|
|
8921
9024
|
return { reason: "failed" };
|
|
8922
9025
|
}
|
|
8923
|
-
function
|
|
8924
|
-
return e instanceof O ?
|
|
9026
|
+
function Xo(e) {
|
|
9027
|
+
return e instanceof O ? Yo(e) : typeof e == "string" && (Vo.has(e) || Ho.has(e)) ? Yo(new O(e)) : { reason: "failed" };
|
|
8925
9028
|
}
|
|
8926
9029
|
//#endregion
|
|
8927
9030
|
//#region src/classes/stat/CallLifecycleStats.ts
|
|
8928
|
-
var
|
|
9031
|
+
var Zo = {
|
|
8929
9032
|
wallNow: () => Date.now(),
|
|
8930
9033
|
monotonicNow: () => performance.now()
|
|
8931
9034
|
};
|
|
8932
|
-
function
|
|
9035
|
+
function Qo(e) {
|
|
8933
9036
|
return e === "anonym_join" ? "join" : e;
|
|
8934
9037
|
}
|
|
8935
|
-
var
|
|
8936
|
-
constructor(e, t =
|
|
9038
|
+
var $o = class {
|
|
9039
|
+
constructor(e, t = Zo) {
|
|
8937
9040
|
h(this, "_logger", void 0), h(this, "_clock", void 0), h(this, "_conversationId", null), h(this, "_callStartLabel", null), h(this, "_lifecycleStartedAtMonotonic", 0), h(this, "_pendingEvents", []), h(this, "_callStarted", !1), h(this, "_accepted", !1), h(this, "_firstMediaSent", !1), h(this, "_finished", !1), h(this, "_destroyed", !1), this._logger = e, this._clock = t;
|
|
8938
9041
|
}
|
|
8939
9042
|
get firstMediaSentReported() {
|
|
@@ -8945,7 +9048,7 @@ var Xo = class {
|
|
|
8945
9048
|
markInitializationStarted({ source: e, conversationId: t }) {
|
|
8946
9049
|
if (this._destroyed || this._callStartLabel !== null) return;
|
|
8947
9050
|
let n = this._clock.wallNow();
|
|
8948
|
-
this._callStartLabel =
|
|
9051
|
+
this._callStartLabel = Qo(e), this._lifecycleStartedAtMonotonic = this._clock.monotonicNow(), t && (this._conversationId = t), this._record({
|
|
8949
9052
|
name: H.CALL_INIT,
|
|
8950
9053
|
source: e
|
|
8951
9054
|
}, n);
|
|
@@ -8973,7 +9076,7 @@ var Xo = class {
|
|
|
8973
9076
|
!this._canRecord() || this._firstMediaSent || (this._firstMediaSent = !0, this._record({ name: H.FIRST_MEDIA_SENT }));
|
|
8974
9077
|
}
|
|
8975
9078
|
markFinished(e) {
|
|
8976
|
-
this._finish(
|
|
9079
|
+
this._finish(Xo(e));
|
|
8977
9080
|
}
|
|
8978
9081
|
markTerminated() {
|
|
8979
9082
|
this._finish({ reason: "terminated" });
|
|
@@ -9024,7 +9127,7 @@ var Xo = class {
|
|
|
9024
9127
|
...n && { immediately: !0 }
|
|
9025
9128
|
});
|
|
9026
9129
|
}
|
|
9027
|
-
},
|
|
9130
|
+
}, es = class {
|
|
9028
9131
|
constructor(e, t) {
|
|
9029
9132
|
h(this, "_logger", void 0), h(this, "_codecUsages", /* @__PURE__ */ new Map()), h(this, "getCurrentTransportTopology", void 0), this._logger = e, this.getCurrentTransportTopology = t;
|
|
9030
9133
|
}
|
|
@@ -9087,7 +9190,7 @@ var Xo = class {
|
|
|
9087
9190
|
this.report(e);
|
|
9088
9191
|
}), this._codecUsages.clear();
|
|
9089
9192
|
}
|
|
9090
|
-
},
|
|
9193
|
+
}, ts = class {
|
|
9091
9194
|
constructor(e) {
|
|
9092
9195
|
h(this, "_logger", void 0), h(this, "_eventualLogs", /* @__PURE__ */ new Set()), h(this, "_lastCallStatContext", null), this._logger = e;
|
|
9093
9196
|
}
|
|
@@ -9121,11 +9224,11 @@ var Xo = class {
|
|
|
9121
9224
|
}
|
|
9122
9225
|
_logEventualStat({ data: e, occurredAt: t }) {
|
|
9123
9226
|
this._logger.logClientStats({
|
|
9124
|
-
...
|
|
9125
|
-
...
|
|
9227
|
+
...this._lastCallStatContext ?? {},
|
|
9228
|
+
...e
|
|
9126
9229
|
}, { occurredAt: t });
|
|
9127
9230
|
}
|
|
9128
|
-
},
|
|
9231
|
+
}, ns = class {
|
|
9129
9232
|
constructor(e) {
|
|
9130
9233
|
if (h(this, "q", void 0), h(this, "inits", []), h(this, "n", [
|
|
9131
9234
|
1,
|
|
@@ -9184,7 +9287,7 @@ var Xo = class {
|
|
|
9184
9287
|
5
|
|
9185
9288
|
];
|
|
9186
9289
|
}
|
|
9187
|
-
},
|
|
9290
|
+
}, rs = class {
|
|
9188
9291
|
constructor() {
|
|
9189
9292
|
h(this, "n", 0), h(this, "mean", 0);
|
|
9190
9293
|
}
|
|
@@ -9196,9 +9299,9 @@ var Xo = class {
|
|
|
9196
9299
|
get avg() {
|
|
9197
9300
|
return this.n ? this.mean : NaN;
|
|
9198
9301
|
}
|
|
9199
|
-
},
|
|
9302
|
+
}, is = class {
|
|
9200
9303
|
constructor() {
|
|
9201
|
-
h(this, "count", 0), h(this, "minVal", Infinity), h(this, "maxVal", -Infinity), h(this, "mean", new
|
|
9304
|
+
h(this, "count", 0), h(this, "minVal", Infinity), h(this, "maxVal", -Infinity), h(this, "mean", new rs()), h(this, "p50", new ns(.5)), h(this, "p95", new ns(.95));
|
|
9202
9305
|
}
|
|
9203
9306
|
add(e) {
|
|
9204
9307
|
e < this.minVal && (this.minVal = e), e > this.maxVal && (this.maxVal = e), this.mean.add(e), this.p50.add(e), this.p95.add(e), this.count++;
|
|
@@ -9216,11 +9319,11 @@ var Xo = class {
|
|
|
9216
9319
|
get hasData() {
|
|
9217
9320
|
return this.count > 0;
|
|
9218
9321
|
}
|
|
9219
|
-
},
|
|
9322
|
+
}, as = class {
|
|
9220
9323
|
constructor(e) {
|
|
9221
9324
|
h(this, "_logger", void 0), h(this, "trackerByTransport", {
|
|
9222
|
-
ws: new
|
|
9223
|
-
wt: new
|
|
9325
|
+
ws: new is(),
|
|
9326
|
+
wt: new is()
|
|
9224
9327
|
}), h(this, "lastSeen", {}), this._logger = e;
|
|
9225
9328
|
}
|
|
9226
9329
|
mark(e) {
|
|
@@ -9249,17 +9352,17 @@ var Xo = class {
|
|
|
9249
9352
|
}
|
|
9250
9353
|
destroy() {
|
|
9251
9354
|
this.trackerByTransport = {
|
|
9252
|
-
ws: new
|
|
9253
|
-
wt: new
|
|
9355
|
+
ws: new is(),
|
|
9356
|
+
wt: new is()
|
|
9254
9357
|
}, this.lastSeen = {};
|
|
9255
9358
|
}
|
|
9256
|
-
},
|
|
9359
|
+
}, os = class {
|
|
9257
9360
|
constructor(e) {
|
|
9258
9361
|
h(this, "_logger", void 0), h(this, "trackerByCommand", /* @__PURE__ */ new Map()), this._logger = e;
|
|
9259
9362
|
}
|
|
9260
9363
|
mark(e, t, n) {
|
|
9261
9364
|
let r = `${e}|${n}`, i;
|
|
9262
|
-
this.trackerByCommand.has(r) ? i = this.trackerByCommand.get(r) : (i = new
|
|
9365
|
+
this.trackerByCommand.has(r) ? i = this.trackerByCommand.get(r) : (i = new is(), this.trackerByCommand.set(r, i)), i.add(t);
|
|
9263
9366
|
}
|
|
9264
9367
|
logMetrics() {
|
|
9265
9368
|
for (let [e, t] of this.trackerByCommand.entries()) {
|
|
@@ -9281,9 +9384,9 @@ var Xo = class {
|
|
|
9281
9384
|
destroy() {
|
|
9282
9385
|
this.trackerByCommand.clear();
|
|
9283
9386
|
}
|
|
9284
|
-
},
|
|
9387
|
+
}, ss = class {
|
|
9285
9388
|
constructor(e, t, n, r) {
|
|
9286
|
-
h(this, "logger", void 0), h(this, "lifecycle", void 0), h(this, "statAggregator", void 0), h(this, "codecStatsAggregator", void 0), h(this, "pings", void 0), h(this, "signalingCommands", void 0), this.logger = new
|
|
9389
|
+
h(this, "logger", void 0), h(this, "lifecycle", void 0), h(this, "statAggregator", void 0), h(this, "codecStatsAggregator", void 0), h(this, "pings", void 0), h(this, "signalingCommands", void 0), this.logger = new Ro(e, t, n, r), this.lifecycle = new $o(this.logger), this.statAggregator = new ts(this.logger), this.codecStatsAggregator = new es(this.logger, r), this.pings = new as(this.logger), this.signalingCommands = new os(this.logger);
|
|
9287
9390
|
}
|
|
9288
9391
|
logHangup(e) {
|
|
9289
9392
|
this.lifecycle.markFinished(e);
|
|
@@ -9294,7 +9397,7 @@ var Xo = class {
|
|
|
9294
9397
|
destroy() {
|
|
9295
9398
|
this.lifecycle.markTerminated(), this.lifecycle.destroy(), this.statAggregator.destroy(), this.codecStatsAggregator.destroy(), this.pings.destroy(), this.signalingCommands.destroy(), this.logger.destroy();
|
|
9296
9399
|
}
|
|
9297
|
-
},
|
|
9400
|
+
}, cs = class {
|
|
9298
9401
|
constructor(e) {
|
|
9299
9402
|
h(this, "_statAggregator", void 0), h(this, "_isCallMarked", !1), h(this, "_isFinished", !1), h(this, "_callType", null), this._statAggregator = e;
|
|
9300
9403
|
}
|
|
@@ -9319,8 +9422,8 @@ var Xo = class {
|
|
|
9319
9422
|
call_type: this._callType
|
|
9320
9423
|
}));
|
|
9321
9424
|
}
|
|
9322
|
-
},
|
|
9323
|
-
function
|
|
9425
|
+
}, ls = 1e3, us = 1e4;
|
|
9426
|
+
function ds(e, t, n, r) {
|
|
9324
9427
|
return new O(e, {
|
|
9325
9428
|
callError: {
|
|
9326
9429
|
scope: "external",
|
|
@@ -9331,11 +9434,11 @@ function cs(e, t, n, r) {
|
|
|
9331
9434
|
message: r
|
|
9332
9435
|
});
|
|
9333
9436
|
}
|
|
9334
|
-
var
|
|
9437
|
+
var fs = 15, $ = class e extends b {
|
|
9335
9438
|
constructor(e, t) {
|
|
9336
|
-
super(), h(this, "_api", void 0), h(this, "_signaling", void 0), h(this, "_signalingActor", void 0), h(this, "_displayLayoutRequester", void 0), h(this, "_mediaSource", null), h(this, "_conversation", null), h(this, "_myLastRequestedLayouts", {}), h(this, "_state", "IDLE"), h(this, "_previousState", null), h(this, "_waitingHallHoldPending", !1), h(this, "_participantState", Z.CALLED), h(this, "_participants", {}), h(this, "_directTransportIsMaster", void 0), h(this, "_transport", null), h(this, "_debugInfo", null), h(this, "_debug", R.createSessionLogger()), h(this, "_volumesDetector", null), h(this, "_speakerDetector", null), h(this, "_localVolumeDetector", null), h(this, "_specListener", null), h(this, "_activeSpeakerId", null), h(this, "_lastSignalledActiveSpeakerId", null), h(this, "_isRealTimeAsrRequested", !1), h(this, "_serverSettings", kr()), h(this, "_serverTimeOffset", 0), h(this, "_delayedHangup", !1), h(this, "_onFastHangup", void 0), h(this, "_hangupEmitted", !1), h(this, "_hangupPromise", null), h(this, "_abortController", null), h(this, "_registeredPeerReceived", !1), h(this, "_calleeUnavailableTimer", null), h(this, "_reservedId", null), h(this, "_onUnload", void 0), h(this, "_audioOutput", void 0), h(this, "_stats", void 0), h(this, "_lastStalled", {}), h(this, "_audioMixStalled", !1), h(this, "_audioFix", null), h(this, "_streamByStreamId", /* @__PURE__ */ new Map()), h(this, "_streamIdByStreamDescription", /* @__PURE__ */ new Map()), h(this, "_streamWaitTimerByStreamDescription", /* @__PURE__ */ new Map()), h(this, "_sequenceNumberByStreamDescription", /* @__PURE__ */ new Map()), h(this, "_cooldownTimestampByStreamDescription", /* @__PURE__ */ new Map()), h(this, "_cooldownQueueCleanupTimer", null), h(this, "_statFirstMediaReceived", void 0), h(this, "_toggleLocalVideo",
|
|
9439
|
+
super(), h(this, "_api", void 0), h(this, "_signaling", void 0), h(this, "_signalingActor", void 0), h(this, "_displayLayoutRequester", void 0), h(this, "_mediaSource", null), h(this, "_conversation", null), h(this, "_myLastRequestedLayouts", {}), h(this, "_state", "IDLE"), h(this, "_previousState", null), h(this, "_waitingHallHoldPending", !1), h(this, "_participantState", Z.CALLED), h(this, "_participants", {}), h(this, "_directTransportIsMaster", void 0), h(this, "_transport", null), h(this, "_debugInfo", null), h(this, "_debug", R.createSessionLogger()), h(this, "_volumesDetector", null), h(this, "_speakerDetector", null), h(this, "_localVolumeDetector", null), h(this, "_specListener", null), h(this, "_activeSpeakerId", null), h(this, "_lastSignalledActiveSpeakerId", null), h(this, "_isRealTimeAsrRequested", !1), h(this, "_serverSettings", kr()), h(this, "_serverTimeOffset", 0), h(this, "_delayedHangup", !1), h(this, "_onFastHangup", void 0), h(this, "_hangupEmitted", !1), h(this, "_hangupPromise", null), h(this, "_abortController", null), h(this, "_registeredPeerReceived", !1), h(this, "_calleeUnavailableTimer", null), h(this, "_reservedId", null), h(this, "_onUnload", void 0), h(this, "_audioOutput", void 0), h(this, "_stats", void 0), h(this, "_lastStalled", {}), h(this, "_audioMixStalled", !1), h(this, "_audioFix", null), h(this, "_streamByStreamId", /* @__PURE__ */ new Map()), h(this, "_streamIdByStreamDescription", /* @__PURE__ */ new Map()), h(this, "_streamWaitTimerByStreamDescription", /* @__PURE__ */ new Map()), h(this, "_sequenceNumberByStreamDescription", /* @__PURE__ */ new Map()), h(this, "_cooldownTimestampByStreamDescription", /* @__PURE__ */ new Map()), h(this, "_cooldownQueueCleanupTimer", null), h(this, "_statFirstMediaReceived", void 0), h(this, "_toggleLocalVideo", _o((e) => {
|
|
9337
9440
|
if (this._mediaSource) return this._stats.logger.log(C.MEDIA_STATUS, e ? "video_1" : "video_0"), this._mediaSource.toggleVideo(e);
|
|
9338
|
-
})), h(this, "_toggleLocalAudio",
|
|
9441
|
+
})), h(this, "_toggleLocalAudio", _o((e) => {
|
|
9339
9442
|
if (this._mediaSource) return this._stats.logger.log(C.MEDIA_STATUS, e ? "audio_1" : "audio_0"), this._mediaSource.toggleAudio(e);
|
|
9340
9443
|
})), h(this, "_changeMediaSettings", j.debounce(async (e) => {
|
|
9341
9444
|
if (this._signaling.ready) try {
|
|
@@ -9347,21 +9450,22 @@ var ls = 15, $ = class e extends b {
|
|
|
9347
9450
|
captureAudio: !1
|
|
9348
9451
|
});
|
|
9349
9452
|
}
|
|
9350
|
-
}, 100)), this._stats = new
|
|
9453
|
+
}, 100)), this._stats = new ss(e, t, () => this._conversation?.id || null, () => this._transport?.getTopology() ?? this._conversation?.topology), this._api = e, this._signaling = new Ha(this._debug, this._stats.logger, this._stats.statAggregator, this._stats.pings, this._stats.signalingCommands), this._signalingActor = new Ao(this._onSignalingNotification.bind(this), this._debug), this._displayLayoutRequester = new Eo({
|
|
9351
9454
|
api: this._api,
|
|
9352
9455
|
debug: this._debug,
|
|
9353
9456
|
getParticipants: () => this._participants,
|
|
9354
9457
|
isMe: (e) => this._isMe(e),
|
|
9355
|
-
updateDisplayLayout: (e) => this.updateDisplayLayout(e)
|
|
9458
|
+
updateDisplayLayout: (e) => this.updateDisplayLayout(e),
|
|
9459
|
+
onNonFatalError: (e) => this._onNonFatalError(e)
|
|
9356
9460
|
}), this._onUnload = () => {
|
|
9357
9461
|
this._stopFirstMediaSentProbe(), this._conversation && this._api && this._sendHangupApi(this._conversation.id, this._state === "IDLE" ? D.CANCELED : D.HUNGUP), this._stats.destroy();
|
|
9358
|
-
}, window.addEventListener("pagehide", this._onUnload), this._statFirstMediaReceived = new
|
|
9462
|
+
}, window.addEventListener("pagehide", this._onUnload), this._statFirstMediaReceived = new cs(this._stats.statAggregator), this._audioOutput = new yo(this._statFirstMediaReceived, M.transparentAudio, this._debug, this._stats.logger), M.videoTracksCount > 0 && (this._cooldownQueueCleanupTimer = window.setInterval(this._cleanupCooldownQueue.bind(this), ls));
|
|
9359
9463
|
}
|
|
9360
9464
|
static current() {
|
|
9361
9465
|
return z.getActive() ?? (M.hold ? null : z.getFirst());
|
|
9362
9466
|
}
|
|
9363
9467
|
static hangupAfterInit(e) {
|
|
9364
|
-
let t =
|
|
9468
|
+
let t = ps;
|
|
9365
9469
|
if (t) {
|
|
9366
9470
|
if (typeof e == "function" && (t._onFastHangup = e), t._delayedHangup === !1 && !t._conversation) {
|
|
9367
9471
|
t._delayedHangup = !0, t._abortController?.abort(new O(D.CANCELED));
|
|
@@ -9389,7 +9493,7 @@ var ls = 15, $ = class e extends b {
|
|
|
9389
9493
|
return this._state === "HELD";
|
|
9390
9494
|
}
|
|
9391
9495
|
get isIncomingRinging() {
|
|
9392
|
-
return this._conversation?.direction ===
|
|
9496
|
+
return this._conversation?.direction === Ua.INCOMING && this._state === "IDLE";
|
|
9393
9497
|
}
|
|
9394
9498
|
static debugSessionId() {
|
|
9395
9499
|
return e.current()?.debugSessionId ?? null;
|
|
@@ -9408,11 +9512,14 @@ var ls = 15, $ = class e extends b {
|
|
|
9408
9512
|
get debugSessionId() {
|
|
9409
9513
|
return this._debug.sessionId;
|
|
9410
9514
|
}
|
|
9411
|
-
|
|
9412
|
-
return this._api.
|
|
9515
|
+
getCachedParticipantIdByExternalId(e) {
|
|
9516
|
+
return this._api.getCachedParticipantIdByExternalId(e);
|
|
9517
|
+
}
|
|
9518
|
+
_onNonFatalError(e) {
|
|
9519
|
+
L.onNonFatalError(Error(e), this.id);
|
|
9413
9520
|
}
|
|
9414
9521
|
getIncomingCallerExternalId() {
|
|
9415
|
-
return this._conversation?.direction ===
|
|
9522
|
+
return this._conversation?.direction === Ua.INCOMING ? Object.values(this._participants).find((e) => !this._isMe(e.id))?.externalId ?? null : null;
|
|
9416
9523
|
}
|
|
9417
9524
|
_buildInternalParams() {
|
|
9418
9525
|
let e = {
|
|
@@ -9422,24 +9529,24 @@ var ls = 15, $ = class e extends b {
|
|
|
9422
9529
|
platform: M.platform,
|
|
9423
9530
|
protocolVersion: M.protocolVersion,
|
|
9424
9531
|
domainId: M.domain,
|
|
9425
|
-
capabilities:
|
|
9532
|
+
capabilities: wa.getFlags()
|
|
9426
9533
|
};
|
|
9427
9534
|
return JSON.stringify(e);
|
|
9428
9535
|
}
|
|
9429
9536
|
async onStart({ opponentIds: e, opponentType: t, mediaOptions: n, payload: r = "", joiningAllowed: i = !1, requireAuthToJoin: a = !1, onlyAdminCanShareMovie: o, externalIds: s, onFastStart: c, conversationId: l }) {
|
|
9430
|
-
let u = l ?? j.uuid(), d = (e?.length ?? 0) + (s?.length ?? 0), f = t ===
|
|
9537
|
+
let u = l ?? j.uuid(), d = (e?.length ?? 0) + (s?.length ?? 0), f = t === Wa.USER && d === 1 ? M.calleeUnavailableWaitingTime : void 0;
|
|
9431
9538
|
this._stats.lifecycle.markInitializationStarted({
|
|
9432
9539
|
source: "outgoing",
|
|
9433
9540
|
conversationId: u
|
|
9434
|
-
}), this._debug.setConversationId(u),
|
|
9541
|
+
}), this._debug.setConversationId(u), ps = this, this._abortController = new AbortController(), this._api.setAbortSignal(this._abortController?.signal), this._signaling.setAbortSignal(this._abortController?.signal);
|
|
9435
9542
|
try {
|
|
9436
9543
|
this._mediaSource = this._createMediaSource(), await this._mediaSource.request(n);
|
|
9437
9544
|
let l = this._mediaSource.mediaSettings;
|
|
9438
|
-
t ===
|
|
9545
|
+
t === Wa.CHAT || e && e.length > 1 ? this._logWithMediaSettings(C.OUTGOING_MULTIPARTY_CALL, l) : this._logWithMediaSettings(C.OUTGOING_CALL, l);
|
|
9439
9546
|
let d = await this._startConversation({
|
|
9440
9547
|
opponentIds: e,
|
|
9441
9548
|
opponentType: t,
|
|
9442
|
-
direction:
|
|
9549
|
+
direction: Ua.OUTGOING,
|
|
9443
9550
|
mediaOptions: n,
|
|
9444
9551
|
payload: r,
|
|
9445
9552
|
joiningAllowed: i,
|
|
@@ -9463,18 +9570,18 @@ var ls = 15, $ = class e extends b {
|
|
|
9463
9570
|
let e = z.get(this._conversation.id);
|
|
9464
9571
|
e && e !== this && e._close(new O(D.HUNGUP, { remote: !0 }));
|
|
9465
9572
|
}
|
|
9466
|
-
return z.add(this), await z.setActive(this.id),
|
|
9573
|
+
return z.add(this), await z.setActive(this.id), ps = null, this._conversation.concurrent && await this._acceptConcurrent(), f && !this._registeredPeerReceived && this._state !== "CLOSE" && (this._calleeUnavailableTimer = window.setTimeout(() => {
|
|
9467
9574
|
this._calleeUnavailableTimer = null, this._close(new O(D.CALLEE_UNAVAILABLE), { signalingReason: D.CANCELED });
|
|
9468
9575
|
}, f)), this._conversation;
|
|
9469
9576
|
} catch (e) {
|
|
9470
|
-
throw
|
|
9577
|
+
throw ps = null, this._cleanupRegistry(), this._close(e, { errorText: "Unable to start conversation" }), e;
|
|
9471
9578
|
}
|
|
9472
9579
|
}
|
|
9473
9580
|
async onJoin(e) {
|
|
9474
9581
|
this._stats.lifecycle.markInitializationStarted({
|
|
9475
9582
|
source: e.anonymous ? "anonym_join" : "join",
|
|
9476
9583
|
conversationId: e.conversationId
|
|
9477
|
-
}),
|
|
9584
|
+
}), ps = this, this._state = "PROCESSING", this._debug.setConversationId(e.conversationId ?? null), this._abortController = new AbortController(), this._api.setAbortSignal(this._abortController?.signal), this._signaling.setAbortSignal(this._abortController?.signal);
|
|
9478
9585
|
try {
|
|
9479
9586
|
let t = !!e.observedIds?.length;
|
|
9480
9587
|
if (t && M.videoTracksCount > 0) throw this._debug.error("Observer mode: please set videoTracksCount=0"), new O(D.UNSUPPORTED, { callError: {
|
|
@@ -9491,9 +9598,9 @@ var ls = 15, $ = class e extends b {
|
|
|
9491
9598
|
code: "conversation",
|
|
9492
9599
|
description: "not-initialized-after-join"
|
|
9493
9600
|
} });
|
|
9494
|
-
return this._conversation.observer = t, L.onLocalStream(this._mediaSource.getStream(), n, this.id), this._conversation.waitForAdmin || this._conversation.waitingHall ? (this._debug.log(this._conversation.waitForAdmin ? "Wait for admin" : "In waiting hall"), z.add(this),
|
|
9601
|
+
return this._conversation.observer = t, L.onLocalStream(this._mediaSource.getStream(), n, this.id), this._conversation.waitForAdmin || this._conversation.waitingHall ? (this._debug.log(this._conversation.waitForAdmin ? "Wait for admin" : "In waiting hall"), z.add(this), ps = null, this._signaling.readyToSend(), L.onLocalStatus(this._conversation.waitForAdmin ? N.WAIT_FOR_ADMIN : N.WAITING_HALL, this.id), this._conversation) : this._onJoinPart2(r);
|
|
9495
9602
|
} catch (e) {
|
|
9496
|
-
throw
|
|
9603
|
+
throw ps = null, this._cleanupRegistry(), this._close(e, { errorText: "Unable to join conversation" }), e;
|
|
9497
9604
|
}
|
|
9498
9605
|
}
|
|
9499
9606
|
async _onJoinPart2(e, t = !0, n = !1) {
|
|
@@ -9508,7 +9615,7 @@ var ls = 15, $ = class e extends b {
|
|
|
9508
9615
|
if (this._delayedHangup) throw new O(D.CANCELED);
|
|
9509
9616
|
this._processConnectionSharedMovieInfo(e), this._processConversationUrlSharingInfo(e), this._processConnectionAsrInfo(e);
|
|
9510
9617
|
let r = this._extractExternalRoomsData(e.rooms?.rooms, e.rooms?.roomId);
|
|
9511
|
-
L.onConversation(this._conversation.externalId, this._conversation.mediaModifiers, this._getMuteStatesForCurrentRoom(), this._getMainRoomParticipants(), r, this.id), this._onConversationParticipantListChunk(e), this._processPinnedParticipants(e), L.onLocalStatus(N.WAITING, this.id), this._toggleJoinAvailability(), this._changeNeedRate(), t && (this._state = "ACTIVE"), this._changeFeatureSet(), t && (z.add(this), n ? await this._holdLocally() : await z.setActive(this.id),
|
|
9618
|
+
L.onConversation(this._conversation.externalId, this._conversation.mediaModifiers, this._getMuteStatesForCurrentRoom(), this._getMainRoomParticipants(), r, this.id), this._onConversationParticipantListChunk(e), this._processPinnedParticipants(e), L.onLocalStatus(N.WAITING, this.id), this._toggleJoinAvailability(), this._changeNeedRate(), t && (this._state = "ACTIVE"), this._changeFeatureSet(), t && (z.add(this), n ? await this._holdLocally() : await z.setActive(this.id), ps = null);
|
|
9512
9619
|
let i = this._extractLocalParticipantFromConnection(e);
|
|
9513
9620
|
if (i) {
|
|
9514
9621
|
let e = j.mapParticipantState(i);
|
|
@@ -9516,11 +9623,15 @@ var ls = 15, $ = class e extends b {
|
|
|
9516
9623
|
}
|
|
9517
9624
|
return t && this._openTransport(Object.values(this._participants), !1), this._conversation;
|
|
9518
9625
|
} catch (e) {
|
|
9519
|
-
throw
|
|
9626
|
+
throw ps = null, this._cleanupRegistry(), this._close(e, { errorText: "Unable to join conversation" }), e;
|
|
9520
9627
|
}
|
|
9521
9628
|
}
|
|
9522
9629
|
_extractExternalRooms(e) {
|
|
9523
|
-
|
|
9630
|
+
let t = [], n = [];
|
|
9631
|
+
return e.forEach((e) => {
|
|
9632
|
+
let { room: r, missingParticipantIds: i } = this._convertRoomToExternal(e);
|
|
9633
|
+
r && n.push(r), t.push(...i);
|
|
9634
|
+
}), this._reportMissingExternalIds(t, "EXTRACT_EXTERNAL_ROOMS"), n.filter((e) => !!e);
|
|
9524
9635
|
}
|
|
9525
9636
|
_extractExternalRoomsData(e, t) {
|
|
9526
9637
|
if (!e || !e.length) return;
|
|
@@ -9532,7 +9643,7 @@ var ls = 15, $ = class e extends b {
|
|
|
9532
9643
|
z.reserve(e), this._reservedId = e, this._stats.lifecycle.markInitializationStarted({
|
|
9533
9644
|
source: "incoming",
|
|
9534
9645
|
conversationId: e
|
|
9535
|
-
}), this._debug.setConversationId(e),
|
|
9646
|
+
}), this._debug.setConversationId(e), ps = this, this._abortController = new AbortController(), this._api.setAbortSignal(this._abortController?.signal), this._signaling.setAbortSignal(this._abortController?.signal), a && this._api.setUserId(a);
|
|
9536
9647
|
try {
|
|
9537
9648
|
let a = await this._prepareConversation(e, t, n, r, i);
|
|
9538
9649
|
if (this._mediaSource = this._createMediaSource(), !this._conversation) throw new O(D.UNKNOWN_ERROR, { callError: {
|
|
@@ -9541,20 +9652,20 @@ var ls = 15, $ = class e extends b {
|
|
|
9541
9652
|
description: "incoming-not-initialized"
|
|
9542
9653
|
} });
|
|
9543
9654
|
if (!a.conversation.participants.find((e) => e.state === Z.CALLED && e.id === this._conversation?.userId)) throw this._debug.log("Push rejected (there is an active call)"), this._stats.logger.log(C.PUSH, "rejected"), new O(D.REJECTED);
|
|
9544
|
-
if (await this._processConnection(a), this._extractConnectionUrlSharingInfo(a), this._allocateTransport(), this._createSpeakerDetector(), this._createSpecListener(), this._processPinnedParticipants(a), this._signaling.readyToSend(), this._stats.lifecycle.markCallStarted(), this._stats.logger.log(C.PUSH, "accepted"), z.add(this),
|
|
9655
|
+
if (await this._processConnection(a), this._extractConnectionUrlSharingInfo(a), this._allocateTransport(), this._createSpeakerDetector(), this._createSpecListener(), this._processPinnedParticipants(a), this._signaling.readyToSend(), this._stats.lifecycle.markCallStarted(), this._stats.logger.log(C.PUSH, "accepted"), z.add(this), ps = null, this._delayedHangup) throw new O(D.CANCELED);
|
|
9545
9656
|
} catch (e) {
|
|
9546
|
-
throw
|
|
9657
|
+
throw ps = null, this._cleanupRegistry(), this._close(e, {
|
|
9547
9658
|
errorText: "Unable to handle inbound call push",
|
|
9548
9659
|
signalingReason: e instanceof O && e.hangup === D.BUSY ? D.BUSY : void 0
|
|
9549
9660
|
}), e;
|
|
9550
9661
|
}
|
|
9551
9662
|
}
|
|
9552
9663
|
_isInWaitingHall(e) {
|
|
9553
|
-
return !e.conversation || !e.conversation.options.includes(
|
|
9664
|
+
return !e.conversation || !e.conversation.options.includes(qa.WAITING_HALL) ? !1 : this._isRestricted(e);
|
|
9554
9665
|
}
|
|
9555
9666
|
_isWaitForAdmin(e) {
|
|
9556
9667
|
if (!e.conversation) return !1;
|
|
9557
|
-
let t = e.conversation.options.includes(
|
|
9668
|
+
let t = e.conversation.options.includes(qa.WAIT_FOR_ADMIN), n = e.conversation.options.includes(qa.ADMIN_IS_HERE);
|
|
9558
9669
|
return !t || t && n ? !1 : this._isRestricted(e);
|
|
9559
9670
|
}
|
|
9560
9671
|
_isRestricted(e) {
|
|
@@ -9562,7 +9673,7 @@ var ls = 15, $ = class e extends b {
|
|
|
9562
9673
|
return t && t.restricted || !1;
|
|
9563
9674
|
}
|
|
9564
9675
|
_isAudienceMode(e) {
|
|
9565
|
-
return e.conversation?.options?.includes(
|
|
9676
|
+
return e.conversation?.options?.includes(qa.AUDIENCE_MODE) || !1;
|
|
9566
9677
|
}
|
|
9567
9678
|
_isAudienceModeListener() {
|
|
9568
9679
|
return this._conversation?.audienceMode && this._conversation?.restricted;
|
|
@@ -9592,7 +9703,7 @@ var ls = 15, $ = class e extends b {
|
|
|
9592
9703
|
let i = atob(n), a = new Uint8Array(i.length);
|
|
9593
9704
|
for (let e = 0; e < i.length; e++) a[e] = i.charCodeAt(e);
|
|
9594
9705
|
try {
|
|
9595
|
-
let e =
|
|
9706
|
+
let e = go(a, r).reduce((e, t) => (e += String.fromCharCode(t), e), ""), { srcp: t, stne: n, tkn: i, trne: o, trnp: s, trnu: c, wse: l, wte: u } = JSON.parse(e);
|
|
9596
9707
|
return {
|
|
9597
9708
|
token: i,
|
|
9598
9709
|
endpoint: l,
|
|
@@ -9795,10 +9906,10 @@ var ls = 15, $ = class e extends b {
|
|
|
9795
9906
|
let t = await this._api.getConversationParams(e);
|
|
9796
9907
|
this._debug.debug("Api.getConversationParams", t);
|
|
9797
9908
|
let { turn_server: n, stun_server: r } = t;
|
|
9798
|
-
return M.iceServers =
|
|
9909
|
+
return M.iceServers = ho(r, n), M.wssBase = t.endpoint, t.wt_endpoint && (M.wtsBase = t.wt_endpoint), M.wssToken = t.token, t.client_type && (M.clientType = t.client_type), t.external_user_type && (M.externalUserType = t.external_user_type), t;
|
|
9799
9910
|
}
|
|
9800
9911
|
_setConversationParams({ turn_server: e, stun_server: t, endpoint: n, wt_endpoint: r, token: i, client_type: a }) {
|
|
9801
|
-
M.iceServers =
|
|
9912
|
+
M.iceServers = ho(t, e), M.wssBase = n, M.wssToken = i, r && (M.wtsBase = r), a && (M.clientType = a);
|
|
9802
9913
|
}
|
|
9803
9914
|
_buildSignalingEndpoint({ baseEndpoint: e, userId: t, type: n, deviceIdx: r, conversationId: i, token: a, conversationParams: o }) {
|
|
9804
9915
|
let s = new URL(e), c = s.searchParams;
|
|
@@ -9830,10 +9941,10 @@ var ls = 15, $ = class e extends b {
|
|
|
9830
9941
|
isVideo: f,
|
|
9831
9942
|
joiningAllowed: a,
|
|
9832
9943
|
requireAuthToJoin: o
|
|
9833
|
-
}, this._abortController?.signal), !e) throw
|
|
9944
|
+
}, this._abortController?.signal), !e) throw ds(D.FAST_START_ERROR, "invalid-response", "fast-start-response-empty");
|
|
9834
9945
|
if (!e.internalCallerParams) {
|
|
9835
9946
|
let t = e.rejectedParticipants[0]?.status;
|
|
9836
|
-
throw
|
|
9947
|
+
throw ds(D.FAST_START_ERROR, t ? "fast-start" : "invalid-response", t ?? "fast-start-internal-caller-params-empty", JSON.stringify(e));
|
|
9837
9948
|
}
|
|
9838
9949
|
} catch (e) {
|
|
9839
9950
|
throw this._delayedHangup && this._abortController?.signal.aborted ? new O(D.CANCELED) : e instanceof O ? e : e instanceof Error ? new O(D.FAST_START_ERROR, { message: e.message }) : new O(D.FAST_START_ERROR, { message: String(e) });
|
|
@@ -9855,10 +9966,10 @@ var ls = 15, $ = class e extends b {
|
|
|
9855
9966
|
token: new URL(t.endpoint).searchParams.get("token") ?? ""
|
|
9856
9967
|
}, this._debug.debug("FastStart", p), m = "fastStart";
|
|
9857
9968
|
} catch {
|
|
9858
|
-
throw
|
|
9969
|
+
throw ds(D.FAST_START_ERROR, "invalid-response", "fast-start-internal-caller-params-invalid");
|
|
9859
9970
|
}
|
|
9860
9971
|
} else p = await this._api.startConversation(d, e, t, f, i, a, o, { onlyAdminCanShareMovie: s }, c), this._debug.debug("Api.startConversation", p), m = "startConversation";
|
|
9861
|
-
|
|
9972
|
+
bo(p, m), this._setConversationParams(p), this._stats.lifecycle.bindConversationId(p.id);
|
|
9862
9973
|
let ee = await this._connectSignaling(vr.START, p);
|
|
9863
9974
|
return this._setConversation(p, ee, n), this._stats.lifecycle.markCallStarted(), ee;
|
|
9864
9975
|
}
|
|
@@ -9883,9 +9994,9 @@ var ls = 15, $ = class e extends b {
|
|
|
9883
9994
|
joinLink: i,
|
|
9884
9995
|
isVideo: c,
|
|
9885
9996
|
internalParams: this._buildInternalParams()
|
|
9886
|
-
}, this._abortController?.signal), !e) throw
|
|
9887
|
-
if (!e.internalCallerParams) throw
|
|
9888
|
-
if (!e.conversationId) throw
|
|
9997
|
+
}, this._abortController?.signal), !e) throw ds(D.FAST_JOIN_ERROR, "invalid-response", "fast-join-response-empty");
|
|
9998
|
+
if (!e.internalCallerParams) throw ds(D.FAST_JOIN_ERROR, "invalid-response", "fast-join-internal-caller-params-empty", JSON.stringify(e));
|
|
9999
|
+
if (!e.conversationId) throw ds(D.FAST_JOIN_ERROR, "invalid-response", "fast-join-conversation-id-empty", JSON.stringify(e));
|
|
9889
10000
|
} catch (e) {
|
|
9890
10001
|
throw this._delayedHangup && this._abortController?.signal.aborted ? new O(D.CANCELED) : e instanceof O ? e : e instanceof Error ? new O(D.FAST_JOIN_ERROR, { message: e.message }) : new O(D.FAST_JOIN_ERROR, { message: String(e) });
|
|
9891
10002
|
}
|
|
@@ -9903,7 +10014,7 @@ var ls = 15, $ = class e extends b {
|
|
|
9903
10014
|
token: new URL(t.endpoint).searchParams.get("token") ?? ""
|
|
9904
10015
|
}, this._debug.debug("FastJoin", l), u = "fastJoin";
|
|
9905
10016
|
} catch (e) {
|
|
9906
|
-
throw e instanceof O ? e :
|
|
10017
|
+
throw e instanceof O ? e : ds(D.FAST_JOIN_ERROR, "invalid-response", "fast-join-internal-caller-params-invalid");
|
|
9907
10018
|
}
|
|
9908
10019
|
} else if (t) l = await this._api.joinConversation(t, c, r), u = "joinConversation";
|
|
9909
10020
|
else if (i) l = await this._api.joinConversationByLink(i, c, a, o), u = "joinConversationByLink";
|
|
@@ -9912,13 +10023,13 @@ var ls = 15, $ = class e extends b {
|
|
|
9912
10023
|
code: "join",
|
|
9913
10024
|
description: "target-missing"
|
|
9914
10025
|
} });
|
|
9915
|
-
if (this._debug.debug("Api.joinConversation", l), l.id && this._stats.lifecycle.bindConversationId(l.id),
|
|
10026
|
+
if (this._debug.debug("Api.joinConversation", l), l.id && this._stats.lifecycle.bindConversationId(l.id), bo(l, u), l.id) {
|
|
9916
10027
|
if (z.has(l.id)) throw new O(D.HAS_ACTIVE_CALL);
|
|
9917
10028
|
z.reserve(l.id), this._reservedId = l.id;
|
|
9918
10029
|
}
|
|
9919
10030
|
this._setConversationParams(l);
|
|
9920
10031
|
let d = await this._connectSignaling(vr.JOIN, l);
|
|
9921
|
-
return this._setConversation(l, d,
|
|
10032
|
+
return this._setConversation(l, d, Ua.JOINING), this._stats.lifecycle.markCallStarted(), d;
|
|
9922
10033
|
}
|
|
9923
10034
|
async _prepareConversation(e, t = A.USER, n, r, i) {
|
|
9924
10035
|
W.setMark(H.SIGNALING_CONNECTED), this._debug.debug("Conversation: push", {
|
|
@@ -9980,7 +10091,7 @@ var ls = 15, $ = class e extends b {
|
|
|
9980
10091
|
}), l.wt_endpoint = c);
|
|
9981
10092
|
}
|
|
9982
10093
|
let u = await this._connectSignaling(vr.ACCEPT, l);
|
|
9983
|
-
return z.callsLength >= M.maxParallelCalls || !M.hold && z.callsLength > 0 ? (this._debug.log("Push rejected (busy)"), this._stats.logger.log(C.PUSH, "busy"), Promise.reject(new O(D.BUSY))) : (this._setConversation(l, u,
|
|
10094
|
+
return z.callsLength >= M.maxParallelCalls || !M.hold && z.callsLength > 0 ? (this._debug.log("Push rejected (busy)"), this._stats.logger.log(C.PUSH, "busy"), Promise.reject(new O(D.BUSY))) : (this._setConversation(l, u, Ua.INCOMING, t), u);
|
|
9984
10095
|
}
|
|
9985
10096
|
_createParticipant(e, t, n = !0) {
|
|
9986
10097
|
let r = Object.assign({
|
|
@@ -10003,19 +10114,17 @@ var ls = 15, $ = class e extends b {
|
|
|
10003
10114
|
isInRoom: !1,
|
|
10004
10115
|
markers: null
|
|
10005
10116
|
}, e), i = !!r.externalId;
|
|
10006
|
-
|
|
10117
|
+
if (!i) {
|
|
10118
|
+
let e = this._getParticipantId(t ?? r.id);
|
|
10119
|
+
e && (r.externalId = e);
|
|
10120
|
+
}
|
|
10121
|
+
return n && i && this._api.cacheExternalId(t ?? r.id, r.externalId), t && this._api.mapDecorativeId(t, r.id), r.observedIds?.length && r.externalId && (r.externalId.observer = !0), e.markers && (r.markers = this._denormalizeMarkers(r.id, e.markers)), r.connectionStatus = ro.create(r.connectionStatus), r;
|
|
10007
10122
|
}
|
|
10008
10123
|
_getParticipantId(e) {
|
|
10009
|
-
|
|
10010
|
-
|
|
10011
|
-
}
|
|
10012
|
-
|
|
10013
|
-
scope: "network",
|
|
10014
|
-
source: "api",
|
|
10015
|
-
code: "fetch-failed",
|
|
10016
|
-
description: "request-failed"
|
|
10017
|
-
} }), { errorText: e }), e;
|
|
10018
|
-
}
|
|
10124
|
+
let t = this._api.userId(e);
|
|
10125
|
+
if (t) return t;
|
|
10126
|
+
let { compositeUserId: n, deviceIdx: r } = j.decomposeParticipantId(e), { id: i, type: a } = j.decomposeId(n);
|
|
10127
|
+
return a === A.GROUP ? Q.fromId(String(i), void 0, r) : null;
|
|
10019
10128
|
}
|
|
10020
10129
|
_cacheParticipantExternalIds(e) {
|
|
10021
10130
|
e.forEach((e) => {
|
|
@@ -10023,7 +10132,7 @@ var ls = 15, $ = class e extends b {
|
|
|
10023
10132
|
if (n) {
|
|
10024
10133
|
this._api.cacheExternalId(t, n);
|
|
10025
10134
|
let r = j.composeDecorativeId(e), i = Q.fromSignalingParticipant(e);
|
|
10026
|
-
r && i && (this._api.cacheExternalId(r, i), this._api.mapDecorativeId(
|
|
10135
|
+
r && i && (this._api.cacheExternalId(r, i), this._api.mapDecorativeId(r, t));
|
|
10027
10136
|
}
|
|
10028
10137
|
});
|
|
10029
10138
|
}
|
|
@@ -10088,7 +10197,7 @@ var ls = 15, $ = class e extends b {
|
|
|
10088
10197
|
}
|
|
10089
10198
|
_createMediaSource() {
|
|
10090
10199
|
let e = new Yt(this._debug, this._stats.logger);
|
|
10091
|
-
return this.subscribe(e, qt.SOURCE_CHANGED, this._onLocalMediaStreamChanged.bind(this)), this.subscribe(e, qt.SCREEN_STATUS, this._onScreenSharingStatus.bind(this)), this._audioFix = new
|
|
10200
|
+
return this.subscribe(e, qt.SOURCE_CHANGED, this._onLocalMediaStreamChanged.bind(this)), this.subscribe(e, qt.SCREEN_STATUS, this._onScreenSharingStatus.bind(this)), this._audioFix = new vo(e, this._debug, this._stats.logger), e;
|
|
10092
10201
|
}
|
|
10093
10202
|
async _connectSignaling(e, t) {
|
|
10094
10203
|
this._signaling.setEndpoint(t.endpoint), this._signaling.setWebTransportEndpoint(t.wt_endpoint ? t.wt_endpoint : null), this.subscribe(this._signaling, G.NOTIFICATION, (e) => this._signalingActor.add(e)), this.subscribe(this._signaling, G.FAILED, this._onSignalingFailed.bind(this)), this.subscribe(this._signaling, G.RECONNECT, this._onSignalingReconnect.bind(this));
|
|
@@ -10096,7 +10205,7 @@ var ls = 15, $ = class e extends b {
|
|
|
10096
10205
|
return this._stats.statAggregator.logEventualStat({ name: H.SIGNALING_CONNECTED }), n;
|
|
10097
10206
|
}
|
|
10098
10207
|
async _processConnection(e) {
|
|
10099
|
-
await this._registerConnectionParticipants(e), this._processRooms(e), this._processMuteStates(e), this._processRecordInfos(e), this._onOptionsChanged(e.conversation.options), e.chatRoom && e.chatRoom.totalCount && this._onChatRoomUpdated(
|
|
10208
|
+
await this._registerConnectionParticipants(e), this._processRooms(e), this._processMuteStates(e), this._processRecordInfos(e), this._onOptionsChanged(e.conversation.options), e.chatRoom && e.chatRoom.totalCount && this._onChatRoomUpdated(Ga.ATTENDEE, e.chatRoom.totalCount, e.chatRoom.firstParticipants, null, null);
|
|
10100
10209
|
}
|
|
10101
10210
|
_onConversationParticipantListChunk(e) {
|
|
10102
10211
|
let t = e.participants;
|
|
@@ -10165,7 +10274,7 @@ var ls = 15, $ = class e extends b {
|
|
|
10165
10274
|
_registerParticipantLocalMuteState({ muteStates: e, unmuteOptions: t }) {
|
|
10166
10275
|
if (!e) return;
|
|
10167
10276
|
let n = async () => {
|
|
10168
|
-
let n =
|
|
10277
|
+
let n = so(e, Xa.MUTE), r = so(e, Xa.MUTE_PERMANENT);
|
|
10169
10278
|
for (let i of [n, r]) i.length && await this._onMuteParticipant({
|
|
10170
10279
|
muteStates: e,
|
|
10171
10280
|
unmuteOptions: t,
|
|
@@ -10179,8 +10288,8 @@ var ls = 15, $ = class e extends b {
|
|
|
10179
10288
|
if (!(!M.enableSessionStateUpdates || this._isMe(e))) return t;
|
|
10180
10289
|
}
|
|
10181
10290
|
_buildConnectionStatus(e, t, n, r = !1) {
|
|
10182
|
-
return
|
|
10183
|
-
transport: r ? N.ONHOLD :
|
|
10291
|
+
return ro.create({
|
|
10292
|
+
transport: r ? N.ONHOLD : ro.fromTransportState(n) ?? N.WAITING,
|
|
10184
10293
|
sessionState: this._remoteParticipantSessionState(e, t),
|
|
10185
10294
|
sessionStateApplicable: this._isParticipantSessionStateApplicable(e)
|
|
10186
10295
|
});
|
|
@@ -10189,12 +10298,12 @@ var ls = 15, $ = class e extends b {
|
|
|
10189
10298
|
return M.enableSessionStateUpdates && !this._isMe(e) && this._conversation?.topology === J.SERVER;
|
|
10190
10299
|
}
|
|
10191
10300
|
_setTransportStatus(e, t) {
|
|
10192
|
-
return
|
|
10301
|
+
return ro.setTransport(e.connectionStatus, t);
|
|
10193
10302
|
}
|
|
10194
10303
|
_setSessionState(e, t) {
|
|
10195
|
-
let n =
|
|
10304
|
+
let n = ro.setSessionStateApplicable(e.connectionStatus, this._isParticipantSessionStateApplicable(e.id));
|
|
10196
10305
|
this._emitParticipantTransition(e, n);
|
|
10197
|
-
let r = e.connectionStatus.sessionStateApplicable && e.id === this._activeSpeakerId && e.connectionStatus.transport === N.CONNECTED, i =
|
|
10306
|
+
let r = e.connectionStatus.sessionStateApplicable && e.id === this._activeSpeakerId && e.connectionStatus.transport === N.CONNECTED, i = ro.setSessionState(e.connectionStatus, t, r);
|
|
10198
10307
|
return this._emitParticipantTransition(e, i), i;
|
|
10199
10308
|
}
|
|
10200
10309
|
_emitParticipantTransition(e, t, n = null) {
|
|
@@ -10206,33 +10315,40 @@ var ls = 15, $ = class e extends b {
|
|
|
10206
10315
|
_getExistedParticipantByIdOrCreate(e) {
|
|
10207
10316
|
let t = this._participants[e];
|
|
10208
10317
|
if (t) return t;
|
|
10209
|
-
let n = this._api.getDecorativeIdByInitialId(
|
|
10318
|
+
let n = this._api.getDecorativeIdByInitialId(e), r = this._getParticipantId(e), { deviceIdx: i } = j.decomposeParticipantId(e);
|
|
10210
10319
|
return this._createParticipant({
|
|
10211
10320
|
id: e,
|
|
10212
|
-
externalId: {
|
|
10213
|
-
...
|
|
10214
|
-
deviceIdx:
|
|
10215
|
-
}
|
|
10216
|
-
},
|
|
10321
|
+
externalId: r ? {
|
|
10322
|
+
...r,
|
|
10323
|
+
deviceIdx: i
|
|
10324
|
+
} : void 0
|
|
10325
|
+
}, n, !1);
|
|
10217
10326
|
}
|
|
10218
10327
|
_getExternalIdByParticipantId(e) {
|
|
10219
|
-
if (this._isMe(e)) return this._conversation?.externalId;
|
|
10328
|
+
if (this._isMe(e)) return this._conversation?.externalId ?? null;
|
|
10220
10329
|
if (M.useParticipantListChunk) return this._getExistedParticipantByIdOrCreate(e).externalId;
|
|
10221
10330
|
let t = this._participants;
|
|
10222
10331
|
if (t[e]?.externalId) return t[e].externalId;
|
|
10223
|
-
|
|
10224
|
-
|
|
10225
|
-
|
|
10226
|
-
|
|
10332
|
+
let n = this._api.getCachedExternalIdByParticipantId(e);
|
|
10333
|
+
if (n) return n;
|
|
10334
|
+
let r = this._getParticipantId(e);
|
|
10335
|
+
return r && this._api.cacheExternalId(e, r), r;
|
|
10227
10336
|
}
|
|
10228
|
-
|
|
10229
|
-
|
|
10337
|
+
_getExternalIdsByParticipantIds(e) {
|
|
10338
|
+
let t = [], n = [];
|
|
10339
|
+
return e.forEach((e) => {
|
|
10340
|
+
let r = this._getExternalIdByParticipantId(e);
|
|
10341
|
+
r ? t.push(r) : n.push(e);
|
|
10342
|
+
}), {
|
|
10343
|
+
externalIds: t,
|
|
10344
|
+
missingIds: n
|
|
10345
|
+
};
|
|
10230
10346
|
}
|
|
10231
|
-
|
|
10232
|
-
|
|
10233
|
-
|
|
10234
|
-
|
|
10235
|
-
|
|
10347
|
+
_reportMissingExternalIds(e, t) {
|
|
10348
|
+
e.length && this._onNonFatalError(`External ID mapping not found for participants "${Array.from(new Set(e)).join("\", \"")}" while handling ${t}`);
|
|
10349
|
+
}
|
|
10350
|
+
_reportMissingExternalIdsById(e, t) {
|
|
10351
|
+
e.length && this._onNonFatalError(`Participant ID mapping not found for external IDs "${Array.from(new Set(e)).join("\", \"")}" while handling ${t}`);
|
|
10236
10352
|
}
|
|
10237
10353
|
_registerParticipantAndSetMarkersIfChunkEnabled(e, t) {
|
|
10238
10354
|
if (M.useParticipantListChunk) {
|
|
@@ -10258,11 +10374,11 @@ var ls = 15, $ = class e extends b {
|
|
|
10258
10374
|
this._onRoomSwitched(t, !0);
|
|
10259
10375
|
}
|
|
10260
10376
|
_processMuteStates(e, t = !1) {
|
|
10261
|
-
let n =
|
|
10377
|
+
let n = co(e);
|
|
10262
10378
|
this._setMuteStatesForRoomId(n, null);
|
|
10263
10379
|
for (let t of e.rooms?.rooms ?? []) this._setMuteStatesForRoomId(t.muteStates, t.id);
|
|
10264
10380
|
let r = this._getMuteStatesForCurrentRoom();
|
|
10265
|
-
t && (r =
|
|
10381
|
+
t && (r = po(e, r));
|
|
10266
10382
|
let i = Object.keys(r), a = this._conversation?.roomId;
|
|
10267
10383
|
i.length && this._onMuteParticipant({
|
|
10268
10384
|
muteStates: r,
|
|
@@ -10282,15 +10398,15 @@ var ls = 15, $ = class e extends b {
|
|
|
10282
10398
|
}
|
|
10283
10399
|
_allocateTransport() {
|
|
10284
10400
|
if (!this._conversation || !this._mediaSource) return;
|
|
10285
|
-
this._transport = new
|
|
10286
|
-
let e = this._conversation.direction ===
|
|
10401
|
+
this._transport = new fa(this._conversation.topology, this._signaling, this._mediaSource, this._serverSettings, this._debug, this._stats.logger, this._stats.statAggregator, this._stats.codecStatsAggregator, this._getFirstMediaSentCallback()), this._debugInfo = new To(this._debug), this.subscribe(this._transport, X.STATE_CHANGED, this._onTransportStateChanged.bind(this)), this.subscribe(this._transport, X.LOCAL_STATE_CHANGED, this._onTransportLocalStateChanged.bind(this)), this.subscribe(this._transport, X.REMOTE_TRACK_ADDED, this._onRemoteTrackAdded.bind(this)), this.subscribe(this._transport, X.REMOTE_TRACK_REMOVED, this._onRemoteTrackRemoved.bind(this)), this.subscribe(this._transport, X.AUDIO_MIX_STALL, this._onAudioMixStall.bind(this)), this.subscribe(this._transport, X.REMOTE_DATA_STATS, this._onRemoteDataStats.bind(this)), this.subscribe(this._transport, X.SIGNALLED_STALLED_PARTICIPANTS, this._onRemoteSignalledStall.bind(this)), this.subscribe(this._transport, X.TOPOLOGY_CHANGED, this._onTopologyChanged.bind(this)), this.subscribe(this._transport, X.NETWORK_STATUS, this._onNetworkStatus.bind(this)), this.subscribe(this._transport, X.REMOTE_STREAM_SECOND, this._onRemoteStreamSecond.bind(this)), this.subscribe(this._transport, X.PEER_CONNECTION_CLOSED, this._onPeerConnectionClosed.bind(this)), this.subscribe(this._transport, X.ASR_TRANSCRIPTION, this._onAsrTranscription.bind(this)), this.subscribe(this._transport, X.ANIMOJI_STREAM, this._onAnimojiStream.bind(this)), this.subscribe(this._transport, X.ANIMOJI_ERROR, this._onAnimojiError.bind(this));
|
|
10402
|
+
let e = this._conversation.direction === Ua.OUTGOING && !this._conversation.concurrent, t = this._participants;
|
|
10287
10403
|
for (let n of Object.values(t)) (n.state === Z.ACCEPTED || n.state === Z.CALLED) && this._allocateParticipantTransport(n.id, e);
|
|
10288
10404
|
}
|
|
10289
10405
|
_createSpeakerDetector() {
|
|
10290
|
-
this._transport && this._conversation && (this._volumesDetector = new
|
|
10406
|
+
this._transport && this._conversation && (this._volumesDetector = new Mo(this._transport), this.subscribe(this._volumesDetector, jo.VOLUMES_DETECTED, this._onVolumesDetected.bind(this)), this._speakerDetector = new Po(this._volumesDetector, this._transport, this._conversation.topology), this.subscribe(this._speakerDetector, No.SPEAKER_CHANGED, this._onSpeakerChanged.bind(this)), this._localVolumeDetector = new ko(this._mediaSource));
|
|
10291
10407
|
}
|
|
10292
10408
|
_createSpecListener() {
|
|
10293
|
-
this._transport && this._volumesDetector && (this._specListener = new
|
|
10409
|
+
this._transport && this._volumesDetector && (this._specListener = new Lo(this._transport, this._volumesDetector, this._participants, this._debug, this._stats.logger));
|
|
10294
10410
|
}
|
|
10295
10411
|
_logDevices() {
|
|
10296
10412
|
let e = T.getCameras().length, t = T.getMicrophones().length;
|
|
@@ -10389,7 +10505,7 @@ var ls = 15, $ = class e extends b {
|
|
|
10389
10505
|
_onRemoveParticipant(e) {
|
|
10390
10506
|
this._debug.debug(`Remove participant [${e}]`);
|
|
10391
10507
|
let t = [], n = this._participants;
|
|
10392
|
-
for (let r = 0; r <=
|
|
10508
|
+
for (let r = 0; r <= fs; r++) {
|
|
10393
10509
|
let i = n[j.compose(e, r)];
|
|
10394
10510
|
i && t.push(i);
|
|
10395
10511
|
}
|
|
@@ -10479,11 +10595,11 @@ var ls = 15, $ = class e extends b {
|
|
|
10479
10595
|
this._waitingHallHoldPending = !1, await this._resumeLocalMedia(t, this._getWaitingForPromotionStatus()), this._allocateTransport(), this._createSpeakerDetector(), this._createSpecListener();
|
|
10480
10596
|
return;
|
|
10481
10597
|
}
|
|
10482
|
-
let n =
|
|
10598
|
+
let n = Sa.get();
|
|
10483
10599
|
await this._signaling.hold(!1, n), this._restoreStateAfterHold();
|
|
10484
10600
|
let r = null;
|
|
10485
10601
|
if (this._state === "IDLE" && this._participantState === Z.ACCEPTED && (r = Object.values(this._participants), r.some((e) => e.state === Z.ACCEPTED) && (this._state = "ACTIVE", this._changeFeatureSet())), await this._resumeLocalMedia(t, N.WAITING), this._allocateTransport(), this._createSpeakerDetector(), this._createSpecListener(), this._state === "ACTIVE") {
|
|
10486
|
-
let e = this._conversation?.direction ===
|
|
10602
|
+
let e = this._conversation?.direction === Ua.OUTGOING && !this._conversation.concurrent;
|
|
10487
10603
|
this._openTransport(r ?? Object.values(this._participants), e);
|
|
10488
10604
|
}
|
|
10489
10605
|
}
|
|
@@ -10517,30 +10633,34 @@ var ls = 15, $ = class e extends b {
|
|
|
10517
10633
|
async updateDisplayLayout(e) {
|
|
10518
10634
|
if (e.length < 1 || !this._signaling.ready) return;
|
|
10519
10635
|
this._debug.log(`Update display layout request [${this._signaling.getNextCommandSequenceNumber()}]`, e);
|
|
10520
|
-
let t = {}, n = [], r = this._participants;
|
|
10521
|
-
for (let
|
|
10522
|
-
let e = typeof
|
|
10523
|
-
if (!
|
|
10636
|
+
let t = {}, n = [], r = [], i = this._participants;
|
|
10637
|
+
for (let a of e) {
|
|
10638
|
+
let e = typeof a.uid == "object" ? a.uid : Q.fromId(a.uid), o = this._api.getCachedParticipantIdByExternalId(e);
|
|
10639
|
+
if (!o) {
|
|
10524
10640
|
let t = Q.toString(e);
|
|
10525
|
-
this._debug.log(`Unknown participant external ID ${t}`);
|
|
10641
|
+
this._debug.log(`Unknown participant external ID ${t}`), r.push(e.id);
|
|
10526
10642
|
continue;
|
|
10527
10643
|
}
|
|
10528
|
-
let
|
|
10529
|
-
participantId:
|
|
10530
|
-
mediaType:
|
|
10531
|
-
streamName:
|
|
10532
|
-
}),
|
|
10533
|
-
|
|
10534
|
-
|
|
10535
|
-
}) : this._isMe(
|
|
10536
|
-
this._myLastRequestedLayouts[
|
|
10537
|
-
}), Dn(
|
|
10538
|
-
delete this._myLastRequestedLayouts[
|
|
10539
|
-
}), this._streamIdByStreamDescription.has(
|
|
10540
|
-
}
|
|
10541
|
-
|
|
10644
|
+
let s = Mn({
|
|
10645
|
+
participantId: o,
|
|
10646
|
+
mediaType: a.mediaType,
|
|
10647
|
+
streamName: a.streamName
|
|
10648
|
+
}), c = i[o];
|
|
10649
|
+
c ? n.push(() => {
|
|
10650
|
+
c.lastRequestedLayouts[s] = a;
|
|
10651
|
+
}) : this._isMe(o) && n.push(() => {
|
|
10652
|
+
this._myLastRequestedLayouts[s] = a;
|
|
10653
|
+
}), Dn(a) ? (this._isMe(o) && n.push(() => {
|
|
10654
|
+
delete this._myLastRequestedLayouts[s];
|
|
10655
|
+
}), this._streamIdByStreamDescription.has(s) && !this._cooldownTimestampByStreamDescription.has(s) && this._cooldownTimestampByStreamDescription.set(s, Date.now())) : (this._cooldownTimestampByStreamDescription.delete(s), !this._streamIdByStreamDescription.has(s) && M.videoTracksCount > 0 && this._streamIdByStreamDescription.set(s, null), t[s] = a), a.mediaType === V.SCREEN && !Dn(a) && W.setMark(W.getMarkNameScreenshareFirstFrame(o));
|
|
10656
|
+
}
|
|
10657
|
+
if (r.length) {
|
|
10658
|
+
this._reportMissingExternalIdsById(r, "updateDisplayLayout");
|
|
10659
|
+
return;
|
|
10660
|
+
}
|
|
10661
|
+
let a = this._cooldownTimestampByStreamDescription.keys();
|
|
10542
10662
|
for (; this._streamIdByStreamDescription.size > M.videoTracksCount;) {
|
|
10543
|
-
let e =
|
|
10663
|
+
let e = a.next();
|
|
10544
10664
|
if (e.done) {
|
|
10545
10665
|
this._debug.error("Cannot accommodate all streaming requests: tracks available " + M.videoTracksCount + "; requested streams: " + Array.from(this._streamIdByStreamDescription.keys()));
|
|
10546
10666
|
break;
|
|
@@ -10602,13 +10722,13 @@ var ls = 15, $ = class e extends b {
|
|
|
10602
10722
|
let n = Nn(e), a = i[n.participantId];
|
|
10603
10723
|
if (a) {
|
|
10604
10724
|
let e;
|
|
10605
|
-
typeof t == "number" ? e =
|
|
10725
|
+
typeof t == "number" ? e = $a(t) : (this._debug.warn(`Unexpected error code ${t} received for participant ${n.participantId}`), e = Qa.UNKNOWN_ERROR), r.push({
|
|
10606
10726
|
externalId: a.externalId,
|
|
10607
10727
|
errorReason: e
|
|
10608
10728
|
});
|
|
10609
10729
|
}
|
|
10610
10730
|
}
|
|
10611
|
-
if (r && r.length && (this._debug.warn("Could not allocate one or more participants", r), t)) throw new
|
|
10731
|
+
if (r && r.length && (this._debug.warn("Could not allocate one or more participants", r), t)) throw new ms("Could not allocate one or more participants", r);
|
|
10612
10732
|
}
|
|
10613
10733
|
async _cleanupCooldownQueue() {
|
|
10614
10734
|
let e = {}, t = this._cooldownTimestampByStreamDescription.entries();
|
|
@@ -10616,7 +10736,7 @@ var ls = 15, $ = class e extends b {
|
|
|
10616
10736
|
let n = t.next();
|
|
10617
10737
|
if (n.done) break;
|
|
10618
10738
|
let r = n.value;
|
|
10619
|
-
if (r[1] +
|
|
10739
|
+
if (r[1] + us > Date.now()) break;
|
|
10620
10740
|
let i = r[0];
|
|
10621
10741
|
await this._stopStreaming(i), e[i] = { stopStream: !0 };
|
|
10622
10742
|
} while (!0);
|
|
@@ -10632,17 +10752,22 @@ var ls = 15, $ = class e extends b {
|
|
|
10632
10752
|
async _onParticipantPromoted(e) {
|
|
10633
10753
|
this._conversation && this._conversation.audienceMode ? (this._debug.log("Promoted in audience mode", !e.demote), this._conversation.restricted = e.demote, this._processRecordInfos(e), !e.demote && this._mediaSource && this._changeMediaSettings(this._mediaSource.mediaSettings)) : (this._debug.log("Promoted in waiting hall", !e.demote), e.demote ? (this._debug.log("Kicked from waiting hall"), this._close(new O(D.REMOVED))) : (this._updateConversation(e), this._waitingHallHoldPending ? (await this._signaling.hold(!0), await this._onJoinPart2(e, !1), this._waitingHallHoldPending = !1) : z.getActive() && M.hold ? (await this._signaling.hold(!0), await this._onJoinPart2(e, !0, !0), this._waitingHallHoldPending = !1) : await this._onJoinPart2(e))), L.onPromoted(e.demote, this.id);
|
|
10634
10754
|
}
|
|
10635
|
-
|
|
10755
|
+
_onChatRoomUpdated(e, t = 0, n = [], r, i) {
|
|
10636
10756
|
this._debug.log(`Chat room updated: ${e}`);
|
|
10637
|
-
let a = [];
|
|
10757
|
+
let a = [], o = [];
|
|
10638
10758
|
n.length && n.forEach((e) => {
|
|
10639
10759
|
if (e.externalId) {
|
|
10640
10760
|
let t = Q.fromSignaling(e.externalId);
|
|
10641
10761
|
a.push(t), this._api.cacheExternalId(e.id.id, t);
|
|
10642
|
-
} else
|
|
10762
|
+
} else {
|
|
10763
|
+
let t = this._getExternalIdByParticipantId(e.id.id);
|
|
10764
|
+
t ? a.push(t) : o.push(e.id.id);
|
|
10765
|
+
}
|
|
10643
10766
|
});
|
|
10644
|
-
let
|
|
10645
|
-
|
|
10767
|
+
let { externalIds: s, missingIds: c } = this._getExternalIdsByParticipantIds(r ?? []);
|
|
10768
|
+
o.push(...c);
|
|
10769
|
+
let { externalIds: l, missingIds: u } = this._getExternalIdsByParticipantIds(i ?? []);
|
|
10770
|
+
o.push(...u), this._reportMissingExternalIds(o, "CHAT_ROOM_UPDATED"), L.onChatRoomUpdated(e, t, a, s, l, this.id);
|
|
10646
10771
|
}
|
|
10647
10772
|
_onSharedMovieUpdate(e) {
|
|
10648
10773
|
let t = this._conversation?.externalId;
|
|
@@ -10815,10 +10940,10 @@ var ls = 15, $ = class e extends b {
|
|
|
10815
10940
|
throw Error("transport is not initialized");
|
|
10816
10941
|
}
|
|
10817
10942
|
_isCallAdmin() {
|
|
10818
|
-
return this._conversation ? j.includesOneOf(this._conversation.roles, [
|
|
10943
|
+
return this._conversation ? j.includesOneOf(this._conversation.roles, [eo.ADMIN, eo.CREATOR]) : !1;
|
|
10819
10944
|
}
|
|
10820
10945
|
_checkAdminRole() {
|
|
10821
|
-
if (this._conversation && !j.includesOneOf(this._conversation.roles, [
|
|
10946
|
+
if (this._conversation && !j.includesOneOf(this._conversation.roles, [eo.ADMIN, eo.CREATOR])) throw Error("You don't have the required permission");
|
|
10822
10947
|
}
|
|
10823
10948
|
_isCalledState() {
|
|
10824
10949
|
return this._participantState === Z.CALLED;
|
|
@@ -10856,43 +10981,46 @@ var ls = 15, $ = class e extends b {
|
|
|
10856
10981
|
async changeOptions(e) {
|
|
10857
10982
|
if (this._signaling.ready && this._conversation) {
|
|
10858
10983
|
this._checkAdminRole(), await this._signaling.changeOptions(e);
|
|
10859
|
-
let t =
|
|
10984
|
+
let t = Ya(this._conversation.options, e);
|
|
10860
10985
|
this._onOptionsChanged(t);
|
|
10861
10986
|
}
|
|
10862
10987
|
}
|
|
10863
10988
|
async getWaitingHall(e, t, n) {
|
|
10864
10989
|
if (!this._signaling) return Promise.reject();
|
|
10865
10990
|
let r = null;
|
|
10866
|
-
if (e && (r =
|
|
10991
|
+
if (e && (r = oo(e), r)) {
|
|
10867
10992
|
let e = this._api.getDecorativeIdByInitialId(r.id);
|
|
10868
|
-
r.id = e
|
|
10993
|
+
r.id = e ?? r.id;
|
|
10869
10994
|
}
|
|
10870
10995
|
let i = await this._signaling.getWaitingHall(r, t, n);
|
|
10871
10996
|
if (i.error) return Promise.reject(i.message);
|
|
10872
|
-
let a = i.participants || [], { externalIds: o } =
|
|
10873
|
-
return a.length && i.hasMore && (s =
|
|
10997
|
+
let a = i.participants || [], { externalIds: o } = this._resolveWaitingHallExternalIds(a, "getWaitingHall"), s = null;
|
|
10998
|
+
return a.length && i.hasMore && (s = ao(a[a.length - 1].id)), {
|
|
10874
10999
|
participants: o,
|
|
10875
11000
|
pageMarker: s,
|
|
10876
11001
|
totalCount: i.totalCount || 0
|
|
10877
11002
|
};
|
|
10878
11003
|
}
|
|
10879
|
-
|
|
10880
|
-
let
|
|
11004
|
+
_resolveWaitingHallExternalIds(e, t) {
|
|
11005
|
+
let n = [], r = [], i = [];
|
|
10881
11006
|
return e.length && e.forEach((e) => {
|
|
10882
11007
|
if (e.externalId) {
|
|
10883
|
-
let
|
|
10884
|
-
|
|
10885
|
-
} else
|
|
10886
|
-
|
|
10887
|
-
|
|
10888
|
-
|
|
11008
|
+
let t = Q.fromSignaling(e.externalId);
|
|
11009
|
+
n.push(e.id.addedTs), r.push(t), this._api.cacheExternalId(e.id.id, t);
|
|
11010
|
+
} else {
|
|
11011
|
+
let t = this._getExternalIdByParticipantId(e.id.id);
|
|
11012
|
+
t ? (r.push(t), n.push(e.id.addedTs)) : i.push(e.id.id);
|
|
11013
|
+
}
|
|
11014
|
+
}), this._reportMissingExternalIds(i, t), {
|
|
11015
|
+
externalIds: r,
|
|
11016
|
+
timestamps: n
|
|
10889
11017
|
};
|
|
10890
11018
|
}
|
|
10891
11019
|
async getAudienceModeHands() {
|
|
10892
11020
|
if (!this._signaling.ready) throw Error("Signaling is not ready");
|
|
10893
11021
|
let e = await this._signaling.getHandQueue();
|
|
10894
11022
|
if (e.error) return Promise.reject(e.message);
|
|
10895
|
-
let t = e.participants || [], { externalIds: n, timestamps: r } =
|
|
11023
|
+
let t = e.participants || [], { externalIds: n, timestamps: r } = this._resolveWaitingHallExternalIds(t, "getAudienceModeHands");
|
|
10896
11024
|
return {
|
|
10897
11025
|
timestamps: r,
|
|
10898
11026
|
participants: n,
|
|
@@ -10901,7 +11029,7 @@ var ls = 15, $ = class e extends b {
|
|
|
10901
11029
|
}
|
|
10902
11030
|
async promoteParticipant(e, t) {
|
|
10903
11031
|
if (this._signaling && this._conversation) try {
|
|
10904
|
-
if (!j.includesOneOf(this._conversation.options, [
|
|
11032
|
+
if (!j.includesOneOf(this._conversation.options, [qa.WAITING_HALL, qa.AUDIENCE_MODE])) throw Error("Unable to promote a participant in the conversation with current options");
|
|
10905
11033
|
if (this._checkAdminRole(), !e && t) throw Error("participantId is required");
|
|
10906
11034
|
await this._signaling.promoteParticipant(e, t);
|
|
10907
11035
|
} catch (t) {
|
|
@@ -11061,7 +11189,7 @@ var ls = 15, $ = class e extends b {
|
|
|
11061
11189
|
unmuteOptions: e.unmuteOptions || [],
|
|
11062
11190
|
observedIds: e.observedIds || [],
|
|
11063
11191
|
markers: this._denormalizeMarkers(t, e.markers)
|
|
11064
|
-
}, e
|
|
11192
|
+
}, j.composeDecorativeId(e));
|
|
11065
11193
|
}));
|
|
11066
11194
|
}
|
|
11067
11195
|
async getParticipantListChunk(e) {
|
|
@@ -11073,7 +11201,7 @@ var ls = 15, $ = class e extends b {
|
|
|
11073
11201
|
let a = this._transport?.getState();
|
|
11074
11202
|
return n.participants.forEach((e) => {
|
|
11075
11203
|
let t = j.composeId(e), n = r[t];
|
|
11076
|
-
this._updateParticipantExternalId(n, e), this._setSessionState(n, this._remoteParticipantSessionState(t, e.sessionState)), n.isOnHold || this._setTransportStatus(n,
|
|
11204
|
+
this._updateParticipantExternalId(n, e), this._setSessionState(n, this._remoteParticipantSessionState(t, e.sessionState)), n.isOnHold || this._setTransportStatus(n, ro.fromTransportState(a) ?? N.WAITING), n.movieShareInfos = e.movieShareInfos, Object.assign(n.mediaSettings, E(e.mediaSettings)), Object.assign(n.muteStates, e.muteStates), n.unmuteOptions = e.unmuteOptions ?? n.unmuteOptions, this._openTransport([n], !0);
|
|
11077
11205
|
}), this._participantListChunkToExternalChunk(n);
|
|
11078
11206
|
}
|
|
11079
11207
|
async _getInitialParticiapntListChunk() {
|
|
@@ -11087,7 +11215,7 @@ var ls = 15, $ = class e extends b {
|
|
|
11087
11215
|
_onLocalMediaStreamChanged(e) {
|
|
11088
11216
|
if (!this._conversation || !this._mediaSource) return;
|
|
11089
11217
|
let t = this._mediaSource.mediaSettings;
|
|
11090
|
-
this._debug.debug("Local media stream changed", t), e.kind === k.audio && this._mediaSource && (this._audioFix = new
|
|
11218
|
+
this._debug.debug("Local media stream changed", t), e.kind === k.audio && this._mediaSource && (this._audioFix = new vo(this._mediaSource, this._debug, this._stats.logger)), L.onLocalStreamUpdate(t, e.kind, this.id), !this._conversation?.waitingHall && !this._conversation?.observer && !this._isAudienceModeListener() && this._changeMediaSettings(t);
|
|
11091
11219
|
}
|
|
11092
11220
|
_onScreenSharingStatus(e) {
|
|
11093
11221
|
let t = this.mediaSettings;
|
|
@@ -11107,7 +11235,7 @@ var ls = 15, $ = class e extends b {
|
|
|
11107
11235
|
this._warnParticipantNotInConversation(e);
|
|
11108
11236
|
return;
|
|
11109
11237
|
}
|
|
11110
|
-
r.mediaSettings = t, ["ACTIVE", "HELD"].includes(this._state) && L.onRemoteMediaSettings(r.externalId, t, r.markers, this.id), this._specListener && this._specListener.onChangeRemoteMediaSettings(e, t);
|
|
11238
|
+
r.mediaSettings = t, ["ACTIVE", "HELD"].includes(this._state) && (r.externalId ? L.onRemoteMediaSettings(r.externalId, t, r.markers, this.id) : this._reportMissingExternalIds([e], "REMOTE_MEDIA_SETTINGS")), this._specListener && this._specListener.onChangeRemoteMediaSettings(e, t);
|
|
11111
11239
|
}
|
|
11112
11240
|
_extractLocalParticipantFromConnection(e) {
|
|
11113
11241
|
let t = this._api.getUserId();
|
|
@@ -11123,7 +11251,7 @@ var ls = 15, $ = class e extends b {
|
|
|
11123
11251
|
this._warnParticipantNotInConversation(e);
|
|
11124
11252
|
return;
|
|
11125
11253
|
}
|
|
11126
|
-
n.participantState = t || {}, ["ACTIVE", "HELD"].includes(this._state) && L.onRemoteParticipantState(n.externalId, n.participantState, n.markers, this.id);
|
|
11254
|
+
n.participantState = t || {}, ["ACTIVE", "HELD"].includes(this._state) && (n.externalId ? L.onRemoteParticipantState(n.externalId, n.participantState, n.markers, this.id) : this._reportMissingExternalIds([e], "REMOTE_PARTICIPANT_STATE"));
|
|
11127
11255
|
}
|
|
11128
11256
|
_changeMultipleParticipantState(e, t) {
|
|
11129
11257
|
this._debug.debug("Multiple participants state changed", e);
|
|
@@ -11217,9 +11345,9 @@ var ls = 15, $ = class e extends b {
|
|
|
11217
11345
|
for (let n of e.conversation.participants) {
|
|
11218
11346
|
let e = j.composeId(n), i = n.roles || [];
|
|
11219
11347
|
if (this._isMe(e)) {
|
|
11220
|
-
|
|
11348
|
+
to(this._conversation.roles, i) || this._onRolesChanged(e, i), t = () => {
|
|
11221
11349
|
this._registerParticipantLocalMuteState({
|
|
11222
|
-
muteStates:
|
|
11350
|
+
muteStates: fo(n),
|
|
11223
11351
|
unmuteOptions: n.unmuteOptions
|
|
11224
11352
|
});
|
|
11225
11353
|
};
|
|
@@ -11237,7 +11365,7 @@ var ls = 15, $ = class e extends b {
|
|
|
11237
11365
|
let t = E(n.mediaSettings);
|
|
11238
11366
|
Wt(t, a.mediaSettings) || this._changeRemoteMediaSettings(e, t);
|
|
11239
11367
|
let r = j.mapParticipantState(n), o = a.participantState;
|
|
11240
|
-
j.isEqualParticipantState(r, o) || await this._changeRemoteParticipantState(e, r),
|
|
11368
|
+
j.isEqualParticipantState(r, o) || await this._changeRemoteParticipantState(e, r), to(i, a.roles) || this._onRolesChanged(a.id, i), !!n.onHold != !!a.isOnHold && (a.isOnHold = !!n.onHold, this._setParticipantsStatus([a], n.onHold ? N.ONHOLD : N.CONNECTED));
|
|
11241
11369
|
}
|
|
11242
11370
|
}
|
|
11243
11371
|
let i = this._participants;
|
|
@@ -11262,27 +11390,33 @@ var ls = 15, $ = class e extends b {
|
|
|
11262
11390
|
this._close(new O(D.MISSED), { errorText: "Call accepted on other device" });
|
|
11263
11391
|
return;
|
|
11264
11392
|
}
|
|
11265
|
-
this._conversation?.direction ===
|
|
11393
|
+
this._conversation?.direction === Ua.OUTGOING && !this._conversation.concurrent && this._stats.lifecycle.markOutgoingAccepted();
|
|
11266
11394
|
let r = this._getParticipant(t);
|
|
11267
11395
|
if (!r) {
|
|
11268
|
-
let n = this._api.getDecorativeIdByInitialId(t)
|
|
11396
|
+
let n = this._api.getDecorativeIdByInitialId(t);
|
|
11269
11397
|
r = this._registerParticipantInCache(this._createParticipant({
|
|
11270
11398
|
id: t,
|
|
11271
11399
|
externalId: e.externalId ? Q.fromSignaling(e.externalId, e.deviceIdx) : void 0,
|
|
11272
11400
|
mediaSettings: E(e.mediaSettings)
|
|
11273
|
-
},
|
|
11401
|
+
}, n));
|
|
11274
11402
|
} else if (e.externalId) {
|
|
11275
11403
|
let t = Q.fromSignaling(e.externalId, e.deviceIdx);
|
|
11276
11404
|
r.externalId = t, this._api.cacheExternalId(r.id, t);
|
|
11277
11405
|
}
|
|
11278
|
-
r.state = Z.ACCEPTED, r.mediaSettings = E(e.mediaSettings), this._logWithMediaSettings(C.ACCEPTED_OUTGOING, r.mediaSettings), this._conversation && this._conversation.direction ===
|
|
11406
|
+
r.state = Z.ACCEPTED, r.mediaSettings = E(e.mediaSettings), this._logWithMediaSettings(C.ACCEPTED_OUTGOING, r.mediaSettings), this._conversation && this._conversation.direction === Ua.OUTGOING && (this._state === "IDLE" || this._state === "PROCESSING") && (this._state = "ACTIVE", this._changeFeatureSet()), this._state === "ACTIVE" && this._transport && this._transport.open([r.id], n), this._changeRemoteMediaSettings(t, r.mediaSettings), await this._changeRemoteParticipantState(t);
|
|
11279
11407
|
let i = Object.keys(r.muteStates);
|
|
11280
|
-
i.length && this._onMuteParticipant({
|
|
11408
|
+
if (i.length && this._onMuteParticipant({
|
|
11281
11409
|
muteStates: r.muteStates,
|
|
11282
11410
|
mediaOptions: i,
|
|
11283
11411
|
stateUpdated: !0,
|
|
11284
11412
|
participantId: t
|
|
11285
|
-
}), ["ACTIVE", "HELD"].includes(this._state)
|
|
11413
|
+
}), ["ACTIVE", "HELD"].includes(this._state)) {
|
|
11414
|
+
if (!r.externalId) {
|
|
11415
|
+
this._reportMissingExternalIds([t], "ACCEPTED_CALL");
|
|
11416
|
+
return;
|
|
11417
|
+
}
|
|
11418
|
+
L.onAcceptedCall(r.externalId, wa.parseCapabilities(e.capabilities), this.id);
|
|
11419
|
+
}
|
|
11286
11420
|
}
|
|
11287
11421
|
async _onHungup(e) {
|
|
11288
11422
|
this._debug.debug(`Participant hungup [${e.participantId}]`, { reason: e.reason });
|
|
@@ -11318,7 +11452,7 @@ var ls = 15, $ = class e extends b {
|
|
|
11318
11452
|
return;
|
|
11319
11453
|
}
|
|
11320
11454
|
if (e.connected) {
|
|
11321
|
-
let e =
|
|
11455
|
+
let e = ro.fromTransportState(this._transport?.getState());
|
|
11322
11456
|
e && this._setTransportStatus(n, e);
|
|
11323
11457
|
}
|
|
11324
11458
|
this._setSessionState(n, { connected: e.connected });
|
|
@@ -11351,7 +11485,7 @@ var ls = 15, $ = class e extends b {
|
|
|
11351
11485
|
return;
|
|
11352
11486
|
}
|
|
11353
11487
|
if (!n) {
|
|
11354
|
-
let { participant: r } = e, i = r
|
|
11488
|
+
let { participant: r } = e, i = j.composeDecorativeId(r);
|
|
11355
11489
|
this._registerParticipant({
|
|
11356
11490
|
id: t,
|
|
11357
11491
|
externalId: Q.fromSignalingParticipant(r, !0, !0),
|
|
@@ -11378,7 +11512,7 @@ var ls = 15, $ = class e extends b {
|
|
|
11378
11512
|
return;
|
|
11379
11513
|
}
|
|
11380
11514
|
if (!n) {
|
|
11381
|
-
let { participant: r } = e, i = r
|
|
11515
|
+
let { participant: r } = e, i = j.composeDecorativeId(r);
|
|
11382
11516
|
this._registerParticipant({
|
|
11383
11517
|
id: t,
|
|
11384
11518
|
externalId: Q.fromSignalingParticipant(r, !0, !0),
|
|
@@ -11395,7 +11529,7 @@ var ls = 15, $ = class e extends b {
|
|
|
11395
11529
|
isOnHold: !!r.onHold
|
|
11396
11530
|
}, i), n = this._getParticipant(t);
|
|
11397
11531
|
}
|
|
11398
|
-
this._conversation && this._conversation.direction ===
|
|
11532
|
+
this._conversation && this._conversation.direction === Ua.OUTGOING && (this._state === "IDLE" || this._state === "PROCESSING") && (this._state = "ACTIVE", this._changeFeatureSet()), n.state = Z.ACCEPTED, n.mediaSettings = E(e.mediaSettings), n.participantState = j.mapParticipantState(e.participant), n.roles = e.participant.roles || [], this._updateParticipantSessionState(n, t, e.participant.sessionState), e.participant.onHold ? (n.isOnHold = !0, this._setParticipantsStatus([n], N.ONHOLD)) : this._transport?.isAllocated(n.id) ? this._setParticipantsStatus([n], N.CONNECTED) : this._setParticipantsStatus([n], N.WAITING), r && this._emitParticipantEffectiveStatusIfSessionOverridesTransport(n), this._state !== "IDLE" && this._transport && (this._transport.isAllocated(n.id) || this._allocateParticipantTransport(n.id, !0), this._transport.open([n.id], null, !!this._conversation?.observer)), L.onParticipantJoined(n.externalId, n.markers, this.id), this._changeRemoteMediaSettings(t, n.mediaSettings), await this._changeRemoteParticipantState(t, n.participantState), this._invokeRolesChangedCallbackIfNeeded(n);
|
|
11399
11533
|
let i = Object.keys(n.muteStates);
|
|
11400
11534
|
i.length && this._onMuteParticipant({
|
|
11401
11535
|
muteStates: n.muteStates,
|
|
@@ -11421,7 +11555,7 @@ var ls = 15, $ = class e extends b {
|
|
|
11421
11555
|
_onParticipantsStateChanged(e) {
|
|
11422
11556
|
let { participants: t, roomId: n } = e;
|
|
11423
11557
|
t.map(({ id: e, markers: t }) => this._registerParticipantAndSetMarkersIfChunkEnabled(e, t));
|
|
11424
|
-
let r = /* @__PURE__ */ new Map(), i = t.map(({ id: e, participantState: t }) => [e, this._getExternalIdByParticipantId(e)
|
|
11558
|
+
let r = /* @__PURE__ */ new Map(), i = t.map(({ id: e, participantState: t }) => [e, this._getExternalIdByParticipantId(e) ? j.mapParticipantState({ participantState: t }) : void 0]);
|
|
11425
11559
|
try {
|
|
11426
11560
|
i.forEach(([e, t]) => {
|
|
11427
11561
|
t && r.set(e, t);
|
|
@@ -11586,15 +11720,15 @@ var ls = 15, $ = class e extends b {
|
|
|
11586
11720
|
L.onAsrTranscription(t, e.text, e.timestamp, e.duration, this.id);
|
|
11587
11721
|
}
|
|
11588
11722
|
async _onRolesChanged(e, t) {
|
|
11589
|
-
if (this._conversation && this._isMe(e) && !
|
|
11723
|
+
if (this._conversation && this._isMe(e) && !to(this._conversation.roles, t)) {
|
|
11590
11724
|
this._debug.debug(`Local roles changed: ${t}`), this._conversation.roles = t, L.onLocalRolesChanged(t, !1, this.id), this._processMuteState({
|
|
11591
|
-
mediaOptions:
|
|
11725
|
+
mediaOptions: so(this._getMuteStatesForCurrentRoom(), Xa.MUTE_PERMANENT),
|
|
11592
11726
|
stateUpdated: !0
|
|
11593
|
-
}), j.includesOneOf(t, [
|
|
11727
|
+
}), j.includesOneOf(t, [eo.ADMIN, eo.CREATOR]) ? this._refreshRooms(!0) : t.length || this._onRoomSwitched(null);
|
|
11594
11728
|
return;
|
|
11595
11729
|
}
|
|
11596
11730
|
let n = this._getParticipant(e);
|
|
11597
|
-
n && !
|
|
11731
|
+
n && !to(n.roles, t) && (this._debug.debug(`Roles for participant [${e}] changed: ${t}`), n.roles = t, L.onRolesChanged(n.externalId, t, !1, this.id));
|
|
11598
11732
|
}
|
|
11599
11733
|
async _onMuteParticipant(e, t = !1) {
|
|
11600
11734
|
if (!this._conversation) return;
|
|
@@ -11643,7 +11777,7 @@ var ls = 15, $ = class e extends b {
|
|
|
11643
11777
|
let { mediaOptions: t = [], muteAll: n, unmute: r, stateUpdated: i, requestedMedia: a, roomId: o = null, unmuteOptions: s = [] } = e, c = e.adminId ? this._getExternalIdByParticipantId(e.adminId) : null, l = Object.assign({}, e.muteStates ?? this._getMuteStatesForRoomId(o)), u = this._mediaSource.mediaSettings, d = Object.entries(l);
|
|
11644
11778
|
for (let [e, i] of d) {
|
|
11645
11779
|
let a = this._isCallAdmin() && n;
|
|
11646
|
-
if (!(i !==
|
|
11780
|
+
if (!(i !== Xa.MUTE && i !== Xa.MUTE_PERMANENT || a) && (this._isCallAdmin() && i === Xa.MUTE_PERMANENT && !n && (l[e] = Xa.MUTE), !(!t.includes(e) || r))) switch (e) {
|
|
11647
11781
|
case S.VIDEO:
|
|
11648
11782
|
u.isVideoEnabled && (L.onDeviceSwitched(S.VIDEO, !1, this.id), await this.toggleLocalVideo(!1));
|
|
11649
11783
|
break;
|
|
@@ -11680,7 +11814,7 @@ var ls = 15, $ = class e extends b {
|
|
|
11680
11814
|
this._conversation.pinnedParticipantIdByRoom.set(r, t ? null : e);
|
|
11681
11815
|
}
|
|
11682
11816
|
_onOptionsChanged(e) {
|
|
11683
|
-
this._conversation && !
|
|
11817
|
+
this._conversation && !Ja(this._conversation.options, e) && (this._conversation.options = e, L.onOptionsChanged(e, this.id), e.includes(qa.ADMIN_IS_HERE) ? this._conversation.restricted && this._conversation.waitingHall && L.onLocalStatus(N.WAITING_HALL, this.id) : e.includes(qa.WAIT_FOR_ADMIN) && this._conversation.restricted && L.onLocalStatus(N.WAIT_FOR_ADMIN, this.id));
|
|
11684
11818
|
}
|
|
11685
11819
|
async _onNetworkStatus(e) {
|
|
11686
11820
|
if (this._conversation) {
|
|
@@ -11690,7 +11824,7 @@ var ls = 15, $ = class e extends b {
|
|
|
11690
11824
|
if (this._isMe(r) || r === "") e = this._conversation.networkRating;
|
|
11691
11825
|
else if (n[r]) e = n[r].networkRating;
|
|
11692
11826
|
else continue;
|
|
11693
|
-
if (e !== i) if (this._isMe(r) || r === "") this._conversation.networkRating = i,
|
|
11827
|
+
if (e !== i) if (this._isMe(r) || r === "") this._conversation.networkRating = i, ei.getInstance().value = i, L.onLocalNetworkStatusChanged(i, this.id);
|
|
11694
11828
|
else {
|
|
11695
11829
|
let e = n[r];
|
|
11696
11830
|
e.networkRating = i, t.push({
|
|
@@ -11735,7 +11869,7 @@ var ls = 15, $ = class e extends b {
|
|
|
11735
11869
|
}
|
|
11736
11870
|
_changeFeatureSet() {
|
|
11737
11871
|
if (this._conversation) {
|
|
11738
|
-
let e = this._state === "ACTIVE", t = this._conversation.features.includes(
|
|
11872
|
+
let e = this._state === "ACTIVE", t = this._conversation.features.includes(Ka.ADD_PARTICIPANT);
|
|
11739
11873
|
L.onCallState(e, t, this._conversation, this.id);
|
|
11740
11874
|
}
|
|
11741
11875
|
}
|
|
@@ -11769,7 +11903,7 @@ var ls = 15, $ = class e extends b {
|
|
|
11769
11903
|
let n = this._getParticipant(e);
|
|
11770
11904
|
if (n) {
|
|
11771
11905
|
if (n.connectionStatus.sessionStateApplicable && n.connectionStatus.sessionState?.connected === !1) {
|
|
11772
|
-
let e =
|
|
11906
|
+
let e = ro.fromTransportState(this._transport?.getState());
|
|
11773
11907
|
e && this._setTransportStatus(n, e), n.connectionStatus.sessionStateConnectedBySpeaker = !0;
|
|
11774
11908
|
let t = this._setTransportStatus(n, n.connectionStatus.transport);
|
|
11775
11909
|
this._emitParticipantTransition(n, t);
|
|
@@ -11779,7 +11913,7 @@ var ls = 15, $ = class e extends b {
|
|
|
11779
11913
|
}
|
|
11780
11914
|
async _onTransportStateChanged(e, t) {
|
|
11781
11915
|
this._debug.debug(`Transport state has changed: ${t}`, e);
|
|
11782
|
-
let n =
|
|
11916
|
+
let n = ro.fromTransportState(t);
|
|
11783
11917
|
if (!n) return;
|
|
11784
11918
|
let r = this._participants, i = [], a = e.reduce((e, n) => {
|
|
11785
11919
|
if (n in r) {
|
|
@@ -11813,15 +11947,15 @@ var ls = 15, $ = class e extends b {
|
|
|
11813
11947
|
return e.every((e) => t[e]?.isOnHold);
|
|
11814
11948
|
}
|
|
11815
11949
|
_onRemoteTrackAdded(e, t, n) {
|
|
11816
|
-
if (e.endsWith(
|
|
11817
|
-
else if (e.startsWith(
|
|
11818
|
-
else if (e.startsWith(
|
|
11950
|
+
if (e.endsWith(Xr.AUDIO_MIX)) this._debug.debug("Remote audio mix track added"), this._audioOutput.add(e, n), L.onRemoteMixedAudioStream(t, this.id);
|
|
11951
|
+
else if (e.startsWith(Xr.TRANSPARENT_AUDIO_TRACK_PREFIX)) this._debug.debug(`Remote transparent audio track added: ${e}`), this._audioOutput.add(e, n);
|
|
11952
|
+
else if (e.startsWith(Xr.PARTICIPANT_AGNOSTIC_TRACK_PREFIX)) this._debug.debug(`Participant-agnostic track added: ${e}`), this._streamByStreamId.set(e, t);
|
|
11819
11953
|
else {
|
|
11820
11954
|
this._debug.debug(`Remote track added on the participant [${e}]`, { kind: n.kind });
|
|
11821
11955
|
let r = this._getParticipant(e);
|
|
11822
11956
|
if (!r) {
|
|
11823
|
-
let t = this._api.getDecorativeIdByInitialId(e)
|
|
11824
|
-
this._debug.warn(`Conversation: track added before participant [id: ${e}, decorativeId: ${
|
|
11957
|
+
let t = this._api.getDecorativeIdByInitialId(e);
|
|
11958
|
+
this._debug.warn(`Conversation: track added before participant [id: ${e}, decorativeId: ${t}]`), this._registerParticipant({ id: e }, t), r = this._getParticipant(e), this._setParticipantsStatus([r], N.WAITING), this._activeSpeakerId === e && this._lastSignalledActiveSpeakerId !== e && (L.onSpeakerChanged(r.externalId, this.id), this._lastSignalledActiveSpeakerId = e);
|
|
11825
11959
|
}
|
|
11826
11960
|
if (this._transport && !this._transport.isAllocated(r.id) && this._allocateParticipantTransport(r.id, !1), n.kind === k.audio && (this._audioOutput.add(e, n), M.preserveAudioTracks || (r.remoteAudioTrack = n, t.removeTrack(n))), r.remoteStream !== t && t.getTracks().length) {
|
|
11827
11961
|
if (r.remoteStream = t, r.secondStream) return;
|
|
@@ -11842,7 +11976,7 @@ var ls = 15, $ = class e extends b {
|
|
|
11842
11976
|
}
|
|
11843
11977
|
}
|
|
11844
11978
|
async _removeAudioTrack(e, t, n) {
|
|
11845
|
-
if (e !==
|
|
11979
|
+
if (e !== Xr.AUDIO_MIX) {
|
|
11846
11980
|
let n = this._getParticipant(e);
|
|
11847
11981
|
if (!n || n.remoteStream && n.remoteStream !== t) return;
|
|
11848
11982
|
}
|
|
@@ -11857,7 +11991,7 @@ var ls = 15, $ = class e extends b {
|
|
|
11857
11991
|
if (this._statFirstMediaReceived.markTopologyChanged(e), e === J.DIRECT && (this._onRemoteSignalledStall([]), this._onAudioMixStall(!1)), this._conversation) {
|
|
11858
11992
|
this._conversation.topology = e;
|
|
11859
11993
|
for (let e of Object.values(this._participants)) {
|
|
11860
|
-
let t =
|
|
11994
|
+
let t = ro.setSessionStateApplicable(e.connectionStatus, this._isParticipantSessionStateApplicable(e.id));
|
|
11861
11995
|
this._emitParticipantTransition(e, t);
|
|
11862
11996
|
}
|
|
11863
11997
|
this._changeFeatureSet(), this._forceOpenTransportForAloneInCall();
|
|
@@ -11913,7 +12047,7 @@ var ls = 15, $ = class e extends b {
|
|
|
11913
12047
|
].includes(t) ? null : this._setTransportStatus(e, t), n);
|
|
11914
12048
|
}
|
|
11915
12049
|
_setParticipantsStalled(e, t) {
|
|
11916
|
-
this._updateParticipantsStatus(e, (e) =>
|
|
12050
|
+
this._updateParticipantsStatus(e, (e) => ro.setStalled(e.connectionStatus, t));
|
|
11917
12051
|
}
|
|
11918
12052
|
_updateParticipantsStatus(e, t, n = null) {
|
|
11919
12053
|
let r = e.reduce((e, n) => {
|
|
@@ -11931,46 +12065,63 @@ var ls = 15, $ = class e extends b {
|
|
|
11931
12065
|
}
|
|
11932
12066
|
_onRoomsUpdated(e) {
|
|
11933
12067
|
if (this._isCalledState()) return;
|
|
11934
|
-
let t = {};
|
|
11935
|
-
for (let
|
|
11936
|
-
let
|
|
11937
|
-
|
|
11938
|
-
|
|
11939
|
-
|
|
11940
|
-
|
|
12068
|
+
let t = {}, n = [], r = [];
|
|
12069
|
+
for (let i of Object.keys(Za)) {
|
|
12070
|
+
let a = e.updates[i];
|
|
12071
|
+
a && (a?.rooms?.forEach((e) => {
|
|
12072
|
+
let { room: t, missingParticipantIds: i } = this._convertRoomToExternal(e);
|
|
12073
|
+
t && n.push(t), r.push(...i);
|
|
12074
|
+
}), t[i] = {
|
|
12075
|
+
rooms: n,
|
|
12076
|
+
roomIds: a?.roomIds,
|
|
12077
|
+
deactivated: a?.deactivated
|
|
11941
12078
|
});
|
|
11942
12079
|
}
|
|
11943
|
-
L.onRoomsUpdated(t, this.id);
|
|
12080
|
+
this._reportMissingExternalIds(r, "ROOMS_UPDATED"), L.onRoomsUpdated(t, this.id);
|
|
11944
12081
|
}
|
|
11945
12082
|
_onRoomUpdated(e) {
|
|
11946
|
-
let t = this._convertRoomToExternal(e.room || null);
|
|
11947
|
-
e.events.some((e) => e ===
|
|
12083
|
+
let { room: t, missingParticipantIds: n } = this._convertRoomToExternal(e.room || null);
|
|
12084
|
+
e.events.some((e) => e === Za.UPDATE) && (e.muteStates !== void 0 && this._setMuteStatesForRoomId(e.muteStates, e.roomId), e.recordInfo !== void 0 && this._conversation?.recordsInfoByRoom.set(e.roomId, e.recordInfo), e.asrInfo !== void 0 && this._conversation?.asrInfoByRoom.set(e.roomId, e.asrInfo)), this._isCalledState() || (this._reportMissingExternalIds(n, "ROOM_UPDATED"), L.onRoomUpdated(e.events, e.roomId, t, e.deactivate || null, this.id));
|
|
11948
12085
|
}
|
|
11949
12086
|
_convertRoomToExternal(e) {
|
|
11950
|
-
if (!e) return
|
|
11951
|
-
|
|
12087
|
+
if (!e) return {
|
|
12088
|
+
room: null,
|
|
12089
|
+
missingParticipantIds: []
|
|
12090
|
+
};
|
|
12091
|
+
let t = [], { externalIds: n, missingIds: r } = this._getExternalIdsByParticipantIds(e.participantIds ?? []), { externalIds: i, missingIds: a } = this._getExternalIdsByParticipantIds(e.addParticipantIds ?? []), { externalIds: o, missingIds: s } = this._getExternalIdsByParticipantIds(e.removeParticipantIds ?? []);
|
|
12092
|
+
t.push(...r, ...a, ...s);
|
|
12093
|
+
let c;
|
|
12094
|
+
if (e.pinnedParticipantId) {
|
|
12095
|
+
let n = this._getExternalIdByParticipantId(e.pinnedParticipantId);
|
|
12096
|
+
n ? c = n : t.push(e.pinnedParticipantId);
|
|
12097
|
+
}
|
|
11952
12098
|
return {
|
|
11953
|
-
|
|
11954
|
-
|
|
11955
|
-
|
|
11956
|
-
|
|
11957
|
-
|
|
11958
|
-
|
|
11959
|
-
|
|
11960
|
-
|
|
11961
|
-
|
|
11962
|
-
|
|
11963
|
-
|
|
11964
|
-
|
|
12099
|
+
room: {
|
|
12100
|
+
id: e.id,
|
|
12101
|
+
name: e.name,
|
|
12102
|
+
participantCount: e.participantCount,
|
|
12103
|
+
participantIds: n,
|
|
12104
|
+
addParticipantIds: i,
|
|
12105
|
+
removeParticipantIds: o,
|
|
12106
|
+
participants: e.participants?.participants ? this._participantListChunkToExternalChunk(e.participants) : void 0,
|
|
12107
|
+
active: e.active,
|
|
12108
|
+
muteStates: e.muteStates,
|
|
12109
|
+
pinnedParticipantId: c,
|
|
12110
|
+
countdownSec: e.countdownSec,
|
|
12111
|
+
timeoutMs: e.timeoutMs
|
|
12112
|
+
},
|
|
12113
|
+
missingParticipantIds: t
|
|
11965
12114
|
};
|
|
11966
12115
|
}
|
|
11967
12116
|
async _onRoomParticipantsUpdated(e) {
|
|
11968
|
-
let t = this._transport?.getState(), n = e.roomId ?? null, r =
|
|
11969
|
-
|
|
12117
|
+
let t = this._transport?.getState(), n = e.roomId ?? null, r = [], { externalIds: i, missingIds: a } = this._getExternalIdsByParticipantIds(e.addedParticipantIds ?? []);
|
|
12118
|
+
r.push(...a);
|
|
12119
|
+
let o = e.addedParticipants;
|
|
12120
|
+
if (i.length && o?.length !== i.length && !this._isCalledState()) {
|
|
11970
12121
|
let e = this._convertExternalIdsToServerExternalIds(i);
|
|
11971
|
-
|
|
12122
|
+
o = (await this._signaling.getParticipants(e)).participants;
|
|
11972
12123
|
}
|
|
11973
|
-
let
|
|
12124
|
+
let s = o?.map((e) => {
|
|
11974
12125
|
let r = j.composeId(e);
|
|
11975
12126
|
return this._createParticipant({
|
|
11976
12127
|
id: r,
|
|
@@ -11986,38 +12137,38 @@ var ls = 15, $ = class e extends b {
|
|
|
11986
12137
|
observedIds: e.observedIds || [],
|
|
11987
12138
|
markers: this._denormalizeMarkers(r, e.markers),
|
|
11988
12139
|
isInRoom: n !== null
|
|
11989
|
-
}, e
|
|
11990
|
-
}) || [],
|
|
11991
|
-
for (let e of
|
|
11992
|
-
this._transport?.getState() === q.IDLE && !this._isCalledState() && this._openTransport(
|
|
11993
|
-
let
|
|
12140
|
+
}, j.composeDecorativeId(e));
|
|
12141
|
+
}) || [], c = !1;
|
|
12142
|
+
for (let e of s) e.id === this._conversation?.compositeUserId && (c = !0), this._registerParticipantInCache(e);
|
|
12143
|
+
this._transport?.getState() === q.IDLE && !this._isCalledState() && this._openTransport(s, !0);
|
|
12144
|
+
let l = [];
|
|
11994
12145
|
if (e?.removedParticipantMarkers) {
|
|
11995
12146
|
for (let t of e.removedParticipantMarkers) if (t.GRID?.id) {
|
|
11996
12147
|
let e = this._getExternalIdByParticipantId(t.GRID.id);
|
|
11997
|
-
|
|
12148
|
+
e ? l.push(e) : r.push(t.GRID.id);
|
|
11998
12149
|
}
|
|
11999
12150
|
}
|
|
12000
|
-
if (
|
|
12151
|
+
if (this._reportMissingExternalIds(r, "ROOM_PARTICIPANTS_UPDATED"), c && await this._onRoomSwitched(n), l) {
|
|
12001
12152
|
let e = this._conversation?.pinnedParticipantIdByRoom.get(n);
|
|
12002
12153
|
if (e) {
|
|
12003
12154
|
let t = this._getExternalIdByParticipantId(e);
|
|
12004
12155
|
if (t) {
|
|
12005
|
-
for (let e of
|
|
12156
|
+
for (let e of l) if (Q.compare(t, e)) {
|
|
12006
12157
|
this._conversation?.pinnedParticipantIdByRoom.delete(n);
|
|
12007
12158
|
break;
|
|
12008
12159
|
}
|
|
12009
12160
|
}
|
|
12010
12161
|
}
|
|
12011
12162
|
}
|
|
12012
|
-
let
|
|
12163
|
+
let u = {
|
|
12013
12164
|
roomId: n,
|
|
12014
12165
|
participantCount: e.participantCount,
|
|
12015
12166
|
addedParticipantIds: i,
|
|
12016
|
-
addedParticipants: j.mapSharedParticipants(
|
|
12167
|
+
addedParticipants: j.mapSharedParticipants(s),
|
|
12017
12168
|
removedParticipantMarkers: e?.removedParticipantMarkers,
|
|
12018
|
-
removedParticipantIds:
|
|
12169
|
+
removedParticipantIds: l
|
|
12019
12170
|
};
|
|
12020
|
-
this._isCalledState() || L.onRoomParticipantsUpdated(
|
|
12171
|
+
this._isCalledState() || L.onRoomParticipantsUpdated(u, this.id);
|
|
12021
12172
|
}
|
|
12022
12173
|
async _onRoomSwitched(e, t = !1) {
|
|
12023
12174
|
if (!this._conversation || this._conversation.roomId === e) return;
|
|
@@ -12037,11 +12188,11 @@ var ls = 15, $ = class e extends b {
|
|
|
12037
12188
|
if (this._setMuteStatesForRoomId(t.muteStates, n), this._conversation?.recordsInfoByRoom.set(n, t.recordInfo ?? null), this._conversation?.pinnedParticipantIdByRoom.set(n, t.pinnedParticipantId ?? null), t.asrInfo && this._conversation?.asrInfoByRoom.set(n, t.asrInfo), t.urlSharingInfo ? this._conversation?.urlSharingInfoByRoom.set(n, t.urlSharingInfo) : this._conversation?.urlSharingInfoByRoom.delete(n), e) {
|
|
12038
12189
|
let e = this._participants;
|
|
12039
12190
|
await this._registerParticipants(t?.participants?.participants?.filter((t) => !e[j.composeId(t)]) || [], !0);
|
|
12040
|
-
let n = this._convertRoomToExternal(t);
|
|
12191
|
+
let { room: n } = this._convertRoomToExternal(t);
|
|
12041
12192
|
n && r.push(n);
|
|
12042
12193
|
}
|
|
12043
12194
|
}
|
|
12044
|
-
r.length && !this._isCalledState() && L.onRoomsUpdated({ [
|
|
12195
|
+
r.length && !this._isCalledState() && L.onRoomsUpdated({ [Za.UPDATE]: { rooms: r } }, this.id);
|
|
12045
12196
|
}
|
|
12046
12197
|
_onFeedback(e) {
|
|
12047
12198
|
let t = [];
|
|
@@ -12071,7 +12222,9 @@ var ls = 15, $ = class e extends b {
|
|
|
12071
12222
|
return;
|
|
12072
12223
|
}
|
|
12073
12224
|
let o = Q.fromSignaling(r, a.deviceIdx);
|
|
12074
|
-
|
|
12225
|
+
L.onParticipantIdChanged(a, o, this.id);
|
|
12226
|
+
let s = j.compose(n, a.deviceIdx), c = j.compose(t, a.deviceIdx);
|
|
12227
|
+
if (this._api.cacheExternalId(s, o), this._api.mapDecorativeId(s, c), i) this._conversation.externalId = o;
|
|
12075
12228
|
else {
|
|
12076
12229
|
let e = this._participants;
|
|
12077
12230
|
e[t].externalId = o;
|
|
@@ -12115,19 +12268,19 @@ var ls = 15, $ = class e extends b {
|
|
|
12115
12268
|
_getParticipant(e) {
|
|
12116
12269
|
return this._participants[e];
|
|
12117
12270
|
}
|
|
12118
|
-
},
|
|
12271
|
+
}, ps = null, ms = class e extends Error {
|
|
12119
12272
|
constructor(t, n) {
|
|
12120
12273
|
super(t), h(this, "participantErrors", void 0), Object.setPrototypeOf(this, e.prototype), this.participantErrors = n;
|
|
12121
12274
|
}
|
|
12122
|
-
},
|
|
12123
|
-
function
|
|
12124
|
-
|
|
12275
|
+
}, hs = null, gs = null, _s = 64 * 1024;
|
|
12276
|
+
function vs() {
|
|
12277
|
+
hs = null, gs = null;
|
|
12125
12278
|
}
|
|
12126
|
-
function
|
|
12279
|
+
function ys(e) {
|
|
12127
12280
|
return e?.endsWith("/") ? e.slice(0, -1) : e;
|
|
12128
12281
|
}
|
|
12129
|
-
async function
|
|
12130
|
-
let n =
|
|
12282
|
+
async function bs(e = null, t) {
|
|
12283
|
+
let n = ys(e ?? M.apiBaseUrl);
|
|
12131
12284
|
if (n) return n;
|
|
12132
12285
|
if ((t ?? M.apiEnv) !== "AUTO") return M.apiEndpoint(t);
|
|
12133
12286
|
try {
|
|
@@ -12142,25 +12295,25 @@ async function _s(e = null, t) {
|
|
|
12142
12295
|
return R.warn("Failed to resolve API endpoint using DNS, default is used", e), M.apiEndpoint(t);
|
|
12143
12296
|
}
|
|
12144
12297
|
}
|
|
12145
|
-
async function
|
|
12146
|
-
return
|
|
12298
|
+
async function xs() {
|
|
12299
|
+
return hs || gs || (gs = bs(), hs = await gs, gs = null, hs);
|
|
12147
12300
|
}
|
|
12148
|
-
async function
|
|
12301
|
+
async function Ss(e, t = {}, n = !1) {
|
|
12149
12302
|
if (!window.Blob || !window.navigator.sendBeacon) return;
|
|
12150
|
-
await
|
|
12151
|
-
let r =
|
|
12152
|
-
window.navigator.sendBeacon(`${
|
|
12303
|
+
await xs();
|
|
12304
|
+
let r = Os(e, t, n), i = new window.Blob([r], { type: "application/x-www-form-urlencoded" });
|
|
12305
|
+
window.navigator.sendBeacon(`${hs}/fb.do`, i);
|
|
12153
12306
|
}
|
|
12154
|
-
async function
|
|
12155
|
-
return await
|
|
12307
|
+
async function Cs(e, t = {}, n = !1, r) {
|
|
12308
|
+
return await xs(), Ts(Os(e, t, n), r);
|
|
12156
12309
|
}
|
|
12157
|
-
async function
|
|
12158
|
-
await
|
|
12159
|
-
let r =
|
|
12160
|
-
return
|
|
12310
|
+
async function ws(e, t = {}, n = !1) {
|
|
12311
|
+
await xs();
|
|
12312
|
+
let r = Os(e, t, n);
|
|
12313
|
+
return Ts(r, void 0, new Blob([r]).size <= _s);
|
|
12161
12314
|
}
|
|
12162
|
-
async function
|
|
12163
|
-
let r = `${t ??
|
|
12315
|
+
async function Ts(e, t, n = !1) {
|
|
12316
|
+
let r = `${t ?? hs}/fb.do`, i = new AbortController(), a = new O(x.NETWORK, { callError: {
|
|
12164
12317
|
scope: "network",
|
|
12165
12318
|
source: "api",
|
|
12166
12319
|
code: "timeout",
|
|
@@ -12179,16 +12332,16 @@ async function Ss(e, t, n = !1) {
|
|
|
12179
12332
|
} catch {
|
|
12180
12333
|
o = { result: a };
|
|
12181
12334
|
}
|
|
12182
|
-
if (!t.ok && !
|
|
12335
|
+
if (!t.ok && !Es(o)) throw new O(x.API, { callError: {
|
|
12183
12336
|
scope: "server",
|
|
12184
12337
|
source: "api",
|
|
12185
12338
|
code: `http-${t.status}`,
|
|
12186
12339
|
description: "http-error"
|
|
12187
12340
|
} });
|
|
12188
|
-
if (
|
|
12341
|
+
if (Es(o)) throw o;
|
|
12189
12342
|
return o;
|
|
12190
12343
|
} catch (e) {
|
|
12191
|
-
throw e instanceof O ? e : i.signal.aborted ? a :
|
|
12344
|
+
throw e instanceof O ? e : i.signal.aborted ? a : Es(e) ? e : new O(x.NETWORK, { callError: {
|
|
12192
12345
|
scope: "network",
|
|
12193
12346
|
source: "api",
|
|
12194
12347
|
code: "fetch-failed",
|
|
@@ -12198,12 +12351,12 @@ async function Ss(e, t, n = !1) {
|
|
|
12198
12351
|
clearTimeout(o);
|
|
12199
12352
|
}
|
|
12200
12353
|
}
|
|
12201
|
-
function
|
|
12354
|
+
function Es(e) {
|
|
12202
12355
|
if (typeof e != "object" || !e) return !1;
|
|
12203
12356
|
let t = e;
|
|
12204
12357
|
return typeof t.error_code == "number" && typeof t.error_msg == "string";
|
|
12205
12358
|
}
|
|
12206
|
-
async function
|
|
12359
|
+
async function Ds(e, t) {
|
|
12207
12360
|
try {
|
|
12208
12361
|
let n = await fetch(e, {
|
|
12209
12362
|
method: "POST",
|
|
@@ -12216,7 +12369,7 @@ async function ws(e, t) {
|
|
|
12216
12369
|
throw R.warn("Failed to send form data", e), e;
|
|
12217
12370
|
}
|
|
12218
12371
|
}
|
|
12219
|
-
function
|
|
12372
|
+
function Os(e, t = {}, n = !1) {
|
|
12220
12373
|
t.method = e, t.format = "JSON", t.application_key || (t.application_key = M.apiKey), n || (y.sessionKey ? t.session_key = y.sessionKey : y.accessToken && (t.access_token = y.accessToken));
|
|
12221
12374
|
for (let [e, n] of Object.entries(t)) typeof n == "object" && (t[e] = JSON.stringify(n));
|
|
12222
12375
|
let r = "";
|
|
@@ -12225,7 +12378,7 @@ function Ts(e, t = {}, n = !1) {
|
|
|
12225
12378
|
}
|
|
12226
12379
|
//#endregion
|
|
12227
12380
|
//#region src/abstract/BaseApi.ts
|
|
12228
|
-
var
|
|
12381
|
+
var ks = class {
|
|
12229
12382
|
constructor() {
|
|
12230
12383
|
h(this, "_abortSignal", void 0);
|
|
12231
12384
|
}
|
|
@@ -12243,22 +12396,16 @@ var Es = class {
|
|
|
12243
12396
|
}
|
|
12244
12397
|
log(e) {}
|
|
12245
12398
|
logClientStats(e) {}
|
|
12246
|
-
|
|
12399
|
+
getCachedParticipantIdByExternalId(e) {
|
|
12247
12400
|
return null;
|
|
12248
12401
|
}
|
|
12249
|
-
|
|
12250
|
-
return null;
|
|
12251
|
-
}
|
|
12252
|
-
getCachedExternalIdByOkId(e) {
|
|
12402
|
+
getCachedExternalIdByParticipantId(e) {
|
|
12253
12403
|
return null;
|
|
12254
12404
|
}
|
|
12255
12405
|
cacheExternalId(e, t) {}
|
|
12256
12406
|
mapDecorativeId(e, t) {}
|
|
12257
12407
|
unmapDecorativeId(e) {}
|
|
12258
12408
|
getDecorativeIdByInitialId(e) {}
|
|
12259
|
-
replaceByInitialIdIdIfExists(e) {
|
|
12260
|
-
return typeof e == "string" ? parseInt(e, 10) : e;
|
|
12261
|
-
}
|
|
12262
12409
|
hangupConversation(e, t = D.HUNGUP, n) {}
|
|
12263
12410
|
async removeHistoryRecords(e) {}
|
|
12264
12411
|
async getServerTime() {
|
|
@@ -12268,78 +12415,62 @@ var Es = class {
|
|
|
12268
12415
|
async getInbounds() {
|
|
12269
12416
|
return [];
|
|
12270
12417
|
}
|
|
12271
|
-
},
|
|
12418
|
+
}, As = class e {
|
|
12272
12419
|
constructor() {
|
|
12273
|
-
h(this, "
|
|
12420
|
+
h(this, "_participantIdToExternalId", /* @__PURE__ */ new Map()), h(this, "_externalIdToParticipantId", /* @__PURE__ */ new Map()), h(this, "_decorativeIdToInitialId", /* @__PURE__ */ new Map()), h(this, "_initialIdToDecorativeId", /* @__PURE__ */ new Map());
|
|
12274
12421
|
}
|
|
12275
12422
|
static _normalizeType(e) {
|
|
12276
|
-
return e.type ===
|
|
12423
|
+
return e.type === io.GROUP ? {
|
|
12277
12424
|
...e,
|
|
12278
|
-
type:
|
|
12425
|
+
type: io.USER
|
|
12279
12426
|
} : e;
|
|
12280
12427
|
}
|
|
12281
|
-
getOkId(t) {
|
|
12282
|
-
let n = Q.toString(e._normalizeType(t)), r = this._externalIdToOkId.get(n);
|
|
12283
|
-
return r == null ? null : this.replaceByInitialIdIdIfExists(r);
|
|
12284
|
-
}
|
|
12285
12428
|
getExternalId(e) {
|
|
12286
|
-
let t = this.
|
|
12429
|
+
let t = this._initialIdToDecorativeId.get(e) ?? e, n = this._participantIdToExternalId.get(t);
|
|
12287
12430
|
return n == null ? null : Q.fromString(n);
|
|
12288
12431
|
}
|
|
12289
|
-
|
|
12290
|
-
|
|
12291
|
-
|
|
12292
|
-
hasByOkId(e) {
|
|
12293
|
-
return this._okIdToExternalId.has(e);
|
|
12432
|
+
getParticipantId(t) {
|
|
12433
|
+
let n = Q.toString(e._normalizeType(t)), r = this._externalIdToParticipantId.get(n);
|
|
12434
|
+
return r == null ? null : this._decorativeIdToInitialId.get(r) ?? r;
|
|
12294
12435
|
}
|
|
12295
12436
|
cache(t, n) {
|
|
12296
|
-
let r =
|
|
12297
|
-
this.
|
|
12437
|
+
let r = e._normalizeType(n), i = Q.toString(r);
|
|
12438
|
+
this._participantIdToExternalId.set(t, i), this._externalIdToParticipantId.set(i, t);
|
|
12298
12439
|
}
|
|
12299
12440
|
mapDecorativeId(e, t) {
|
|
12300
|
-
|
|
12301
|
-
this._decorativeIdToInitialId.set(n, r), this._initialIdToDecorativeId.set(r, n);
|
|
12441
|
+
this._decorativeIdToInitialId.set(e, t), this._initialIdToDecorativeId.set(t, e);
|
|
12302
12442
|
}
|
|
12303
12443
|
unmapDecorativeId(e) {
|
|
12304
|
-
let t =
|
|
12305
|
-
|
|
12444
|
+
let t = this._initialIdToDecorativeId.get(e);
|
|
12445
|
+
t && this._decorativeIdToInitialId.delete(t), this._initialIdToDecorativeId.delete(e);
|
|
12306
12446
|
}
|
|
12307
12447
|
getDecorativeIdByInitialId(e) {
|
|
12308
|
-
|
|
12309
|
-
return this._initialIdToDecorativeId.get(t);
|
|
12310
|
-
}
|
|
12311
|
-
replaceByInitialIdIdIfExists(e) {
|
|
12312
|
-
let t = j.extractOkId(e);
|
|
12313
|
-
return this._decorativeIdToInitialId.get(t) ?? t;
|
|
12314
|
-
}
|
|
12315
|
-
getParticipantIdByExternalId(e) {
|
|
12316
|
-
let t = this.getOkId(e);
|
|
12317
|
-
return t == null ? null : j.composeParticipantId(t, A.USER, e.deviceIdx ?? 0);
|
|
12448
|
+
return this._initialIdToDecorativeId.get(e);
|
|
12318
12449
|
}
|
|
12319
12450
|
clear() {
|
|
12320
|
-
this.
|
|
12451
|
+
this._participantIdToExternalId.clear(), this._externalIdToParticipantId.clear(), this._decorativeIdToInitialId.clear(), this._initialIdToDecorativeId.clear();
|
|
12321
12452
|
}
|
|
12322
|
-
},
|
|
12323
|
-
function
|
|
12453
|
+
}, js = "anonymLogin:", Ms = 700, Ns = 3e3;
|
|
12454
|
+
function Ps(e) {
|
|
12324
12455
|
let t = e.error_code;
|
|
12325
12456
|
switch (t) {
|
|
12326
|
-
case 2: return
|
|
12327
|
-
case 4: return e.error_msg.includes("participants.limit.exceeded") ?
|
|
12328
|
-
case 300: return
|
|
12329
|
-
case 1101: return
|
|
12330
|
-
case 1102: return
|
|
12331
|
-
case 1103: return
|
|
12332
|
-
case 1104: return
|
|
12333
|
-
case 1106: return
|
|
12334
|
-
case 1113: return
|
|
12457
|
+
case 2: return Fs(D.SERVICE_UNAVAILABLE, t, "service-unavailable");
|
|
12458
|
+
case 4: return e.error_msg.includes("participants.limit.exceeded") ? Fs(D.PARTICIPANT_LIMIT_REACHED, t, "participants-limit-exceeded") : Fs(x.API, t, "request-error");
|
|
12459
|
+
case 300: return Fs(D.NOT_FOUND, t, "not-found");
|
|
12460
|
+
case 1101: return Fs(D.SERVICE_DISABLED, t, "vchat-service-disabled");
|
|
12461
|
+
case 1102: return Fs(D.CALLEE_IS_OFFLINE, t, "target-user-unavailable");
|
|
12462
|
+
case 1103: return Fs(D.NOT_FRIENDS, t, "friendship-required");
|
|
12463
|
+
case 1104: return Is(t, "youla-api-error");
|
|
12464
|
+
case 1106: return Is(t, "vk-api-error");
|
|
12465
|
+
case 1113: return Fs(D.CALLER_IS_REJECTED, t, "caller-is-rejected");
|
|
12335
12466
|
case 1114: {
|
|
12336
12467
|
let n = e.custom_error?.vchat_detailed_api_error?.code, r = n?.startsWith("obsolete_client");
|
|
12337
|
-
return
|
|
12468
|
+
return Fs(r ? D.OBSOLETE_CLIENT : D.VCHAT_DETAILED_ERROR, t, n ?? "detailed-error", r ? n : void 0);
|
|
12338
12469
|
}
|
|
12339
|
-
default: return
|
|
12470
|
+
default: return Fs(x.API, t, "api-error");
|
|
12340
12471
|
}
|
|
12341
12472
|
}
|
|
12342
|
-
function
|
|
12473
|
+
function Fs(e, t, n, r) {
|
|
12343
12474
|
return {
|
|
12344
12475
|
type: e,
|
|
12345
12476
|
callError: {
|
|
@@ -12351,7 +12482,7 @@ function Ms(e, t, n, r) {
|
|
|
12351
12482
|
message: r
|
|
12352
12483
|
};
|
|
12353
12484
|
}
|
|
12354
|
-
function
|
|
12485
|
+
function Is(e, t) {
|
|
12355
12486
|
return {
|
|
12356
12487
|
type: D.EXTERNAL_API_ERROR,
|
|
12357
12488
|
callError: {
|
|
@@ -12362,19 +12493,19 @@ function Ns(e, t) {
|
|
|
12362
12493
|
}
|
|
12363
12494
|
};
|
|
12364
12495
|
}
|
|
12365
|
-
var
|
|
12496
|
+
var Ls = class extends ks {
|
|
12366
12497
|
constructor(...e) {
|
|
12367
|
-
super(...e), h(this, "_uuid", void 0), h(this, "_idCache", new
|
|
12498
|
+
super(...e), h(this, "_uuid", void 0), h(this, "_idCache", new As());
|
|
12368
12499
|
}
|
|
12369
12500
|
async _callUnsafe(e, t = {}, n = !1) {
|
|
12370
12501
|
let r = async (i) => {
|
|
12371
12502
|
try {
|
|
12372
|
-
return await
|
|
12503
|
+
return await Cs(e, t, n);
|
|
12373
12504
|
} catch (t) {
|
|
12374
12505
|
if (!t || typeof t != "object" || !Object.hasOwn(t, "error_msg")) {
|
|
12375
12506
|
i++;
|
|
12376
12507
|
let n = t && (typeof t == "object" || typeof t == "function") ? Object.getOwnPropertyNames(t).map((e) => `${e}: ${JSON.stringify(t[e])}`) : [String(t)];
|
|
12377
|
-
if (R.debug(`${e} network error, attempt ${i}: ${n.join("\n ")}`), this._abortSignal?.aborted && (R.debug(`${e} aborted`), this._abortSignal.throwIfAborted()), i < M.apiMaxAttempt) return await j.delay(Math.min(i *
|
|
12508
|
+
if (R.debug(`${e} network error, attempt ${i}: ${n.join("\n ")}`), this._abortSignal?.aborted && (R.debug(`${e} aborted`), this._abortSignal.throwIfAborted()), i < M.apiMaxAttempt) return await j.delay(Math.min(i * Ms, Ns), { signal: this._abortSignal }), r(i);
|
|
12378
12509
|
}
|
|
12379
12510
|
throw R.warn(e, "error", t), t;
|
|
12380
12511
|
}
|
|
@@ -12397,16 +12528,19 @@ var Ps = class extends Es {
|
|
|
12397
12528
|
message: i?.error_msg,
|
|
12398
12529
|
code: i?.error_code
|
|
12399
12530
|
};
|
|
12400
|
-
if (i.custom_error && (a.custom_error = i.custom_error),
|
|
12401
|
-
let e =
|
|
12531
|
+
if (i.custom_error && (a.custom_error = i.custom_error), Rs(i)) {
|
|
12532
|
+
let e = Ps(i);
|
|
12402
12533
|
throw a.callError = e.callError, a.message = e.message ?? a.message, new O(e.type, a);
|
|
12403
12534
|
}
|
|
12404
12535
|
throw new O(x.API, a);
|
|
12405
12536
|
}
|
|
12406
12537
|
}
|
|
12407
12538
|
userId(e) {
|
|
12408
|
-
|
|
12409
|
-
|
|
12539
|
+
if (y.isEmpty()) {
|
|
12540
|
+
let { compositeUserId: t } = j.decomposeParticipantId(e), { id: n } = j.decomposeId(t);
|
|
12541
|
+
return Q.fromId(String(n));
|
|
12542
|
+
}
|
|
12543
|
+
return this._idCache.getExternalId(e);
|
|
12410
12544
|
}
|
|
12411
12545
|
async authorize() {
|
|
12412
12546
|
if (this._ensureUuid(), !M.apiKey) throw new O(x.API, {
|
|
@@ -12425,7 +12559,7 @@ var Ps = class extends Es {
|
|
|
12425
12559
|
let t = { session_data: {
|
|
12426
12560
|
version: 2,
|
|
12427
12561
|
device_id: this._uuid,
|
|
12428
|
-
client_version: M.
|
|
12562
|
+
client_version: M.apiClientVersion,
|
|
12429
12563
|
client_type: "SDK_JS"
|
|
12430
12564
|
} };
|
|
12431
12565
|
return M.authToken && (t.session_data.auth_token = M.authToken, t.session_data.version = 3), this._callUnsafe("auth.anonymLogin", t, !0).then((e) => {
|
|
@@ -12444,17 +12578,17 @@ var Ps = class extends Es {
|
|
|
12444
12578
|
});
|
|
12445
12579
|
}
|
|
12446
12580
|
_getAnonymLoginCacheKey() {
|
|
12447
|
-
return M.authToken ? `${
|
|
12581
|
+
return M.authToken ? `${js}${M.authToken}` : null;
|
|
12448
12582
|
}
|
|
12449
12583
|
_getCachedAnonymLogin() {
|
|
12450
12584
|
let e = this._getAnonymLoginCacheKey();
|
|
12451
12585
|
if (!e) return null;
|
|
12452
12586
|
let t = at.get(e);
|
|
12453
|
-
return
|
|
12587
|
+
return zs(t) ? t : (t && at.remove(e), null);
|
|
12454
12588
|
}
|
|
12455
12589
|
_setCachedAnonymLogin(e) {
|
|
12456
12590
|
let t = this._getAnonymLoginCacheKey();
|
|
12457
|
-
!t || !
|
|
12591
|
+
!t || !zs(e) || at.set(t, {
|
|
12458
12592
|
session_key: e.session_key,
|
|
12459
12593
|
session_secret_key: e.session_secret_key,
|
|
12460
12594
|
uid: e.uid
|
|
@@ -12472,7 +12606,7 @@ var Ps = class extends Es {
|
|
|
12472
12606
|
}
|
|
12473
12607
|
async _sendClientStats(e, t = !0) {
|
|
12474
12608
|
try {
|
|
12475
|
-
(await
|
|
12609
|
+
(await ws("vchat.clientStats", e))?.items_responses?.forEach((e) => {
|
|
12476
12610
|
e.errors && R.error("[vchat.clientStats]", e);
|
|
12477
12611
|
});
|
|
12478
12612
|
} catch (n) {
|
|
@@ -12483,7 +12617,7 @@ var Ps = class extends Es {
|
|
|
12483
12617
|
}
|
|
12484
12618
|
logClientStats(e) {
|
|
12485
12619
|
let t = {
|
|
12486
|
-
app_version:
|
|
12620
|
+
app_version: M.appVersion,
|
|
12487
12621
|
sdk_type: "WEB",
|
|
12488
12622
|
sdk_version: M.sdkVersion,
|
|
12489
12623
|
version: 1,
|
|
@@ -12502,14 +12636,14 @@ var Ps = class extends Es {
|
|
|
12502
12636
|
}, a = await this._callUnsafe("vchat.getLogUploadUrl", i), o = new FormData(), s = new Blob([r], { type: "application/json" });
|
|
12503
12637
|
o.append("file", s, "log.json");
|
|
12504
12638
|
let c = new URL(a.upload_url);
|
|
12505
|
-
return c.searchParams.append("size", s.size.toString()),
|
|
12639
|
+
return c.searchParams.append("size", s.size.toString()), Ds(c.toString(), o);
|
|
12506
12640
|
}
|
|
12507
12641
|
async joinConversation(e, t = !1, n) {
|
|
12508
12642
|
let r = {
|
|
12509
12643
|
conversationId: e,
|
|
12510
12644
|
isVideo: t,
|
|
12511
12645
|
protocolVersion: M.protocolVersion,
|
|
12512
|
-
capabilities:
|
|
12646
|
+
capabilities: wa.getFlags()
|
|
12513
12647
|
};
|
|
12514
12648
|
return n && (r.chatId = n), this._call("vchat.joinConversation", r);
|
|
12515
12649
|
}
|
|
@@ -12541,13 +12675,13 @@ var Ps = class extends Es {
|
|
|
12541
12675
|
externalIds: l
|
|
12542
12676
|
});
|
|
12543
12677
|
if (t && t.length) switch (n) {
|
|
12544
|
-
case
|
|
12678
|
+
case Wa.USER:
|
|
12545
12679
|
u.uids = t.join(",");
|
|
12546
12680
|
break;
|
|
12547
|
-
case
|
|
12681
|
+
case Wa.GROUP:
|
|
12548
12682
|
u.gid = t[0];
|
|
12549
12683
|
break;
|
|
12550
|
-
case
|
|
12684
|
+
case Wa.CHAT:
|
|
12551
12685
|
u.chatId = t[0];
|
|
12552
12686
|
break;
|
|
12553
12687
|
}
|
|
@@ -12590,17 +12724,14 @@ var Ps = class extends Es {
|
|
|
12590
12724
|
joinLink: e,
|
|
12591
12725
|
isVideo: t,
|
|
12592
12726
|
protocolVersion: M.protocolVersion,
|
|
12593
|
-
capabilities:
|
|
12727
|
+
capabilities: wa.getFlags()
|
|
12594
12728
|
};
|
|
12595
12729
|
return n?.length && (i.observedIds = n.join(",")), M.anonymToken && (i.anonymToken = M.anonymToken), r && (i.payload = r), this._call("vchat.joinConversationByLink", i);
|
|
12596
12730
|
}
|
|
12597
|
-
|
|
12598
|
-
return this._idCache.
|
|
12731
|
+
getCachedParticipantIdByExternalId(e) {
|
|
12732
|
+
return this._idCache.getParticipantId(e);
|
|
12599
12733
|
}
|
|
12600
|
-
|
|
12601
|
-
return this._idCache.getOkId(e);
|
|
12602
|
-
}
|
|
12603
|
-
getCachedExternalIdByOkId(e) {
|
|
12734
|
+
getCachedExternalIdByParticipantId(e) {
|
|
12604
12735
|
return this._idCache.getExternalId(e);
|
|
12605
12736
|
}
|
|
12606
12737
|
cacheExternalId(e, t) {
|
|
@@ -12615,9 +12746,6 @@ var Ps = class extends Es {
|
|
|
12615
12746
|
getDecorativeIdByInitialId(e) {
|
|
12616
12747
|
return this._idCache.getDecorativeIdByInitialId(e);
|
|
12617
12748
|
}
|
|
12618
|
-
replaceByInitialIdIdIfExists(e) {
|
|
12619
|
-
return this._idCache.replaceByInitialIdIdIfExists(e);
|
|
12620
|
-
}
|
|
12621
12749
|
async getConversationParams(e) {
|
|
12622
12750
|
let t = {};
|
|
12623
12751
|
return M.anonymToken && (t.anonymToken = M.anonymToken), e && (t.conversationId = e), this._call("vchat.getConversationParams", t);
|
|
@@ -12633,7 +12761,7 @@ var Ps = class extends Es {
|
|
|
12633
12761
|
conversationId: e,
|
|
12634
12762
|
reason: t
|
|
12635
12763
|
};
|
|
12636
|
-
M.anonymToken && (r.anonymToken = M.anonymToken), n?.peerId && (r.peerId = n.peerId),
|
|
12764
|
+
M.anonymToken && (r.anonymToken = M.anonymToken), n?.peerId && (r.peerId = n.peerId), Ss("vchat.hangupConversation", r);
|
|
12637
12765
|
}
|
|
12638
12766
|
async removeHistoryRecords(e) {
|
|
12639
12767
|
await this._call("vchat.removeHistoryRecords", { recordIds: e.join(",") });
|
|
@@ -12649,19 +12777,19 @@ var Ps = class extends Es {
|
|
|
12649
12777
|
return Array.isArray(e?.inbounds) ? e.inbounds : [];
|
|
12650
12778
|
}
|
|
12651
12779
|
};
|
|
12652
|
-
function
|
|
12780
|
+
function Rs(e) {
|
|
12653
12781
|
return typeof e == "object" && !!e && "error_code" in e && "error_msg" in e;
|
|
12654
12782
|
}
|
|
12655
|
-
function
|
|
12783
|
+
function zs(e) {
|
|
12656
12784
|
return typeof e == "object" && !!e && "session_key" in e && "session_secret_key" in e && typeof e.session_key == "string" && e.session_key.length > 0 && typeof e.session_secret_key == "string" && e.session_secret_key.length > 0;
|
|
12657
12785
|
}
|
|
12658
12786
|
//#endregion
|
|
12659
12787
|
//#region src/enums/RecordRole.ts
|
|
12660
|
-
var
|
|
12788
|
+
var Bs = /* @__PURE__ */ function(e) {
|
|
12661
12789
|
return e.KING = "KING", e.PAWN = "PAWN", e;
|
|
12662
|
-
}(
|
|
12790
|
+
}(Bs || {}), Vs = /* @__PURE__ */ function(e) {
|
|
12663
12791
|
return e.OFF = "0", e.ON = "1", e;
|
|
12664
|
-
}({}),
|
|
12792
|
+
}({}), Hs = class {
|
|
12665
12793
|
constructor(e) {
|
|
12666
12794
|
h(this, "_queue", void 0), h(this, "_readCursor", void 0), h(this, "_writeCursor", void 0), h(this, "_moveReadCursor", void 0), h(this, "_left", void 0), this._queue = Array(e).fill(null), this._readCursor = this._writeCursor = this._left = 0, this._moveReadCursor = !1;
|
|
12667
12795
|
}
|
|
@@ -12684,21 +12812,21 @@ var Ls = /* @__PURE__ */ function(e) {
|
|
|
12684
12812
|
let e = this._queue[this._readCursor];
|
|
12685
12813
|
return e && (this._moveReadCursor = !1, this._queue[this._readCursor] = null, this._readCursor = this.nextCursor(this._readCursor), --this._left), e;
|
|
12686
12814
|
}
|
|
12687
|
-
},
|
|
12815
|
+
}, Us = class {
|
|
12688
12816
|
constructor(e, t, n, r = null) {
|
|
12689
12817
|
h(this, "_uuid", void 0), h(this, "_apiKey", void 0), h(this, "_callToken", void 0), h(this, "_apiEnv", void 0), h(this, "_baseApiUrl", void 0), h(this, "_sessionKey", void 0), this._uuid = j.uuid(), this._apiKey = t, this._callToken = n, this._apiEnv = e, this._baseApiUrl = r;
|
|
12690
12818
|
}
|
|
12691
12819
|
async authorize() {
|
|
12692
|
-
let e = await
|
|
12820
|
+
let e = await Cs("auth.anonymLogin", {
|
|
12693
12821
|
session_data: {
|
|
12694
12822
|
device_id: this._uuid,
|
|
12695
|
-
client_version: M.
|
|
12823
|
+
client_version: M.apiClientVersion,
|
|
12696
12824
|
client_type: "SDK_JS",
|
|
12697
12825
|
auth_token: this._callToken,
|
|
12698
12826
|
version: 3
|
|
12699
12827
|
},
|
|
12700
12828
|
application_key: this._apiKey
|
|
12701
|
-
}, !0, await
|
|
12829
|
+
}, !0, await bs(this._baseApiUrl, this._apiEnv));
|
|
12702
12830
|
return j.isObject(e) && !("error_msg" in e) ? (this._sessionKey = e.session_key, !0) : !1;
|
|
12703
12831
|
}
|
|
12704
12832
|
async hangupConversation(e, t) {
|
|
@@ -12708,9 +12836,9 @@ var Ls = /* @__PURE__ */ function(e) {
|
|
|
12708
12836
|
application_key: this._apiKey,
|
|
12709
12837
|
session_key: this._sessionKey
|
|
12710
12838
|
};
|
|
12711
|
-
t?.peerId && (n.peerId = t.peerId), await
|
|
12839
|
+
t?.peerId && (n.peerId = t.peerId), await Cs("vchat.hangupConversation", n, !0, await bs(this._baseApiUrl, this._apiEnv));
|
|
12712
12840
|
}
|
|
12713
|
-
},
|
|
12841
|
+
}, Ws, Gs = null, Ks = {
|
|
12714
12842
|
getCameras: T.getCameras,
|
|
12715
12843
|
getMicrophones: T.getMicrophones,
|
|
12716
12844
|
getOutput: T.getOutput,
|
|
@@ -12736,27 +12864,27 @@ var Ls = /* @__PURE__ */ function(e) {
|
|
|
12736
12864
|
baseChromeVersion: T.baseChromeVersion,
|
|
12737
12865
|
getAudioContext: T.getAudioContext,
|
|
12738
12866
|
isAudioShareSupported: T.isAudioShareSupported
|
|
12739
|
-
},
|
|
12740
|
-
function
|
|
12741
|
-
|
|
12867
|
+
}, qs = { participantMarkerCompare: j.participantMarkerCompare };
|
|
12868
|
+
function Js(e) {
|
|
12869
|
+
Gs = e;
|
|
12742
12870
|
}
|
|
12743
|
-
function
|
|
12871
|
+
function Ys(e) {
|
|
12744
12872
|
M.videoEffects = e;
|
|
12745
12873
|
}
|
|
12746
|
-
function
|
|
12874
|
+
function Xs(e) {
|
|
12747
12875
|
M.audioEffects = e;
|
|
12748
12876
|
}
|
|
12749
|
-
function
|
|
12877
|
+
function Zs(e, t = {}) {
|
|
12750
12878
|
M.vad = e, M.vadOptions = t;
|
|
12751
12879
|
}
|
|
12752
|
-
function
|
|
12880
|
+
function Qs(e, t = null, n = {}, r = 1) {
|
|
12753
12881
|
M.vmoji = e, M.vmojiOptions = {
|
|
12754
12882
|
protocolVersion: r,
|
|
12755
12883
|
renderingOptions: n
|
|
12756
12884
|
}, t && e.setSDK(t);
|
|
12757
12885
|
}
|
|
12758
|
-
async function
|
|
12759
|
-
M.set(t),
|
|
12886
|
+
async function $s(t) {
|
|
12887
|
+
M.set(t), Ws || (Ws = new Ls()), e.disableLog(!M.debug), R.toggle(M.debug), R.log(`Calls SDK ${M.sdkVersion}`, t), await T.init();
|
|
12760
12888
|
let n = T.getBrowserSupportFailure();
|
|
12761
12889
|
if (n) throw new O(x.UNSUPPORTED, { callError: {
|
|
12762
12890
|
scope: "internal",
|
|
@@ -12765,19 +12893,19 @@ async function Xs(t) {
|
|
|
12765
12893
|
} });
|
|
12766
12894
|
R.log("UserAgent:", navigator.userAgent), R.log("Screen resolution:", `${window.screen.width}x${window.screen.height}`), R.log("Permissions:", `Camera: ${T.hasCameraPermission()}, Mic: ${T.hasMicrophonePermission()}`), R.log("Simulcast:", `${t.simulcast} => ${M.simulcast}`);
|
|
12767
12895
|
}
|
|
12768
|
-
async function
|
|
12896
|
+
async function ec(e, t = [S.AUDIO], n = "", r = !1, i = !1, a, o, s) {
|
|
12769
12897
|
let c = [];
|
|
12770
|
-
return Array.isArray(e) ? c = e.length ? e : [] : e && (c = [e]),
|
|
12898
|
+
return Array.isArray(e) ? c = e.length ? e : [] : e && (c = [e]), nc([], Wa.USER, t, n, r, i, a, c, o, s);
|
|
12771
12899
|
}
|
|
12772
|
-
function
|
|
12900
|
+
function tc(e, t = []) {
|
|
12773
12901
|
let n = e.getIncomingCallerExternalId();
|
|
12774
12902
|
return n ? t.length === 1 && t[0].id === n.id && t[0].type === n.type : !1;
|
|
12775
12903
|
}
|
|
12776
|
-
async function
|
|
12904
|
+
async function nc(e, t = Wa.USER, n, r = "", i = !1, a = !1, o, s, c, l) {
|
|
12777
12905
|
if (!M.hold && z.getActive()) throw R.error("There is already active call"), new O(D.HAS_ACTIVE_CALL);
|
|
12778
12906
|
let u = z.getAll().find((e) => e.isIncomingRinging);
|
|
12779
|
-
if (!M.hold && u && !
|
|
12780
|
-
return new $(new
|
|
12907
|
+
if (!M.hold && u && !tc(u, s)) throw R.error("There is already incoming call"), new O(D.HAS_ACTIVE_CALL);
|
|
12908
|
+
return new $(new Ls(), Gs).onStart({
|
|
12781
12909
|
opponentIds: e,
|
|
12782
12910
|
opponentType: t,
|
|
12783
12911
|
mediaOptions: n,
|
|
@@ -12790,40 +12918,40 @@ async function $s(e, t = Va.USER, n, r = "", i = !1, a = !1, o, s, c, l) {
|
|
|
12790
12918
|
conversationId: l
|
|
12791
12919
|
});
|
|
12792
12920
|
}
|
|
12793
|
-
async function
|
|
12794
|
-
return
|
|
12921
|
+
async function rc(e, t) {
|
|
12922
|
+
return ic(e, A.USER, void 0, t);
|
|
12795
12923
|
}
|
|
12796
|
-
async function
|
|
12924
|
+
async function ic(e, t = A.USER, n, r, i, a) {
|
|
12797
12925
|
if (e === $.id()) throw Error("Push has already been processed");
|
|
12798
|
-
return new $(new
|
|
12926
|
+
return new $(new Ls(), Gs).onPush(e, t, n, r, i, a);
|
|
12799
12927
|
}
|
|
12800
|
-
async function
|
|
12801
|
-
return
|
|
12928
|
+
async function ac() {
|
|
12929
|
+
return Ws.getInbounds();
|
|
12802
12930
|
}
|
|
12803
|
-
async function
|
|
12804
|
-
return e && (M.authToken = e), t !== void 0 && M.apiBaseUrl !== t && (M.apiBaseUrl = t,
|
|
12931
|
+
async function oc(e, t) {
|
|
12932
|
+
return e && (M.authToken = e), t !== void 0 && M.apiBaseUrl !== t && (M.apiBaseUrl = t, vs()), Ws.authorize();
|
|
12805
12933
|
}
|
|
12806
|
-
async function
|
|
12807
|
-
return
|
|
12934
|
+
async function sc(e = [S.AUDIO], t) {
|
|
12935
|
+
return Ml(t).accept(e);
|
|
12808
12936
|
}
|
|
12809
|
-
async function
|
|
12810
|
-
let t =
|
|
12937
|
+
async function cc(e) {
|
|
12938
|
+
let t = kl(e?.conversationId);
|
|
12811
12939
|
if (t) return t.decline(e);
|
|
12812
12940
|
}
|
|
12813
|
-
async function
|
|
12814
|
-
return
|
|
12941
|
+
async function lc(e, t = [S.AUDIO]) {
|
|
12942
|
+
return uc(e, t);
|
|
12815
12943
|
}
|
|
12816
|
-
async function
|
|
12944
|
+
async function uc(e, t, n) {
|
|
12817
12945
|
if (!M.hold && z.callsLength > 0) throw R.error("There is already active call"), new O(D.HAS_ACTIVE_CALL);
|
|
12818
|
-
return new $(new
|
|
12946
|
+
return new $(new Ls(), Gs).onJoin({
|
|
12819
12947
|
conversationId: e,
|
|
12820
12948
|
mediaOptions: t,
|
|
12821
12949
|
chatId: n
|
|
12822
12950
|
});
|
|
12823
12951
|
}
|
|
12824
|
-
async function
|
|
12952
|
+
async function dc(e, t = [S.AUDIO], n, r, i, a) {
|
|
12825
12953
|
if (!M.hold && z.callsLength > 0) throw R.error("There is already active call"), new O(D.HAS_ACTIVE_CALL);
|
|
12826
|
-
return n && (M.anonymToken = n), new $(new
|
|
12954
|
+
return n && (M.anonymToken = n), new $(new Ls(), Gs).onJoin({
|
|
12827
12955
|
joinLink: e,
|
|
12828
12956
|
mediaOptions: t,
|
|
12829
12957
|
observedIds: r,
|
|
@@ -12832,30 +12960,30 @@ async function cc(e, t = [S.AUDIO], n, r, i, a) {
|
|
|
12832
12960
|
anonymous: !!M.anonymToken
|
|
12833
12961
|
});
|
|
12834
12962
|
}
|
|
12835
|
-
function
|
|
12836
|
-
let t =
|
|
12963
|
+
function fc(e) {
|
|
12964
|
+
let t = kl(e?.conversationId);
|
|
12837
12965
|
return t ? t.hangup(e) : ($.hangupAfterInit(e?.onFastHangup), Promise.resolve());
|
|
12838
12966
|
}
|
|
12839
|
-
async function
|
|
12967
|
+
async function pc(e, t) {
|
|
12840
12968
|
let n = Array.isArray(e) ? e : [e], r = $.current();
|
|
12841
12969
|
r && await r.addParticipant(n, t);
|
|
12842
12970
|
}
|
|
12843
|
-
async function
|
|
12971
|
+
async function mc(e, t) {
|
|
12844
12972
|
let n = $.current();
|
|
12845
12973
|
if (n) {
|
|
12846
12974
|
let r = e.map((e) => j.composeUserId(e));
|
|
12847
12975
|
await n.addParticipantLegacy(r, t);
|
|
12848
12976
|
}
|
|
12849
12977
|
}
|
|
12850
|
-
async function
|
|
12851
|
-
let n =
|
|
12852
|
-
if (
|
|
12853
|
-
|
|
12854
|
-
|
|
12978
|
+
async function hc(e, t = !1) {
|
|
12979
|
+
let n = Nl(e, "removeParticipant");
|
|
12980
|
+
if (n) try {
|
|
12981
|
+
await n.conversation.removeParticipant(j.decomposeParticipantId(n.participantId).compositeUserId, t);
|
|
12982
|
+
} catch (e) {
|
|
12983
|
+
R.warn(`Failed to remove participant ${n.participantId}. Perhaps he is no longer on the call. ${e}`);
|
|
12855
12984
|
}
|
|
12856
|
-
return pc(n, t);
|
|
12857
12985
|
}
|
|
12858
|
-
async function
|
|
12986
|
+
async function gc(e, t = !1) {
|
|
12859
12987
|
let n = $.current();
|
|
12860
12988
|
if (n) try {
|
|
12861
12989
|
await n.removeParticipant(j.composeUserId(e), t);
|
|
@@ -12863,13 +12991,13 @@ async function pc(e, t = !1) {
|
|
|
12863
12991
|
R.warn(`Failed to remove participant ${e}. Perhaps he is no longer on the call. ${t}`);
|
|
12864
12992
|
}
|
|
12865
12993
|
}
|
|
12866
|
-
async function
|
|
12994
|
+
async function _c(e, t) {
|
|
12867
12995
|
let n = $.current();
|
|
12868
12996
|
if (e === "videoinput" && jt.contains(t)) return M.videoFacingMode = t, n ? (T.isMobile() && n.stopVideoTrack(), n.changeDevice(e)) : void 0;
|
|
12869
12997
|
if (!await T._saveDeviceId(e, t)) throw Error(`Device not found: ${t}`);
|
|
12870
12998
|
if (n) return n.changeDevice(e);
|
|
12871
12999
|
}
|
|
12872
|
-
async function
|
|
13000
|
+
async function vc(e, t) {
|
|
12873
13001
|
let n = typeof e == "object" ? {
|
|
12874
13002
|
...e,
|
|
12875
13003
|
fastScreenSharing: e.captureScreen && e.fastScreenSharing,
|
|
@@ -12878,267 +13006,264 @@ async function hc(e, t) {
|
|
|
12878
13006
|
captureScreen: e,
|
|
12879
13007
|
fastScreenSharing: !1,
|
|
12880
13008
|
captureAudio: !1
|
|
12881
|
-
}, r =
|
|
13009
|
+
}, r = kl(t);
|
|
12882
13010
|
return r ? r.toggleScreenCapturing(n) : Promise.reject();
|
|
12883
13011
|
}
|
|
12884
|
-
function
|
|
13012
|
+
function yc(e) {
|
|
12885
13013
|
let t = $.current();
|
|
12886
13014
|
t && t.toggleAnimojiCapturing(e);
|
|
12887
13015
|
}
|
|
12888
|
-
async function
|
|
13016
|
+
async function bc(e, t = !1) {
|
|
12889
13017
|
let n = $.current();
|
|
12890
13018
|
n && await n.setVideoStream(e, t);
|
|
12891
13019
|
}
|
|
12892
|
-
async function
|
|
12893
|
-
let n =
|
|
13020
|
+
async function xc(e, t) {
|
|
13021
|
+
let n = kl(t);
|
|
12894
13022
|
n && await n.toggleLocalVideo(e);
|
|
12895
13023
|
}
|
|
12896
|
-
async function
|
|
12897
|
-
let n =
|
|
13024
|
+
async function Sc(e, t) {
|
|
13025
|
+
let n = kl(t);
|
|
12898
13026
|
n && await n.toggleLocalAudio(e);
|
|
12899
13027
|
}
|
|
12900
|
-
async function
|
|
13028
|
+
async function Cc(e) {
|
|
12901
13029
|
let t = $.current();
|
|
12902
13030
|
if (t) return t.setLocalResolution(e);
|
|
12903
13031
|
}
|
|
12904
|
-
async function
|
|
13032
|
+
async function wc(e) {
|
|
12905
13033
|
let t = $.current();
|
|
12906
13034
|
t && await t.changePriorities(e);
|
|
12907
13035
|
}
|
|
12908
|
-
async function
|
|
13036
|
+
async function Tc(e, t) {
|
|
12909
13037
|
let n = $.current();
|
|
12910
13038
|
if (n) {
|
|
12911
|
-
let r;
|
|
12912
13039
|
if (t) {
|
|
12913
|
-
let
|
|
12914
|
-
if (!
|
|
12915
|
-
|
|
13040
|
+
let r = n.getCachedParticipantIdByExternalId(t);
|
|
13041
|
+
if (!r) {
|
|
13042
|
+
Al(t, "changeParticipantState", n);
|
|
12916
13043
|
return;
|
|
12917
13044
|
}
|
|
12918
|
-
|
|
13045
|
+
await n.changeParticipantState(e, r);
|
|
13046
|
+
return;
|
|
12919
13047
|
}
|
|
12920
|
-
await n.changeParticipantState(e
|
|
13048
|
+
await n.changeParticipantState(e);
|
|
12921
13049
|
}
|
|
12922
13050
|
}
|
|
12923
|
-
async function
|
|
13051
|
+
async function Ec() {
|
|
12924
13052
|
let e = $.current();
|
|
12925
13053
|
e && await e.putHandsDown();
|
|
12926
13054
|
}
|
|
12927
|
-
async function
|
|
13055
|
+
async function Dc(e) {
|
|
12928
13056
|
let t = $.current();
|
|
12929
13057
|
t && await t.updateDisplayLayout(e);
|
|
12930
13058
|
}
|
|
12931
|
-
async function
|
|
13059
|
+
async function Oc(e) {
|
|
12932
13060
|
let t = $.current();
|
|
12933
13061
|
t && await t.requestDisplayLayout(e);
|
|
12934
13062
|
}
|
|
12935
|
-
async function
|
|
12936
|
-
let r =
|
|
12937
|
-
|
|
12938
|
-
R.warn("grantRoles: externalId not found in cache", e);
|
|
12939
|
-
return;
|
|
12940
|
-
}
|
|
12941
|
-
return Dc(r, Q.getDeviceIdx(e), t, n);
|
|
13063
|
+
async function kc(e, t, n = !1) {
|
|
13064
|
+
let r = Nl(e, "grantRoles");
|
|
13065
|
+
r && await r.conversation.grantRoles(r.participantId, t, n);
|
|
12942
13066
|
}
|
|
12943
|
-
async function
|
|
13067
|
+
async function Ac(e, t, n, r = !1) {
|
|
12944
13068
|
let i = $.current();
|
|
12945
13069
|
i && await i.grantRoles(j.composeParticipantId(e, A.USER, t), n, r);
|
|
12946
13070
|
}
|
|
12947
|
-
async function
|
|
12948
|
-
|
|
12949
|
-
|
|
12950
|
-
|
|
12951
|
-
|
|
12952
|
-
|
|
12953
|
-
|
|
12954
|
-
roomId: r
|
|
12955
|
-
});
|
|
13071
|
+
async function jc({ externalId: e = null, muteStates: t, requestedMedia: n = [], roomId: r = null }) {
|
|
13072
|
+
if (e) {
|
|
13073
|
+
let i = Nl(e, "muteParticipant");
|
|
13074
|
+
return i ? i.conversation.muteParticipant(i.participantId, t, n, r) : void 0;
|
|
13075
|
+
}
|
|
13076
|
+
let i = $.current();
|
|
13077
|
+
i && await i.muteParticipant(null, t, n, r);
|
|
12956
13078
|
}
|
|
12957
|
-
async function
|
|
13079
|
+
async function Mc({ uid: e = null, muteStates: t, requestedMedia: n = [], deviceIdx: r = 0, roomId: i = null }) {
|
|
12958
13080
|
let a = $.current();
|
|
12959
13081
|
if (a) {
|
|
12960
13082
|
let o = e ? j.composeParticipantId(e, A.USER, r) : null;
|
|
12961
13083
|
await a.muteParticipant(o, t, n, i);
|
|
12962
13084
|
}
|
|
12963
13085
|
}
|
|
12964
|
-
async function
|
|
12965
|
-
let r =
|
|
12966
|
-
|
|
12967
|
-
R.warn("pinParticipant: externalId not found in cache", e);
|
|
12968
|
-
return;
|
|
12969
|
-
}
|
|
12970
|
-
return jc(r, t, Q.getDeviceIdx(e), n);
|
|
13086
|
+
async function Nc(e, t = !1, n = null) {
|
|
13087
|
+
let r = Nl(e, "pinParticipant");
|
|
13088
|
+
r && await r.conversation.pinParticipant(r.participantId, t, n);
|
|
12971
13089
|
}
|
|
12972
|
-
async function
|
|
13090
|
+
async function Pc(e, t = !1, n = 0, r = null) {
|
|
12973
13091
|
let i = $.current();
|
|
12974
13092
|
i && await i.pinParticipant(j.composeParticipantId(e, A.USER, n), t, r);
|
|
12975
13093
|
}
|
|
12976
|
-
async function
|
|
13094
|
+
async function Fc(e) {
|
|
12977
13095
|
let t = $.current();
|
|
12978
13096
|
t && await t.updateMediaModifiers(e);
|
|
12979
13097
|
}
|
|
12980
|
-
async function
|
|
13098
|
+
async function Ic(e) {
|
|
12981
13099
|
let t = $.current();
|
|
12982
13100
|
t && await t.enableVideoSuspend(e);
|
|
12983
13101
|
}
|
|
12984
|
-
async function
|
|
13102
|
+
async function Lc(e) {
|
|
12985
13103
|
let t = $.current();
|
|
12986
13104
|
t && await t.enableVideoSuspendSuggest(e);
|
|
12987
13105
|
}
|
|
12988
|
-
async function
|
|
13106
|
+
async function Rc(e) {
|
|
12989
13107
|
let t = $.current();
|
|
12990
13108
|
t && await t.changeOptions(e);
|
|
12991
13109
|
}
|
|
12992
|
-
async function
|
|
12993
|
-
|
|
12994
|
-
|
|
13110
|
+
async function zc(e, t = null) {
|
|
13111
|
+
if (t) {
|
|
13112
|
+
let n = Nl(t, "chatMessage");
|
|
13113
|
+
return n ? n.conversation.chatMessage(e, j.decomposeParticipantId(n.participantId).compositeUserId) : void 0;
|
|
13114
|
+
}
|
|
13115
|
+
let n = $.current();
|
|
13116
|
+
n && await n.chatMessage(e, null);
|
|
12995
13117
|
}
|
|
12996
|
-
async function
|
|
13118
|
+
async function Bc(e, t = null) {
|
|
12997
13119
|
let n = $.current();
|
|
12998
13120
|
if (n) {
|
|
12999
13121
|
let r = t ? j.composeUserId(t) : null;
|
|
13000
13122
|
await n.chatMessage(e, r);
|
|
13001
13123
|
}
|
|
13002
13124
|
}
|
|
13003
|
-
async function
|
|
13125
|
+
async function Vc(e = 10) {
|
|
13004
13126
|
let t = $.current();
|
|
13005
13127
|
if (t) return t.chatHistory(e);
|
|
13006
13128
|
}
|
|
13007
|
-
async function
|
|
13008
|
-
|
|
13009
|
-
|
|
13129
|
+
async function Hc(e, t = null) {
|
|
13130
|
+
if (t) {
|
|
13131
|
+
let n = Nl(t, "customData");
|
|
13132
|
+
return n ? n.conversation.customData(e, n.participantId) : void 0;
|
|
13133
|
+
}
|
|
13134
|
+
let n = $.current();
|
|
13135
|
+
n && await n.customData(e, null);
|
|
13010
13136
|
}
|
|
13011
|
-
async function
|
|
13137
|
+
async function Uc(e, t = null, n = 0) {
|
|
13012
13138
|
let r = $.current();
|
|
13013
13139
|
if (r) {
|
|
13014
13140
|
let i = t ? j.composeParticipantId(t, A.USER, n) : null;
|
|
13015
13141
|
await r.customData(e, i);
|
|
13016
13142
|
}
|
|
13017
13143
|
}
|
|
13018
|
-
async function
|
|
13019
|
-
return (await
|
|
13144
|
+
async function Wc(e = "", t = !1, { onlyAdminCanShareMovie: n = !1, waitForAdmin: r = !1, closedConversation: i = !1 } = {}, a) {
|
|
13145
|
+
return (await Ws.createConversation(a ?? j.uuid(), e, t, {
|
|
13020
13146
|
onlyAdminCanShareMovie: n,
|
|
13021
13147
|
waitForAdmin: r,
|
|
13022
13148
|
closedConversation: i
|
|
13023
13149
|
})).join_link;
|
|
13024
13150
|
}
|
|
13025
|
-
async function
|
|
13151
|
+
async function Gc(e = "", t = !1, { onlyAdminCanShareMovie: n = !1, audioOnly: r = !1 } = {}, i) {
|
|
13026
13152
|
let a = i.map((e) => Q.fromId(e));
|
|
13027
|
-
return (await
|
|
13153
|
+
return (await Ws.createConversation(j.uuid(), e, t, {
|
|
13028
13154
|
onlyAdminCanShareMovie: n,
|
|
13029
13155
|
audienceMode: !0,
|
|
13030
13156
|
audioOnly: r
|
|
13031
13157
|
}, a)).join_link;
|
|
13032
13158
|
}
|
|
13033
|
-
async function
|
|
13159
|
+
async function Kc() {
|
|
13034
13160
|
let e = $.current();
|
|
13035
13161
|
return e ? e.createJoinLink() : Promise.reject();
|
|
13036
13162
|
}
|
|
13037
|
-
async function
|
|
13163
|
+
async function qc() {
|
|
13038
13164
|
let e = $.current();
|
|
13039
13165
|
return e ? e.removeJoinLink() : Promise.reject();
|
|
13040
13166
|
}
|
|
13041
|
-
async function
|
|
13042
|
-
return
|
|
13167
|
+
async function Jc(e, t) {
|
|
13168
|
+
return Ws.getAnonymTokenByLink(e, t);
|
|
13043
13169
|
}
|
|
13044
|
-
function
|
|
13170
|
+
function Yc(e) {
|
|
13045
13171
|
let t = $.current();
|
|
13046
13172
|
t && t.setVolume(e);
|
|
13047
13173
|
}
|
|
13048
|
-
function
|
|
13174
|
+
function Xc(e) {
|
|
13049
13175
|
M.forceRelayPolicy = e;
|
|
13050
13176
|
}
|
|
13051
|
-
async function
|
|
13177
|
+
async function Zc(e = !1, t = null, n = null, r = "DIRECT_LINK", i = null, a = null) {
|
|
13052
13178
|
let o = $.current();
|
|
13053
13179
|
return o ? o.startStream(e, t, n, r, i, a) : Promise.reject();
|
|
13054
13180
|
}
|
|
13055
|
-
async function
|
|
13181
|
+
async function Qc(e = null, t) {
|
|
13056
13182
|
let n = $.current();
|
|
13057
13183
|
return n ? n.stopStream(e, t) : Promise.reject();
|
|
13058
13184
|
}
|
|
13059
|
-
async function
|
|
13185
|
+
async function $c(e = null) {
|
|
13060
13186
|
let t = $.current();
|
|
13061
13187
|
return t ? t.publishStream(e) : Promise.reject();
|
|
13062
13188
|
}
|
|
13063
|
-
async function
|
|
13189
|
+
async function el() {
|
|
13064
13190
|
let e = $.current();
|
|
13065
13191
|
return e ? e.getStreamInfo() : Promise.reject();
|
|
13066
13192
|
}
|
|
13067
|
-
async function
|
|
13193
|
+
async function tl(e) {
|
|
13068
13194
|
let t = $.current();
|
|
13069
13195
|
return t ? t.addMovie(e) : Promise.reject();
|
|
13070
13196
|
}
|
|
13071
|
-
async function
|
|
13197
|
+
async function nl(e) {
|
|
13072
13198
|
let t = $.current();
|
|
13073
13199
|
return t ? t.updateMovie(e) : Promise.reject();
|
|
13074
13200
|
}
|
|
13075
|
-
async function
|
|
13201
|
+
async function rl(e) {
|
|
13076
13202
|
let t = $.current();
|
|
13077
13203
|
return t ? t.removeMovie(e) : Promise.reject();
|
|
13078
13204
|
}
|
|
13079
|
-
async function
|
|
13205
|
+
async function il(e, t) {
|
|
13080
13206
|
let n = $.current();
|
|
13081
13207
|
if (n) {
|
|
13082
|
-
let r = [];
|
|
13208
|
+
let r = [], i = [];
|
|
13083
13209
|
for (let t of e) {
|
|
13084
|
-
let e,
|
|
13210
|
+
let e, a;
|
|
13085
13211
|
t.addParticipantIds && (e = [], t.addParticipantIds.forEach((t) => {
|
|
13086
|
-
let r = n.
|
|
13087
|
-
r ? e.push(j.
|
|
13088
|
-
})), t.removeParticipantIds && (
|
|
13089
|
-
let t = n.
|
|
13090
|
-
t ?
|
|
13212
|
+
let r = n.getCachedParticipantIdByExternalId(t);
|
|
13213
|
+
r ? e.push(j.decomposeParticipantId(r).compositeUserId) : i.push(t.id);
|
|
13214
|
+
})), t.removeParticipantIds && (a = [], t.removeParticipantIds.forEach((e) => {
|
|
13215
|
+
let t = n.getCachedParticipantIdByExternalId(e);
|
|
13216
|
+
t ? a.push(j.decomposeParticipantId(t).compositeUserId) : i.push(e.id);
|
|
13091
13217
|
})), r.push({
|
|
13092
13218
|
id: t.id,
|
|
13093
13219
|
name: t.name,
|
|
13094
13220
|
participantCount: t.participantCount,
|
|
13095
13221
|
addParticipantIds: e,
|
|
13096
|
-
removeParticipantIds:
|
|
13222
|
+
removeParticipantIds: a,
|
|
13097
13223
|
countdownSec: t.countdownSec
|
|
13098
13224
|
});
|
|
13099
13225
|
}
|
|
13226
|
+
if (i.length) {
|
|
13227
|
+
jl(i, "updateRooms", n);
|
|
13228
|
+
return;
|
|
13229
|
+
}
|
|
13100
13230
|
return n.updateRooms(r, t);
|
|
13101
13231
|
}
|
|
13102
13232
|
return Promise.reject();
|
|
13103
13233
|
}
|
|
13104
|
-
async function
|
|
13234
|
+
async function al(e, t) {
|
|
13105
13235
|
let n = $.current();
|
|
13106
13236
|
return n ? n.activateRooms(e, t) : Promise.reject();
|
|
13107
13237
|
}
|
|
13108
|
-
async function
|
|
13238
|
+
async function ol(e = null, t = null) {
|
|
13109
13239
|
let n = $.current();
|
|
13110
13240
|
if (!n) return Promise.reject();
|
|
13111
13241
|
let r;
|
|
13112
|
-
if (t) {
|
|
13113
|
-
|
|
13114
|
-
|
|
13115
|
-
R.warn("switchRoom: externalId not found in cache", t);
|
|
13116
|
-
return;
|
|
13117
|
-
}
|
|
13118
|
-
let i = Q.getDeviceIdx(t);
|
|
13119
|
-
r = j.composeParticipantId(e, A.USER, i);
|
|
13242
|
+
if (t && (r = n.getCachedParticipantIdByExternalId(t) ?? void 0, !r)) {
|
|
13243
|
+
Al(t, "switchRoom", n);
|
|
13244
|
+
return;
|
|
13120
13245
|
}
|
|
13121
13246
|
return n.switchRoom(e, r);
|
|
13122
13247
|
}
|
|
13123
|
-
async function
|
|
13248
|
+
async function sl(e) {
|
|
13124
13249
|
let t = $.current();
|
|
13125
13250
|
return t ? t.removeRooms(e) : Promise.reject();
|
|
13126
13251
|
}
|
|
13127
|
-
function
|
|
13252
|
+
function cl(e) {
|
|
13128
13253
|
M.statisticsInterval = e;
|
|
13129
13254
|
let t = $.current();
|
|
13130
13255
|
if (t) return t.updateStatisticsInterval();
|
|
13131
13256
|
}
|
|
13132
|
-
function
|
|
13257
|
+
function ll(t) {
|
|
13133
13258
|
e.disableLog(!t), R.toggle(t);
|
|
13134
13259
|
}
|
|
13135
|
-
function
|
|
13260
|
+
function ul(e, ...t) {
|
|
13136
13261
|
M.debugLog && ($.debugMessage(e, "[external]", ...t) || R.send(e, "[external]", ...t));
|
|
13137
13262
|
}
|
|
13138
|
-
function
|
|
13263
|
+
function dl(e, t, ...n) {
|
|
13139
13264
|
M.debugLog && ($.debugMessageWithContext(e, t, "[external]", ...n) || R.send(e, "[external]", ...n));
|
|
13140
13265
|
}
|
|
13141
|
-
var
|
|
13266
|
+
var fl = {
|
|
13142
13267
|
list: Ne,
|
|
13143
13268
|
get: Pe,
|
|
13144
13269
|
getJson: Fe,
|
|
@@ -13146,7 +13271,7 @@ var ll = {
|
|
|
13146
13271
|
clear: Le,
|
|
13147
13272
|
stats: Re
|
|
13148
13273
|
};
|
|
13149
|
-
function
|
|
13274
|
+
function pl() {
|
|
13150
13275
|
let e = [
|
|
13151
13276
|
[`Calls SDK ${M.sdkVersion}`, M.toJSON()],
|
|
13152
13277
|
["UserAgent:", navigator.userAgent],
|
|
@@ -13163,124 +13288,139 @@ function ul() {
|
|
|
13163
13288
|
d: e
|
|
13164
13289
|
}));
|
|
13165
13290
|
}
|
|
13166
|
-
async function
|
|
13291
|
+
async function ml() {
|
|
13167
13292
|
let e = $.id(), t = $.debugSessionId();
|
|
13168
13293
|
if (!t || !e) throw R.error("[uploadDebugLogs]", "No conversation id found"), Error("No conversation id found");
|
|
13169
13294
|
let n = await Pe({ sessionId: t });
|
|
13170
13295
|
if (n.length === 0) throw R.error("[uploadDebugLogs]", "No logs found"), Error("No logs found");
|
|
13171
13296
|
let r = n[0].t, i = n[n.length - 1].t;
|
|
13172
13297
|
try {
|
|
13173
|
-
return
|
|
13298
|
+
return Ws?.uploadDebugLogs(e, r, i, JSON.stringify([...pl(), ...n]));
|
|
13174
13299
|
} catch (e) {
|
|
13175
13300
|
throw R.error("[uploadDebugLogs]", "Error while uploading logs", e), Error("Error while uploading logs", { cause: e });
|
|
13176
13301
|
}
|
|
13177
13302
|
}
|
|
13178
|
-
async function
|
|
13303
|
+
async function hl(e) {
|
|
13179
13304
|
let t = $.current();
|
|
13180
13305
|
if (t) return t.videoEffect(e);
|
|
13181
13306
|
}
|
|
13182
|
-
async function
|
|
13307
|
+
async function gl(e, t) {
|
|
13183
13308
|
let n = $.current();
|
|
13184
13309
|
if (n) return n.audioEffect(e.length > 0 ? e : null, t);
|
|
13185
13310
|
}
|
|
13186
|
-
async function
|
|
13311
|
+
async function _l(e) {
|
|
13187
13312
|
let t = $.current();
|
|
13188
13313
|
t && await t.setAudioStream(e);
|
|
13189
13314
|
}
|
|
13190
|
-
async function
|
|
13315
|
+
async function vl(e, t = null, n = null) {
|
|
13191
13316
|
let r = $.current();
|
|
13192
13317
|
if (!r) return;
|
|
13193
13318
|
let i = n ?? t?.id, a = null;
|
|
13194
|
-
if (t) {
|
|
13195
|
-
|
|
13196
|
-
|
|
13197
|
-
a = j.composeParticipantId(e, A.USER, Q.getDeviceIdx(t));
|
|
13319
|
+
if (t && (a = r.getCachedParticipantIdByExternalId(t), !a)) {
|
|
13320
|
+
Al(t, "setVmojiSvg", r);
|
|
13321
|
+
return;
|
|
13198
13322
|
}
|
|
13199
13323
|
r.setAnimojiSvg(e, a, i);
|
|
13200
13324
|
}
|
|
13201
|
-
function
|
|
13325
|
+
function yl(e) {
|
|
13202
13326
|
let t = $.current();
|
|
13203
13327
|
t && t.setAnimojiFill(e);
|
|
13204
13328
|
}
|
|
13205
|
-
async function
|
|
13206
|
-
return
|
|
13329
|
+
async function bl(e = null, t, n = !1) {
|
|
13330
|
+
return Ml().getWaitingHall(e, t, n);
|
|
13207
13331
|
}
|
|
13208
|
-
async function
|
|
13209
|
-
return
|
|
13332
|
+
async function xl() {
|
|
13333
|
+
return Ml().getAudienceModeHands();
|
|
13210
13334
|
}
|
|
13211
|
-
async function
|
|
13212
|
-
let n =
|
|
13335
|
+
async function Sl(e, t = !1) {
|
|
13336
|
+
let n = Ml(), r;
|
|
13213
13337
|
if (e) {
|
|
13214
|
-
let t = n.
|
|
13338
|
+
let t = n.getCachedParticipantIdByExternalId(e);
|
|
13215
13339
|
if (!t) {
|
|
13216
|
-
|
|
13340
|
+
Al(e, "promoteParticipant", n);
|
|
13217
13341
|
return;
|
|
13218
13342
|
}
|
|
13219
|
-
r = j.
|
|
13343
|
+
r = j.decomposeParticipantId(t).compositeUserId;
|
|
13220
13344
|
}
|
|
13221
13345
|
return n.promoteParticipant(r, t);
|
|
13222
13346
|
}
|
|
13223
|
-
async function
|
|
13224
|
-
return
|
|
13347
|
+
async function Cl(e = !1) {
|
|
13348
|
+
return Ml().requestPromotion(e);
|
|
13225
13349
|
}
|
|
13226
|
-
async function
|
|
13227
|
-
return
|
|
13350
|
+
async function wl(e = !1) {
|
|
13351
|
+
return Ml().acceptPromotion(e);
|
|
13228
13352
|
}
|
|
13229
|
-
async function
|
|
13230
|
-
return
|
|
13353
|
+
async function Tl(e) {
|
|
13354
|
+
return Ml().getParticipantListChunk(e);
|
|
13231
13355
|
}
|
|
13232
|
-
async function
|
|
13233
|
-
return
|
|
13356
|
+
async function El(e) {
|
|
13357
|
+
return Ml().getParticipants(e);
|
|
13234
13358
|
}
|
|
13235
|
-
async function
|
|
13236
|
-
return
|
|
13359
|
+
async function Dl(e) {
|
|
13360
|
+
return Ml().feedback(e);
|
|
13237
13361
|
}
|
|
13238
|
-
async function
|
|
13239
|
-
return
|
|
13362
|
+
async function Ol(e, t, n) {
|
|
13363
|
+
return Ml(n).enableFeatureForRoles(e, t);
|
|
13240
13364
|
}
|
|
13241
|
-
function
|
|
13365
|
+
function kl(e) {
|
|
13242
13366
|
return e ? z.get(e) ?? null : $.current() ?? z.getFirst();
|
|
13243
13367
|
}
|
|
13244
|
-
function
|
|
13245
|
-
|
|
13368
|
+
function Al(e, t, n) {
|
|
13369
|
+
L.onNonFatalError(/* @__PURE__ */ Error(`Participant ID mapping not found for external ID "${e.id}" while handling ${t}`), n.id);
|
|
13370
|
+
}
|
|
13371
|
+
function jl(e, t, n) {
|
|
13372
|
+
let r = Array.from(new Set(e));
|
|
13373
|
+
L.onNonFatalError(/* @__PURE__ */ Error(`Participant ID mapping not found for external IDs "${r.join("\", \"")}" while handling ${t}`), n.id);
|
|
13374
|
+
}
|
|
13375
|
+
function Ml(e) {
|
|
13376
|
+
let t = kl(e);
|
|
13246
13377
|
if (!t) throw Error("Conversation not found");
|
|
13247
13378
|
return t;
|
|
13248
13379
|
}
|
|
13249
|
-
|
|
13250
|
-
|
|
13380
|
+
function Nl(e, t) {
|
|
13381
|
+
let n = $.current();
|
|
13382
|
+
if (!n) return null;
|
|
13383
|
+
let r = n.getCachedParticipantIdByExternalId(e);
|
|
13384
|
+
return r ? {
|
|
13385
|
+
conversation: n,
|
|
13386
|
+
participantId: r
|
|
13387
|
+
} : (Al(e, t, n), null);
|
|
13251
13388
|
}
|
|
13252
|
-
async function
|
|
13389
|
+
async function Pl(e) {
|
|
13390
|
+
await Ws.removeHistoryRecords(e);
|
|
13391
|
+
}
|
|
13392
|
+
async function Fl(e) {
|
|
13253
13393
|
let t = $.current() ?? z.getFirst();
|
|
13254
13394
|
t && await t.startAsr(e);
|
|
13255
13395
|
}
|
|
13256
|
-
async function
|
|
13396
|
+
async function Il(e) {
|
|
13257
13397
|
let t = $.current() ?? z.getFirst();
|
|
13258
13398
|
t && await t.stopAsr(e);
|
|
13259
13399
|
}
|
|
13260
|
-
async function
|
|
13400
|
+
async function Ll(e) {
|
|
13261
13401
|
let t = $.current() ?? z.getFirst();
|
|
13262
13402
|
t && await t.requestAsr(e);
|
|
13263
13403
|
}
|
|
13264
|
-
async function
|
|
13404
|
+
async function Rl(e) {
|
|
13265
13405
|
let t = $.current();
|
|
13266
13406
|
return t ? t.startUrlSharing(e) : Promise.reject();
|
|
13267
13407
|
}
|
|
13268
|
-
async function
|
|
13408
|
+
async function zl() {
|
|
13269
13409
|
let e = $.current();
|
|
13270
13410
|
return e ? e.stopUrlSharing() : Promise.reject();
|
|
13271
13411
|
}
|
|
13272
|
-
async function
|
|
13412
|
+
async function Bl(e) {
|
|
13273
13413
|
await z.switchCall(e);
|
|
13274
13414
|
}
|
|
13275
|
-
function
|
|
13415
|
+
function Vl() {
|
|
13276
13416
|
return z.getActiveId();
|
|
13277
13417
|
}
|
|
13278
|
-
function
|
|
13418
|
+
function Hl() {
|
|
13279
13419
|
return $.getSyncedTime();
|
|
13280
13420
|
}
|
|
13281
|
-
function
|
|
13421
|
+
function Ul() {
|
|
13282
13422
|
return M.sdkVersion;
|
|
13283
13423
|
}
|
|
13284
13424
|
typeof window < "u" && (window.__CALLS_SDK = yn);
|
|
13285
13425
|
//#endregion
|
|
13286
|
-
export {
|
|
13426
|
+
export { Ls as Api, Us as ApiExternal, Hs as ArrayDequeue, y as AuthData, f as BaseLogger, Ua as CallDirection, Wa as CallType, Ga as ChatRoomEventType, Ka as ConversationFeature, qa as ConversationOption, Sn as DebugMessageType, io as ExternalIdType, jt as FacingMode, x as FatalError, O as HangupReason, D as HangupType, S as MediaOption, k as MediaTrackKind, V as MediaType, Xa as MuteState, Z as ParticipantState, Vs as ParticipantStateDataValue, N as ParticipantStatus, Bs as RecordRole, Za as RoomsEventType, Ha as Signaling, B as SignalingCommandType, vr as SignalingConnectionType, K as SignalingNotification, J as TransportTopology, eo as UserRole, A as UserType, Oo as VolumeDetector, sc as acceptCall, wl as acceptPromotion, al as activateRooms, tl as addMovie, pc as addParticipant, mc as addParticipantInternal, oc as authorize, Ks as browser, nc as callInternal, ec as callTo, vc as captureScreen, yc as captureVmoji, gl as changeAudioEffect, Rc as changeConversationOptions, _c as changeDevice, Tc as changeParticipantState, wc as changePriorities, hl as changeVideoEffect, Vc as chatHistory, zc as chatMessage, Bc as chatMessageInternal, Kc as createJoinLink, Hc as customData, Uc as customDataInternal, ll as debug, fl as debugLogs, ul as debugMessage, dl as debugMessageWithContext, cc as declineCall, Ol as enableFeatureForRoles, Ic as enableVideoSuspend, Lc as enableVideoSuspendSuggest, Dl as feedback, Xc as forceRelayPolicy, Vl as getActiveCallId, Jc as getAnonymTokenByLink, xl as getAudienceModeHands, ac as getInbounds, Tl as getParticipantListChunk, El as getParticipants, el as getStreamInfo, Hl as getSyncedTime, bl as getWaitingHall, kc as grantRoles, Ac as grantRolesInternal, fc as hangup, $s as init, lc as joinCall, dc as joinCallByLink, uc as joinCallInternal, jc as muteParticipant, Mc as muteParticipantInternal, Nc as pinParticipant, Pc as pinParticipantInternal, rc as processPush, ic as processPushInternal, Sl as promoteParticipant, $c as publishStream, Ec as putHandsDown, Pl as removeHistoryRecords, qc as removeJoinLink, rl as removeMovie, hc as removeParticipant, gc as removeParticipantInternal, sl as removeRooms, Ll as requestAsr, Oc as requestDisplayLayout, Cl as requestPromotion, Xs as setAudioEffects, _l as setAudioStream, Cc as setLocalResolution, Js as setLogger, Fc as setMediaModifiers, cl as setStatisticsInterval, Zs as setVad, Ys as setVideoEffects, bc as setVideoStream, Qs as setVmoji, yl as setVmojiFill, vl as setVmojiSvg, Yc as setVolume, Fl as startAsr, Gc as startAudienceConversation, Wc as startConversation, Zc as startStream, Rl as startUrlSharing, Il as stopAsr, Qc as stopStream, zl as stopUrlSharing, Bl as switchCall, ol as switchRoom, Sc as toggleLocalAudio, xc as toggleLocalVideo, Dc as updateDisplayLayout, nl as updateMovie, il as updateRooms, ml as uploadDebugLogs, qs as utils, Ul as version };
|