@vkontakte/calls-sdk 2.8.13-dev.7195a780.0 → 2.8.13-dev.8897f036.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 +967 -877
- package/classes/ExternalIdCache.d.ts +9 -13
- package/classes/conversation/Conversation.d.ts +11 -4
- package/classes/conversation/Conversation.testUtils.d.ts +2 -0
- package/classes/conversation/DisplayLayoutRequester.d.ts +3 -1
- package/classes/screenshare/StreamBuilder.d.ts +1 -0
- package/classes/transport/DirectTransport.d.ts +6 -0
- package/default/Api.d.ts +8 -10
- package/package.json +1 -1
- package/static/External.d.ts +10 -0
- package/static/Params.d.ts +7 -0
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.8897f036.0
|
|
3
|
+
* Thu, 17 Sep 2026 15:54:56 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
|
}
|
|
@@ -2155,7 +2155,7 @@ var yn = vn.getInstance(), M = class e {
|
|
|
2155
2155
|
return 1.1;
|
|
2156
2156
|
}
|
|
2157
2157
|
static get sdkVersion() {
|
|
2158
|
-
return "2.8.13-dev.
|
|
2158
|
+
return "2.8.13-dev.8897f036.0";
|
|
2159
2159
|
}
|
|
2160
2160
|
static get debug() {
|
|
2161
2161
|
return e._params.debug;
|
|
@@ -3065,6 +3065,10 @@ var xn;
|
|
|
3065
3065
|
P("onPeerRegistered", e, t);
|
|
3066
3066
|
}
|
|
3067
3067
|
e.onPeerRegistered = ot;
|
|
3068
|
+
function st(e, t) {
|
|
3069
|
+
P("onNonFatalError", e, t);
|
|
3070
|
+
}
|
|
3071
|
+
e.onNonFatalError = st;
|
|
3068
3072
|
})(xn || (xn = {}));
|
|
3069
3073
|
var L = xn, Sn = /* @__PURE__ */ function(e) {
|
|
3070
3074
|
return e.DEBUG = "DEBUG", e.LOG = "LOG", e.WARN = "WARN", e.ERROR = "ERROR", e;
|
|
@@ -3971,7 +3975,11 @@ var Mr = class {
|
|
|
3971
3975
|
let { rtt: t, loss: n, bitrate: r } = e || {};
|
|
3972
3976
|
this._remoteNetworkStat.rtt = t || 0, this._remoteNetworkStat.loss = n || 0, this._remoteNetworkStat.bitrate = r || 0;
|
|
3973
3977
|
}
|
|
3974
|
-
}, Gr = 30 * 1e3, Kr = class
|
|
3978
|
+
}, Gr = 30 * 1e3, Kr = class extends Error {
|
|
3979
|
+
constructor() {
|
|
3980
|
+
super("Ice restart failed"), this.name = "IceRestartTimeoutError";
|
|
3981
|
+
}
|
|
3982
|
+
}, qr = class e extends Nr {
|
|
3975
3983
|
constructor(e, t, n, r, i, a = R, o = null, s = null, c = null, l = null) {
|
|
3976
3984
|
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
3985
|
bad: {
|
|
@@ -3986,7 +3994,7 @@ var Mr = class {
|
|
|
3986
3994
|
worst: 320,
|
|
3987
3995
|
bad: 640,
|
|
3988
3996
|
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
|
|
3997
|
+
}), 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 ma(this, n, this._statAggregator, !0, this._debug), this._directStatReporter = new Wr(n, this._debug), 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
3998
|
try {
|
|
3991
3999
|
this._pc = this._createPeerConnection();
|
|
3992
4000
|
} catch (e) {
|
|
@@ -4113,10 +4121,10 @@ var Mr = class {
|
|
|
4113
4121
|
this._isOpen && this._finishClose(e);
|
|
4114
4122
|
}
|
|
4115
4123
|
_finishClose(e) {
|
|
4116
|
-
this._isOpen = !1, this._stopReconnection(), this._stopStatInterval(), this._stopSettingsInterval(), this._disposePeerConnection(), this._onNetworkStatus(1), this.unsubscribe(), e ? (this._debug.error("DirectTransport: Closed", e, { participantId: this._participantId }), this._setState(q.FAILED)) : (this._debug.debug("DirectTransport: Closed", { participantId: this._participantId }), this._setState(q.CLOSED)), this._triggerEvent(X.PEER_CONNECTION_CLOSED);
|
|
4124
|
+
this._isOpen = !1, this._stopReconnection(), this._stopStatInterval(), this._stopSettingsInterval(), this._disposePeerConnection(), this._onNetworkStatus(1), this.unsubscribe(), e ? (this._debug.error("DirectTransport: Closed", e, { participantId: this._participantId }), this._setState(q.FAILED, e)) : (this._debug.debug("DirectTransport: Closed", { participantId: this._participantId }), this._setState(q.CLOSED)), this._triggerEvent(X.PEER_CONNECTION_CLOSED);
|
|
4117
4125
|
}
|
|
4118
|
-
_setState(e) {
|
|
4119
|
-
this._state !== e && (this._debug.debug(`DirectTransport: State changed to ${e}`, { participantId: this._participantId }), this._state = e, this._triggerEvent(X.STATE_CHANGED, e));
|
|
4126
|
+
_setState(e, t) {
|
|
4127
|
+
this._state !== e && (this._debug.debug(`DirectTransport: State changed to ${e}`, { participantId: this._participantId }), this._state = e, this._triggerEvent(X.STATE_CHANGED, e, t));
|
|
4120
4128
|
}
|
|
4121
4129
|
_onSignalingNotification(e) {
|
|
4122
4130
|
switch (e.notification) {
|
|
@@ -4264,7 +4272,7 @@ var Mr = class {
|
|
|
4264
4272
|
}
|
|
4265
4273
|
_startIceRestart() {
|
|
4266
4274
|
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(() => {
|
|
4267
|
-
this._iceRestartTimeout = null, this._debug.error("Ice restart failed", { participantId: this._participantId }), this._logger?.log(C.ERROR, "iceRestart-direct"), this.
|
|
4275
|
+
this._iceRestartTimeout = null, this._debug.error("Ice restart failed", { participantId: this._participantId }), this._logger?.log(C.ERROR, "iceRestart-direct"), this.close(new Kr());
|
|
4268
4276
|
}, M.iceRestartWaitTime);
|
|
4269
4277
|
}
|
|
4270
4278
|
async _createOffer(t) {
|
|
@@ -4450,9 +4458,9 @@ var Mr = class {
|
|
|
4450
4458
|
}, n(r)) : this._debug.error(`[${t}] data channel open failed, state [${e}]`);
|
|
4451
4459
|
};
|
|
4452
4460
|
}
|
|
4453
|
-
},
|
|
4461
|
+
}, Jr = /* @__PURE__ */ function(e) {
|
|
4454
4462
|
return e.AUDIO_MIX = "audio-mix", e.PARTICIPANT_AGNOSTIC_TRACK_PREFIX = "pat", e.TRANSPARENT_AUDIO_TRACK_PREFIX = "ta", e;
|
|
4455
|
-
}({}),
|
|
4463
|
+
}({}), Yr = 16, Xr = class e {
|
|
4456
4464
|
constructor(e, t, n, r = R) {
|
|
4457
4465
|
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
4466
|
}
|
|
@@ -4466,7 +4474,7 @@ var Mr = class {
|
|
|
4466
4474
|
ssrc: a,
|
|
4467
4475
|
timestamp: o,
|
|
4468
4476
|
duration: s,
|
|
4469
|
-
data: e.slice(
|
|
4477
|
+
data: e.slice(Yr)
|
|
4470
4478
|
};
|
|
4471
4479
|
}
|
|
4472
4480
|
_onDataChannelMessage(t) {
|
|
@@ -4486,7 +4494,7 @@ var Mr = class {
|
|
|
4486
4494
|
destroy() {
|
|
4487
4495
|
this._datachannel.onmessage = null;
|
|
4488
4496
|
}
|
|
4489
|
-
},
|
|
4497
|
+
}, Zr, Qr = class {
|
|
4490
4498
|
constructor() {
|
|
4491
4499
|
h(this, "_value", 1);
|
|
4492
4500
|
}
|
|
@@ -4497,10 +4505,10 @@ var Mr = class {
|
|
|
4497
4505
|
this._value = e;
|
|
4498
4506
|
}
|
|
4499
4507
|
};
|
|
4500
|
-
|
|
4508
|
+
Zr = Qr, h(Qr, "_instance", null), h(Qr, "getInstance", () => (Zr._instance || (Zr._instance = new Zr()), Zr._instance));
|
|
4501
4509
|
//#endregion
|
|
4502
4510
|
//#region src/classes/ParticipantIdRegistry.ts
|
|
4503
|
-
var
|
|
4511
|
+
var $r = class {
|
|
4504
4512
|
constructor(e = R) {
|
|
4505
4513
|
h(this, "streamDescriptionByCompactId", /* @__PURE__ */ new Map()), h(this, "compactIdByStreamDescription", /* @__PURE__ */ new Map()), h(this, "_debug", void 0), this._debug = e;
|
|
4506
4514
|
}
|
|
@@ -4616,7 +4624,7 @@ var Qr = class {
|
|
|
4616
4624
|
this._debug.error("unexpected null sequenceNumber", e, r);
|
|
4617
4625
|
continue;
|
|
4618
4626
|
}
|
|
4619
|
-
let l =
|
|
4627
|
+
let l = Jr.PARTICIPANT_AGNOSTIC_TRACK_PREFIX + "-" + e, u = i ? i >>> 0 : null;
|
|
4620
4628
|
n.push({
|
|
4621
4629
|
participantStreamDescription: c,
|
|
4622
4630
|
streamId: l,
|
|
@@ -4634,7 +4642,7 @@ var Qr = class {
|
|
|
4634
4642
|
}
|
|
4635
4643
|
}, Y = /* @__PURE__ */ function(e) {
|
|
4636
4644
|
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
|
-
}({}),
|
|
4645
|
+
}({}), ei = class {
|
|
4638
4646
|
constructor(e = R, t = null) {
|
|
4639
4647
|
h(this, "_worker", null), h(this, "_debug", void 0), h(this, "_logger", void 0), this._debug = e, this._logger = t;
|
|
4640
4648
|
}
|
|
@@ -4699,7 +4707,7 @@ var Qr = class {
|
|
|
4699
4707
|
static isBrowserSupported() {
|
|
4700
4708
|
throw Error("Not implemented");
|
|
4701
4709
|
}
|
|
4702
|
-
},
|
|
4710
|
+
}, ti = class extends ei {
|
|
4703
4711
|
constructor(e = R, t = null) {
|
|
4704
4712
|
super(e, t);
|
|
4705
4713
|
}
|
|
@@ -4723,7 +4731,7 @@ var Qr = class {
|
|
|
4723
4731
|
static isBrowserSupported() {
|
|
4724
4732
|
return "WebAssembly" in window && "Worker" in window;
|
|
4725
4733
|
}
|
|
4726
|
-
},
|
|
4734
|
+
}, ni = class extends ei {
|
|
4727
4735
|
constructor(e = R, t = null) {
|
|
4728
4736
|
super(e, t);
|
|
4729
4737
|
}
|
|
@@ -4746,7 +4754,7 @@ var Qr = class {
|
|
|
4746
4754
|
static isBrowserSupported() {
|
|
4747
4755
|
return "VideoDecoder" in window && "Worker" in window && "VideoFrame" in window && !T.isBrokenVP9Decoder() && T.browserName() !== "Firefox";
|
|
4748
4756
|
}
|
|
4749
|
-
},
|
|
4757
|
+
}, ri = class {
|
|
4750
4758
|
constructor(e = null, t = 0) {
|
|
4751
4759
|
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
4760
|
}
|
|
@@ -4760,7 +4768,7 @@ var Qr = class {
|
|
|
4760
4768
|
destroy() {
|
|
4761
4769
|
window.clearInterval(this._interval), this._interval = 0;
|
|
4762
4770
|
}
|
|
4763
|
-
},
|
|
4771
|
+
}, ii = class {
|
|
4764
4772
|
constructor(e, t) {
|
|
4765
4773
|
h(this, "_participantId", void 0), h(this, "_statAggregator", void 0), h(this, "_firstFrameReceived", !1), this._participantId = e, this._statAggregator = t;
|
|
4766
4774
|
}
|
|
@@ -4775,14 +4783,14 @@ var Qr = class {
|
|
|
4775
4783
|
height: t
|
|
4776
4784
|
});
|
|
4777
4785
|
}
|
|
4778
|
-
},
|
|
4786
|
+
}, ai = 65536, oi = "MARK_SCREENSHARE_FREEZE_DURATION", si = class e {
|
|
4779
4787
|
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
|
|
4788
|
+
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 ii(e, r), this._debug = a;
|
|
4781
4789
|
}
|
|
4782
4790
|
appendChunk(t) {
|
|
4783
4791
|
let n = this._chunks.length;
|
|
4784
4792
|
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) %
|
|
4793
|
+
else if (!n || (this._chunks[n - 1].sequence + 1) % ai !== t.sequence) {
|
|
4786
4794
|
this._debug.warn("[FrameBuilder] Got incorrect chunk");
|
|
4787
4795
|
return;
|
|
4788
4796
|
}
|
|
@@ -4799,7 +4807,7 @@ var Qr = class {
|
|
|
4799
4807
|
}
|
|
4800
4808
|
}
|
|
4801
4809
|
destroy() {
|
|
4802
|
-
W.clearMark(
|
|
4810
|
+
W.clearMark(oi), W.clearMark(W.getMarkNameScreenshareFirstFrame(this._participantId)), this._chunks = [];
|
|
4803
4811
|
}
|
|
4804
4812
|
_processFrameData() {
|
|
4805
4813
|
let e = this._chunks;
|
|
@@ -4822,13 +4830,13 @@ var Qr = class {
|
|
|
4822
4830
|
}
|
|
4823
4831
|
_measureFreezeDuration(e) {
|
|
4824
4832
|
if (e) {
|
|
4825
|
-
W.setMark(
|
|
4833
|
+
W.setMark(oi);
|
|
4826
4834
|
return;
|
|
4827
4835
|
}
|
|
4828
|
-
let t = W.measureMark(
|
|
4836
|
+
let t = W.measureMark(oi);
|
|
4829
4837
|
t !== null && t > 1e3 && this._onStat({ freeze_duration: t });
|
|
4830
4838
|
}
|
|
4831
|
-
},
|
|
4839
|
+
}, ci = class {
|
|
4832
4840
|
constructor(e) {
|
|
4833
4841
|
h(this, "_onStream", void 0), this._onStream = e;
|
|
4834
4842
|
}
|
|
@@ -4841,7 +4849,7 @@ var Qr = class {
|
|
|
4841
4849
|
static isBrowserSupported() {
|
|
4842
4850
|
throw Error("Method `isBrowserSupported` is not implemented");
|
|
4843
4851
|
}
|
|
4844
|
-
},
|
|
4852
|
+
}, li = class extends ci {
|
|
4845
4853
|
constructor(e, t = R) {
|
|
4846
4854
|
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
4855
|
}
|
|
@@ -4901,7 +4909,7 @@ var Qr = class {
|
|
|
4901
4909
|
static isBrowserSupported() {
|
|
4902
4910
|
return ("CanvasCaptureMediaStream" in window || "CanvasCaptureMediaStreamTrack" in window) && !(T.browserName() === "Safari" && Number(T.browserVersion()) === 15);
|
|
4903
4911
|
}
|
|
4904
|
-
},
|
|
4912
|
+
}, ui = class extends ci {
|
|
4905
4913
|
constructor(e, t = R) {
|
|
4906
4914
|
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
4915
|
}
|
|
@@ -4912,34 +4920,38 @@ var Qr = class {
|
|
|
4912
4920
|
this._writer.releaseLock(), this._generator.writable.close().then(() => this._generator.stop()), this._debug.debug("TrackGeneratorRenderer destroyed");
|
|
4913
4921
|
}
|
|
4914
4922
|
static isBrowserSupported() {
|
|
4915
|
-
return "VideoFrame" in window && "MediaStreamTrackGenerator" in window &&
|
|
4923
|
+
return "VideoFrame" in window && "MediaStreamTrackGenerator" in window && ni.isBrowserSupported();
|
|
4916
4924
|
}
|
|
4917
|
-
},
|
|
4925
|
+
}, di = class extends si {
|
|
4918
4926
|
constructor(e, t, n, r, i, a = R, o = null) {
|
|
4919
|
-
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, "_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();
|
|
4927
|
+
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
4928
|
}
|
|
4921
4929
|
_processFrame(e) {
|
|
4922
4930
|
e.keyframe && (this._decoderQueue = []), this._decoderQueue.push(e), this._decodeQueue();
|
|
4923
4931
|
}
|
|
4924
4932
|
_initFpsMeter() {
|
|
4925
|
-
this._fpsMeter = new
|
|
4933
|
+
this._fpsMeter = new ri((e) => this._debug.log(`[StreamBuilder][${this._participantId}] fps: ${e}`), 2e4);
|
|
4926
4934
|
}
|
|
4927
4935
|
_initRenderer(e = !1) {
|
|
4928
|
-
e || !
|
|
4936
|
+
e || !ui.isBrowserSupported() ? this._renderer = new li(this._onStream, this._debug) : this._renderer = new ui(this._onStream, this._debug);
|
|
4929
4937
|
}
|
|
4930
4938
|
_initDecoder(e = !1) {
|
|
4931
|
-
e || !
|
|
4939
|
+
e || !ni.isBrowserSupported() ? this._decoder = new ti(this._debug, this._logger) : this._decoder = new ni(this._debug, this._logger), this._decoder.init(async (e) => {
|
|
4932
4940
|
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
4941
|
}, (e) => {
|
|
4934
|
-
this._decoderBusy = !1, this.
|
|
4942
|
+
if (this._decoderBusy = !1, this._decoder instanceof ni && typeof e == "string" && e.includes("EncodingError")) {
|
|
4943
|
+
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();
|
|
4944
|
+
return;
|
|
4945
|
+
}
|
|
4946
|
+
this._decodeQueue();
|
|
4935
4947
|
}, this._onKeyFrameRequested).then(() => {
|
|
4936
4948
|
this._decoderReady = !0, this._decodeQueue();
|
|
4937
4949
|
}).catch((e) => {
|
|
4938
|
-
this._debug.warn("StreamBuilder decoder init failed", e), this._decoder instanceof
|
|
4950
|
+
this._debug.warn("StreamBuilder decoder init failed", e), this._decoder instanceof ni && this._switchToLibVPXDecoder();
|
|
4939
4951
|
});
|
|
4940
4952
|
}
|
|
4941
4953
|
_switchToLibVPXDecoder() {
|
|
4942
|
-
this._debug.warn("StreamBuilder switch to LibVPX decoder"), this._fpsMeter && this._fpsMeter.destroy(), this._decoder && (this._decoderReady = !1, this._decoderBusy = !1, this._decoder.destroy()), this._renderer && this._renderer.destroy(), this._initFpsMeter(), this._initRenderer(!0), this._initDecoder(!0);
|
|
4954
|
+
this._debug.warn("StreamBuilder switch to LibVPX decoder"), this._decoderQueue = [], this._fpsMeter && this._fpsMeter.destroy(), this._decoder && (this._decoderReady = !1, this._decoderBusy = !1, this._decoder.destroy()), this._renderer && this._renderer.destroy(), this._initFpsMeter(), this._initRenderer(!0), this._initDecoder(!0), this._onKeyFrameRequested?.();
|
|
4943
4955
|
}
|
|
4944
4956
|
_decodeQueue() {
|
|
4945
4957
|
if (!this._decoderReady || this._decoderBusy) return;
|
|
@@ -4950,20 +4962,20 @@ var Qr = class {
|
|
|
4950
4962
|
super.destroy(), this._fpsMeter.destroy(), this._decoder.destroy(), this._renderer.destroy(), this._debug.debug(`StreamBuilder destroyed for participant ${this._participantId}`);
|
|
4951
4963
|
}
|
|
4952
4964
|
static isBrowserSupported() {
|
|
4953
|
-
return
|
|
4965
|
+
return li.isBrowserSupported() || ui.isBrowserSupported();
|
|
4954
4966
|
}
|
|
4955
|
-
},
|
|
4956
|
-
function
|
|
4967
|
+
}, fi = 1, pi = 1, mi = 2, hi = 0, gi = 1, _i = 2, vi = 4, yi = 8;
|
|
4968
|
+
function bi(e, t, n, r, i, a, o) {
|
|
4957
4969
|
let s = 0;
|
|
4958
|
-
t && (s |=
|
|
4970
|
+
t && (s |= gi), n && (s |= _i), r && (s |= vi), o || (s |= yi);
|
|
4959
4971
|
let c = /* @__PURE__ */ new ArrayBuffer(11), l = new DataView(c);
|
|
4960
|
-
if (l.setUint8(0,
|
|
4972
|
+
if (l.setUint8(0, fi), l.setUint16(1, i), l.setUint32(3, e), l.setUint8(7, +!!a), l.setUint16(8, hi), l.setUint8(10, s), !o) return c;
|
|
4961
4973
|
let u = new Uint8Array(c.byteLength + o.byteLength);
|
|
4962
4974
|
return u.set(new Uint8Array(c), 0), u.set(new Uint8Array(o), c.byteLength), u.buffer;
|
|
4963
4975
|
}
|
|
4964
|
-
function
|
|
4965
|
-
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 &
|
|
4966
|
-
if (n !==
|
|
4976
|
+
function xi(e) {
|
|
4977
|
+
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 & gi), l = !!(s & _i), u = !!(s & vi), d = !!(s & yi);
|
|
4978
|
+
if (n !== fi) throw Error(`Unexpected protocol version. Got ${n}, expected ${fi}`);
|
|
4967
4979
|
return {
|
|
4968
4980
|
timestamp: i,
|
|
4969
4981
|
start: c,
|
|
@@ -4976,26 +4988,26 @@ function bi(e) {
|
|
|
4976
4988
|
data: e.slice(11)
|
|
4977
4989
|
};
|
|
4978
4990
|
}
|
|
4979
|
-
function
|
|
4991
|
+
function Si(e) {
|
|
4980
4992
|
if (!e || !e.byteLength || e.byteLength !== 4) return !1;
|
|
4981
4993
|
let t = new DataView(e);
|
|
4982
|
-
return !(t.getUint8(0) !==
|
|
4994
|
+
return !(t.getUint8(0) !== fi || t.getUint8(1) !== pi || t.getUint16(2) !== hi);
|
|
4983
4995
|
}
|
|
4984
|
-
function
|
|
4996
|
+
function Ci(e) {
|
|
4985
4997
|
if (!e || !e.byteLength || e.byteLength !== 10) return null;
|
|
4986
4998
|
let t = new DataView(e);
|
|
4987
|
-
return t.getUint8(0) !==
|
|
4999
|
+
return t.getUint8(0) !== fi || t.getUint8(1) !== mi || t.getUint16(2) !== hi ? null : {
|
|
4988
5000
|
seq: t.getUint16(4),
|
|
4989
5001
|
ts2: t.getUint32(6)
|
|
4990
5002
|
};
|
|
4991
5003
|
}
|
|
4992
|
-
function
|
|
5004
|
+
function wi(e) {
|
|
4993
5005
|
let t = /* @__PURE__ */ new ArrayBuffer(4), n = new DataView(t);
|
|
4994
|
-
return n.setUint8(0,
|
|
5006
|
+
return n.setUint8(0, fi), n.setUint8(1, pi), n.setUint16(2, e), t;
|
|
4995
5007
|
}
|
|
4996
5008
|
//#endregion
|
|
4997
5009
|
//#region src/classes/screenshare/WebmBuilder.ts
|
|
4998
|
-
var
|
|
5010
|
+
var Ti = 2 ** 15 - 1, Ei = 1, Di = 5, Oi = 5, ki = class e {
|
|
4999
5011
|
constructor(e, t = R) {
|
|
5000
5012
|
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;
|
|
5001
5013
|
let n = () => {
|
|
@@ -5038,8 +5050,8 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
|
|
|
5038
5050
|
this._mediaSource?.readyState === "open" && this._sourceBuffer?.abort();
|
|
5039
5051
|
let e = this._sourceBuffer?.buffered, t = e?.length;
|
|
5040
5052
|
if (!t) return;
|
|
5041
|
-
let n = e.start(0), r = Math.max(0, e.end(t - 1) -
|
|
5042
|
-
r - n >
|
|
5053
|
+
let n = e.start(0), r = Math.max(0, e.end(t - 1) - Di);
|
|
5054
|
+
r - n > Oi && (this._clearBufferTill = r);
|
|
5043
5055
|
}
|
|
5044
5056
|
destroy() {
|
|
5045
5057
|
this._queue = [], this._mediaSource.readyState === "open" && (this._sourceBuffer?.abort(), this._mediaSource.endOfStream()), this._sourceBuffer = null, this._clearBufferTill = 0;
|
|
@@ -5053,7 +5065,7 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
|
|
|
5053
5065
|
get buffered() {
|
|
5054
5066
|
return this._sourceBuffer?.buffered;
|
|
5055
5067
|
}
|
|
5056
|
-
},
|
|
5068
|
+
}, Ai = class e extends si {
|
|
5057
5069
|
constructor(e, t, n, r, i = R) {
|
|
5058
5070
|
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}]`);
|
|
5059
5071
|
}
|
|
@@ -5077,8 +5089,8 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
|
|
|
5077
5089
|
u.element(u.ID.MuxingApp, u.string("vk-webm-builder")),
|
|
5078
5090
|
u.element(u.ID.WritingApp, u.string("vk-webm-builder"))
|
|
5079
5091
|
]), 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, [
|
|
5080
|
-
u.element(u.ID.TrackNumber, u.number(
|
|
5081
|
-
u.element(u.ID.TrackUID, u.number(
|
|
5092
|
+
u.element(u.ID.TrackNumber, u.number(Ei)),
|
|
5093
|
+
u.element(u.ID.TrackUID, u.number(Ei)),
|
|
5082
5094
|
u.element(u.ID.TrackType, u.number(1)),
|
|
5083
5095
|
u.element(u.ID.FlagLacing, u.number(0)),
|
|
5084
5096
|
u.element(u.ID.DefaultDuration, u.number(1e9)),
|
|
@@ -5091,7 +5103,7 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
|
|
|
5091
5103
|
return u.unknownSizeElement(u.ID.Cluster, [u.element(u.ID.Timecode, u.number(Math.round(e)))]);
|
|
5092
5104
|
}
|
|
5093
5105
|
_createVideo(e) {
|
|
5094
|
-
this._mediaBuffer = new
|
|
5106
|
+
this._mediaBuffer = new ki(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);
|
|
5095
5107
|
let t = () => {
|
|
5096
5108
|
if (this._video?.src) {
|
|
5097
5109
|
this._debug.warn(`[WebmBuilder] Video paused for participant [${this._participantId}], try to play again`);
|
|
@@ -5118,13 +5130,13 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
|
|
|
5118
5130
|
this._mediaBuffer?.append(a);
|
|
5119
5131
|
}
|
|
5120
5132
|
let i = Math.round(r - this._clusterStartTime);
|
|
5121
|
-
if (i >
|
|
5133
|
+
if (i > Ti && (this._clusterStartTime = r, i = 0), i === 0) {
|
|
5122
5134
|
this._debug.debug(`[WebmBuilder] Cluster header for participant [${this._participantId}]`);
|
|
5123
5135
|
let t = e._genClusterHeader(this._clusterStartTime);
|
|
5124
5136
|
this._mediaBuffer?.append(t);
|
|
5125
5137
|
}
|
|
5126
5138
|
let a = u.element(u.ID.SimpleBlock, [
|
|
5127
|
-
u.vintEncodedNumber(
|
|
5139
|
+
u.vintEncodedNumber(Ei),
|
|
5128
5140
|
u.bytes(e._intToU16BE(i)),
|
|
5129
5141
|
u.number(!!t.keyframe << 7),
|
|
5130
5142
|
u.bytes(t.frameData)
|
|
@@ -5137,12 +5149,12 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
|
|
|
5137
5149
|
static isBrowserSupported() {
|
|
5138
5150
|
return "captureStream" in window.HTMLVideoElement?.prototype && window.MediaSource?.isTypeSupported("video/webm; codecs=\"vp8\"") && window.MediaSource?.isTypeSupported("video/webm; codecs=\"vp9\"");
|
|
5139
5151
|
}
|
|
5140
|
-
},
|
|
5152
|
+
}, ji = class {
|
|
5141
5153
|
constructor(e, t, n, r, i, a = null, o = R, s = null) {
|
|
5142
5154
|
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);
|
|
5143
5155
|
}
|
|
5144
5156
|
_onDataChannelMessage(e) {
|
|
5145
|
-
let t =
|
|
5157
|
+
let t = xi(e), n = this._participantIdRegistry?.getStreamDescription(t.ssrc)?.participantId;
|
|
5146
5158
|
if (!n) {
|
|
5147
5159
|
this._debug.warn(`Participant id for ssrc ${t.ssrc} not found in registry`);
|
|
5148
5160
|
return;
|
|
@@ -5154,7 +5166,7 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
|
|
|
5154
5166
|
let r = this._streamBuilders[n];
|
|
5155
5167
|
if (!r) {
|
|
5156
5168
|
let e = (e) => this._onStream(n, e);
|
|
5157
|
-
r = M.screenShareWebmBuilder &&
|
|
5169
|
+
r = M.screenShareWebmBuilder && Ai.isBrowserSupported() ? new Ai(n, e, this._onStat, this._statAggregator, this._debug) : new di(n, e, this._onStat, this._statAggregator, () => {
|
|
5158
5170
|
this._requestKeyFrame(t.ssrc);
|
|
5159
5171
|
}, this._debug, this._logger), this._streamBuilders[n] = r;
|
|
5160
5172
|
}
|
|
@@ -5162,7 +5174,7 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
|
|
|
5162
5174
|
}
|
|
5163
5175
|
_requestKeyFrame(e) {
|
|
5164
5176
|
if (!(!this._datachannel || this._datachannel.readyState !== "open")) try {
|
|
5165
|
-
let t =
|
|
5177
|
+
let t = wi(e);
|
|
5166
5178
|
this._datachannel.send(t), this._debug.debug(`ScreenCaptureReceiver request for keyframe for ssrc ${e}`);
|
|
5167
5179
|
} catch (e) {
|
|
5168
5180
|
this._debug.warn("Failed to send keyframe request", e);
|
|
@@ -5175,7 +5187,7 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
|
|
|
5175
5187
|
destroy() {
|
|
5176
5188
|
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");
|
|
5177
5189
|
}
|
|
5178
|
-
},
|
|
5190
|
+
}, Mi = class {
|
|
5179
5191
|
constructor(e, t, n) {
|
|
5180
5192
|
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;
|
|
5181
5193
|
}
|
|
@@ -5194,7 +5206,7 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
|
|
|
5194
5206
|
get data() {
|
|
5195
5207
|
return this._data;
|
|
5196
5208
|
}
|
|
5197
|
-
},
|
|
5209
|
+
}, Ni = class {
|
|
5198
5210
|
constructor() {
|
|
5199
5211
|
h(this, "_head", null), h(this, "_tail", null), h(this, "_length", 0);
|
|
5200
5212
|
}
|
|
@@ -5202,7 +5214,7 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
|
|
|
5202
5214
|
return this._length;
|
|
5203
5215
|
}
|
|
5204
5216
|
push(...e) {
|
|
5205
|
-
for (let t of e) this._tail = new
|
|
5217
|
+
for (let t of e) this._tail = new Mi(t, this._tail, null), this._head || (this._head = this._tail), this._length++;
|
|
5206
5218
|
}
|
|
5207
5219
|
merge(e) {
|
|
5208
5220
|
this._tail && (this._tail.next = e._head), this._head || (this._head = e._head), this._tail = e._tail, this._length += e._length, e.clear();
|
|
@@ -5232,7 +5244,7 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
|
|
|
5232
5244
|
for (; t !== null;) e.push(t.data), t = t.next;
|
|
5233
5245
|
return e.length ? JSON.stringify(e, (e, t) => t instanceof Error ? String(t) : t) : "";
|
|
5234
5246
|
}
|
|
5235
|
-
},
|
|
5247
|
+
}, Pi = 1e3, Fi = class extends ei {
|
|
5236
5248
|
constructor(e, t, n, r, i = R, a = null) {
|
|
5237
5249
|
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);
|
|
5238
5250
|
}
|
|
@@ -5318,7 +5330,7 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
|
|
|
5318
5330
|
let t = this._drawFrameData(this._lastFrame);
|
|
5319
5331
|
this._encode(t, e);
|
|
5320
5332
|
} else this._onFrame(null);
|
|
5321
|
-
},
|
|
5333
|
+
}, Pi), this._getFrameBitmap().then((t) => {
|
|
5322
5334
|
window.clearTimeout(this._frameReadTimeout), this._lastFrame?.close(), this._lastFrame = t;
|
|
5323
5335
|
let n = this._drawFrameData(t);
|
|
5324
5336
|
this._encode(n, e);
|
|
@@ -5339,7 +5351,7 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
|
|
|
5339
5351
|
destroy() {
|
|
5340
5352
|
this._removeWorker(), this._removeStream(), this._removeDom(), this._debug.debug("LibVPxEncoder destroyed");
|
|
5341
5353
|
}
|
|
5342
|
-
},
|
|
5354
|
+
}, Ii = class extends ei {
|
|
5343
5355
|
constructor(e, t, n, r, i, a, o = R, s = null) {
|
|
5344
5356
|
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 });
|
|
5345
5357
|
}
|
|
@@ -5385,11 +5397,11 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
|
|
|
5385
5397
|
static isBrowserSupported() {
|
|
5386
5398
|
return "VideoEncoder" in window && "Worker" in window && "EncodedVideoChunk" in window && "MediaStreamTrackProcessor" in window;
|
|
5387
5399
|
}
|
|
5388
|
-
},
|
|
5400
|
+
}, Li = 2100, Ri = 600, zi = 1.2, Bi = .8, Vi = 2e3, Hi = 8e3, Ui = 8e3, Wi = 16e3, Gi = 4, Ki = 2e3, qi = /* @__PURE__ */ function(e) {
|
|
5389
5401
|
return e[e.NONE = 0] = "NONE", e[e.UP = 1] = "UP", e[e.DOWN = 2] = "DOWN", e;
|
|
5390
|
-
}(
|
|
5402
|
+
}(qi || {}), Ji = class {
|
|
5391
5403
|
constructor(e, t, n, r, i, a, o, s = R) {
|
|
5392
|
-
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 =
|
|
5404
|
+
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 = Li, i && (this._highDelayThreshold = Ri), this._trendDelayThreshold = Math.round(this._highDelayThreshold / 3), this._targetBitrate = this._maxBitrate, this._probing = !1;
|
|
5393
5405
|
let c = Date.now();
|
|
5394
5406
|
this._lastDown = 0, this._lastUp = c, this._lastProbing = c, this._lastCheckDelay = 0, this._lastFpsCalcMs = 0;
|
|
5395
5407
|
}
|
|
@@ -5399,27 +5411,27 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
|
|
|
5399
5411
|
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;
|
|
5400
5412
|
s || c ? i = 2 : Math.abs(a) < 40 && o < 10 && !c && (i = 1);
|
|
5401
5413
|
let l = Math.round(this._targetBitrate / 1e3), u = n;
|
|
5402
|
-
e % 20 == 0 && this._debug.debug(`#${e}: cc: delay=${t} short=${this._delayAvgShort} long=${this._delayAvgLong} delta=${a} percent=${o} -> ${
|
|
5414
|
+
e % 20 == 0 && this._debug.debug(`#${e}: cc: delay=${t} short=${this._delayAvgShort} long=${this._delayAvgLong} delta=${a} percent=${o} -> ${qi[i]} tr=${l} br=${n}`);
|
|
5403
5415
|
let d = r - this._lastDown;
|
|
5404
|
-
if (i === 2 && d >
|
|
5405
|
-
this._probing && (this._upPenalty = Math.min(++this._upPenalty,
|
|
5406
|
-
let n =
|
|
5407
|
-
if (n >= this._targetBitrate && (n = this._targetBitrate *
|
|
5408
|
-
let r = Math.round(n / 1e3), s = Math.round(this._upPenalty *
|
|
5409
|
-
this._debug.log(`#${e}: cc: delay=${t} short=${this._delayAvgShort} long=${this._delayAvgLong} delta=${a} percent=${o} -> ${
|
|
5416
|
+
if (i === 2 && d > Vi) {
|
|
5417
|
+
this._probing && (this._upPenalty = Math.min(++this._upPenalty, Gi), this._probing = !1);
|
|
5418
|
+
let n = Bi * u * 1e3;
|
|
5419
|
+
if (n >= this._targetBitrate && (n = this._targetBitrate * Bi), n = Math.max(n, this._minBitrate), n < this._targetBitrate) {
|
|
5420
|
+
let r = Math.round(n / 1e3), s = Math.round(this._upPenalty * Ui / 1e3);
|
|
5421
|
+
this._debug.log(`#${e}: cc: delay=${t} short=${this._delayAvgShort} long=${this._delayAvgLong} delta=${a} percent=${o} -> ${qi[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;
|
|
5410
5422
|
}
|
|
5411
5423
|
this._lastDown = r;
|
|
5412
5424
|
}
|
|
5413
|
-
let f = r - this._lastUp, p =
|
|
5425
|
+
let f = r - this._lastUp, p = Hi + this._upPenalty * Ui;
|
|
5414
5426
|
if (i === 1 && f > p && d > p) {
|
|
5415
|
-
let n = Math.min(this._targetBitrate *
|
|
5427
|
+
let n = Math.min(this._targetBitrate * zi, this._maxBitrate);
|
|
5416
5428
|
if (n > this._targetBitrate) {
|
|
5417
|
-
let s = Math.round(n / 1e3), c = Math.round(this._targetBitrate / 1e3), l = Math.round(this._upPenalty *
|
|
5418
|
-
this._debug.log(`#${e}: cc: delay=${t} short=${this._delayAvgShort} long=${this._delayAvgLong} delta=${a} percent=${o} -> ${
|
|
5429
|
+
let s = Math.round(n / 1e3), c = Math.round(this._targetBitrate / 1e3), l = Math.round(this._upPenalty * Ui / 1e3);
|
|
5430
|
+
this._debug.log(`#${e}: cc: delay=${t} short=${this._delayAvgShort} long=${this._delayAvgLong} delta=${a} percent=${o} -> ${qi[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;
|
|
5419
5431
|
}
|
|
5420
5432
|
}
|
|
5421
5433
|
let m = r - this._lastProbing;
|
|
5422
|
-
this._probing && m >
|
|
5434
|
+
this._probing && m > Wi && (this._probing = !1);
|
|
5423
5435
|
let ee = r - this._lastDown;
|
|
5424
5436
|
this._upPenalty > 0 && ee > 3 * p && (this._debug.log(`#${e}: cc: UP reset penalty: oldPenalty=${this._upPenalty}`), this._upPenalty = 0);
|
|
5425
5437
|
}
|
|
@@ -5430,7 +5442,7 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
|
|
|
5430
5442
|
}
|
|
5431
5443
|
_calcDelay(e, t) {
|
|
5432
5444
|
if (!(e <= 0)) {
|
|
5433
|
-
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 >
|
|
5445
|
+
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 > Ki) {
|
|
5434
5446
|
let e = t - this._lastCheckDelay;
|
|
5435
5447
|
this._largeDelayDuration += e;
|
|
5436
5448
|
}
|
|
@@ -5459,7 +5471,7 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
|
|
|
5459
5471
|
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}`);
|
|
5460
5472
|
}
|
|
5461
5473
|
}
|
|
5462
|
-
},
|
|
5474
|
+
}, Yi = class {
|
|
5463
5475
|
constructor(e) {
|
|
5464
5476
|
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);
|
|
5465
5477
|
}
|
|
@@ -5533,11 +5545,11 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
|
|
|
5533
5545
|
clear() {
|
|
5534
5546
|
this._buffer.fill(void 0), this._size = 0, this._head = 0, this._tail = 0;
|
|
5535
5547
|
}
|
|
5536
|
-
},
|
|
5548
|
+
}, Xi = 65536, Zi = 50, Qi = 400, $i = 1e6, ea = 3e5, ta = 3e4, na = 2e3, ra = 5, ia = 0, aa = class {
|
|
5537
5549
|
constructor(e, t, n, r, i = R, a = null) {
|
|
5538
|
-
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
|
|
5550
|
+
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 Yi(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 Ni()), 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;
|
|
5539
5551
|
let o = M.getScreenFrameRate(this._fastSharing), { minBitrate: s, maxBitrate: c } = this._calcMinMaxBitrate(this._width, this._height), l = this._onCongestionCallback.bind(this);
|
|
5540
|
-
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
|
|
5552
|
+
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 Ji(l, s, c, this._congestionControlEnabled, this._fastSharing, M.screenShareCongestionControlThreshold, o, this._debug);
|
|
5541
5553
|
let u = (e, t) => {
|
|
5542
5554
|
if (this._destroyed) return;
|
|
5543
5555
|
if (!e) {
|
|
@@ -5548,23 +5560,23 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
|
|
|
5548
5560
|
let n = this._sliceFrame(e);
|
|
5549
5561
|
this._queue.merge(n), this._handleQueue(), this._sendSharingStat();
|
|
5550
5562
|
};
|
|
5551
|
-
if (
|
|
5563
|
+
if (Ii.isBrowserSupported()) {
|
|
5552
5564
|
let t = this._fastSharing;
|
|
5553
|
-
this._encoder = new
|
|
5554
|
-
} else this._encoder = new
|
|
5565
|
+
this._encoder = new Ii(e, u, this._congestionControlEnabled, c, t, o, this._debug, this._logger);
|
|
5566
|
+
} else this._encoder = new Fi(e, u, this._congestionControlEnabled, c, this._debug, this._logger);
|
|
5555
5567
|
this._datachannel.onmessage = (e) => {
|
|
5556
|
-
|
|
5557
|
-
let t =
|
|
5568
|
+
Si(e.data) && (this._debug.debug(`[${this._datachannel.label}] Requested keyframe`), this._needKeyframe = !0);
|
|
5569
|
+
let t = Ci(e.data);
|
|
5558
5570
|
t !== null && this._checkCcFeedback(t);
|
|
5559
|
-
}, this._encoder.init().then(() => this._handleQueue()).catch((e) => this._debug.warn("ScreenCaptureSender init failed", e)), this._fpsMeter = new
|
|
5571
|
+
}, this._encoder.init().then(() => this._handleQueue()).catch((e) => this._debug.warn("ScreenCaptureSender init failed", e)), this._fpsMeter = new ri((e) => this._debug.log(`[ScreenCaptureSender] fps: ${e}`), 5e3);
|
|
5560
5572
|
}
|
|
5561
5573
|
_handleQueue() {
|
|
5562
5574
|
if (this._destroyed) return;
|
|
5563
5575
|
let e = this._queue.shift();
|
|
5564
5576
|
if (!e) {
|
|
5565
|
-
if ((this._lastSentFrameSeq - this._lastDeliveredFrameSeq +
|
|
5577
|
+
if ((this._lastSentFrameSeq - this._lastDeliveredFrameSeq + Xi) % Xi > ra && this._lastFrameDelay > this._maxFrameDelay) {
|
|
5566
5578
|
let e = Date.now();
|
|
5567
|
-
e - this._lastFramerateReduced >
|
|
5579
|
+
e - this._lastFramerateReduced > na && (this._lastFramerateReduced = e, this._debug.debug(`[ScreenCaptureSender] reduce framerate: delay=${this._lastFrameDelay} maxDelay=${this._maxFrameDelay}`));
|
|
5568
5580
|
} else this._requestFrame();
|
|
5569
5581
|
return;
|
|
5570
5582
|
}
|
|
@@ -5590,7 +5602,7 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
|
|
|
5590
5602
|
this._destroyed || (this._encoder.requestFrame(this._needKeyframe), this._needKeyframe = !1);
|
|
5591
5603
|
}
|
|
5592
5604
|
_sliceFrame(e) {
|
|
5593
|
-
let t = e.type === "key", n = e.data.byteLength, r = new
|
|
5605
|
+
let t = e.type === "key", n = e.data.byteLength, r = new Ni();
|
|
5594
5606
|
for (let i = 0; i < n; i += this.DATA_SIZE) {
|
|
5595
5607
|
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);
|
|
5596
5608
|
r.push({
|
|
@@ -5606,11 +5618,11 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
|
|
|
5606
5618
|
return r;
|
|
5607
5619
|
}
|
|
5608
5620
|
_wrapHeader(e, t, n, r, i) {
|
|
5609
|
-
let a =
|
|
5610
|
-
sequence:
|
|
5621
|
+
let a = bi(e, t, n, r, ia, this._encoder.isVP9(), i), o = {
|
|
5622
|
+
sequence: ia,
|
|
5611
5623
|
data: a
|
|
5612
5624
|
};
|
|
5613
|
-
return
|
|
5625
|
+
return ia = (ia + 1) % Xi, o;
|
|
5614
5626
|
}
|
|
5615
5627
|
_stopPacket() {
|
|
5616
5628
|
return this._wrapHeader(Date.now(), !1, !1, !1, null).data;
|
|
@@ -5627,7 +5639,7 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
|
|
|
5627
5639
|
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");
|
|
5628
5640
|
}
|
|
5629
5641
|
static isBrowserSupported() {
|
|
5630
|
-
return
|
|
5642
|
+
return Ii.isBrowserSupported() || Fi.isBrowserSupported();
|
|
5631
5643
|
}
|
|
5632
5644
|
_onCongestionCallback(e, t, n) {
|
|
5633
5645
|
this._encoder.setBitrate(e, t, n);
|
|
@@ -5640,8 +5652,8 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
|
|
|
5640
5652
|
(e === void 0 || e < 640) && (e = 640), (t === void 0 || t < 360) && (t = 360);
|
|
5641
5653
|
let n = e * t / 256;
|
|
5642
5654
|
return {
|
|
5643
|
-
minBitrate: Math.max(
|
|
5644
|
-
maxBitrate: Math.round(n *
|
|
5655
|
+
minBitrate: Math.max(ea, Math.min($i, Math.round(n * Zi))),
|
|
5656
|
+
maxBitrate: Math.round(n * Qi)
|
|
5645
5657
|
};
|
|
5646
5658
|
}
|
|
5647
5659
|
_checkCcFeedback(e) {
|
|
@@ -5655,14 +5667,14 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
|
|
|
5655
5667
|
}
|
|
5656
5668
|
_sendSharingStat() {
|
|
5657
5669
|
let e = Date.now();
|
|
5658
|
-
if (e - this._lastSharingStat >
|
|
5670
|
+
if (e - this._lastSharingStat > ta) {
|
|
5659
5671
|
let t = this._congestionControl.getStat();
|
|
5660
5672
|
t !== null && (this._debug.debug(`cc: send stats: ${JSON.stringify(t)}`), this._signaling.reportSharingStat(t).catch((e) => {
|
|
5661
5673
|
!(e instanceof wn) && !(e instanceof Tn) && this._debug.warn("Unable to send sharing stats", e);
|
|
5662
5674
|
})), this._lastSharingStat = e;
|
|
5663
5675
|
}
|
|
5664
5676
|
}
|
|
5665
|
-
},
|
|
5677
|
+
}, oa = class {
|
|
5666
5678
|
constructor(e, t, n, r = R, i = null) {
|
|
5667
5679
|
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;
|
|
5668
5680
|
}
|
|
@@ -5794,9 +5806,9 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
|
|
|
5794
5806
|
if (!(e instanceof Tn)) throw e;
|
|
5795
5807
|
}
|
|
5796
5808
|
}
|
|
5797
|
-
},
|
|
5809
|
+
}, sa = 90, ca = 4294967295, la = class e extends Nr {
|
|
5798
5810
|
constructor(e, t, n, r = R, i = null, a = null, o = null, s = null) {
|
|
5799
|
-
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
|
|
5811
|
+
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 oa(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");
|
|
5800
5812
|
}
|
|
5801
5813
|
updateStatisticsInterval() {
|
|
5802
5814
|
this._stopStatInterval();
|
|
@@ -5835,7 +5847,7 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
|
|
|
5835
5847
|
await this._simulcast.sync();
|
|
5836
5848
|
}
|
|
5837
5849
|
_createPerfStatsReporter() {
|
|
5838
|
-
this._perfStatReporter?.destroy(), this._perfStatReporter = new
|
|
5850
|
+
this._perfStatReporter?.destroy(), this._perfStatReporter = new ma(this, this._signaling, this._statAggregator, !1, this._debug);
|
|
5839
5851
|
}
|
|
5840
5852
|
_closeConnection() {
|
|
5841
5853
|
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._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);
|
|
@@ -5864,14 +5876,14 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
|
|
|
5864
5876
|
}
|
|
5865
5877
|
this._pc.ontrack = this._onAddTrack.bind(this, this._pc), this._pc.onconnectionstatechange = j.debounce((e) => {
|
|
5866
5878
|
this._pc && this._onConnectionStateChange(this._pc, e);
|
|
5867
|
-
}, 500), this._pc.onsignalingstatechange = this._onSignalingStateChange.bind(this, this._pc), this._participantIdRegistry = new
|
|
5879
|
+
}, 500), this._pc.onsignalingstatechange = this._onSignalingStateChange.bind(this, this._pc), this._participantIdRegistry = new $r(this._debug), this._signaling.setParticipantIdRegistry(this._participantIdRegistry), this._createDataChannel(this._pc, Sr.producerNotification, (e) => {
|
|
5868
5880
|
this._producerNotification = e, this._producerNotification.binaryType = "arraybuffer", this._signaling.setProducerNotificationDataChannel(e);
|
|
5869
5881
|
}), this._signaling.useCommandDataChannel(!0), this._createDataChannel(this._pc, Sr.producerCommand, (e) => {
|
|
5870
5882
|
this._producerCommand = e, this._signaling.setProducerCommandDataChannel(e);
|
|
5871
5883
|
}), this._createDataChannel(this._pc, Sr.producerScreenShare, (e) => {
|
|
5872
5884
|
this._producerScreen = e, this._producerScreen.binaryType = "arraybuffer", this._createCaptureReceiver();
|
|
5873
5885
|
}), M.asrDataChannel && this._createDataChannel(this._pc, Sr.asr, (e) => {
|
|
5874
|
-
this._asr = e, this._asr.binaryType = "arraybuffer", this._removeAsrTrack(), this._asrTrack = new
|
|
5886
|
+
this._asr = e, this._asr.binaryType = "arraybuffer", this._removeAsrTrack(), this._asrTrack = new Xr(e, this._participantIdRegistry, (e) => {
|
|
5875
5887
|
this._onAsrTranscription(e);
|
|
5876
5888
|
}, this._debug);
|
|
5877
5889
|
}), M.vmoji && this._createDataChannel(this._pc, Sr.animoji, (e) => {
|
|
@@ -5909,19 +5921,19 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
|
|
|
5909
5921
|
}
|
|
5910
5922
|
_updateSSRCMap(e) {
|
|
5911
5923
|
e && (this._ssrcMap = {}, this._ssrcMapUpdated = !0, ln(e.sdp).forEach((e) => {
|
|
5912
|
-
let t = `a=ssrc:([0-9]+) label:(audio|video)-((?:[ug]?[\\d]+)|(?:mix)|(?:${
|
|
5924
|
+
let t = `a=ssrc:([0-9]+) label:(audio|video)-((?:[ug]?[\\d]+)|(?:mix)|(?:${Jr.PARTICIPANT_AGNOSTIC_TRACK_PREFIX}-[0-9]+)|(?:${Jr.TRANSPARENT_AUDIO_TRACK_PREFIX}-[0-9]+))`, n = new RegExp(t).exec(e);
|
|
5913
5925
|
n && (this._ssrcMap[n[1]] = n[3]);
|
|
5914
5926
|
}));
|
|
5915
5927
|
}
|
|
5916
5928
|
_createCaptureSender(e) {
|
|
5917
5929
|
let t = this._mediaSource.mediaSettings;
|
|
5918
|
-
!e || !this._consumerScreen || !t.isScreenSharingEnabled || (this._captureSender && this._removeCaptureSender(), this._captureSender = new
|
|
5930
|
+
!e || !this._consumerScreen || !t.isScreenSharingEnabled || (this._captureSender && this._removeCaptureSender(), this._captureSender = new aa(e, this._consumerScreen, this._signaling, t.isFastScreenSharingEnabled, this._debug, this._logger));
|
|
5919
5931
|
}
|
|
5920
5932
|
_removeCaptureSender() {
|
|
5921
5933
|
this._captureSender?.destroy(), this._captureSender = null;
|
|
5922
5934
|
}
|
|
5923
5935
|
_createCaptureReceiver() {
|
|
5924
|
-
this._producerScreen && (this._captureReceiver && this._removeCaptureReceiver(), this._captureReceiver = new
|
|
5936
|
+
this._producerScreen && (this._captureReceiver && this._removeCaptureReceiver(), this._captureReceiver = new ji(this._producerScreen, this._participantIdRegistry, (e, t) => {
|
|
5925
5937
|
this._triggerEvent(X.REMOTE_STREAM_SECOND, e, t);
|
|
5926
5938
|
}, (e) => {
|
|
5927
5939
|
this._triggerEvent(X.REMOTE_STREAM_SECOND, e, null);
|
|
@@ -6031,7 +6043,7 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
|
|
|
6031
6043
|
_detectStaleTracks(e) {
|
|
6032
6044
|
let t = e.rtps.find((e) => e.type === "inbound-rtp" && e.kind === "audio" && this._ssrcMap[e.ssrc] === "mix");
|
|
6033
6045
|
if (!t) return;
|
|
6034
|
-
let n =
|
|
6046
|
+
let n = Jr.AUDIO_MIX, r = this._statBytes[n], i = !1;
|
|
6035
6047
|
if (r) {
|
|
6036
6048
|
let e = t.bytesReceived - r.bytesReceived;
|
|
6037
6049
|
e >= 0 && e <= 5 && (i = !0), r.stalled !== i && this._triggerEvent(X.AUDIO_MIX_STALL, i);
|
|
@@ -6043,7 +6055,7 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
|
|
|
6043
6055
|
}
|
|
6044
6056
|
_allocateConsumer() {
|
|
6045
6057
|
if (!this._signaling.ready) return;
|
|
6046
|
-
let e =
|
|
6058
|
+
let e = ba.get();
|
|
6047
6059
|
!M.videoTracksCount && !this._observer && this._debug.warn("Setting videoTracksCount to 0 is deprecated"), this._signaling.allocateConsumer(null, e).catch((e) => {
|
|
6048
6060
|
e instanceof wn || this._debug.warn("ServerTransport: Unable to allocate consumer", e);
|
|
6049
6061
|
});
|
|
@@ -6219,11 +6231,11 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
|
|
|
6219
6231
|
if (!r || !r.length) return this._debug.log(`Cannot get stream waiting time, ${e} receiver has no synchronization sources`), 0;
|
|
6220
6232
|
let i = r[0].rtpTimestamp;
|
|
6221
6233
|
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;
|
|
6222
|
-
let a = t - i &
|
|
6234
|
+
let a = t - i & ca, o = Math.ceil(a / sa);
|
|
6223
6235
|
return Math.min(100, Math.max(0, o));
|
|
6224
6236
|
}
|
|
6225
6237
|
async _monitorRtpShare() {
|
|
6226
|
-
let e =
|
|
6238
|
+
let e = Qr.getInstance().value;
|
|
6227
6239
|
if (!this._mediaSource.mediaSettings.isFastScreenSharingEnabled || !M.consumerFastScreenShare || e < .6) return;
|
|
6228
6240
|
let t = this._pc?.getSenders().find((e) => e.track?.kind === k.video && e.track?.contentHint === "motion");
|
|
6229
6241
|
t && (await t.getStats()).forEach((e) => {
|
|
@@ -6254,7 +6266,7 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
|
|
|
6254
6266
|
}
|
|
6255
6267
|
}, X = /* @__PURE__ */ function(e) {
|
|
6256
6268
|
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;
|
|
6257
|
-
}({}),
|
|
6269
|
+
}({}), ua = class extends b {
|
|
6258
6270
|
constructor(e, t, n, r, i = R, a = null, o = null, s = null, c = null) {
|
|
6259
6271
|
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", () => {
|
|
6260
6272
|
this._vadController?.setSendTrack(this._mediaSource.getSendAudioTrack());
|
|
@@ -6342,8 +6354,8 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
|
|
|
6342
6354
|
let n = e.filter((e) => this._states[e] === t ? !1 : (this._states[e] = t, !0));
|
|
6343
6355
|
n.length && this._triggerEvent("STATE_CHANGED", n, t);
|
|
6344
6356
|
}
|
|
6345
|
-
_setLocalState(e) {
|
|
6346
|
-
this._localState !== e && (this._localState = e, this._triggerEvent("LOCAL_STATE_CHANGED", e));
|
|
6357
|
+
_setLocalState(e, t) {
|
|
6358
|
+
this._localState !== e && (this._localState = e, this._triggerEvent("LOCAL_STATE_CHANGED", e, t));
|
|
6347
6359
|
}
|
|
6348
6360
|
_onSignalingNotification(e) {
|
|
6349
6361
|
if (e.notification === K.TOPOLOGY_CHANGED) return this._onTopologyChanged(e);
|
|
@@ -6375,11 +6387,11 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
|
|
|
6375
6387
|
}
|
|
6376
6388
|
}
|
|
6377
6389
|
_createDirectTransport(e, t = !1) {
|
|
6378
|
-
let n = new
|
|
6390
|
+
let n = new qr(e, t, this._signaling, this._mediaSource, this._serverSettings, this._debug, this._logger, this._statAggregator, this._codecStatsAggregator, this._getFirstMediaSentCallback());
|
|
6379
6391
|
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;
|
|
6380
6392
|
}
|
|
6381
6393
|
_createServerTransport() {
|
|
6382
|
-
let e = new
|
|
6394
|
+
let e = new la(this._signaling, this._mediaSource, this._serverSettings, this._debug, this._logger, this._statAggregator, this._codecStatsAggregator, this._getFirstMediaSentCallback());
|
|
6383
6395
|
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;
|
|
6384
6396
|
}
|
|
6385
6397
|
_releaseDirectTransport() {
|
|
@@ -6392,15 +6404,15 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
|
|
|
6392
6404
|
for (let e of this._stListeners) e.dispose();
|
|
6393
6405
|
this._stListeners = [];
|
|
6394
6406
|
}
|
|
6395
|
-
_onDirectTransportChanged(e) {
|
|
6396
|
-
let
|
|
6407
|
+
_onDirectTransportChanged(e, t) {
|
|
6408
|
+
let n = this._directTransport?.participantId;
|
|
6397
6409
|
if (e === q.CONNECTED && this._topology === J.DIRECT && this._releaseServerTransport(), (e === q.CLOSED || e === q.FAILED) && (this._releaseDirectTransport(), this._topology === J.DIRECT)) {
|
|
6398
|
-
let e = this._opened.indexOf(
|
|
6410
|
+
let e = this._opened.indexOf(n);
|
|
6399
6411
|
e >= 0 && this._opened.splice(e, 1);
|
|
6400
|
-
let
|
|
6401
|
-
|
|
6412
|
+
let t = this._allocated.indexOf(n);
|
|
6413
|
+
t >= 0 && this._allocated.splice(t, 1);
|
|
6402
6414
|
}
|
|
6403
|
-
this._topology === J.DIRECT &&
|
|
6415
|
+
this._topology === J.DIRECT && n && (this._setStates([n], e), this._setLocalState(e, t));
|
|
6404
6416
|
}
|
|
6405
6417
|
_onServerTransportChanged(e) {
|
|
6406
6418
|
let t = this._opened.slice();
|
|
@@ -6471,7 +6483,7 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
|
|
|
6471
6483
|
getStreamWaitingTimeMs(e, t) {
|
|
6472
6484
|
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);
|
|
6473
6485
|
}
|
|
6474
|
-
},
|
|
6486
|
+
}, da = "videochat-epi", fa = 5e3, pa = 500, ma = class extends b {
|
|
6475
6487
|
constructor(e, t, n = null, r = !1, i = R) {
|
|
6476
6488
|
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) => {
|
|
6477
6489
|
this._screenShareStats.push(e);
|
|
@@ -6484,7 +6496,7 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
|
|
|
6484
6496
|
}
|
|
6485
6497
|
static getEstimatedPerformanceIndex() {
|
|
6486
6498
|
try {
|
|
6487
|
-
let e = parseInt(localStorage.getItem(
|
|
6499
|
+
let e = parseInt(localStorage.getItem(da) || "", 10);
|
|
6488
6500
|
return isNaN(e) ? 0 : e;
|
|
6489
6501
|
} catch {
|
|
6490
6502
|
return 0;
|
|
@@ -6493,9 +6505,9 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
|
|
|
6493
6505
|
async _handleStats(e) {
|
|
6494
6506
|
if (!e.inbound || !e.inbound.rtps) return;
|
|
6495
6507
|
let t = Date.now();
|
|
6496
|
-
!this._directTopology && M.perfStatReportEnabled && this._previousPerfStatReportTimestamp +
|
|
6508
|
+
!this._directTopology && M.perfStatReportEnabled && this._previousPerfStatReportTimestamp + fa <= t && (await this.reportPerfStats(e), this._previousPerfStatReportTimestamp = t);
|
|
6497
6509
|
let n = e.outbound.transport.local?.protocol === "tcp";
|
|
6498
|
-
!this._directTopology && n && this._previousNetworkStatReportTimestamp +
|
|
6510
|
+
!this._directTopology && n && this._previousNetworkStatReportTimestamp + pa <= t && (await this.reportNetworkStats(e), this._previousNetworkStatReportTimestamp = t), M.callStatReportEnabled && this._previousCallStatReportTimestamp + M.statisticsInterval <= t && (this._reportCallStats(e), this._previousCallStatReportTimestamp = t);
|
|
6499
6511
|
}
|
|
6500
6512
|
async reportPerfStats(e) {
|
|
6501
6513
|
let t = e.inbound.rtps.reduce((e, t) => (t.kind === "video" && (e.framesDecoded += t.framesDecoded || 0, e.framesReceived += t.framesReceived || 0), e), {
|
|
@@ -6504,7 +6516,7 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
|
|
|
6504
6516
|
});
|
|
6505
6517
|
if (t.framesDecoded) try {
|
|
6506
6518
|
let e = await this._signaling.reportPerfStat(t);
|
|
6507
|
-
localStorage.setItem(
|
|
6519
|
+
localStorage.setItem(da, e.estimatedPerformanceIndex);
|
|
6508
6520
|
} catch {}
|
|
6509
6521
|
}
|
|
6510
6522
|
async reportNetworkStats(e) {
|
|
@@ -6544,11 +6556,11 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
|
|
|
6544
6556
|
rtt: Math.round(e.inbound.transport.currentRoundTripTime * 1e3),
|
|
6545
6557
|
ss_freeze_count: 0,
|
|
6546
6558
|
ss_total_freezes_duration: 0,
|
|
6547
|
-
local_address:
|
|
6559
|
+
local_address: ga(e.inbound.transport.local),
|
|
6548
6560
|
local_connection_type: e.inbound.transport.local?.type,
|
|
6549
6561
|
network_type: e.inbound.transport.local?.networkType,
|
|
6550
6562
|
transport: e.inbound.transport.local?.protocol,
|
|
6551
|
-
remote_address:
|
|
6563
|
+
remote_address: ga(e.inbound.transport.remote),
|
|
6552
6564
|
remote_connection_type: e.inbound.transport.remote?.type
|
|
6553
6565
|
};
|
|
6554
6566
|
this._previousCallStatReport || (this._previousCallStatReport = Object.assign({}, t));
|
|
@@ -6569,11 +6581,11 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
|
|
|
6569
6581
|
frames_dropped: Math.max(0, t.frames_dropped - this._previousCallStatReport.frames_dropped),
|
|
6570
6582
|
rtt: Math.max(0, t.rtt)
|
|
6571
6583
|
};
|
|
6572
|
-
if (M.simulcast && (i.is_simulcast = !0), navigator.hardwareConcurrency && (i.cpu_hardware_concurrency = navigator.hardwareConcurrency), n && !
|
|
6584
|
+
if (M.simulcast && (i.is_simulcast = !0), navigator.hardwareConcurrency && (i.cpu_hardware_concurrency = navigator.hardwareConcurrency), n && !_a(t.jitter_video) && (i.jitter_video = Math.round(t.jitter_video)), r && !_a(t.jitter_audio) && (i.jitter_audio = Math.round(t.jitter_audio)), n && !_a(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 && !_a(t.total_audio_samples_received)) {
|
|
6573
6585
|
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);
|
|
6574
|
-
i.inserted_audio_samples_for_deceleration =
|
|
6586
|
+
i.inserted_audio_samples_for_deceleration = va(n / e * 1e3), i.removed_audio_samples_for_acceleration = va(r / e * 1e3), i.concealed_audio_samples = va(a / e * 1e3), i.concealed_silent_audio_samples = va(o / e * 1e3), i.concealment_audio_avg_size = va(a / s), i.total_audio_energy = t.total_audio_energy;
|
|
6575
6587
|
}
|
|
6576
|
-
|
|
6588
|
+
ha(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), ha(t, "remote_address", "remote_connection_type") && (i.remote_address = t.remote_address, i.remote_connection_type = t.remote_connection_type);
|
|
6577
6589
|
let a = this._calculatePacketLoss(e.remoteInbound.rtps);
|
|
6578
6590
|
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;
|
|
6579
6591
|
}
|
|
@@ -6605,26 +6617,26 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
|
|
|
6605
6617
|
return r;
|
|
6606
6618
|
}
|
|
6607
6619
|
};
|
|
6608
|
-
function
|
|
6620
|
+
function ha(e, ...t) {
|
|
6609
6621
|
for (let n of t) if (!Object.hasOwn(e, n) || e[n] === void 0) return !1;
|
|
6610
6622
|
return !0;
|
|
6611
6623
|
}
|
|
6612
|
-
function
|
|
6624
|
+
function ga(e, t = !1) {
|
|
6613
6625
|
if (e?.address) return e.address + (t ? `:${e.port}` : "");
|
|
6614
6626
|
}
|
|
6615
|
-
function
|
|
6627
|
+
function _a(e) {
|
|
6616
6628
|
return e === void 0;
|
|
6617
6629
|
}
|
|
6618
|
-
function
|
|
6630
|
+
function va(e) {
|
|
6619
6631
|
return Number.isNaN(e) ? 0 : e;
|
|
6620
6632
|
}
|
|
6621
6633
|
//#endregion
|
|
6622
6634
|
//#region src/static/Capabilities.ts
|
|
6623
|
-
var
|
|
6635
|
+
var ya;
|
|
6624
6636
|
(function(e) {
|
|
6625
6637
|
function t() {
|
|
6626
6638
|
return {
|
|
6627
|
-
estimatedPerformanceIndex:
|
|
6639
|
+
estimatedPerformanceIndex: ma.getEstimatedPerformanceIndex(),
|
|
6628
6640
|
audioMix: !0,
|
|
6629
6641
|
consumerUpdate: !0,
|
|
6630
6642
|
producerNotificationDataChannelVersion: 8,
|
|
@@ -6650,8 +6662,8 @@ var va;
|
|
|
6650
6662
|
};
|
|
6651
6663
|
}
|
|
6652
6664
|
e.get = t;
|
|
6653
|
-
})(
|
|
6654
|
-
var
|
|
6665
|
+
})(ya || (ya = {}));
|
|
6666
|
+
var ba = ya, xa = {
|
|
6655
6667
|
producerScreenTrack: () => !0,
|
|
6656
6668
|
videoTracksCount: () => M.videoTracksCount > 0,
|
|
6657
6669
|
waitingHall: () => !0,
|
|
@@ -6671,28 +6683,28 @@ var ya = va, ba = {
|
|
|
6671
6683
|
p2pRelay: () => !1,
|
|
6672
6684
|
waitForAdmin: () => M.waitForAdminInGroupCalls,
|
|
6673
6685
|
hold: () => M.hold
|
|
6674
|
-
},
|
|
6686
|
+
}, Sa = class {
|
|
6675
6687
|
static getFlags() {
|
|
6676
|
-
let e = Object.values(
|
|
6688
|
+
let e = Object.values(xa), t = 0;
|
|
6677
6689
|
for (let n = 0; n < e.length; n++) e[n]() && (t |= 1 << n);
|
|
6678
6690
|
return t.toString(16).toUpperCase();
|
|
6679
6691
|
}
|
|
6680
6692
|
static parseCapabilities(e) {
|
|
6681
6693
|
let t = parseInt(e || "0", 16);
|
|
6682
|
-
return Object.keys(
|
|
6694
|
+
return Object.keys(xa).reduce((e, n, r) => (e[n] = !!(t & 1 << r), e), {});
|
|
6683
6695
|
}
|
|
6684
|
-
},
|
|
6696
|
+
}, Ca = 63n, wa = 16383n, Ta = 1073741823, Ea = 4611686018427387903n, Da = class {
|
|
6685
6697
|
encode(e) {
|
|
6686
6698
|
let t = typeof e == "number" ? BigInt(e) : e;
|
|
6687
|
-
if (t <=
|
|
6688
|
-
if (t <=
|
|
6689
|
-
if (t <= BigInt(
|
|
6699
|
+
if (t <= Ca) return new Uint8Array([Number(t)]);
|
|
6700
|
+
if (t <= wa) return new Uint8Array([64 | Number(t >> 8n), Number(t & 255n)]);
|
|
6701
|
+
if (t <= BigInt(Ta)) return new Uint8Array([
|
|
6690
6702
|
128 | Number(t >> 24n),
|
|
6691
6703
|
Number(t >> 16n & 255n),
|
|
6692
6704
|
Number(t >> 8n & 255n),
|
|
6693
6705
|
Number(t & 255n)
|
|
6694
6706
|
]);
|
|
6695
|
-
if (t <=
|
|
6707
|
+
if (t <= Ea) return new Uint8Array([
|
|
6696
6708
|
192 | Number(t >> 56n),
|
|
6697
6709
|
Number(t >> 48n & 255n),
|
|
6698
6710
|
Number(t >> 40n & 255n),
|
|
@@ -6704,7 +6716,7 @@ var ya = va, ba = {
|
|
|
6704
6716
|
]);
|
|
6705
6717
|
throw RangeError("Number is too large to encode using varint");
|
|
6706
6718
|
}
|
|
6707
|
-
},
|
|
6719
|
+
}, Oa = class {
|
|
6708
6720
|
decode(e) {
|
|
6709
6721
|
let t = this.getNumBytesForLengthInteger(e);
|
|
6710
6722
|
if (t < 0) throw Error("Invalid length prefix");
|
|
@@ -6730,9 +6742,9 @@ var ya = va, ba = {
|
|
|
6730
6742
|
let t = e[0] & 192;
|
|
6731
6743
|
return t === 0 ? 1 : t === 64 ? 2 : t === 128 ? 4 : t === 192 ? 8 : -1;
|
|
6732
6744
|
}
|
|
6733
|
-
},
|
|
6745
|
+
}, ka = class {
|
|
6734
6746
|
constructor(e) {
|
|
6735
|
-
h(this, "encoder", void 0), h(this, "compression", void 0), h(this, "lengthEncoder", void 0), this.encoder = new TextEncoder(), this.lengthEncoder = new
|
|
6747
|
+
h(this, "encoder", void 0), h(this, "compression", void 0), h(this, "lengthEncoder", void 0), this.encoder = new TextEncoder(), this.lengthEncoder = new Da(), this.compression = e ?? null;
|
|
6736
6748
|
}
|
|
6737
6749
|
encode(e) {
|
|
6738
6750
|
let t = this.encoder.encode(e);
|
|
@@ -6749,9 +6761,9 @@ var ya = va, ba = {
|
|
|
6749
6761
|
default: return e;
|
|
6750
6762
|
}
|
|
6751
6763
|
}
|
|
6752
|
-
},
|
|
6764
|
+
}, Aa = class {
|
|
6753
6765
|
constructor(e) {
|
|
6754
|
-
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
|
|
6766
|
+
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 Oa(), this.compression = e ?? null, this.buffer = new Uint8Array(), this.expectedLength = null, this.offset = 0;
|
|
6755
6767
|
}
|
|
6756
6768
|
decode(e) {
|
|
6757
6769
|
let t = [];
|
|
@@ -6781,12 +6793,12 @@ var ya = va, ba = {
|
|
|
6781
6793
|
default: return e;
|
|
6782
6794
|
}
|
|
6783
6795
|
}
|
|
6784
|
-
},
|
|
6796
|
+
}, ja = class {
|
|
6785
6797
|
static isBrowserSupported() {
|
|
6786
6798
|
return !(!("WebTransport" in window && typeof WebTransport == "function") || T.browserName() === "Safari");
|
|
6787
6799
|
}
|
|
6788
6800
|
constructor(e, t = {}, n = R) {
|
|
6789
|
-
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
|
|
6801
|
+
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 ka(this.compression), this.decoder = new Aa(this.compression), this.connect();
|
|
6790
6802
|
}
|
|
6791
6803
|
async send(e) {
|
|
6792
6804
|
if (this.readyState !== WebSocket.OPEN) {
|
|
@@ -6912,9 +6924,9 @@ var ya = va, ba = {
|
|
|
6912
6924
|
compression: this.compression
|
|
6913
6925
|
}, n;
|
|
6914
6926
|
}
|
|
6915
|
-
},
|
|
6927
|
+
}, Ma = /* @__PURE__ */ function(e) {
|
|
6916
6928
|
return e.EMPTY_ENDPOINT = "EMPTY_ENDPOINT", e.NETWORK_ERROR = "NETWORK_ERROR", e.ABORTED = "ABORTED", e;
|
|
6917
|
-
}({}),
|
|
6929
|
+
}({}), Na = class {
|
|
6918
6930
|
constructor(e = R, t) {
|
|
6919
6931
|
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;
|
|
6920
6932
|
}
|
|
@@ -6964,7 +6976,7 @@ var ya = va, ba = {
|
|
|
6964
6976
|
return;
|
|
6965
6977
|
}
|
|
6966
6978
|
let e = this._buildUrl(this.wtEndpoint, !0);
|
|
6967
|
-
this.currentType = yr.WEBTRANSPORT, this.socket = new
|
|
6979
|
+
this.currentType = yr.WEBTRANSPORT, this.socket = new ja(e, { congestionControl: "low-latency" }, this._debug), this._setSocketHandlers();
|
|
6968
6980
|
}
|
|
6969
6981
|
_connectWebSocket() {
|
|
6970
6982
|
if (!this.endpoint) {
|
|
@@ -6987,10 +6999,10 @@ var ya = va, ba = {
|
|
|
6987
6999
|
}
|
|
6988
7000
|
_buildUrl(e, t) {
|
|
6989
7001
|
let n = new URL(e), r = n.searchParams;
|
|
6990
|
-
return r.set("platform", M.platform), r.set("appVersion", String(M.appVersion)), r.set("version", String(M.protocolVersion)), r.set("device", M.device), r.set("capabilities",
|
|
7002
|
+
return r.set("platform", M.platform), r.set("appVersion", String(M.appVersion)), r.set("version", String(M.protocolVersion)), r.set("device", M.device), r.set("capabilities", Sa.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();
|
|
6991
7003
|
}
|
|
6992
7004
|
_canUseWebTransport() {
|
|
6993
|
-
return !this.forceWebSocket &&
|
|
7005
|
+
return !this.forceWebSocket && ja.isBrowserSupported() && this.wtEndpoint !== null && M.webtransport;
|
|
6994
7006
|
}
|
|
6995
7007
|
_onOpen() {
|
|
6996
7008
|
this._startDoctor(), this.handlers.onOpen();
|
|
@@ -7044,31 +7056,31 @@ var ya = va, ba = {
|
|
|
7044
7056
|
_stopDoctor() {
|
|
7045
7057
|
window.clearTimeout(this.doctorTimer), this.doctorTimer = 0;
|
|
7046
7058
|
}
|
|
7047
|
-
},
|
|
7059
|
+
}, Pa = "open", Fa = 10, Ia = {
|
|
7048
7060
|
CONVERSATION_ENDED: "conversation-ended",
|
|
7049
7061
|
OBSOLETE_CLIENT: "gen.obsoleteClient",
|
|
7050
7062
|
INVALID_TOKEN: "invalid-token",
|
|
7051
7063
|
PARTICIPANT_NOT_FOUND: "participant-not-found",
|
|
7052
7064
|
ILLEGAL_PARTICIPANT_STATE: "illegal-participant-state",
|
|
7053
7065
|
SERVICE_UNAVAILABLE: "service-unavailable"
|
|
7054
|
-
},
|
|
7055
|
-
[
|
|
7056
|
-
[
|
|
7057
|
-
[
|
|
7058
|
-
[
|
|
7059
|
-
[
|
|
7060
|
-
[
|
|
7066
|
+
}, La = {
|
|
7067
|
+
[Ia.CONVERSATION_ENDED]: "conversation-ended",
|
|
7068
|
+
[Ia.OBSOLETE_CLIENT]: "obsolete-client",
|
|
7069
|
+
[Ia.INVALID_TOKEN]: "invalid-token",
|
|
7070
|
+
[Ia.PARTICIPANT_NOT_FOUND]: "participant-not-found",
|
|
7071
|
+
[Ia.ILLEGAL_PARTICIPANT_STATE]: "illegal-participant-state",
|
|
7072
|
+
[Ia.SERVICE_UNAVAILABLE]: "service-unavailable"
|
|
7061
7073
|
};
|
|
7062
|
-
function
|
|
7074
|
+
function Ra(e, t) {
|
|
7063
7075
|
return e.errorMessage ?? e.message ?? e.error ?? t;
|
|
7064
7076
|
}
|
|
7065
|
-
var
|
|
7077
|
+
var za = new Set([
|
|
7066
7078
|
D.CALLER_IS_BLOCKED,
|
|
7067
7079
|
D.ENDED,
|
|
7068
7080
|
D.NOT_FOUND,
|
|
7069
7081
|
D.PARTICIPANT_LIMIT_REACHED,
|
|
7070
7082
|
D.SERVICE_UNAVAILABLE
|
|
7071
|
-
]),
|
|
7083
|
+
]), Ba = class e extends En {
|
|
7072
7084
|
static get WAIT_CONNECTION_DELAY() {
|
|
7073
7085
|
return M.waitConnectionDelay;
|
|
7074
7086
|
}
|
|
@@ -7079,7 +7091,7 @@ var Ra = new Set([
|
|
|
7079
7091
|
return !this.disposed && this.transport.readyState !== null;
|
|
7080
7092
|
}
|
|
7081
7093
|
constructor(e = R, t = null, n = null, r = null, i = null) {
|
|
7082
|
-
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
|
|
7094
|
+
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 Na(e, {
|
|
7083
7095
|
onConnecting: this._onTransportConnecting.bind(this),
|
|
7084
7096
|
onOpen: this._onOpen.bind(this),
|
|
7085
7097
|
onMessage: this._onMessage.bind(this),
|
|
@@ -7166,20 +7178,20 @@ var Ra = new Set([
|
|
|
7166
7178
|
return this._send(B.TRANSMIT_DATA, {
|
|
7167
7179
|
participantId: e,
|
|
7168
7180
|
data: r
|
|
7169
|
-
}, !0,
|
|
7181
|
+
}, !0, Fa);
|
|
7170
7182
|
}
|
|
7171
7183
|
async acceptCall(e) {
|
|
7172
7184
|
return this._send(B.ACCEPT_CALL, { mediaSettings: e });
|
|
7173
7185
|
}
|
|
7174
7186
|
async changeMediaSettings(e) {
|
|
7175
|
-
return this._send(B.CHANGE_MEDIA_SETTINGS, { mediaSettings: e }, !0,
|
|
7187
|
+
return this._send(B.CHANGE_MEDIA_SETTINGS, { mediaSettings: e }, !0, Fa);
|
|
7176
7188
|
}
|
|
7177
7189
|
async changeParticipantState(e, t) {
|
|
7178
7190
|
let n = { participantState: { state: e } };
|
|
7179
7191
|
return t && (n.participantId = t), this._sendRaw(B.CHANGE_PARTICIPANT_STATE, n);
|
|
7180
7192
|
}
|
|
7181
7193
|
async hold(e) {
|
|
7182
|
-
let t =
|
|
7194
|
+
let t = ba.get();
|
|
7183
7195
|
return this._send(B.HOLD, {
|
|
7184
7196
|
hold: e,
|
|
7185
7197
|
capabilities: e ? void 0 : t
|
|
@@ -7411,7 +7423,7 @@ var Ra = new Set([
|
|
|
7411
7423
|
if (this.disposed) throw new wn(e);
|
|
7412
7424
|
switch (t.route) {
|
|
7413
7425
|
case "producer":
|
|
7414
|
-
this.datachannelCommandsQueue.push(t), this.producerCommandDataChannel?.readyState ===
|
|
7426
|
+
this.datachannelCommandsQueue.push(t), this.producerCommandDataChannel?.readyState === Pa && this._handleCommandsQueue(this.datachannelCommandsQueue);
|
|
7415
7427
|
break;
|
|
7416
7428
|
case "websocket":
|
|
7417
7429
|
if (this.transport.readyState === null) {
|
|
@@ -7481,9 +7493,9 @@ var Ra = new Set([
|
|
|
7481
7493
|
}
|
|
7482
7494
|
_handleErrorMessage(e) {
|
|
7483
7495
|
this._logger?.log(C.SOCKET_ACTION, `error-${e.error}`);
|
|
7484
|
-
let t = this._getSocketType(), n = e.error ? this._createSignalingCallError(e.error, e.errorCode, t) : void 0, r =
|
|
7496
|
+
let t = this._getSocketType(), n = e.error ? this._createSignalingCallError(e.error, e.errorCode, t) : void 0, r = Ra(e, "Unknown signaling error");
|
|
7485
7497
|
switch (this._debug.debug(`[signaling] error message [${e.sequence}]`, e), e.sequence && this.responseHandlers[e.sequence] && this._handleCommandResponse(!1, e), e.error) {
|
|
7486
|
-
case
|
|
7498
|
+
case Ia.SERVICE_UNAVAILABLE:
|
|
7487
7499
|
let i = new O(D.SERVICE_UNAVAILABLE, {
|
|
7488
7500
|
callError: n,
|
|
7489
7501
|
message: r,
|
|
@@ -7495,7 +7507,7 @@ var Ra = new Set([
|
|
|
7495
7507
|
reason: D.SERVICE_UNAVAILABLE
|
|
7496
7508
|
});
|
|
7497
7509
|
break;
|
|
7498
|
-
case
|
|
7510
|
+
case Ia.CONVERSATION_ENDED:
|
|
7499
7511
|
this.conversationReject ? this.conversationReject(new O(e.reason || x.SIGNALING_FAILED, {
|
|
7500
7512
|
callError: n,
|
|
7501
7513
|
message: r,
|
|
@@ -7506,22 +7518,22 @@ var Ra = new Set([
|
|
|
7506
7518
|
reason: e.reason
|
|
7507
7519
|
});
|
|
7508
7520
|
break;
|
|
7509
|
-
case
|
|
7510
|
-
case
|
|
7521
|
+
case Ia.ILLEGAL_PARTICIPANT_STATE:
|
|
7522
|
+
case Ia.PARTICIPANT_NOT_FOUND:
|
|
7511
7523
|
this._throwError(new O(x.SIGNALING_FAILED, {
|
|
7512
7524
|
callError: n,
|
|
7513
7525
|
message: r,
|
|
7514
7526
|
remote: !0
|
|
7515
7527
|
}));
|
|
7516
7528
|
break;
|
|
7517
|
-
case
|
|
7529
|
+
case Ia.OBSOLETE_CLIENT:
|
|
7518
7530
|
this.conversationReject?.(new O(e.reason || D.OBSOLETE_CLIENT, {
|
|
7519
7531
|
callError: n,
|
|
7520
7532
|
message: r,
|
|
7521
7533
|
remote: !0
|
|
7522
7534
|
}));
|
|
7523
7535
|
break;
|
|
7524
|
-
case
|
|
7536
|
+
case Ia.INVALID_TOKEN:
|
|
7525
7537
|
default:
|
|
7526
7538
|
if (e.sequence || t === yr.WEBTRANSPORT) break;
|
|
7527
7539
|
if (this.connected) this._throwError(new O(e.reason || x.SIGNALING_FAILED, {
|
|
@@ -7623,13 +7635,13 @@ var Ra = new Set([
|
|
|
7623
7635
|
let r = this.responseHandlers[n.sequence];
|
|
7624
7636
|
window.clearTimeout(r.responseTimer);
|
|
7625
7637
|
let i = W.measureMark(r.statMarkName);
|
|
7626
|
-
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(
|
|
7638
|
+
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(Ra(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(Ra(n, `Response timeout [${r.name}]`)))) : r.responseTimer = window.setTimeout(() => this._handleCommandResponse(t, n), e.WAIT_RESPONSE_DELAY);
|
|
7627
7639
|
}
|
|
7628
7640
|
_handleCommandsQueue(e) {
|
|
7629
7641
|
for (; e.length > 0;) {
|
|
7630
7642
|
let t = e.shift();
|
|
7631
7643
|
if (this._debug.debug(`[signaling] command send [${t.sequence}]`, `'${t.name}'`, t.params), t.route === "producer") {
|
|
7632
|
-
if (this.producerCommandDataChannel?.readyState !==
|
|
7644
|
+
if (this.producerCommandDataChannel?.readyState !== Pa) {
|
|
7633
7645
|
t.reject(/* @__PURE__ */ Error(`Invalid data channel state: ${this.producerCommandDataChannel?.readyState}`));
|
|
7634
7646
|
return;
|
|
7635
7647
|
}
|
|
@@ -7714,7 +7726,7 @@ var Ra = new Set([
|
|
|
7714
7726
|
}
|
|
7715
7727
|
_onTransportFailed(e) {
|
|
7716
7728
|
switch (e.failure) {
|
|
7717
|
-
case
|
|
7729
|
+
case Ma.EMPTY_ENDPOINT:
|
|
7718
7730
|
this.conversationReject?.(new O(x.SIGNALING_FAILED, {
|
|
7719
7731
|
callError: {
|
|
7720
7732
|
scope: "internal",
|
|
@@ -7725,7 +7737,7 @@ var Ra = new Set([
|
|
|
7725
7737
|
remote: e.remote
|
|
7726
7738
|
}));
|
|
7727
7739
|
break;
|
|
7728
|
-
case
|
|
7740
|
+
case Ma.NETWORK_ERROR:
|
|
7729
7741
|
this._fail(new O(D.NETWORK_ERROR, { callError: {
|
|
7730
7742
|
scope: "network",
|
|
7731
7743
|
source: e.source,
|
|
@@ -7733,7 +7745,7 @@ var Ra = new Set([
|
|
|
7733
7745
|
description: "connection-failed"
|
|
7734
7746
|
} }));
|
|
7735
7747
|
break;
|
|
7736
|
-
case
|
|
7748
|
+
case Ma.ABORTED:
|
|
7737
7749
|
this._debug.debug("[signaling] aborted reconnect"), this._fail(new O(D.CANCELED));
|
|
7738
7750
|
break;
|
|
7739
7751
|
}
|
|
@@ -7745,7 +7757,7 @@ var Ra = new Set([
|
|
|
7745
7757
|
this._debug.warn("[signaling] socket is dead, trying to reconnect"), this._logTransportStat(br.FAILED_PINGS);
|
|
7746
7758
|
}
|
|
7747
7759
|
_attachNotificationCallError(e) {
|
|
7748
|
-
e.callError || !e.reason || e.reason === D.FAILED || e.reason === D.UNKNOWN_ERROR || !
|
|
7760
|
+
e.callError || !e.reason || e.reason === D.FAILED || e.reason === D.UNKNOWN_ERROR || !za.has(e.reason) && !e.errorCode || (e.callError = {
|
|
7749
7761
|
scope: "server",
|
|
7750
7762
|
source: this._getSocketType(),
|
|
7751
7763
|
code: e.errorCode || "protocol",
|
|
@@ -7753,7 +7765,7 @@ var Ra = new Set([
|
|
|
7753
7765
|
});
|
|
7754
7766
|
}
|
|
7755
7767
|
_createSignalingCallError(e, t, n) {
|
|
7756
|
-
let r =
|
|
7768
|
+
let r = La[e];
|
|
7757
7769
|
if (r) return {
|
|
7758
7770
|
scope: "server",
|
|
7759
7771
|
source: n,
|
|
@@ -7775,39 +7787,39 @@ var Ra = new Set([
|
|
|
7775
7787
|
...t
|
|
7776
7788
|
});
|
|
7777
7789
|
}
|
|
7778
|
-
},
|
|
7790
|
+
}, Va = /* @__PURE__ */ function(e) {
|
|
7779
7791
|
return e.INCOMING = "INCOMING", e.OUTGOING = "OUTGOING", e.JOINING = "JOINING", e;
|
|
7780
|
-
}(Ba || {}), Va = /* @__PURE__ */ function(e) {
|
|
7781
|
-
return e.USER = "USER", e.GROUP = "GROUP", e.CHAT = "CHAT", e;
|
|
7782
7792
|
}(Va || {}), Ha = /* @__PURE__ */ function(e) {
|
|
7783
|
-
return e.
|
|
7793
|
+
return e.USER = "USER", e.GROUP = "GROUP", e.CHAT = "CHAT", e;
|
|
7784
7794
|
}(Ha || {}), Ua = /* @__PURE__ */ function(e) {
|
|
7785
|
-
return e.
|
|
7795
|
+
return e.ATTENDEE = "ATTENDEE", e.HAND_UP = "HAND_UP", e;
|
|
7786
7796
|
}(Ua || {}), Wa = /* @__PURE__ */ function(e) {
|
|
7797
|
+
return e.ADD_PARTICIPANT = "ADD_PARTICIPANT", e.RECORD = "RECORD", e.MOVIE_SHARE = "MOVIE_SHARE", e;
|
|
7798
|
+
}(Wa || {}), Ga = /* @__PURE__ */ function(e) {
|
|
7787
7799
|
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;
|
|
7788
|
-
}(
|
|
7789
|
-
function
|
|
7800
|
+
}(Ga || {});
|
|
7801
|
+
function Ka(e, t) {
|
|
7790
7802
|
if (e.length !== t.length) return !1;
|
|
7791
7803
|
for (let n of e) if (!t.includes(n)) return !1;
|
|
7792
7804
|
return !0;
|
|
7793
7805
|
}
|
|
7794
|
-
function
|
|
7806
|
+
function qa(e, t) {
|
|
7795
7807
|
let n = new Set(e);
|
|
7796
7808
|
for (let [e, r] of Object.entries(t)) r ? n.add(e) : n.delete(e);
|
|
7797
7809
|
return Array.from(n);
|
|
7798
7810
|
}
|
|
7799
7811
|
//#endregion
|
|
7800
7812
|
//#region src/enums/MuteState.ts
|
|
7801
|
-
var
|
|
7813
|
+
var Ja = /* @__PURE__ */ function(e) {
|
|
7802
7814
|
return e.UNMUTE = "UNMUTE", e.MUTE = "MUTE", e.MUTE_PERMANENT = "MUTE_PERMANENT", e;
|
|
7803
|
-
}(
|
|
7815
|
+
}(Ja || {}), Z = /* @__PURE__ */ function(e) {
|
|
7804
7816
|
return e.CALLED = "CALLED", e.ACCEPTED = "ACCEPTED", e.REJECTED = "REJECTED", e.HUNGUP = "HUNGUP", e;
|
|
7805
|
-
}(Z || {}),
|
|
7817
|
+
}(Z || {}), Ya = /* @__PURE__ */ function(e) {
|
|
7806
7818
|
return e.UPDATE = "UPDATE", e.REMOVE = "REMOVE", e.ACTIVATE = "ACTIVATE", e.TIMEOUT = "TIMEOUT", e;
|
|
7807
|
-
}(
|
|
7819
|
+
}(Ya || {}), Xa = /* @__PURE__ */ function(e) {
|
|
7808
7820
|
return e.NO_AVAILABLE_TRACKS = "no-available-tracks", e.UNKNOWN_ERROR = "unknown-error", e;
|
|
7809
|
-
}(
|
|
7810
|
-
function
|
|
7821
|
+
}(Xa || {});
|
|
7822
|
+
function Za(e) {
|
|
7811
7823
|
switch (e) {
|
|
7812
7824
|
case 1: return "no-available-tracks";
|
|
7813
7825
|
default: return "unknown-error";
|
|
@@ -7815,17 +7827,17 @@ function Xa(e) {
|
|
|
7815
7827
|
}
|
|
7816
7828
|
//#endregion
|
|
7817
7829
|
//#region src/enums/UserRole.ts
|
|
7818
|
-
var
|
|
7830
|
+
var Qa = /* @__PURE__ */ function(e) {
|
|
7819
7831
|
return e.CREATOR = "CREATOR", e.ADMIN = "ADMIN", e;
|
|
7820
|
-
}(
|
|
7821
|
-
function
|
|
7832
|
+
}(Qa || {});
|
|
7833
|
+
function $a(e, t) {
|
|
7822
7834
|
if (e.length !== t.length) return !1;
|
|
7823
7835
|
for (let n of e) if (!t.includes(n)) return !1;
|
|
7824
7836
|
return !0;
|
|
7825
7837
|
}
|
|
7826
7838
|
//#endregion
|
|
7827
7839
|
//#region src/static/ParticipantConnectionStatusUtils.ts
|
|
7828
|
-
var
|
|
7840
|
+
var eo;
|
|
7829
7841
|
(function(e) {
|
|
7830
7842
|
function t(e) {
|
|
7831
7843
|
let t = e?.transport ?? e?.lastEffective ?? N.WAITING, n = {
|
|
@@ -7877,8 +7889,8 @@ var $a;
|
|
|
7877
7889
|
shouldNotify: !0
|
|
7878
7890
|
});
|
|
7879
7891
|
}
|
|
7880
|
-
})(
|
|
7881
|
-
var
|
|
7892
|
+
})(eo || (eo = {}));
|
|
7893
|
+
var to = eo, no = /* @__PURE__ */ function(e) {
|
|
7882
7894
|
return e.USER = "USER", e.ANONYM = "ANONYM", e.GROUP = "GROUP", e;
|
|
7883
7895
|
}({}), Q;
|
|
7884
7896
|
(function(e) {
|
|
@@ -7941,7 +7953,7 @@ var eo = $a, to = /* @__PURE__ */ function(e) {
|
|
|
7941
7953
|
})(Q || (Q = {}));
|
|
7942
7954
|
//#endregion
|
|
7943
7955
|
//#region src/types/WaitingHall.ts
|
|
7944
|
-
function
|
|
7956
|
+
function ro(e) {
|
|
7945
7957
|
try {
|
|
7946
7958
|
return btoa(JSON.stringify(e));
|
|
7947
7959
|
} catch (t) {
|
|
@@ -7949,7 +7961,7 @@ function no(e) {
|
|
|
7949
7961
|
}
|
|
7950
7962
|
return null;
|
|
7951
7963
|
}
|
|
7952
|
-
function
|
|
7964
|
+
function io(e) {
|
|
7953
7965
|
try {
|
|
7954
7966
|
return JSON.parse(atob(e));
|
|
7955
7967
|
} catch (t) {
|
|
@@ -7959,12 +7971,12 @@ function ro(e) {
|
|
|
7959
7971
|
}
|
|
7960
7972
|
//#endregion
|
|
7961
7973
|
//#region src/utils/Conversation.ts
|
|
7962
|
-
var
|
|
7963
|
-
function
|
|
7974
|
+
var ao = (e, t) => j.objectReduce(e, (e, n, r) => (n === t && e.push(r), e), []);
|
|
7975
|
+
function oo(e) {
|
|
7964
7976
|
if (e.conversation?.muteStates) return e.conversation.muteStates;
|
|
7965
7977
|
if (e.muteState && e.muteOptions) return e.muteOptions.reduce((t, n) => (t[n] = e.muteState, t), {});
|
|
7966
7978
|
}
|
|
7967
|
-
function
|
|
7979
|
+
function so(e, t) {
|
|
7968
7980
|
switch (e) {
|
|
7969
7981
|
case S.AUDIO: return !!t.isAudioEnabled;
|
|
7970
7982
|
case S.AUDIO_SHARING: return !!t.isAudioSharingEnabled;
|
|
@@ -7973,12 +7985,12 @@ function oo(e, t) {
|
|
|
7973
7985
|
default: return !1;
|
|
7974
7986
|
}
|
|
7975
7987
|
}
|
|
7976
|
-
function
|
|
7988
|
+
function co(e, t) {
|
|
7977
7989
|
return j.objectReduce(e, (e, n, r) => {
|
|
7978
7990
|
switch (n) {
|
|
7979
|
-
case
|
|
7980
|
-
case
|
|
7981
|
-
|
|
7991
|
+
case Ja.MUTE:
|
|
7992
|
+
case Ja.MUTE_PERMANENT:
|
|
7993
|
+
so(r, t) || (e[r] = n);
|
|
7982
7994
|
break;
|
|
7983
7995
|
default:
|
|
7984
7996
|
e[r] = n;
|
|
@@ -7987,19 +7999,19 @@ function so(e, t) {
|
|
|
7987
7999
|
return e;
|
|
7988
8000
|
}, {});
|
|
7989
8001
|
}
|
|
7990
|
-
function
|
|
8002
|
+
function lo(e) {
|
|
7991
8003
|
let { muteStates: t = {}, mediaSettings: n } = e;
|
|
7992
|
-
return
|
|
8004
|
+
return co(t, n);
|
|
7993
8005
|
}
|
|
7994
|
-
function
|
|
8006
|
+
function uo(e, t) {
|
|
7995
8007
|
let n = e.conversation.participants.find((t) => j.comparePeerId(t.peerId, e.peerId));
|
|
7996
8008
|
if (!n) return t;
|
|
7997
8009
|
let { mediaSettings: r } = n;
|
|
7998
|
-
return
|
|
8010
|
+
return co(t, r);
|
|
7999
8011
|
}
|
|
8000
8012
|
//#endregion
|
|
8001
8013
|
//#region src/utils/IceServers.ts
|
|
8002
|
-
function
|
|
8014
|
+
function fo(e) {
|
|
8003
8015
|
if (!e) return null;
|
|
8004
8016
|
let t = Array.from(new Set((e.urls ?? []).map((e) => e.trim()).filter((e) => e.length > 0)));
|
|
8005
8017
|
return t.length ? {
|
|
@@ -8007,8 +8019,8 @@ function uo(e) {
|
|
|
8007
8019
|
urls: t
|
|
8008
8020
|
} : null;
|
|
8009
8021
|
}
|
|
8010
|
-
function
|
|
8011
|
-
let n = [], r =
|
|
8022
|
+
function po(e, t) {
|
|
8023
|
+
let n = [], r = fo(e), i = fo(t);
|
|
8012
8024
|
if (r && n.push(r), i) {
|
|
8013
8025
|
let e = [...i.urls];
|
|
8014
8026
|
e.push(`${e[e.length - 1]}?transport=tcp`), n.push({
|
|
@@ -8020,7 +8032,7 @@ function fo(e, t) {
|
|
|
8020
8032
|
}
|
|
8021
8033
|
//#endregion
|
|
8022
8034
|
//#region src/utils/Lz4.ts
|
|
8023
|
-
function
|
|
8035
|
+
function mo(e, t) {
|
|
8024
8036
|
let n = new Uint8Array(t), r = 0, i = 0;
|
|
8025
8037
|
for (; r < e.length && i < t;) {
|
|
8026
8038
|
let a = e[r++], o = a >> 4, s = a & 15;
|
|
@@ -8047,7 +8059,7 @@ function po(e, t) {
|
|
|
8047
8059
|
}
|
|
8048
8060
|
//#endregion
|
|
8049
8061
|
//#region src/utils/SerializeLatest.ts
|
|
8050
|
-
function
|
|
8062
|
+
function ho(e) {
|
|
8051
8063
|
let t, n = !1, r, i = async () => {
|
|
8052
8064
|
let t = !1, i;
|
|
8053
8065
|
for (; n;) {
|
|
@@ -8068,7 +8080,7 @@ function mo(e) {
|
|
|
8068
8080
|
}
|
|
8069
8081
|
//#endregion
|
|
8070
8082
|
//#region src/classes/AudioFix.ts
|
|
8071
|
-
var
|
|
8083
|
+
var go = class {
|
|
8072
8084
|
constructor(e, t = R, n = null) {
|
|
8073
8085
|
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;
|
|
8074
8086
|
}
|
|
@@ -8106,7 +8118,7 @@ var ho = class {
|
|
|
8106
8118
|
this._debug.warn("[AudioFix] Failed to fix RV (no packets): video restart", e);
|
|
8107
8119
|
}));
|
|
8108
8120
|
}
|
|
8109
|
-
},
|
|
8121
|
+
}, _o = class {
|
|
8110
8122
|
constructor(e, t = !1, n = R, r = null) {
|
|
8111
8123
|
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();
|
|
8112
8124
|
}
|
|
@@ -8207,13 +8219,13 @@ var ho = class {
|
|
|
8207
8219
|
};
|
|
8208
8220
|
//#endregion
|
|
8209
8221
|
//#region src/classes/conversation/ConversationResponseValidator.ts
|
|
8210
|
-
function
|
|
8211
|
-
e ||
|
|
8222
|
+
function vo(e, t) {
|
|
8223
|
+
e || bo(t, "response-empty"), e.id || bo(t, "id-empty"), e.endpoint || bo(t, "endpoint-empty"), !yo(e.stun_server) && !yo(e.turn_server) && bo(t, "ice-servers-empty");
|
|
8212
8224
|
}
|
|
8213
|
-
function
|
|
8225
|
+
function yo(e) {
|
|
8214
8226
|
return Array.isArray(e?.urls) && e.urls.length > 0;
|
|
8215
8227
|
}
|
|
8216
|
-
function
|
|
8228
|
+
function bo(e, t) {
|
|
8217
8229
|
let n = e.replace(/[A-Z]/g, (e) => `-${e.toLowerCase()}`), r = e === "fastStart" || e === "fastJoin";
|
|
8218
8230
|
throw new O(r ? e === "fastStart" ? D.FAST_START_ERROR : D.FAST_JOIN_ERROR : D.UNKNOWN_ERROR, {
|
|
8219
8231
|
message: `Invalid ${e} response: ${t}`,
|
|
@@ -8232,7 +8244,7 @@ function yo(e, t) {
|
|
|
8232
8244
|
}
|
|
8233
8245
|
//#endregion
|
|
8234
8246
|
//#region src/classes/DebugInfo.ts
|
|
8235
|
-
var
|
|
8247
|
+
var xo = 90, So = 3, Co = class extends b {
|
|
8236
8248
|
constructor(e = R) {
|
|
8237
8249
|
super(), h(this, "_lastMemoryStat", {
|
|
8238
8250
|
percent: 0,
|
|
@@ -8248,11 +8260,11 @@ var bo = 90, xo = 3, So = class extends b {
|
|
|
8248
8260
|
let e = window?.performance?.memory;
|
|
8249
8261
|
if (!e || !e.usedJSHeapSize || !e.jsHeapSizeLimit) return;
|
|
8250
8262
|
let t = Number((100 * e.usedJSHeapSize / e.jsHeapSizeLimit).toFixed(2)), n = Number((e.usedJSHeapSize / 1024 / 1024).toFixed(1));
|
|
8251
|
-
t >
|
|
8263
|
+
t > xo ? this._debug.warn(`High memory usage: ${t}% (${n} MiB)`) : (!this._lastMemoryStat.percent || Math.abs(t - this._lastMemoryStat.percent) >= So) && (this._debug.debug(`Memory usage: ${t}% (${n} MiB)`), this._lastMemoryStat.percent = t, this._lastMemoryStat.bytes = e.usedJSHeapSize);
|
|
8252
8264
|
}
|
|
8253
|
-
},
|
|
8254
|
-
constructor({ api: e, debug: t, getParticipants: n, isMe: r, updateDisplayLayout: i }) {
|
|
8255
|
-
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;
|
|
8265
|
+
}, wo = class {
|
|
8266
|
+
constructor({ api: e, debug: t, getParticipants: n, isMe: r, updateDisplayLayout: i, onNonFatalError: a }) {
|
|
8267
|
+
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;
|
|
8256
8268
|
}
|
|
8257
8269
|
request(e) {
|
|
8258
8270
|
this._pendingRequests = e.slice(), this._lastRequests = e.slice();
|
|
@@ -8288,11 +8300,16 @@ var bo = 90, xo = 3, So = class extends b {
|
|
|
8288
8300
|
this._pendingRequests = null, this._pendingPromises = [];
|
|
8289
8301
|
let r = {};
|
|
8290
8302
|
try {
|
|
8291
|
-
|
|
8292
|
-
|
|
8303
|
+
let i = this._getRequestLayouts(t);
|
|
8304
|
+
if (!i) {
|
|
8305
|
+
n.forEach(({ resolve: e }) => e());
|
|
8306
|
+
return;
|
|
8307
|
+
}
|
|
8308
|
+
r = i;
|
|
8309
|
+
let a = this._forceNextFlush || Object.keys(this._uncertainLayouts).length > 0;
|
|
8293
8310
|
this._forceNextFlush = !1;
|
|
8294
|
-
let
|
|
8295
|
-
|
|
8311
|
+
let o = this._getDiff(r, a);
|
|
8312
|
+
o.length && await this._updateDisplayLayout(o), e === this._generation && (this._requestedLayouts = r, this._uncertainLayouts = {}), n.forEach(({ resolve: e }) => e());
|
|
8296
8313
|
} catch (t) {
|
|
8297
8314
|
e === this._generation ? (this._uncertainLayouts = {
|
|
8298
8315
|
...this._uncertainLayouts,
|
|
@@ -8303,30 +8320,30 @@ var bo = 90, xo = 3, So = class extends b {
|
|
|
8303
8320
|
}
|
|
8304
8321
|
}
|
|
8305
8322
|
_getRequestLayouts(e) {
|
|
8306
|
-
let t = {}, n = this._getParticipants();
|
|
8307
|
-
for (let
|
|
8308
|
-
let e = typeof
|
|
8309
|
-
if (!
|
|
8310
|
-
this._debug.log(`Unknown participant external ID ${typeof
|
|
8323
|
+
let t = {}, n = [], r = this._getParticipants();
|
|
8324
|
+
for (let i of e) {
|
|
8325
|
+
let e = typeof i.uid == "object" ? i.uid : Q.fromId(i.uid), a = this._api.getCachedParticipantIdByExternalId(e);
|
|
8326
|
+
if (!a) {
|
|
8327
|
+
this._debug.log(`Unknown participant external ID ${typeof i.uid == "object" ? Q.toString(i.uid) : i.uid}`), n.push(e.id);
|
|
8311
8328
|
continue;
|
|
8312
8329
|
}
|
|
8313
|
-
if (!
|
|
8314
|
-
let
|
|
8315
|
-
participantId:
|
|
8316
|
-
mediaType:
|
|
8317
|
-
streamName:
|
|
8330
|
+
if (!r[a] && !this._isMe(a)) continue;
|
|
8331
|
+
let o = Mn({
|
|
8332
|
+
participantId: a,
|
|
8333
|
+
mediaType: i.mediaType,
|
|
8334
|
+
streamName: i.streamName
|
|
8318
8335
|
});
|
|
8319
|
-
t[
|
|
8320
|
-
uid:
|
|
8321
|
-
mediaType:
|
|
8322
|
-
width:
|
|
8323
|
-
height:
|
|
8324
|
-
fit:
|
|
8325
|
-
...
|
|
8326
|
-
...
|
|
8336
|
+
t[o] = {
|
|
8337
|
+
uid: i.uid,
|
|
8338
|
+
mediaType: i.mediaType,
|
|
8339
|
+
width: i.width,
|
|
8340
|
+
height: i.height,
|
|
8341
|
+
fit: i.cover ? "cv" : "cn",
|
|
8342
|
+
...i.priority === void 0 ? {} : { priority: i.priority },
|
|
8343
|
+
...i.streamName === void 0 ? {} : { streamName: i.streamName }
|
|
8327
8344
|
};
|
|
8328
8345
|
}
|
|
8329
|
-
return t;
|
|
8346
|
+
return n.length ? (this._onNonFatalError(`Participant ID mapping not found for external IDs "${Array.from(new Set(n)).join("\", \"")}" while handling requestDisplayLayout`), null) : t;
|
|
8330
8347
|
}
|
|
8331
8348
|
_getDiff(e, t = !1) {
|
|
8332
8349
|
let n = [];
|
|
@@ -8360,12 +8377,12 @@ var bo = 90, xo = 3, So = class extends b {
|
|
|
8360
8377
|
let n = e, r = t;
|
|
8361
8378
|
return n.width !== r.width || n.height !== r.height || n.fit !== r.fit || n.priority !== r.priority;
|
|
8362
8379
|
}
|
|
8363
|
-
},
|
|
8380
|
+
}, To = 44100, Eo = class {
|
|
8364
8381
|
constructor(e, t) {
|
|
8365
8382
|
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]);
|
|
8366
8383
|
try {
|
|
8367
8384
|
let e = T.getAudioContext();
|
|
8368
|
-
this.
|
|
8385
|
+
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);
|
|
8369
8386
|
} catch {}
|
|
8370
8387
|
}
|
|
8371
8388
|
get track() {
|
|
@@ -8377,7 +8394,7 @@ var bo = 90, xo = 3, So = class extends b {
|
|
|
8377
8394
|
_getBins() {
|
|
8378
8395
|
if (!this._fftBins || !this._analyser) return new Uint8Array();
|
|
8379
8396
|
this._analyser.getByteFrequencyData(this._fftBins);
|
|
8380
|
-
let e =
|
|
8397
|
+
let e = To / this._fftBins.length, t = Math.ceil(M.voiceParams.minFreq / e), n = Math.floor(M.voiceParams.maxFreq / e);
|
|
8381
8398
|
return this._fftBins.subarray(t, n);
|
|
8382
8399
|
}
|
|
8383
8400
|
getLevel() {
|
|
@@ -8390,7 +8407,7 @@ var bo = 90, xo = 3, So = class extends b {
|
|
|
8390
8407
|
destroy() {
|
|
8391
8408
|
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);
|
|
8392
8409
|
}
|
|
8393
|
-
},
|
|
8410
|
+
}, Do = class extends b {
|
|
8394
8411
|
constructor(e) {
|
|
8395
8412
|
super(), h(this, "_detector", null), h(this, "_interval", null);
|
|
8396
8413
|
let t = () => {
|
|
@@ -8406,7 +8423,7 @@ var bo = 90, xo = 3, So = class extends b {
|
|
|
8406
8423
|
}), this.subscribe(e, qt.SOURCE_READY, n), n();
|
|
8407
8424
|
}
|
|
8408
8425
|
init(e) {
|
|
8409
|
-
this._stopDetector(), this._detector = new
|
|
8426
|
+
this._stopDetector(), this._detector = new Eo("local", e.clone());
|
|
8410
8427
|
}
|
|
8411
8428
|
_stopDetector() {
|
|
8412
8429
|
this._detector && (this._detector.track.stop(), this._detector.destroy(), this._detector = null);
|
|
@@ -8414,7 +8431,7 @@ var bo = 90, xo = 3, So = class extends b {
|
|
|
8414
8431
|
destroy() {
|
|
8415
8432
|
this.unsubscribe(), this._interval && (window.clearTimeout(this._interval), this._interval = null), this._stopDetector();
|
|
8416
8433
|
}
|
|
8417
|
-
},
|
|
8434
|
+
}, Oo = class {
|
|
8418
8435
|
constructor(e, t = R) {
|
|
8419
8436
|
h(this, "processor", void 0), h(this, "queue", []), h(this, "isProcessing", !1), h(this, "_debug", void 0), this.processor = e, this._debug = t;
|
|
8420
8437
|
}
|
|
@@ -8434,9 +8451,9 @@ var bo = 90, xo = 3, So = class extends b {
|
|
|
8434
8451
|
this.isProcessing = !1;
|
|
8435
8452
|
}
|
|
8436
8453
|
}
|
|
8437
|
-
},
|
|
8454
|
+
}, ko = /* @__PURE__ */ function(e) {
|
|
8438
8455
|
return e.VOLUMES_DETECTED = "VOLUMES_DETECTED", e;
|
|
8439
|
-
}({}),
|
|
8456
|
+
}({}), Ao = class extends b {
|
|
8440
8457
|
constructor(e) {
|
|
8441
8458
|
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));
|
|
8442
8459
|
}
|
|
@@ -8444,7 +8461,7 @@ var bo = 90, xo = 3, So = class extends b {
|
|
|
8444
8461
|
this._interval && (window.clearTimeout(this._interval), this._interval = null), this.unsubscribe(), this._destroyDetectors();
|
|
8445
8462
|
}
|
|
8446
8463
|
_onRemoteTrackAdded(e, t, n) {
|
|
8447
|
-
if (n.kind === k.audio && (this._detectors.get(e)?.destroy(), this._detectors.set(e, new
|
|
8464
|
+
if (n.kind === k.audio && (this._detectors.get(e)?.destroy(), this._detectors.set(e, new Eo(e, n)), !this._interval)) {
|
|
8448
8465
|
let e = () => {
|
|
8449
8466
|
this._collectVolumes(), this._interval = window.setTimeout(e, M.voiceParams.interval);
|
|
8450
8467
|
};
|
|
@@ -8476,14 +8493,14 @@ var bo = 90, xo = 3, So = class extends b {
|
|
|
8476
8493
|
}
|
|
8477
8494
|
_getAudioTrackLevelByParticipantId(e) {
|
|
8478
8495
|
if (this._isTransparentAudioMode()) return this._getTransparentAudioLevelByParticipantId(e);
|
|
8479
|
-
let t = this._detectors.get(
|
|
8496
|
+
let t = this._detectors.get(Jr.AUDIO_MIX);
|
|
8480
8497
|
return t ? t.getLevel() : null;
|
|
8481
8498
|
}
|
|
8482
8499
|
_getTransparentAudioLevelByParticipantId(e) {
|
|
8483
8500
|
if (!this._activeParticipants?.includes(e)) return null;
|
|
8484
8501
|
let t = null;
|
|
8485
8502
|
return this._detectors.forEach((e, n) => {
|
|
8486
|
-
if (!n.startsWith(`${
|
|
8503
|
+
if (!n.startsWith(`${Jr.TRANSPARENT_AUDIO_TRACK_PREFIX}-`)) return;
|
|
8487
8504
|
let r = e.getLevel();
|
|
8488
8505
|
(!t || r.real > t.real) && (t = r);
|
|
8489
8506
|
}), t;
|
|
@@ -8502,11 +8519,11 @@ var bo = 90, xo = 3, So = class extends b {
|
|
|
8502
8519
|
e.destroy();
|
|
8503
8520
|
}), this._detectors.clear();
|
|
8504
8521
|
}
|
|
8505
|
-
},
|
|
8522
|
+
}, jo = /* @__PURE__ */ function(e) {
|
|
8506
8523
|
return e.SPEAKER_CHANGED = "SPEAKER_CHANGED", e;
|
|
8507
|
-
}({}),
|
|
8524
|
+
}({}), Mo = class extends b {
|
|
8508
8525
|
constructor(e, t, n) {
|
|
8509
|
-
super(), h(this, "_speakerId", null), h(this, "_serverSideSpeakerDetection", !1), this._serverSideSpeakerDetection = n === J.SERVER, this.subscribe(e,
|
|
8526
|
+
super(), h(this, "_speakerId", null), h(this, "_serverSideSpeakerDetection", !1), this._serverSideSpeakerDetection = n === J.SERVER, this.subscribe(e, ko.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));
|
|
8510
8527
|
}
|
|
8511
8528
|
destroy() {
|
|
8512
8529
|
this.unsubscribe();
|
|
@@ -8528,9 +8545,9 @@ var bo = 90, xo = 3, So = class extends b {
|
|
|
8528
8545
|
_onTopologyChanged(e) {
|
|
8529
8546
|
this._serverSideSpeakerDetection = e === J.SERVER;
|
|
8530
8547
|
}
|
|
8531
|
-
},
|
|
8548
|
+
}, No = 15e3, Po = 15e3, Fo = class extends b {
|
|
8532
8549
|
constructor(e, t, n, r = R, i = null) {
|
|
8533
|
-
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,
|
|
8550
|
+
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, ko.VOLUMES_DETECTED, this._onVolumesDetected.bind(this));
|
|
8534
8551
|
}
|
|
8535
8552
|
destroy() {
|
|
8536
8553
|
this.unsubscribe(), this._connectionTimeout && window.clearTimeout(this._connectionTimeout), this._volumeTimeout && window.clearTimeout(this._volumeTimeout);
|
|
@@ -8542,10 +8559,10 @@ var bo = 90, xo = 3, So = class extends b {
|
|
|
8542
8559
|
this._connectionTimeout || !this._connectionTimeoutSuppressed || this._reportConnectionTimeout();
|
|
8543
8560
|
}
|
|
8544
8561
|
_getConnectionTimeout() {
|
|
8545
|
-
return this._transport.getTopology() === J.DIRECT ?
|
|
8562
|
+
return this._transport.getTopology() === J.DIRECT ? No : M.specListenerParams.connectionTimeout;
|
|
8546
8563
|
}
|
|
8547
8564
|
_getVolumeTimeout() {
|
|
8548
|
-
return this._transport.getTopology() === J.DIRECT ?
|
|
8565
|
+
return this._transport.getTopology() === J.DIRECT ? Po : M.specListenerParams.volumeTimeout;
|
|
8549
8566
|
}
|
|
8550
8567
|
_onTransportStateChanged(e, t) {
|
|
8551
8568
|
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`));
|
|
@@ -8578,7 +8595,7 @@ var bo = 90, xo = 3, So = class extends b {
|
|
|
8578
8595
|
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}`));
|
|
8579
8596
|
}), e.length && this._debug.warn("There is silent participant, send callSpecError"), this._volumeTimeout = 0;
|
|
8580
8597
|
}
|
|
8581
|
-
},
|
|
8598
|
+
}, Io = class extends f {
|
|
8582
8599
|
constructor(e, t, n, r = () => void 0) {
|
|
8583
8600
|
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();
|
|
8584
8601
|
}
|
|
@@ -8658,7 +8675,7 @@ var bo = 90, xo = 3, So = class extends b {
|
|
|
8658
8675
|
_now() {
|
|
8659
8676
|
return Date.now() - this._serverTimeDelta;
|
|
8660
8677
|
}
|
|
8661
|
-
},
|
|
8678
|
+
}, Lo = "invalid-error-metadata", Ro = 64, zo = new Set(Object.values(D)), Bo = new Set(Object.values(x)), Vo = {
|
|
8662
8679
|
[D.CANCELED]: {
|
|
8663
8680
|
type: "semantic",
|
|
8664
8681
|
reason: "canceled"
|
|
@@ -8779,7 +8796,7 @@ var bo = 90, xo = 3, So = class extends b {
|
|
|
8779
8796
|
type: "semantic",
|
|
8780
8797
|
reason: "obsolete_client"
|
|
8781
8798
|
}
|
|
8782
|
-
},
|
|
8799
|
+
}, Ho = {
|
|
8783
8800
|
[x.MIC_CAMERA_PERMISSION]: {
|
|
8784
8801
|
type: "direct-error",
|
|
8785
8802
|
error: {
|
|
@@ -8868,14 +8885,14 @@ var bo = 90, xo = 3, So = class extends b {
|
|
|
8868
8885
|
}
|
|
8869
8886
|
}
|
|
8870
8887
|
};
|
|
8871
|
-
function
|
|
8872
|
-
if (typeof e != "string" && typeof e != "number" || typeof e == "number" && !Number.isFinite(e)) return
|
|
8888
|
+
function Uo(e) {
|
|
8889
|
+
if (typeof e != "string" && typeof e != "number" || typeof e == "number" && !Number.isFinite(e)) return Lo;
|
|
8873
8890
|
let t = String(e).trim();
|
|
8874
|
-
if (!t) return
|
|
8891
|
+
if (!t) return Lo;
|
|
8875
8892
|
let n = t.toLowerCase().replace(/[\s_:]+/g, "-").replace(/-+/g, "-").replace(/^-|-$/g, "");
|
|
8876
|
-
return !n || !/^[a-z0-9.-]+$/.test(n) ?
|
|
8893
|
+
return !n || !/^[a-z0-9.-]+$/.test(n) ? Lo : n.length > Ro ? `${n.slice(0, Ro - 3)}...` : n;
|
|
8877
8894
|
}
|
|
8878
|
-
function
|
|
8895
|
+
function Wo(e) {
|
|
8879
8896
|
if (!e || typeof e != "object") return !1;
|
|
8880
8897
|
let t = e;
|
|
8881
8898
|
switch (t.scope) {
|
|
@@ -8887,49 +8904,49 @@ function Uo(e) {
|
|
|
8887
8904
|
default: return !1;
|
|
8888
8905
|
}
|
|
8889
8906
|
}
|
|
8890
|
-
function
|
|
8891
|
-
let t =
|
|
8907
|
+
function Go(e) {
|
|
8908
|
+
let t = Uo(e.description);
|
|
8892
8909
|
if (e.scope === "unknown") return `unknown:${t}`;
|
|
8893
|
-
let n =
|
|
8910
|
+
let n = Uo(e.code);
|
|
8894
8911
|
return e.scope === "internal" ? `internal:${n}:${t}` : `${e.scope}:${e.source}:${n}:${t}`;
|
|
8895
8912
|
}
|
|
8896
|
-
function
|
|
8913
|
+
function Ko(e, t) {
|
|
8897
8914
|
return t === null ? e.type === "direct-error" ? {
|
|
8898
8915
|
reason: "error",
|
|
8899
|
-
string_value:
|
|
8900
|
-
} : { reason: "failed" } :
|
|
8916
|
+
string_value: Go(e.error)
|
|
8917
|
+
} : { reason: "failed" } : Wo(t) ? {
|
|
8901
8918
|
reason: "error",
|
|
8902
|
-
string_value:
|
|
8919
|
+
string_value: Go(t)
|
|
8903
8920
|
} : { reason: "failed" };
|
|
8904
8921
|
}
|
|
8905
|
-
function
|
|
8922
|
+
function qo(e) {
|
|
8906
8923
|
if (e.hangup) {
|
|
8907
|
-
let t =
|
|
8924
|
+
let t = Vo[e.hangup];
|
|
8908
8925
|
return t ? t.type === "semantic" ? e.hangup === D.OBSOLETE_CLIENT && e.custom_error?.vchat_detailed_api_error.code ? {
|
|
8909
8926
|
reason: t.reason,
|
|
8910
8927
|
string_value: e.custom_error.vchat_detailed_api_error.code
|
|
8911
|
-
} : { reason: t.reason } :
|
|
8928
|
+
} : { reason: t.reason } : Ko(t, e.callError) : { reason: "failed" };
|
|
8912
8929
|
}
|
|
8913
8930
|
if (e.error) {
|
|
8914
|
-
let t =
|
|
8915
|
-
return t ?
|
|
8931
|
+
let t = Ho[e.error];
|
|
8932
|
+
return t ? Ko(t, e.callError) : { reason: "failed" };
|
|
8916
8933
|
}
|
|
8917
8934
|
return { reason: "failed" };
|
|
8918
8935
|
}
|
|
8919
|
-
function
|
|
8920
|
-
return e instanceof O ?
|
|
8936
|
+
function Jo(e) {
|
|
8937
|
+
return e instanceof O ? qo(e) : typeof e == "string" && (zo.has(e) || Bo.has(e)) ? qo(new O(e)) : { reason: "failed" };
|
|
8921
8938
|
}
|
|
8922
8939
|
//#endregion
|
|
8923
8940
|
//#region src/classes/stat/CallLifecycleStats.ts
|
|
8924
|
-
var
|
|
8941
|
+
var Yo = {
|
|
8925
8942
|
wallNow: () => Date.now(),
|
|
8926
8943
|
monotonicNow: () => performance.now()
|
|
8927
8944
|
};
|
|
8928
|
-
function
|
|
8945
|
+
function Xo(e) {
|
|
8929
8946
|
return e === "anonym_join" ? "join" : e;
|
|
8930
8947
|
}
|
|
8931
|
-
var
|
|
8932
|
-
constructor(e, t =
|
|
8948
|
+
var Zo = class {
|
|
8949
|
+
constructor(e, t = Yo) {
|
|
8933
8950
|
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;
|
|
8934
8951
|
}
|
|
8935
8952
|
get firstMediaSentReported() {
|
|
@@ -8941,7 +8958,7 @@ var Xo = class {
|
|
|
8941
8958
|
markInitializationStarted({ source: e, conversationId: t }) {
|
|
8942
8959
|
if (this._destroyed || this._callStartLabel !== null) return;
|
|
8943
8960
|
let n = this._clock.wallNow();
|
|
8944
|
-
this._callStartLabel =
|
|
8961
|
+
this._callStartLabel = Xo(e), this._lifecycleStartedAtMonotonic = this._clock.monotonicNow(), t && (this._conversationId = t), this._record({
|
|
8945
8962
|
name: H.CALL_INIT,
|
|
8946
8963
|
source: e
|
|
8947
8964
|
}, n);
|
|
@@ -8969,7 +8986,7 @@ var Xo = class {
|
|
|
8969
8986
|
!this._canRecord() || this._firstMediaSent || (this._firstMediaSent = !0, this._record({ name: H.FIRST_MEDIA_SENT }));
|
|
8970
8987
|
}
|
|
8971
8988
|
markFinished(e) {
|
|
8972
|
-
this._finish(
|
|
8989
|
+
this._finish(Jo(e));
|
|
8973
8990
|
}
|
|
8974
8991
|
markTerminated() {
|
|
8975
8992
|
this._finish({ reason: "terminated" });
|
|
@@ -9020,7 +9037,7 @@ var Xo = class {
|
|
|
9020
9037
|
...n && { immediately: !0 }
|
|
9021
9038
|
});
|
|
9022
9039
|
}
|
|
9023
|
-
},
|
|
9040
|
+
}, Qo = class {
|
|
9024
9041
|
constructor(e, t) {
|
|
9025
9042
|
h(this, "_logger", void 0), h(this, "_codecUsages", /* @__PURE__ */ new Map()), h(this, "getCurrentTransportTopology", void 0), this._logger = e, this.getCurrentTransportTopology = t;
|
|
9026
9043
|
}
|
|
@@ -9083,7 +9100,7 @@ var Xo = class {
|
|
|
9083
9100
|
this.report(e);
|
|
9084
9101
|
}), this._codecUsages.clear();
|
|
9085
9102
|
}
|
|
9086
|
-
},
|
|
9103
|
+
}, $o = class {
|
|
9087
9104
|
constructor(e) {
|
|
9088
9105
|
h(this, "_logger", void 0), h(this, "_eventualLogs", /* @__PURE__ */ new Set()), h(this, "_lastCallStatContext", null), this._logger = e;
|
|
9089
9106
|
}
|
|
@@ -9121,7 +9138,7 @@ var Xo = class {
|
|
|
9121
9138
|
...this._lastCallStatContext ?? {}
|
|
9122
9139
|
}, { occurredAt: t });
|
|
9123
9140
|
}
|
|
9124
|
-
},
|
|
9141
|
+
}, es = class {
|
|
9125
9142
|
constructor(e) {
|
|
9126
9143
|
if (h(this, "q", void 0), h(this, "inits", []), h(this, "n", [
|
|
9127
9144
|
1,
|
|
@@ -9180,7 +9197,7 @@ var Xo = class {
|
|
|
9180
9197
|
5
|
|
9181
9198
|
];
|
|
9182
9199
|
}
|
|
9183
|
-
},
|
|
9200
|
+
}, ts = class {
|
|
9184
9201
|
constructor() {
|
|
9185
9202
|
h(this, "n", 0), h(this, "mean", 0);
|
|
9186
9203
|
}
|
|
@@ -9192,9 +9209,9 @@ var Xo = class {
|
|
|
9192
9209
|
get avg() {
|
|
9193
9210
|
return this.n ? this.mean : NaN;
|
|
9194
9211
|
}
|
|
9195
|
-
},
|
|
9212
|
+
}, ns = class {
|
|
9196
9213
|
constructor() {
|
|
9197
|
-
h(this, "count", 0), h(this, "minVal", Infinity), h(this, "maxVal", -Infinity), h(this, "mean", new
|
|
9214
|
+
h(this, "count", 0), h(this, "minVal", Infinity), h(this, "maxVal", -Infinity), h(this, "mean", new ts()), h(this, "p50", new es(.5)), h(this, "p95", new es(.95));
|
|
9198
9215
|
}
|
|
9199
9216
|
add(e) {
|
|
9200
9217
|
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++;
|
|
@@ -9212,11 +9229,11 @@ var Xo = class {
|
|
|
9212
9229
|
get hasData() {
|
|
9213
9230
|
return this.count > 0;
|
|
9214
9231
|
}
|
|
9215
|
-
},
|
|
9232
|
+
}, rs = class {
|
|
9216
9233
|
constructor(e) {
|
|
9217
9234
|
h(this, "_logger", void 0), h(this, "trackerByTransport", {
|
|
9218
|
-
ws: new
|
|
9219
|
-
wt: new
|
|
9235
|
+
ws: new ns(),
|
|
9236
|
+
wt: new ns()
|
|
9220
9237
|
}), h(this, "lastSeen", {}), this._logger = e;
|
|
9221
9238
|
}
|
|
9222
9239
|
mark(e) {
|
|
@@ -9245,17 +9262,17 @@ var Xo = class {
|
|
|
9245
9262
|
}
|
|
9246
9263
|
destroy() {
|
|
9247
9264
|
this.trackerByTransport = {
|
|
9248
|
-
ws: new
|
|
9249
|
-
wt: new
|
|
9265
|
+
ws: new ns(),
|
|
9266
|
+
wt: new ns()
|
|
9250
9267
|
}, this.lastSeen = {};
|
|
9251
9268
|
}
|
|
9252
|
-
},
|
|
9269
|
+
}, is = class {
|
|
9253
9270
|
constructor(e) {
|
|
9254
9271
|
h(this, "_logger", void 0), h(this, "trackerByCommand", /* @__PURE__ */ new Map()), this._logger = e;
|
|
9255
9272
|
}
|
|
9256
9273
|
mark(e, t, n) {
|
|
9257
9274
|
let r = `${e}|${n}`, i;
|
|
9258
|
-
this.trackerByCommand.has(r) ? i = this.trackerByCommand.get(r) : (i = new
|
|
9275
|
+
this.trackerByCommand.has(r) ? i = this.trackerByCommand.get(r) : (i = new ns(), this.trackerByCommand.set(r, i)), i.add(t);
|
|
9259
9276
|
}
|
|
9260
9277
|
logMetrics() {
|
|
9261
9278
|
for (let [e, t] of this.trackerByCommand.entries()) {
|
|
@@ -9277,9 +9294,9 @@ var Xo = class {
|
|
|
9277
9294
|
destroy() {
|
|
9278
9295
|
this.trackerByCommand.clear();
|
|
9279
9296
|
}
|
|
9280
|
-
},
|
|
9297
|
+
}, as = class {
|
|
9281
9298
|
constructor(e, t, n, r) {
|
|
9282
|
-
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
|
|
9299
|
+
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 Io(e, t, n, r), this.lifecycle = new Zo(this.logger), this.statAggregator = new $o(this.logger), this.codecStatsAggregator = new Qo(this.logger, r), this.pings = new rs(this.logger), this.signalingCommands = new is(this.logger);
|
|
9283
9300
|
}
|
|
9284
9301
|
logHangup(e) {
|
|
9285
9302
|
this.lifecycle.markFinished(e);
|
|
@@ -9290,7 +9307,7 @@ var Xo = class {
|
|
|
9290
9307
|
destroy() {
|
|
9291
9308
|
this.lifecycle.markTerminated(), this.lifecycle.destroy(), this.statAggregator.destroy(), this.codecStatsAggregator.destroy(), this.pings.destroy(), this.signalingCommands.destroy(), this.logger.destroy();
|
|
9292
9309
|
}
|
|
9293
|
-
},
|
|
9310
|
+
}, os = class {
|
|
9294
9311
|
constructor(e) {
|
|
9295
9312
|
h(this, "_statAggregator", void 0), h(this, "_isCallMarked", !1), h(this, "_isFinished", !1), h(this, "_callType", null), this._statAggregator = e;
|
|
9296
9313
|
}
|
|
@@ -9315,8 +9332,8 @@ var Xo = class {
|
|
|
9315
9332
|
call_type: this._callType
|
|
9316
9333
|
}));
|
|
9317
9334
|
}
|
|
9318
|
-
},
|
|
9319
|
-
function
|
|
9335
|
+
}, ss = 1e3, cs = 1e4;
|
|
9336
|
+
function ls(e, t, n, r) {
|
|
9320
9337
|
return new O(e, {
|
|
9321
9338
|
callError: {
|
|
9322
9339
|
scope: "external",
|
|
@@ -9327,11 +9344,11 @@ function cs(e, t, n, r) {
|
|
|
9327
9344
|
message: r
|
|
9328
9345
|
});
|
|
9329
9346
|
}
|
|
9330
|
-
var
|
|
9347
|
+
var us = 15, $ = class e extends b {
|
|
9331
9348
|
constructor(e, t) {
|
|
9332
|
-
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",
|
|
9349
|
+
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", ho((e) => {
|
|
9333
9350
|
if (this._mediaSource) return this._stats.logger.log(C.MEDIA_STATUS, e ? "video_1" : "video_0"), this._mediaSource.toggleVideo(e);
|
|
9334
|
-
})), h(this, "_toggleLocalAudio",
|
|
9351
|
+
})), h(this, "_toggleLocalAudio", ho((e) => {
|
|
9335
9352
|
if (this._mediaSource) return this._stats.logger.log(C.MEDIA_STATUS, e ? "audio_1" : "audio_0"), this._mediaSource.toggleAudio(e);
|
|
9336
9353
|
})), h(this, "_changeMediaSettings", j.debounce(async (e) => {
|
|
9337
9354
|
if (this._signaling.ready) try {
|
|
@@ -9343,21 +9360,22 @@ var ls = 15, $ = class e extends b {
|
|
|
9343
9360
|
captureAudio: !1
|
|
9344
9361
|
});
|
|
9345
9362
|
}
|
|
9346
|
-
}, 100)), this._stats = new
|
|
9363
|
+
}, 100)), this._stats = new as(e, t, () => this._conversation?.id || null, () => this._transport?.getTopology() ?? this._conversation?.topology), this._api = e, this._signaling = new Ba(this._debug, this._stats.logger, this._stats.statAggregator, this._stats.pings, this._stats.signalingCommands), this._signalingActor = new Oo(this._onSignalingNotification.bind(this), this._debug), this._displayLayoutRequester = new wo({
|
|
9347
9364
|
api: this._api,
|
|
9348
9365
|
debug: this._debug,
|
|
9349
9366
|
getParticipants: () => this._participants,
|
|
9350
9367
|
isMe: (e) => this._isMe(e),
|
|
9351
|
-
updateDisplayLayout: (e) => this.updateDisplayLayout(e)
|
|
9368
|
+
updateDisplayLayout: (e) => this.updateDisplayLayout(e),
|
|
9369
|
+
onNonFatalError: (e) => this._onNonFatalError(e)
|
|
9352
9370
|
}), this._onUnload = () => {
|
|
9353
9371
|
this._stopFirstMediaSentProbe(), this._conversation && this._api && this._sendHangupApi(this._conversation.id, this._state === "IDLE" ? D.CANCELED : D.HUNGUP), this._stats.destroy();
|
|
9354
|
-
}, window.addEventListener("pagehide", this._onUnload), this._statFirstMediaReceived = new
|
|
9372
|
+
}, window.addEventListener("pagehide", this._onUnload), this._statFirstMediaReceived = new os(this._stats.statAggregator), this._audioOutput = new _o(this._statFirstMediaReceived, M.transparentAudio, this._debug, this._stats.logger), M.videoTracksCount > 0 && (this._cooldownQueueCleanupTimer = window.setInterval(this._cleanupCooldownQueue.bind(this), ss));
|
|
9355
9373
|
}
|
|
9356
9374
|
static current() {
|
|
9357
9375
|
return z.getActive() ?? (M.hold ? null : z.getFirst());
|
|
9358
9376
|
}
|
|
9359
9377
|
static hangupAfterInit(e) {
|
|
9360
|
-
let t =
|
|
9378
|
+
let t = ds;
|
|
9361
9379
|
if (t) {
|
|
9362
9380
|
if (typeof e == "function" && (t._onFastHangup = e), t._delayedHangup === !1 && !t._conversation) {
|
|
9363
9381
|
t._delayedHangup = !0, t._abortController?.abort(new O(D.CANCELED));
|
|
@@ -9384,6 +9402,9 @@ var ls = 15, $ = class e extends b {
|
|
|
9384
9402
|
get isCallHeld() {
|
|
9385
9403
|
return this._state === "HELD";
|
|
9386
9404
|
}
|
|
9405
|
+
get isIncomingRinging() {
|
|
9406
|
+
return this._conversation?.direction === Va.INCOMING && this._state === "IDLE";
|
|
9407
|
+
}
|
|
9387
9408
|
static debugSessionId() {
|
|
9388
9409
|
return e.current()?.debugSessionId ?? null;
|
|
9389
9410
|
}
|
|
@@ -9401,8 +9422,14 @@ var ls = 15, $ = class e extends b {
|
|
|
9401
9422
|
get debugSessionId() {
|
|
9402
9423
|
return this._debug.sessionId;
|
|
9403
9424
|
}
|
|
9404
|
-
|
|
9405
|
-
return this._api.
|
|
9425
|
+
getCachedParticipantIdByExternalId(e) {
|
|
9426
|
+
return this._api.getCachedParticipantIdByExternalId(e);
|
|
9427
|
+
}
|
|
9428
|
+
_onNonFatalError(e) {
|
|
9429
|
+
L.onNonFatalError(Error(e), this.id);
|
|
9430
|
+
}
|
|
9431
|
+
getIncomingCallerExternalId() {
|
|
9432
|
+
return this._conversation?.direction === Va.INCOMING ? Object.values(this._participants).find((e) => !this._isMe(e.id))?.externalId ?? null : null;
|
|
9406
9433
|
}
|
|
9407
9434
|
_buildInternalParams() {
|
|
9408
9435
|
let e = {
|
|
@@ -9412,24 +9439,24 @@ var ls = 15, $ = class e extends b {
|
|
|
9412
9439
|
platform: M.platform,
|
|
9413
9440
|
protocolVersion: M.protocolVersion,
|
|
9414
9441
|
domainId: M.domain,
|
|
9415
|
-
capabilities:
|
|
9442
|
+
capabilities: Sa.getFlags()
|
|
9416
9443
|
};
|
|
9417
9444
|
return JSON.stringify(e);
|
|
9418
9445
|
}
|
|
9419
9446
|
async onStart({ opponentIds: e, opponentType: t, mediaOptions: n, payload: r = "", joiningAllowed: i = !1, requireAuthToJoin: a = !1, onlyAdminCanShareMovie: o, externalIds: s, onFastStart: c, conversationId: l }) {
|
|
9420
|
-
let u = l ?? j.uuid(), d = (e?.length ?? 0) + (s?.length ?? 0), f = t ===
|
|
9447
|
+
let u = l ?? j.uuid(), d = (e?.length ?? 0) + (s?.length ?? 0), f = t === Ha.USER && d === 1 ? M.calleeUnavailableWaitingTime : void 0;
|
|
9421
9448
|
this._stats.lifecycle.markInitializationStarted({
|
|
9422
9449
|
source: "outgoing",
|
|
9423
9450
|
conversationId: u
|
|
9424
|
-
}), this._debug.setConversationId(u),
|
|
9451
|
+
}), this._debug.setConversationId(u), ds = this, this._abortController = new AbortController(), this._api.setAbortSignal(this._abortController?.signal), this._signaling.setAbortSignal(this._abortController?.signal);
|
|
9425
9452
|
try {
|
|
9426
9453
|
this._mediaSource = this._createMediaSource(), await this._mediaSource.request(n);
|
|
9427
9454
|
let l = this._mediaSource.mediaSettings;
|
|
9428
|
-
t ===
|
|
9455
|
+
t === Ha.CHAT || e && e.length > 1 ? this._logWithMediaSettings(C.OUTGOING_MULTIPARTY_CALL, l) : this._logWithMediaSettings(C.OUTGOING_CALL, l);
|
|
9429
9456
|
let d = await this._startConversation({
|
|
9430
9457
|
opponentIds: e,
|
|
9431
9458
|
opponentType: t,
|
|
9432
|
-
direction:
|
|
9459
|
+
direction: Va.OUTGOING,
|
|
9433
9460
|
mediaOptions: n,
|
|
9434
9461
|
payload: r,
|
|
9435
9462
|
joiningAllowed: i,
|
|
@@ -9445,22 +9472,26 @@ var ls = 15, $ = class e extends b {
|
|
|
9445
9472
|
description: "not-initialized-after-start"
|
|
9446
9473
|
} });
|
|
9447
9474
|
if (this._participantState = Z.ACCEPTED, this._changeMediaSettings(l), await this._processConnection(d), this._allocateTransport(), this._createSpeakerDetector(), this._createSpecListener(), this._signaling.readyToSend(), this._delayedHangup) throw new O(D.CANCELED);
|
|
9448
|
-
|
|
9475
|
+
if (this._debug.debug("Outgoing call", {
|
|
9449
9476
|
opponentIds: e,
|
|
9450
9477
|
opponentType: t,
|
|
9451
9478
|
mediaOptions: n
|
|
9452
|
-
}), this._processConnectionSharedMovieInfo(d), this._processConversationUrlSharingInfo(d), L.onLocalStream(this._mediaSource.getStream(), this._mediaSource.mediaSettings, this.id), L.onConversation(this._conversation.externalId, this._conversation.mediaModifiers, this._getMuteStatesForCurrentRoom(), this._getMainRoomParticipants(), void 0, this.id), this._onConversationParticipantListChunk(d), this._processPinnedParticipants(d), L.onLocalStatus(N.WAITING, this.id), this._toggleJoinAvailability(), this._changeFeatureSet(), this._changeNeedRate(),
|
|
9479
|
+
}), this._processConnectionSharedMovieInfo(d), this._processConversationUrlSharingInfo(d), L.onLocalStream(this._mediaSource.getStream(), this._mediaSource.mediaSettings, this.id), L.onConversation(this._conversation.externalId, this._conversation.mediaModifiers, this._getMuteStatesForCurrentRoom(), this._getMainRoomParticipants(), void 0, this.id), this._onConversationParticipantListChunk(d), this._processPinnedParticipants(d), L.onLocalStatus(N.WAITING, this.id), this._toggleJoinAvailability(), this._changeFeatureSet(), this._changeNeedRate(), this._conversation?.concurrent) {
|
|
9480
|
+
let e = z.get(this._conversation.id);
|
|
9481
|
+
e && e !== this && e._close(new O(D.HUNGUP, { remote: !0 }));
|
|
9482
|
+
}
|
|
9483
|
+
return z.add(this), await z.setActive(this.id), ds = null, this._conversation.concurrent && await this._acceptConcurrent(), f && !this._registeredPeerReceived && this._state !== "CLOSE" && (this._calleeUnavailableTimer = window.setTimeout(() => {
|
|
9453
9484
|
this._calleeUnavailableTimer = null, this._close(new O(D.CALLEE_UNAVAILABLE), { signalingReason: D.CANCELED });
|
|
9454
9485
|
}, f)), this._conversation;
|
|
9455
9486
|
} catch (e) {
|
|
9456
|
-
throw
|
|
9487
|
+
throw ds = null, this._cleanupRegistry(), this._close(e, { errorText: "Unable to start conversation" }), e;
|
|
9457
9488
|
}
|
|
9458
9489
|
}
|
|
9459
9490
|
async onJoin(e) {
|
|
9460
9491
|
this._stats.lifecycle.markInitializationStarted({
|
|
9461
9492
|
source: e.anonymous ? "anonym_join" : "join",
|
|
9462
9493
|
conversationId: e.conversationId
|
|
9463
|
-
}),
|
|
9494
|
+
}), ds = 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);
|
|
9464
9495
|
try {
|
|
9465
9496
|
let t = !!e.observedIds?.length;
|
|
9466
9497
|
if (t && M.videoTracksCount > 0) throw this._debug.error("Observer mode: please set videoTracksCount=0"), new O(D.UNSUPPORTED, { callError: {
|
|
@@ -9477,9 +9508,9 @@ var ls = 15, $ = class e extends b {
|
|
|
9477
9508
|
code: "conversation",
|
|
9478
9509
|
description: "not-initialized-after-join"
|
|
9479
9510
|
} });
|
|
9480
|
-
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),
|
|
9511
|
+
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), ds = null, this._signaling.readyToSend(), L.onLocalStatus(this._conversation.waitForAdmin ? N.WAIT_FOR_ADMIN : N.WAITING_HALL, this.id), this._conversation) : this._onJoinPart2(r);
|
|
9481
9512
|
} catch (e) {
|
|
9482
|
-
throw
|
|
9513
|
+
throw ds = null, this._cleanupRegistry(), this._close(e, { errorText: "Unable to join conversation" }), e;
|
|
9483
9514
|
}
|
|
9484
9515
|
}
|
|
9485
9516
|
async _onJoinPart2(e, t = !0, n = !1) {
|
|
@@ -9494,7 +9525,7 @@ var ls = 15, $ = class e extends b {
|
|
|
9494
9525
|
if (this._delayedHangup) throw new O(D.CANCELED);
|
|
9495
9526
|
this._processConnectionSharedMovieInfo(e), this._processConversationUrlSharingInfo(e), this._processConnectionAsrInfo(e);
|
|
9496
9527
|
let r = this._extractExternalRoomsData(e.rooms?.rooms, e.rooms?.roomId);
|
|
9497
|
-
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),
|
|
9528
|
+
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), ds = null);
|
|
9498
9529
|
let i = this._extractLocalParticipantFromConnection(e);
|
|
9499
9530
|
if (i) {
|
|
9500
9531
|
let e = j.mapParticipantState(i);
|
|
@@ -9502,11 +9533,15 @@ var ls = 15, $ = class e extends b {
|
|
|
9502
9533
|
}
|
|
9503
9534
|
return t && this._openTransport(Object.values(this._participants), !1), this._conversation;
|
|
9504
9535
|
} catch (e) {
|
|
9505
|
-
throw
|
|
9536
|
+
throw ds = null, this._cleanupRegistry(), this._close(e, { errorText: "Unable to join conversation" }), e;
|
|
9506
9537
|
}
|
|
9507
9538
|
}
|
|
9508
9539
|
_extractExternalRooms(e) {
|
|
9509
|
-
|
|
9540
|
+
let t = [], n = [];
|
|
9541
|
+
return e.forEach((e) => {
|
|
9542
|
+
let { room: r, missingParticipantIds: i } = this._convertRoomToExternal(e);
|
|
9543
|
+
r && n.push(r), t.push(...i);
|
|
9544
|
+
}), this._reportMissingExternalIds(t, "EXTRACT_EXTERNAL_ROOMS"), n.filter((e) => !!e);
|
|
9510
9545
|
}
|
|
9511
9546
|
_extractExternalRoomsData(e, t) {
|
|
9512
9547
|
if (!e || !e.length) return;
|
|
@@ -9518,7 +9553,7 @@ var ls = 15, $ = class e extends b {
|
|
|
9518
9553
|
z.reserve(e), this._reservedId = e, this._stats.lifecycle.markInitializationStarted({
|
|
9519
9554
|
source: "incoming",
|
|
9520
9555
|
conversationId: e
|
|
9521
|
-
}), this._debug.setConversationId(e),
|
|
9556
|
+
}), this._debug.setConversationId(e), ds = this, this._abortController = new AbortController(), this._api.setAbortSignal(this._abortController?.signal), this._signaling.setAbortSignal(this._abortController?.signal), a && this._api.setUserId(a);
|
|
9522
9557
|
try {
|
|
9523
9558
|
let a = await this._prepareConversation(e, t, n, r, i);
|
|
9524
9559
|
if (this._mediaSource = this._createMediaSource(), !this._conversation) throw new O(D.UNKNOWN_ERROR, { callError: {
|
|
@@ -9527,20 +9562,20 @@ var ls = 15, $ = class e extends b {
|
|
|
9527
9562
|
description: "incoming-not-initialized"
|
|
9528
9563
|
} });
|
|
9529
9564
|
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);
|
|
9530
|
-
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),
|
|
9565
|
+
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), ds = null, this._delayedHangup) throw new O(D.CANCELED);
|
|
9531
9566
|
} catch (e) {
|
|
9532
|
-
throw
|
|
9567
|
+
throw ds = null, this._cleanupRegistry(), this._close(e, {
|
|
9533
9568
|
errorText: "Unable to handle inbound call push",
|
|
9534
9569
|
signalingReason: e instanceof O && e.hangup === D.BUSY ? D.BUSY : void 0
|
|
9535
9570
|
}), e;
|
|
9536
9571
|
}
|
|
9537
9572
|
}
|
|
9538
9573
|
_isInWaitingHall(e) {
|
|
9539
|
-
return !e.conversation || !e.conversation.options.includes(
|
|
9574
|
+
return !e.conversation || !e.conversation.options.includes(Ga.WAITING_HALL) ? !1 : this._isRestricted(e);
|
|
9540
9575
|
}
|
|
9541
9576
|
_isWaitForAdmin(e) {
|
|
9542
9577
|
if (!e.conversation) return !1;
|
|
9543
|
-
let t = e.conversation.options.includes(
|
|
9578
|
+
let t = e.conversation.options.includes(Ga.WAIT_FOR_ADMIN), n = e.conversation.options.includes(Ga.ADMIN_IS_HERE);
|
|
9544
9579
|
return !t || t && n ? !1 : this._isRestricted(e);
|
|
9545
9580
|
}
|
|
9546
9581
|
_isRestricted(e) {
|
|
@@ -9548,7 +9583,7 @@ var ls = 15, $ = class e extends b {
|
|
|
9548
9583
|
return t && t.restricted || !1;
|
|
9549
9584
|
}
|
|
9550
9585
|
_isAudienceMode(e) {
|
|
9551
|
-
return e.conversation?.options?.includes(
|
|
9586
|
+
return e.conversation?.options?.includes(Ga.AUDIENCE_MODE) || !1;
|
|
9552
9587
|
}
|
|
9553
9588
|
_isAudienceModeListener() {
|
|
9554
9589
|
return this._conversation?.audienceMode && this._conversation?.restricted;
|
|
@@ -9578,7 +9613,7 @@ var ls = 15, $ = class e extends b {
|
|
|
9578
9613
|
let i = atob(n), a = new Uint8Array(i.length);
|
|
9579
9614
|
for (let e = 0; e < i.length; e++) a[e] = i.charCodeAt(e);
|
|
9580
9615
|
try {
|
|
9581
|
-
let e =
|
|
9616
|
+
let e = mo(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);
|
|
9582
9617
|
return {
|
|
9583
9618
|
token: i,
|
|
9584
9619
|
endpoint: l,
|
|
@@ -9731,7 +9766,8 @@ var ls = 15, $ = class e extends b {
|
|
|
9731
9766
|
D.CALLEE_IS_OFFLINE,
|
|
9732
9767
|
D.CALLEE_UNAVAILABLE,
|
|
9733
9768
|
D.CALLER_IS_BLOCKED,
|
|
9734
|
-
D.CALLER_IS_REJECTED
|
|
9769
|
+
D.CALLER_IS_REJECTED,
|
|
9770
|
+
D.HAS_ACTIVE_CALL
|
|
9735
9771
|
].indexOf(e.hangup) !== -1 || e.hangup === D.REJECTED && !e.remote) {
|
|
9736
9772
|
this._emitHangupOnce(e, i), this._destroy(r);
|
|
9737
9773
|
return;
|
|
@@ -9780,10 +9816,10 @@ var ls = 15, $ = class e extends b {
|
|
|
9780
9816
|
let t = await this._api.getConversationParams(e);
|
|
9781
9817
|
this._debug.debug("Api.getConversationParams", t);
|
|
9782
9818
|
let { turn_server: n, stun_server: r } = t;
|
|
9783
|
-
return M.iceServers =
|
|
9819
|
+
return M.iceServers = po(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;
|
|
9784
9820
|
}
|
|
9785
9821
|
_setConversationParams({ turn_server: e, stun_server: t, endpoint: n, wt_endpoint: r, token: i, client_type: a }) {
|
|
9786
|
-
M.iceServers =
|
|
9822
|
+
M.iceServers = po(t, e), M.wssBase = n, M.wssToken = i, r && (M.wtsBase = r), a && (M.clientType = a);
|
|
9787
9823
|
}
|
|
9788
9824
|
_buildSignalingEndpoint({ baseEndpoint: e, userId: t, type: n, deviceIdx: r, conversationId: i, token: a, conversationParams: o }) {
|
|
9789
9825
|
let s = new URL(e), c = s.searchParams;
|
|
@@ -9815,10 +9851,10 @@ var ls = 15, $ = class e extends b {
|
|
|
9815
9851
|
isVideo: f,
|
|
9816
9852
|
joiningAllowed: a,
|
|
9817
9853
|
requireAuthToJoin: o
|
|
9818
|
-
}, this._abortController?.signal), !e) throw
|
|
9854
|
+
}, this._abortController?.signal), !e) throw ls(D.FAST_START_ERROR, "invalid-response", "fast-start-response-empty");
|
|
9819
9855
|
if (!e.internalCallerParams) {
|
|
9820
9856
|
let t = e.rejectedParticipants[0]?.status;
|
|
9821
|
-
throw
|
|
9857
|
+
throw ls(D.FAST_START_ERROR, t ? "fast-start" : "invalid-response", t ?? "fast-start-internal-caller-params-empty", JSON.stringify(e));
|
|
9822
9858
|
}
|
|
9823
9859
|
} catch (e) {
|
|
9824
9860
|
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) });
|
|
@@ -9840,10 +9876,10 @@ var ls = 15, $ = class e extends b {
|
|
|
9840
9876
|
token: new URL(t.endpoint).searchParams.get("token") ?? ""
|
|
9841
9877
|
}, this._debug.debug("FastStart", p), m = "fastStart";
|
|
9842
9878
|
} catch {
|
|
9843
|
-
throw
|
|
9879
|
+
throw ls(D.FAST_START_ERROR, "invalid-response", "fast-start-internal-caller-params-invalid");
|
|
9844
9880
|
}
|
|
9845
9881
|
} else p = await this._api.startConversation(d, e, t, f, i, a, o, { onlyAdminCanShareMovie: s }, c), this._debug.debug("Api.startConversation", p), m = "startConversation";
|
|
9846
|
-
|
|
9882
|
+
vo(p, m), this._setConversationParams(p), this._stats.lifecycle.bindConversationId(p.id);
|
|
9847
9883
|
let ee = await this._connectSignaling(vr.START, p);
|
|
9848
9884
|
return this._setConversation(p, ee, n), this._stats.lifecycle.markCallStarted(), ee;
|
|
9849
9885
|
}
|
|
@@ -9868,9 +9904,9 @@ var ls = 15, $ = class e extends b {
|
|
|
9868
9904
|
joinLink: i,
|
|
9869
9905
|
isVideo: c,
|
|
9870
9906
|
internalParams: this._buildInternalParams()
|
|
9871
|
-
}, this._abortController?.signal), !e) throw
|
|
9872
|
-
if (!e.internalCallerParams) throw
|
|
9873
|
-
if (!e.conversationId) throw
|
|
9907
|
+
}, this._abortController?.signal), !e) throw ls(D.FAST_JOIN_ERROR, "invalid-response", "fast-join-response-empty");
|
|
9908
|
+
if (!e.internalCallerParams) throw ls(D.FAST_JOIN_ERROR, "invalid-response", "fast-join-internal-caller-params-empty", JSON.stringify(e));
|
|
9909
|
+
if (!e.conversationId) throw ls(D.FAST_JOIN_ERROR, "invalid-response", "fast-join-conversation-id-empty", JSON.stringify(e));
|
|
9874
9910
|
} catch (e) {
|
|
9875
9911
|
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) });
|
|
9876
9912
|
}
|
|
@@ -9888,7 +9924,7 @@ var ls = 15, $ = class e extends b {
|
|
|
9888
9924
|
token: new URL(t.endpoint).searchParams.get("token") ?? ""
|
|
9889
9925
|
}, this._debug.debug("FastJoin", l), u = "fastJoin";
|
|
9890
9926
|
} catch (e) {
|
|
9891
|
-
throw e instanceof O ? e :
|
|
9927
|
+
throw e instanceof O ? e : ls(D.FAST_JOIN_ERROR, "invalid-response", "fast-join-internal-caller-params-invalid");
|
|
9892
9928
|
}
|
|
9893
9929
|
} else if (t) l = await this._api.joinConversation(t, c, r), u = "joinConversation";
|
|
9894
9930
|
else if (i) l = await this._api.joinConversationByLink(i, c, a, o), u = "joinConversationByLink";
|
|
@@ -9897,13 +9933,13 @@ var ls = 15, $ = class e extends b {
|
|
|
9897
9933
|
code: "join",
|
|
9898
9934
|
description: "target-missing"
|
|
9899
9935
|
} });
|
|
9900
|
-
if (this._debug.debug("Api.joinConversation", l), l.id && this._stats.lifecycle.bindConversationId(l.id),
|
|
9936
|
+
if (this._debug.debug("Api.joinConversation", l), l.id && this._stats.lifecycle.bindConversationId(l.id), vo(l, u), l.id) {
|
|
9901
9937
|
if (z.has(l.id)) throw new O(D.HAS_ACTIVE_CALL);
|
|
9902
9938
|
z.reserve(l.id), this._reservedId = l.id;
|
|
9903
9939
|
}
|
|
9904
9940
|
this._setConversationParams(l);
|
|
9905
9941
|
let d = await this._connectSignaling(vr.JOIN, l);
|
|
9906
|
-
return this._setConversation(l, d,
|
|
9942
|
+
return this._setConversation(l, d, Va.JOINING), this._stats.lifecycle.markCallStarted(), d;
|
|
9907
9943
|
}
|
|
9908
9944
|
async _prepareConversation(e, t = A.USER, n, r, i) {
|
|
9909
9945
|
W.setMark(H.SIGNALING_CONNECTED), this._debug.debug("Conversation: push", {
|
|
@@ -9965,7 +10001,7 @@ var ls = 15, $ = class e extends b {
|
|
|
9965
10001
|
}), l.wt_endpoint = c);
|
|
9966
10002
|
}
|
|
9967
10003
|
let u = await this._connectSignaling(vr.ACCEPT, l);
|
|
9968
|
-
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,
|
|
10004
|
+
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, Va.INCOMING, t), u);
|
|
9969
10005
|
}
|
|
9970
10006
|
_createParticipant(e, t, n = !0) {
|
|
9971
10007
|
let r = Object.assign({
|
|
@@ -9988,19 +10024,17 @@ var ls = 15, $ = class e extends b {
|
|
|
9988
10024
|
isInRoom: !1,
|
|
9989
10025
|
markers: null
|
|
9990
10026
|
}, e), i = !!r.externalId;
|
|
9991
|
-
|
|
10027
|
+
if (!i) {
|
|
10028
|
+
let e = this._getParticipantId(t ?? r.id);
|
|
10029
|
+
e && (r.externalId = e);
|
|
10030
|
+
}
|
|
10031
|
+
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 = to.create(r.connectionStatus), r;
|
|
9992
10032
|
}
|
|
9993
10033
|
_getParticipantId(e) {
|
|
9994
|
-
|
|
9995
|
-
|
|
9996
|
-
}
|
|
9997
|
-
|
|
9998
|
-
scope: "network",
|
|
9999
|
-
source: "api",
|
|
10000
|
-
code: "fetch-failed",
|
|
10001
|
-
description: "request-failed"
|
|
10002
|
-
} }), { errorText: e }), e;
|
|
10003
|
-
}
|
|
10034
|
+
let t = this._api.userId(e);
|
|
10035
|
+
if (t) return t;
|
|
10036
|
+
let { compositeUserId: n, deviceIdx: r } = j.decomposeParticipantId(e), { id: i, type: a } = j.decomposeId(n);
|
|
10037
|
+
return a === A.GROUP ? Q.fromId(String(i), void 0, r) : null;
|
|
10004
10038
|
}
|
|
10005
10039
|
_cacheParticipantExternalIds(e) {
|
|
10006
10040
|
e.forEach((e) => {
|
|
@@ -10008,7 +10042,7 @@ var ls = 15, $ = class e extends b {
|
|
|
10008
10042
|
if (n) {
|
|
10009
10043
|
this._api.cacheExternalId(t, n);
|
|
10010
10044
|
let r = j.composeDecorativeId(e), i = Q.fromSignalingParticipant(e);
|
|
10011
|
-
r && i && (this._api.cacheExternalId(r, i), this._api.mapDecorativeId(
|
|
10045
|
+
r && i && (this._api.cacheExternalId(r, i), this._api.mapDecorativeId(r, t));
|
|
10012
10046
|
}
|
|
10013
10047
|
});
|
|
10014
10048
|
}
|
|
@@ -10057,7 +10091,11 @@ var ls = 15, $ = class e extends b {
|
|
|
10057
10091
|
audienceMode: this._isAudienceMode(t),
|
|
10058
10092
|
restricted: this._isRestricted(t),
|
|
10059
10093
|
urlSharingInfoByRoom: /* @__PURE__ */ new Map()
|
|
10060
|
-
}, this._debug.setConversationId(t.conversation.id || e.id), e.p2p_forbidden && (M.forceRelayPolicy = e.p2p_forbidden), this._stats.logger.log(C.RELAY_POLICY, M.forceRelayPolicy ? "1" : "0")
|
|
10094
|
+
}, this._debug.setConversationId(t.conversation.id || e.id), e.p2p_forbidden && (M.forceRelayPolicy = e.p2p_forbidden), this._stats.logger.log(C.RELAY_POLICY, M.forceRelayPolicy ? "1" : "0");
|
|
10095
|
+
let l = z.get(this._conversation.id);
|
|
10096
|
+
if (l && l !== this) this._conversation.concurrent = !0;
|
|
10097
|
+
else if (!M.hold && z.callsLength > 0) throw new O(D.HAS_ACTIVE_CALL);
|
|
10098
|
+
this._changeFeatureSet(), this._changeFeaturesPerRole(), this._logDevices();
|
|
10061
10099
|
}
|
|
10062
10100
|
_updateConversation(e) {
|
|
10063
10101
|
if (!this._conversation) throw new O(D.UNKNOWN_ERROR, { callError: {
|
|
@@ -10069,7 +10107,7 @@ var ls = 15, $ = class e extends b {
|
|
|
10069
10107
|
}
|
|
10070
10108
|
_createMediaSource() {
|
|
10071
10109
|
let e = new Yt(this._debug, this._stats.logger);
|
|
10072
|
-
return this.subscribe(e, qt.SOURCE_CHANGED, this._onLocalMediaStreamChanged.bind(this)), this.subscribe(e, qt.SCREEN_STATUS, this._onScreenSharingStatus.bind(this)), this._audioFix = new
|
|
10110
|
+
return this.subscribe(e, qt.SOURCE_CHANGED, this._onLocalMediaStreamChanged.bind(this)), this.subscribe(e, qt.SCREEN_STATUS, this._onScreenSharingStatus.bind(this)), this._audioFix = new go(e, this._debug, this._stats.logger), e;
|
|
10073
10111
|
}
|
|
10074
10112
|
async _connectSignaling(e, t) {
|
|
10075
10113
|
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));
|
|
@@ -10077,7 +10115,7 @@ var ls = 15, $ = class e extends b {
|
|
|
10077
10115
|
return this._stats.statAggregator.logEventualStat({ name: H.SIGNALING_CONNECTED }), n;
|
|
10078
10116
|
}
|
|
10079
10117
|
async _processConnection(e) {
|
|
10080
|
-
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(
|
|
10118
|
+
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(Ua.ATTENDEE, e.chatRoom.totalCount, e.chatRoom.firstParticipants, null, null);
|
|
10081
10119
|
}
|
|
10082
10120
|
_onConversationParticipantListChunk(e) {
|
|
10083
10121
|
let t = e.participants;
|
|
@@ -10146,7 +10184,7 @@ var ls = 15, $ = class e extends b {
|
|
|
10146
10184
|
_registerParticipantLocalMuteState({ muteStates: e, unmuteOptions: t }) {
|
|
10147
10185
|
if (!e) return;
|
|
10148
10186
|
let n = async () => {
|
|
10149
|
-
let n =
|
|
10187
|
+
let n = ao(e, Ja.MUTE), r = ao(e, Ja.MUTE_PERMANENT);
|
|
10150
10188
|
for (let i of [n, r]) i.length && await this._onMuteParticipant({
|
|
10151
10189
|
muteStates: e,
|
|
10152
10190
|
unmuteOptions: t,
|
|
@@ -10160,8 +10198,8 @@ var ls = 15, $ = class e extends b {
|
|
|
10160
10198
|
if (!(!M.enableSessionStateUpdates || this._isMe(e))) return t;
|
|
10161
10199
|
}
|
|
10162
10200
|
_buildConnectionStatus(e, t, n, r = !1) {
|
|
10163
|
-
return
|
|
10164
|
-
transport: r ? N.ONHOLD :
|
|
10201
|
+
return to.create({
|
|
10202
|
+
transport: r ? N.ONHOLD : to.fromTransportState(n) ?? N.WAITING,
|
|
10165
10203
|
sessionState: this._remoteParticipantSessionState(e, t),
|
|
10166
10204
|
sessionStateApplicable: this._isParticipantSessionStateApplicable(e)
|
|
10167
10205
|
});
|
|
@@ -10170,12 +10208,12 @@ var ls = 15, $ = class e extends b {
|
|
|
10170
10208
|
return M.enableSessionStateUpdates && !this._isMe(e) && this._conversation?.topology === J.SERVER;
|
|
10171
10209
|
}
|
|
10172
10210
|
_setTransportStatus(e, t) {
|
|
10173
|
-
return
|
|
10211
|
+
return to.setTransport(e.connectionStatus, t);
|
|
10174
10212
|
}
|
|
10175
10213
|
_setSessionState(e, t) {
|
|
10176
|
-
let n =
|
|
10214
|
+
let n = to.setSessionStateApplicable(e.connectionStatus, this._isParticipantSessionStateApplicable(e.id));
|
|
10177
10215
|
this._emitParticipantTransition(e, n);
|
|
10178
|
-
let r = e.connectionStatus.sessionStateApplicable && e.id === this._activeSpeakerId && e.connectionStatus.transport === N.CONNECTED, i =
|
|
10216
|
+
let r = e.connectionStatus.sessionStateApplicable && e.id === this._activeSpeakerId && e.connectionStatus.transport === N.CONNECTED, i = to.setSessionState(e.connectionStatus, t, r);
|
|
10179
10217
|
return this._emitParticipantTransition(e, i), i;
|
|
10180
10218
|
}
|
|
10181
10219
|
_emitParticipantTransition(e, t, n = null) {
|
|
@@ -10187,33 +10225,40 @@ var ls = 15, $ = class e extends b {
|
|
|
10187
10225
|
_getExistedParticipantByIdOrCreate(e) {
|
|
10188
10226
|
let t = this._participants[e];
|
|
10189
10227
|
if (t) return t;
|
|
10190
|
-
let n = this._api.getDecorativeIdByInitialId(
|
|
10228
|
+
let n = this._api.getDecorativeIdByInitialId(e), r = this._getParticipantId(e), { deviceIdx: i } = j.decomposeParticipantId(e);
|
|
10191
10229
|
return this._createParticipant({
|
|
10192
10230
|
id: e,
|
|
10193
|
-
externalId: {
|
|
10194
|
-
...
|
|
10195
|
-
deviceIdx:
|
|
10196
|
-
}
|
|
10197
|
-
},
|
|
10231
|
+
externalId: r ? {
|
|
10232
|
+
...r,
|
|
10233
|
+
deviceIdx: i
|
|
10234
|
+
} : void 0
|
|
10235
|
+
}, n, !1);
|
|
10198
10236
|
}
|
|
10199
10237
|
_getExternalIdByParticipantId(e) {
|
|
10200
|
-
if (this._isMe(e)) return this._conversation?.externalId;
|
|
10238
|
+
if (this._isMe(e)) return this._conversation?.externalId ?? null;
|
|
10201
10239
|
if (M.useParticipantListChunk) return this._getExistedParticipantByIdOrCreate(e).externalId;
|
|
10202
10240
|
let t = this._participants;
|
|
10203
10241
|
if (t[e]?.externalId) return t[e].externalId;
|
|
10204
|
-
|
|
10205
|
-
|
|
10206
|
-
|
|
10207
|
-
|
|
10242
|
+
let n = this._api.getCachedExternalIdByParticipantId(e);
|
|
10243
|
+
if (n) return n;
|
|
10244
|
+
let r = this._getParticipantId(e);
|
|
10245
|
+
return r && this._api.cacheExternalId(e, r), r;
|
|
10246
|
+
}
|
|
10247
|
+
_getExternalIdsByParticipantIds(e) {
|
|
10248
|
+
let t = [], n = [];
|
|
10249
|
+
return e.forEach((e) => {
|
|
10250
|
+
let r = this._getExternalIdByParticipantId(e);
|
|
10251
|
+
r ? t.push(r) : n.push(e);
|
|
10252
|
+
}), {
|
|
10253
|
+
externalIds: t,
|
|
10254
|
+
missingIds: n
|
|
10255
|
+
};
|
|
10208
10256
|
}
|
|
10209
|
-
|
|
10210
|
-
|
|
10257
|
+
_reportMissingExternalIds(e, t) {
|
|
10258
|
+
e.length && this._onNonFatalError(`External ID mapping not found for participants "${Array.from(new Set(e)).join("\", \"")}" while handling ${t}`);
|
|
10211
10259
|
}
|
|
10212
|
-
|
|
10213
|
-
|
|
10214
|
-
if (n) return n;
|
|
10215
|
-
let r = Q.fromId(String(t));
|
|
10216
|
-
return this._api.cacheExternalId(e, r), r;
|
|
10260
|
+
_reportMissingExternalIdsById(e, t) {
|
|
10261
|
+
e.length && this._onNonFatalError(`Participant ID mapping not found for external IDs "${Array.from(new Set(e)).join("\", \"")}" while handling ${t}`);
|
|
10217
10262
|
}
|
|
10218
10263
|
_registerParticipantAndSetMarkersIfChunkEnabled(e, t) {
|
|
10219
10264
|
if (M.useParticipantListChunk) {
|
|
@@ -10239,11 +10284,11 @@ var ls = 15, $ = class e extends b {
|
|
|
10239
10284
|
this._onRoomSwitched(t, !0);
|
|
10240
10285
|
}
|
|
10241
10286
|
_processMuteStates(e, t = !1) {
|
|
10242
|
-
let n =
|
|
10287
|
+
let n = oo(e);
|
|
10243
10288
|
this._setMuteStatesForRoomId(n, null);
|
|
10244
10289
|
for (let t of e.rooms?.rooms ?? []) this._setMuteStatesForRoomId(t.muteStates, t.id);
|
|
10245
10290
|
let r = this._getMuteStatesForCurrentRoom();
|
|
10246
|
-
t && (r =
|
|
10291
|
+
t && (r = uo(e, r));
|
|
10247
10292
|
let i = Object.keys(r), a = this._conversation?.roomId;
|
|
10248
10293
|
i.length && this._onMuteParticipant({
|
|
10249
10294
|
muteStates: r,
|
|
@@ -10263,15 +10308,15 @@ var ls = 15, $ = class e extends b {
|
|
|
10263
10308
|
}
|
|
10264
10309
|
_allocateTransport() {
|
|
10265
10310
|
if (!this._conversation || !this._mediaSource) return;
|
|
10266
|
-
this._transport = new
|
|
10267
|
-
let e = this._conversation.direction ===
|
|
10311
|
+
this._transport = new ua(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 Co(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));
|
|
10312
|
+
let e = this._conversation.direction === Va.OUTGOING && !this._conversation.concurrent, t = this._participants;
|
|
10268
10313
|
for (let n of Object.values(t)) (n.state === Z.ACCEPTED || n.state === Z.CALLED) && this._allocateParticipantTransport(n.id, e);
|
|
10269
10314
|
}
|
|
10270
10315
|
_createSpeakerDetector() {
|
|
10271
|
-
this._transport && this._conversation && (this._volumesDetector = new
|
|
10316
|
+
this._transport && this._conversation && (this._volumesDetector = new Ao(this._transport), this.subscribe(this._volumesDetector, ko.VOLUMES_DETECTED, this._onVolumesDetected.bind(this)), this._speakerDetector = new Mo(this._volumesDetector, this._transport, this._conversation.topology), this.subscribe(this._speakerDetector, jo.SPEAKER_CHANGED, this._onSpeakerChanged.bind(this)), this._localVolumeDetector = new Do(this._mediaSource));
|
|
10272
10317
|
}
|
|
10273
10318
|
_createSpecListener() {
|
|
10274
|
-
this._transport && this._volumesDetector && (this._specListener = new
|
|
10319
|
+
this._transport && this._volumesDetector && (this._specListener = new Fo(this._transport, this._volumesDetector, this._participants, this._debug, this._stats.logger));
|
|
10275
10320
|
}
|
|
10276
10321
|
_logDevices() {
|
|
10277
10322
|
let e = T.getCameras().length, t = T.getMicrophones().length;
|
|
@@ -10370,7 +10415,7 @@ var ls = 15, $ = class e extends b {
|
|
|
10370
10415
|
_onRemoveParticipant(e) {
|
|
10371
10416
|
this._debug.debug(`Remove participant [${e}]`);
|
|
10372
10417
|
let t = [], n = this._participants;
|
|
10373
|
-
for (let r = 0; r <=
|
|
10418
|
+
for (let r = 0; r <= us; r++) {
|
|
10374
10419
|
let i = n[j.compose(e, r)];
|
|
10375
10420
|
i && t.push(i);
|
|
10376
10421
|
}
|
|
@@ -10460,11 +10505,11 @@ var ls = 15, $ = class e extends b {
|
|
|
10460
10505
|
this._waitingHallHoldPending = !1, await this._resumeLocalMedia(t, this._getWaitingForPromotionStatus()), this._allocateTransport(), this._createSpeakerDetector(), this._createSpecListener();
|
|
10461
10506
|
return;
|
|
10462
10507
|
}
|
|
10463
|
-
let n =
|
|
10508
|
+
let n = ba.get();
|
|
10464
10509
|
await this._signaling.hold(!1, n), this._restoreStateAfterHold();
|
|
10465
10510
|
let r = null;
|
|
10466
10511
|
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") {
|
|
10467
|
-
let e = this._conversation?.direction ===
|
|
10512
|
+
let e = this._conversation?.direction === Va.OUTGOING && !this._conversation.concurrent;
|
|
10468
10513
|
this._openTransport(r ?? Object.values(this._participants), e);
|
|
10469
10514
|
}
|
|
10470
10515
|
}
|
|
@@ -10498,30 +10543,34 @@ var ls = 15, $ = class e extends b {
|
|
|
10498
10543
|
async updateDisplayLayout(e) {
|
|
10499
10544
|
if (e.length < 1 || !this._signaling.ready) return;
|
|
10500
10545
|
this._debug.log(`Update display layout request [${this._signaling.getNextCommandSequenceNumber()}]`, e);
|
|
10501
|
-
let t = {}, n = [], r = this._participants;
|
|
10502
|
-
for (let
|
|
10503
|
-
let e = typeof
|
|
10504
|
-
if (!
|
|
10546
|
+
let t = {}, n = [], r = [], i = this._participants;
|
|
10547
|
+
for (let a of e) {
|
|
10548
|
+
let e = typeof a.uid == "object" ? a.uid : Q.fromId(a.uid), o = this._api.getCachedParticipantIdByExternalId(e);
|
|
10549
|
+
if (!o) {
|
|
10505
10550
|
let t = Q.toString(e);
|
|
10506
|
-
this._debug.log(`Unknown participant external ID ${t}`);
|
|
10551
|
+
this._debug.log(`Unknown participant external ID ${t}`), r.push(e.id);
|
|
10507
10552
|
continue;
|
|
10508
10553
|
}
|
|
10509
|
-
let
|
|
10510
|
-
participantId:
|
|
10511
|
-
mediaType:
|
|
10512
|
-
streamName:
|
|
10513
|
-
}),
|
|
10514
|
-
|
|
10515
|
-
|
|
10516
|
-
}) : this._isMe(
|
|
10517
|
-
this._myLastRequestedLayouts[
|
|
10518
|
-
}), Dn(
|
|
10519
|
-
delete this._myLastRequestedLayouts[
|
|
10520
|
-
}), this._streamIdByStreamDescription.has(
|
|
10521
|
-
}
|
|
10522
|
-
|
|
10554
|
+
let s = Mn({
|
|
10555
|
+
participantId: o,
|
|
10556
|
+
mediaType: a.mediaType,
|
|
10557
|
+
streamName: a.streamName
|
|
10558
|
+
}), c = i[o];
|
|
10559
|
+
c ? n.push(() => {
|
|
10560
|
+
c.lastRequestedLayouts[s] = a;
|
|
10561
|
+
}) : this._isMe(o) && n.push(() => {
|
|
10562
|
+
this._myLastRequestedLayouts[s] = a;
|
|
10563
|
+
}), Dn(a) ? (this._isMe(o) && n.push(() => {
|
|
10564
|
+
delete this._myLastRequestedLayouts[s];
|
|
10565
|
+
}), 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));
|
|
10566
|
+
}
|
|
10567
|
+
if (r.length) {
|
|
10568
|
+
this._reportMissingExternalIdsById(r, "updateDisplayLayout");
|
|
10569
|
+
return;
|
|
10570
|
+
}
|
|
10571
|
+
let a = this._cooldownTimestampByStreamDescription.keys();
|
|
10523
10572
|
for (; this._streamIdByStreamDescription.size > M.videoTracksCount;) {
|
|
10524
|
-
let e =
|
|
10573
|
+
let e = a.next();
|
|
10525
10574
|
if (e.done) {
|
|
10526
10575
|
this._debug.error("Cannot accommodate all streaming requests: tracks available " + M.videoTracksCount + "; requested streams: " + Array.from(this._streamIdByStreamDescription.keys()));
|
|
10527
10576
|
break;
|
|
@@ -10583,13 +10632,13 @@ var ls = 15, $ = class e extends b {
|
|
|
10583
10632
|
let n = Nn(e), a = i[n.participantId];
|
|
10584
10633
|
if (a) {
|
|
10585
10634
|
let e;
|
|
10586
|
-
typeof t == "number" ? e =
|
|
10635
|
+
typeof t == "number" ? e = Za(t) : (this._debug.warn(`Unexpected error code ${t} received for participant ${n.participantId}`), e = Xa.UNKNOWN_ERROR), r.push({
|
|
10587
10636
|
externalId: a.externalId,
|
|
10588
10637
|
errorReason: e
|
|
10589
10638
|
});
|
|
10590
10639
|
}
|
|
10591
10640
|
}
|
|
10592
|
-
if (r && r.length && (this._debug.warn("Could not allocate one or more participants", r), t)) throw new
|
|
10641
|
+
if (r && r.length && (this._debug.warn("Could not allocate one or more participants", r), t)) throw new fs("Could not allocate one or more participants", r);
|
|
10593
10642
|
}
|
|
10594
10643
|
async _cleanupCooldownQueue() {
|
|
10595
10644
|
let e = {}, t = this._cooldownTimestampByStreamDescription.entries();
|
|
@@ -10597,7 +10646,7 @@ var ls = 15, $ = class e extends b {
|
|
|
10597
10646
|
let n = t.next();
|
|
10598
10647
|
if (n.done) break;
|
|
10599
10648
|
let r = n.value;
|
|
10600
|
-
if (r[1] +
|
|
10649
|
+
if (r[1] + cs > Date.now()) break;
|
|
10601
10650
|
let i = r[0];
|
|
10602
10651
|
await this._stopStreaming(i), e[i] = { stopStream: !0 };
|
|
10603
10652
|
} while (!0);
|
|
@@ -10613,17 +10662,22 @@ var ls = 15, $ = class e extends b {
|
|
|
10613
10662
|
async _onParticipantPromoted(e) {
|
|
10614
10663
|
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);
|
|
10615
10664
|
}
|
|
10616
|
-
|
|
10665
|
+
_onChatRoomUpdated(e, t = 0, n = [], r, i) {
|
|
10617
10666
|
this._debug.log(`Chat room updated: ${e}`);
|
|
10618
|
-
let a = [];
|
|
10667
|
+
let a = [], o = [];
|
|
10619
10668
|
n.length && n.forEach((e) => {
|
|
10620
10669
|
if (e.externalId) {
|
|
10621
10670
|
let t = Q.fromSignaling(e.externalId);
|
|
10622
10671
|
a.push(t), this._api.cacheExternalId(e.id.id, t);
|
|
10623
|
-
} else
|
|
10672
|
+
} else {
|
|
10673
|
+
let t = this._getExternalIdByParticipantId(e.id.id);
|
|
10674
|
+
t ? a.push(t) : o.push(e.id.id);
|
|
10675
|
+
}
|
|
10624
10676
|
});
|
|
10625
|
-
let
|
|
10626
|
-
|
|
10677
|
+
let { externalIds: s, missingIds: c } = this._getExternalIdsByParticipantIds(r ?? []);
|
|
10678
|
+
o.push(...c);
|
|
10679
|
+
let { externalIds: l, missingIds: u } = this._getExternalIdsByParticipantIds(i ?? []);
|
|
10680
|
+
o.push(...u), this._reportMissingExternalIds(o, "CHAT_ROOM_UPDATED"), L.onChatRoomUpdated(e, t, a, s, l, this.id);
|
|
10627
10681
|
}
|
|
10628
10682
|
_onSharedMovieUpdate(e) {
|
|
10629
10683
|
let t = this._conversation?.externalId;
|
|
@@ -10796,10 +10850,10 @@ var ls = 15, $ = class e extends b {
|
|
|
10796
10850
|
throw Error("transport is not initialized");
|
|
10797
10851
|
}
|
|
10798
10852
|
_isCallAdmin() {
|
|
10799
|
-
return this._conversation ? j.includesOneOf(this._conversation.roles, [
|
|
10853
|
+
return this._conversation ? j.includesOneOf(this._conversation.roles, [Qa.ADMIN, Qa.CREATOR]) : !1;
|
|
10800
10854
|
}
|
|
10801
10855
|
_checkAdminRole() {
|
|
10802
|
-
if (this._conversation && !j.includesOneOf(this._conversation.roles, [
|
|
10856
|
+
if (this._conversation && !j.includesOneOf(this._conversation.roles, [Qa.ADMIN, Qa.CREATOR])) throw Error("You don't have the required permission");
|
|
10803
10857
|
}
|
|
10804
10858
|
_isCalledState() {
|
|
10805
10859
|
return this._participantState === Z.CALLED;
|
|
@@ -10837,43 +10891,46 @@ var ls = 15, $ = class e extends b {
|
|
|
10837
10891
|
async changeOptions(e) {
|
|
10838
10892
|
if (this._signaling.ready && this._conversation) {
|
|
10839
10893
|
this._checkAdminRole(), await this._signaling.changeOptions(e);
|
|
10840
|
-
let t =
|
|
10894
|
+
let t = qa(this._conversation.options, e);
|
|
10841
10895
|
this._onOptionsChanged(t);
|
|
10842
10896
|
}
|
|
10843
10897
|
}
|
|
10844
10898
|
async getWaitingHall(e, t, n) {
|
|
10845
10899
|
if (!this._signaling) return Promise.reject();
|
|
10846
10900
|
let r = null;
|
|
10847
|
-
if (e && (r =
|
|
10901
|
+
if (e && (r = io(e), r)) {
|
|
10848
10902
|
let e = this._api.getDecorativeIdByInitialId(r.id);
|
|
10849
|
-
r.id = e
|
|
10903
|
+
r.id = e ?? r.id;
|
|
10850
10904
|
}
|
|
10851
10905
|
let i = await this._signaling.getWaitingHall(r, t, n);
|
|
10852
10906
|
if (i.error) return Promise.reject(i.message);
|
|
10853
|
-
let a = i.participants || [], { externalIds: o } =
|
|
10854
|
-
return a.length && i.hasMore && (s =
|
|
10907
|
+
let a = i.participants || [], { externalIds: o } = this._resolveWaitingHallExternalIds(a, "getWaitingHall"), s = null;
|
|
10908
|
+
return a.length && i.hasMore && (s = ro(a[a.length - 1].id)), {
|
|
10855
10909
|
participants: o,
|
|
10856
10910
|
pageMarker: s,
|
|
10857
10911
|
totalCount: i.totalCount || 0
|
|
10858
10912
|
};
|
|
10859
10913
|
}
|
|
10860
|
-
|
|
10861
|
-
let
|
|
10914
|
+
_resolveWaitingHallExternalIds(e, t) {
|
|
10915
|
+
let n = [], r = [], i = [];
|
|
10862
10916
|
return e.length && e.forEach((e) => {
|
|
10863
10917
|
if (e.externalId) {
|
|
10864
|
-
let
|
|
10865
|
-
|
|
10866
|
-
} else
|
|
10867
|
-
|
|
10868
|
-
|
|
10869
|
-
|
|
10918
|
+
let t = Q.fromSignaling(e.externalId);
|
|
10919
|
+
n.push(e.id.addedTs), r.push(t), this._api.cacheExternalId(e.id.id, t);
|
|
10920
|
+
} else {
|
|
10921
|
+
let t = this._getExternalIdByParticipantId(e.id.id);
|
|
10922
|
+
t ? (r.push(t), n.push(e.id.addedTs)) : i.push(e.id.id);
|
|
10923
|
+
}
|
|
10924
|
+
}), this._reportMissingExternalIds(i, t), {
|
|
10925
|
+
externalIds: r,
|
|
10926
|
+
timestamps: n
|
|
10870
10927
|
};
|
|
10871
10928
|
}
|
|
10872
10929
|
async getAudienceModeHands() {
|
|
10873
10930
|
if (!this._signaling.ready) throw Error("Signaling is not ready");
|
|
10874
10931
|
let e = await this._signaling.getHandQueue();
|
|
10875
10932
|
if (e.error) return Promise.reject(e.message);
|
|
10876
|
-
let t = e.participants || [], { externalIds: n, timestamps: r } =
|
|
10933
|
+
let t = e.participants || [], { externalIds: n, timestamps: r } = this._resolveWaitingHallExternalIds(t, "getAudienceModeHands");
|
|
10877
10934
|
return {
|
|
10878
10935
|
timestamps: r,
|
|
10879
10936
|
participants: n,
|
|
@@ -10882,7 +10939,7 @@ var ls = 15, $ = class e extends b {
|
|
|
10882
10939
|
}
|
|
10883
10940
|
async promoteParticipant(e, t) {
|
|
10884
10941
|
if (this._signaling && this._conversation) try {
|
|
10885
|
-
if (!j.includesOneOf(this._conversation.options, [
|
|
10942
|
+
if (!j.includesOneOf(this._conversation.options, [Ga.WAITING_HALL, Ga.AUDIENCE_MODE])) throw Error("Unable to promote a participant in the conversation with current options");
|
|
10886
10943
|
if (this._checkAdminRole(), !e && t) throw Error("participantId is required");
|
|
10887
10944
|
await this._signaling.promoteParticipant(e, t);
|
|
10888
10945
|
} catch (t) {
|
|
@@ -11042,7 +11099,7 @@ var ls = 15, $ = class e extends b {
|
|
|
11042
11099
|
unmuteOptions: e.unmuteOptions || [],
|
|
11043
11100
|
observedIds: e.observedIds || [],
|
|
11044
11101
|
markers: this._denormalizeMarkers(t, e.markers)
|
|
11045
|
-
}, e
|
|
11102
|
+
}, j.composeDecorativeId(e));
|
|
11046
11103
|
}));
|
|
11047
11104
|
}
|
|
11048
11105
|
async getParticipantListChunk(e) {
|
|
@@ -11054,7 +11111,7 @@ var ls = 15, $ = class e extends b {
|
|
|
11054
11111
|
let a = this._transport?.getState();
|
|
11055
11112
|
return n.participants.forEach((e) => {
|
|
11056
11113
|
let t = j.composeId(e), n = r[t];
|
|
11057
|
-
this._updateParticipantExternalId(n, e), this._setSessionState(n, this._remoteParticipantSessionState(t, e.sessionState)), n.isOnHold || this._setTransportStatus(n,
|
|
11114
|
+
this._updateParticipantExternalId(n, e), this._setSessionState(n, this._remoteParticipantSessionState(t, e.sessionState)), n.isOnHold || this._setTransportStatus(n, to.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);
|
|
11058
11115
|
}), this._participantListChunkToExternalChunk(n);
|
|
11059
11116
|
}
|
|
11060
11117
|
async _getInitialParticiapntListChunk() {
|
|
@@ -11068,7 +11125,7 @@ var ls = 15, $ = class e extends b {
|
|
|
11068
11125
|
_onLocalMediaStreamChanged(e) {
|
|
11069
11126
|
if (!this._conversation || !this._mediaSource) return;
|
|
11070
11127
|
let t = this._mediaSource.mediaSettings;
|
|
11071
|
-
this._debug.debug("Local media stream changed", t), e.kind === k.audio && this._mediaSource && (this._audioFix = new
|
|
11128
|
+
this._debug.debug("Local media stream changed", t), e.kind === k.audio && this._mediaSource && (this._audioFix = new go(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);
|
|
11072
11129
|
}
|
|
11073
11130
|
_onScreenSharingStatus(e) {
|
|
11074
11131
|
let t = this.mediaSettings;
|
|
@@ -11088,7 +11145,7 @@ var ls = 15, $ = class e extends b {
|
|
|
11088
11145
|
this._warnParticipantNotInConversation(e);
|
|
11089
11146
|
return;
|
|
11090
11147
|
}
|
|
11091
|
-
r.mediaSettings = t, ["ACTIVE", "HELD"].includes(this._state) && L.onRemoteMediaSettings(r.externalId, t, r.markers, this.id), this._specListener && this._specListener.onChangeRemoteMediaSettings(e, t);
|
|
11148
|
+
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);
|
|
11092
11149
|
}
|
|
11093
11150
|
_extractLocalParticipantFromConnection(e) {
|
|
11094
11151
|
let t = this._api.getUserId();
|
|
@@ -11104,7 +11161,7 @@ var ls = 15, $ = class e extends b {
|
|
|
11104
11161
|
this._warnParticipantNotInConversation(e);
|
|
11105
11162
|
return;
|
|
11106
11163
|
}
|
|
11107
|
-
n.participantState = t || {}, ["ACTIVE", "HELD"].includes(this._state) && L.onRemoteParticipantState(n.externalId, n.participantState, n.markers, this.id);
|
|
11164
|
+
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"));
|
|
11108
11165
|
}
|
|
11109
11166
|
_changeMultipleParticipantState(e, t) {
|
|
11110
11167
|
this._debug.debug("Multiple participants state changed", e);
|
|
@@ -11198,9 +11255,9 @@ var ls = 15, $ = class e extends b {
|
|
|
11198
11255
|
for (let n of e.conversation.participants) {
|
|
11199
11256
|
let e = j.composeId(n), i = n.roles || [];
|
|
11200
11257
|
if (this._isMe(e)) {
|
|
11201
|
-
|
|
11258
|
+
$a(this._conversation.roles, i) || this._onRolesChanged(e, i), t = () => {
|
|
11202
11259
|
this._registerParticipantLocalMuteState({
|
|
11203
|
-
muteStates:
|
|
11260
|
+
muteStates: lo(n),
|
|
11204
11261
|
unmuteOptions: n.unmuteOptions
|
|
11205
11262
|
});
|
|
11206
11263
|
};
|
|
@@ -11218,7 +11275,7 @@ var ls = 15, $ = class e extends b {
|
|
|
11218
11275
|
let t = E(n.mediaSettings);
|
|
11219
11276
|
Wt(t, a.mediaSettings) || this._changeRemoteMediaSettings(e, t);
|
|
11220
11277
|
let r = j.mapParticipantState(n), o = a.participantState;
|
|
11221
|
-
j.isEqualParticipantState(r, o) || await this._changeRemoteParticipantState(e, r),
|
|
11278
|
+
j.isEqualParticipantState(r, o) || await this._changeRemoteParticipantState(e, r), $a(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));
|
|
11222
11279
|
}
|
|
11223
11280
|
}
|
|
11224
11281
|
let i = this._participants;
|
|
@@ -11239,30 +11296,37 @@ var ls = 15, $ = class e extends b {
|
|
|
11239
11296
|
async _onAcceptedCall(e) {
|
|
11240
11297
|
let t = j.composeMessageId(e), n = j.getPeerIdString(e.peerId);
|
|
11241
11298
|
if (this._debug.debug(`Participant accepted call [${t}]`), this._statFirstMediaReceived.markAcceptedCall(this._transport?.getTopology()), this._conversation && this._isMe(t)) {
|
|
11299
|
+
if (this._conversation.concurrent) return;
|
|
11242
11300
|
this._close(new O(D.MISSED), { errorText: "Call accepted on other device" });
|
|
11243
11301
|
return;
|
|
11244
11302
|
}
|
|
11245
|
-
this._conversation?.direction ===
|
|
11303
|
+
this._conversation?.direction === Va.OUTGOING && !this._conversation.concurrent && this._stats.lifecycle.markOutgoingAccepted();
|
|
11246
11304
|
let r = this._getParticipant(t);
|
|
11247
11305
|
if (!r) {
|
|
11248
|
-
let n = this._api.getDecorativeIdByInitialId(t)
|
|
11306
|
+
let n = this._api.getDecorativeIdByInitialId(t);
|
|
11249
11307
|
r = this._registerParticipantInCache(this._createParticipant({
|
|
11250
11308
|
id: t,
|
|
11251
11309
|
externalId: e.externalId ? Q.fromSignaling(e.externalId, e.deviceIdx) : void 0,
|
|
11252
11310
|
mediaSettings: E(e.mediaSettings)
|
|
11253
|
-
},
|
|
11311
|
+
}, n));
|
|
11254
11312
|
} else if (e.externalId) {
|
|
11255
11313
|
let t = Q.fromSignaling(e.externalId, e.deviceIdx);
|
|
11256
11314
|
r.externalId = t, this._api.cacheExternalId(r.id, t);
|
|
11257
11315
|
}
|
|
11258
|
-
r.state = Z.ACCEPTED, r.mediaSettings = E(e.mediaSettings), this._logWithMediaSettings(C.ACCEPTED_OUTGOING, r.mediaSettings), this._conversation && this._conversation.direction ===
|
|
11316
|
+
r.state = Z.ACCEPTED, r.mediaSettings = E(e.mediaSettings), this._logWithMediaSettings(C.ACCEPTED_OUTGOING, r.mediaSettings), this._conversation && this._conversation.direction === Va.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);
|
|
11259
11317
|
let i = Object.keys(r.muteStates);
|
|
11260
|
-
i.length && this._onMuteParticipant({
|
|
11318
|
+
if (i.length && this._onMuteParticipant({
|
|
11261
11319
|
muteStates: r.muteStates,
|
|
11262
11320
|
mediaOptions: i,
|
|
11263
11321
|
stateUpdated: !0,
|
|
11264
11322
|
participantId: t
|
|
11265
|
-
}), ["ACTIVE", "HELD"].includes(this._state)
|
|
11323
|
+
}), ["ACTIVE", "HELD"].includes(this._state)) {
|
|
11324
|
+
if (!r.externalId) {
|
|
11325
|
+
this._reportMissingExternalIds([t], "ACCEPTED_CALL");
|
|
11326
|
+
return;
|
|
11327
|
+
}
|
|
11328
|
+
L.onAcceptedCall(r.externalId, Sa.parseCapabilities(e.capabilities), this.id);
|
|
11329
|
+
}
|
|
11266
11330
|
}
|
|
11267
11331
|
async _onHungup(e) {
|
|
11268
11332
|
this._debug.debug(`Participant hungup [${e.participantId}]`, { reason: e.reason });
|
|
@@ -11298,7 +11362,7 @@ var ls = 15, $ = class e extends b {
|
|
|
11298
11362
|
return;
|
|
11299
11363
|
}
|
|
11300
11364
|
if (e.connected) {
|
|
11301
|
-
let e =
|
|
11365
|
+
let e = to.fromTransportState(this._transport?.getState());
|
|
11302
11366
|
e && this._setTransportStatus(n, e);
|
|
11303
11367
|
}
|
|
11304
11368
|
this._setSessionState(n, { connected: e.connected });
|
|
@@ -11331,7 +11395,7 @@ var ls = 15, $ = class e extends b {
|
|
|
11331
11395
|
return;
|
|
11332
11396
|
}
|
|
11333
11397
|
if (!n) {
|
|
11334
|
-
let { participant: r } = e, i = r
|
|
11398
|
+
let { participant: r } = e, i = j.composeDecorativeId(r);
|
|
11335
11399
|
this._registerParticipant({
|
|
11336
11400
|
id: t,
|
|
11337
11401
|
externalId: Q.fromSignalingParticipant(r, !0, !0),
|
|
@@ -11358,7 +11422,7 @@ var ls = 15, $ = class e extends b {
|
|
|
11358
11422
|
return;
|
|
11359
11423
|
}
|
|
11360
11424
|
if (!n) {
|
|
11361
|
-
let { participant: r } = e, i = r
|
|
11425
|
+
let { participant: r } = e, i = j.composeDecorativeId(r);
|
|
11362
11426
|
this._registerParticipant({
|
|
11363
11427
|
id: t,
|
|
11364
11428
|
externalId: Q.fromSignalingParticipant(r, !0, !0),
|
|
@@ -11375,7 +11439,7 @@ var ls = 15, $ = class e extends b {
|
|
|
11375
11439
|
isOnHold: !!r.onHold
|
|
11376
11440
|
}, i), n = this._getParticipant(t);
|
|
11377
11441
|
}
|
|
11378
|
-
this._conversation && this._conversation.direction ===
|
|
11442
|
+
this._conversation && this._conversation.direction === Va.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);
|
|
11379
11443
|
let i = Object.keys(n.muteStates);
|
|
11380
11444
|
i.length && this._onMuteParticipant({
|
|
11381
11445
|
muteStates: n.muteStates,
|
|
@@ -11401,7 +11465,7 @@ var ls = 15, $ = class e extends b {
|
|
|
11401
11465
|
_onParticipantsStateChanged(e) {
|
|
11402
11466
|
let { participants: t, roomId: n } = e;
|
|
11403
11467
|
t.map(({ id: e, markers: t }) => this._registerParticipantAndSetMarkersIfChunkEnabled(e, t));
|
|
11404
|
-
let r = /* @__PURE__ */ new Map(), i = t.map(({ id: e, participantState: t }) => [e, this._getExternalIdByParticipantId(e)
|
|
11468
|
+
let r = /* @__PURE__ */ new Map(), i = t.map(({ id: e, participantState: t }) => [e, this._getExternalIdByParticipantId(e) ? j.mapParticipantState({ participantState: t }) : void 0]);
|
|
11405
11469
|
try {
|
|
11406
11470
|
i.forEach(([e, t]) => {
|
|
11407
11471
|
t && r.set(e, t);
|
|
@@ -11566,15 +11630,15 @@ var ls = 15, $ = class e extends b {
|
|
|
11566
11630
|
L.onAsrTranscription(t, e.text, e.timestamp, e.duration, this.id);
|
|
11567
11631
|
}
|
|
11568
11632
|
async _onRolesChanged(e, t) {
|
|
11569
|
-
if (this._conversation && this._isMe(e) &&
|
|
11633
|
+
if (this._conversation && this._isMe(e) && !$a(this._conversation.roles, t)) {
|
|
11570
11634
|
this._debug.debug(`Local roles changed: ${t}`), this._conversation.roles = t, L.onLocalRolesChanged(t, !1, this.id), this._processMuteState({
|
|
11571
|
-
mediaOptions:
|
|
11635
|
+
mediaOptions: ao(this._getMuteStatesForCurrentRoom(), Ja.MUTE_PERMANENT),
|
|
11572
11636
|
stateUpdated: !0
|
|
11573
|
-
}), j.includesOneOf(t, [
|
|
11637
|
+
}), j.includesOneOf(t, [Qa.ADMIN, Qa.CREATOR]) ? this._refreshRooms(!0) : t.length || this._onRoomSwitched(null);
|
|
11574
11638
|
return;
|
|
11575
11639
|
}
|
|
11576
11640
|
let n = this._getParticipant(e);
|
|
11577
|
-
n &&
|
|
11641
|
+
n && !$a(n.roles, t) && (this._debug.debug(`Roles for participant [${e}] changed: ${t}`), n.roles = t, L.onRolesChanged(n.externalId, t, !1, this.id));
|
|
11578
11642
|
}
|
|
11579
11643
|
async _onMuteParticipant(e, t = !1) {
|
|
11580
11644
|
if (!this._conversation) return;
|
|
@@ -11623,7 +11687,7 @@ var ls = 15, $ = class e extends b {
|
|
|
11623
11687
|
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);
|
|
11624
11688
|
for (let [e, i] of d) {
|
|
11625
11689
|
let a = this._isCallAdmin() && n;
|
|
11626
|
-
if (!(i !==
|
|
11690
|
+
if (!(i !== Ja.MUTE && i !== Ja.MUTE_PERMANENT || a) && (this._isCallAdmin() && i === Ja.MUTE_PERMANENT && !n && (l[e] = Ja.MUTE), !(!t.includes(e) || r))) switch (e) {
|
|
11627
11691
|
case S.VIDEO:
|
|
11628
11692
|
u.isVideoEnabled && (L.onDeviceSwitched(S.VIDEO, !1, this.id), await this.toggleLocalVideo(!1));
|
|
11629
11693
|
break;
|
|
@@ -11660,7 +11724,7 @@ var ls = 15, $ = class e extends b {
|
|
|
11660
11724
|
this._conversation.pinnedParticipantIdByRoom.set(r, t ? null : e);
|
|
11661
11725
|
}
|
|
11662
11726
|
_onOptionsChanged(e) {
|
|
11663
|
-
this._conversation && !
|
|
11727
|
+
this._conversation && !Ka(this._conversation.options, e) && (this._conversation.options = e, L.onOptionsChanged(e, this.id), e.includes(Ga.ADMIN_IS_HERE) ? this._conversation.restricted && this._conversation.waitingHall && L.onLocalStatus(N.WAITING_HALL, this.id) : e.includes(Ga.WAIT_FOR_ADMIN) && this._conversation.restricted && L.onLocalStatus(N.WAIT_FOR_ADMIN, this.id));
|
|
11664
11728
|
}
|
|
11665
11729
|
async _onNetworkStatus(e) {
|
|
11666
11730
|
if (this._conversation) {
|
|
@@ -11670,7 +11734,7 @@ var ls = 15, $ = class e extends b {
|
|
|
11670
11734
|
if (this._isMe(r) || r === "") e = this._conversation.networkRating;
|
|
11671
11735
|
else if (n[r]) e = n[r].networkRating;
|
|
11672
11736
|
else continue;
|
|
11673
|
-
if (e !== i) if (this._isMe(r) || r === "") this._conversation.networkRating = i,
|
|
11737
|
+
if (e !== i) if (this._isMe(r) || r === "") this._conversation.networkRating = i, Qr.getInstance().value = i, L.onLocalNetworkStatusChanged(i, this.id);
|
|
11674
11738
|
else {
|
|
11675
11739
|
let e = n[r];
|
|
11676
11740
|
e.networkRating = i, t.push({
|
|
@@ -11715,7 +11779,7 @@ var ls = 15, $ = class e extends b {
|
|
|
11715
11779
|
}
|
|
11716
11780
|
_changeFeatureSet() {
|
|
11717
11781
|
if (this._conversation) {
|
|
11718
|
-
let e = this._state === "ACTIVE", t = this._conversation.features.includes(
|
|
11782
|
+
let e = this._state === "ACTIVE", t = this._conversation.features.includes(Wa.ADD_PARTICIPANT);
|
|
11719
11783
|
L.onCallState(e, t, this._conversation, this.id);
|
|
11720
11784
|
}
|
|
11721
11785
|
}
|
|
@@ -11749,7 +11813,7 @@ var ls = 15, $ = class e extends b {
|
|
|
11749
11813
|
let n = this._getParticipant(e);
|
|
11750
11814
|
if (n) {
|
|
11751
11815
|
if (n.connectionStatus.sessionStateApplicable && n.connectionStatus.sessionState?.connected === !1) {
|
|
11752
|
-
let e =
|
|
11816
|
+
let e = to.fromTransportState(this._transport?.getState());
|
|
11753
11817
|
e && this._setTransportStatus(n, e), n.connectionStatus.sessionStateConnectedBySpeaker = !0;
|
|
11754
11818
|
let t = this._setTransportStatus(n, n.connectionStatus.transport);
|
|
11755
11819
|
this._emitParticipantTransition(n, t);
|
|
@@ -11759,7 +11823,7 @@ var ls = 15, $ = class e extends b {
|
|
|
11759
11823
|
}
|
|
11760
11824
|
async _onTransportStateChanged(e, t) {
|
|
11761
11825
|
this._debug.debug(`Transport state has changed: ${t}`, e);
|
|
11762
|
-
let n =
|
|
11826
|
+
let n = to.fromTransportState(t);
|
|
11763
11827
|
if (!n) return;
|
|
11764
11828
|
let r = this._participants, i = [], a = e.reduce((e, n) => {
|
|
11765
11829
|
if (n in r) {
|
|
@@ -11770,20 +11834,34 @@ var ls = 15, $ = class e extends b {
|
|
|
11770
11834
|
}, []);
|
|
11771
11835
|
a.length && (this._updateDisplayLayoutFromCache(i), this._setParticipantsStatus(a, n));
|
|
11772
11836
|
}
|
|
11773
|
-
async _onTransportLocalStateChanged(e) {
|
|
11837
|
+
async _onTransportLocalStateChanged(e, t) {
|
|
11774
11838
|
if (this._debug.debug(`Local transport state has changed: ${e}`), e === q.CONNECTED && (T.releaseFirefoxMicrophonePermissionWarmup(), L.onLocalStatus(N.CONNECTED, this.id), this._transport?.getTopology() === J.SERVER)) {
|
|
11775
11839
|
let e = Object.values(this._myLastRequestedLayouts);
|
|
11776
11840
|
await this.updateDisplayLayout(e), this._displayLayoutRequester.resend();
|
|
11777
11841
|
}
|
|
11778
|
-
this._state !== "HELD" && ((e === q.CONNECTING || e === q.RECONNECTING) && this._areTransportParticipantsOnHold()
|
|
11779
|
-
|
|
11780
|
-
|
|
11781
|
-
|
|
11782
|
-
|
|
11783
|
-
|
|
11784
|
-
|
|
11785
|
-
|
|
11786
|
-
|
|
11842
|
+
if (this._state !== "HELD" && !((e === q.CONNECTING || e === q.RECONNECTING) && this._areTransportParticipantsOnHold()) && (e === q.CONNECTING && L.onLocalStatus(N.CONNECTING, this.id), e === q.RECONNECTING && L.onLocalStatus(N.RECONNECT, this.id), e === q.FAILED && this._transport && this._transport.allocated().length === 0)) {
|
|
11843
|
+
if (t instanceof Kr) {
|
|
11844
|
+
this._close(new O(D.TIMEOUT, { callError: {
|
|
11845
|
+
scope: "network",
|
|
11846
|
+
source: "rtc",
|
|
11847
|
+
code: "reconnect-timeout",
|
|
11848
|
+
description: "peer-connection-timeout"
|
|
11849
|
+
} }), {
|
|
11850
|
+
errorText: "Peer connection reconnect timeout",
|
|
11851
|
+
signalingReason: D.TIMEOUT
|
|
11852
|
+
});
|
|
11853
|
+
return;
|
|
11854
|
+
}
|
|
11855
|
+
this._close(new O(D.FAILED, { callError: {
|
|
11856
|
+
scope: "network",
|
|
11857
|
+
source: "rtc",
|
|
11858
|
+
code: "connection-failed",
|
|
11859
|
+
description: "transport-failed"
|
|
11860
|
+
} }), {
|
|
11861
|
+
errorText: "Transport failed",
|
|
11862
|
+
signalingReason: D.FAILED
|
|
11863
|
+
});
|
|
11864
|
+
}
|
|
11787
11865
|
}
|
|
11788
11866
|
_areTransportParticipantsOnHold() {
|
|
11789
11867
|
if (!M.hold || !this._transport) return !1;
|
|
@@ -11793,15 +11871,15 @@ var ls = 15, $ = class e extends b {
|
|
|
11793
11871
|
return e.every((e) => t[e]?.isOnHold);
|
|
11794
11872
|
}
|
|
11795
11873
|
_onRemoteTrackAdded(e, t, n) {
|
|
11796
|
-
if (e.endsWith(
|
|
11797
|
-
else if (e.startsWith(
|
|
11798
|
-
else if (e.startsWith(
|
|
11874
|
+
if (e.endsWith(Jr.AUDIO_MIX)) this._debug.debug("Remote audio mix track added"), this._audioOutput.add(e, n), L.onRemoteMixedAudioStream(t, this.id);
|
|
11875
|
+
else if (e.startsWith(Jr.TRANSPARENT_AUDIO_TRACK_PREFIX)) this._debug.debug(`Remote transparent audio track added: ${e}`), this._audioOutput.add(e, n);
|
|
11876
|
+
else if (e.startsWith(Jr.PARTICIPANT_AGNOSTIC_TRACK_PREFIX)) this._debug.debug(`Participant-agnostic track added: ${e}`), this._streamByStreamId.set(e, t);
|
|
11799
11877
|
else {
|
|
11800
11878
|
this._debug.debug(`Remote track added on the participant [${e}]`, { kind: n.kind });
|
|
11801
11879
|
let r = this._getParticipant(e);
|
|
11802
11880
|
if (!r) {
|
|
11803
|
-
let t = this._api.getDecorativeIdByInitialId(e)
|
|
11804
|
-
this._debug.warn(`Conversation: track added before participant [id: ${e}, decorativeId: ${
|
|
11881
|
+
let t = this._api.getDecorativeIdByInitialId(e);
|
|
11882
|
+
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);
|
|
11805
11883
|
}
|
|
11806
11884
|
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) {
|
|
11807
11885
|
if (r.remoteStream = t, r.secondStream) return;
|
|
@@ -11822,7 +11900,7 @@ var ls = 15, $ = class e extends b {
|
|
|
11822
11900
|
}
|
|
11823
11901
|
}
|
|
11824
11902
|
async _removeAudioTrack(e, t, n) {
|
|
11825
|
-
if (e !==
|
|
11903
|
+
if (e !== Jr.AUDIO_MIX) {
|
|
11826
11904
|
let n = this._getParticipant(e);
|
|
11827
11905
|
if (!n || n.remoteStream && n.remoteStream !== t) return;
|
|
11828
11906
|
}
|
|
@@ -11837,7 +11915,7 @@ var ls = 15, $ = class e extends b {
|
|
|
11837
11915
|
if (this._statFirstMediaReceived.markTopologyChanged(e), e === J.DIRECT && (this._onRemoteSignalledStall([]), this._onAudioMixStall(!1)), this._conversation) {
|
|
11838
11916
|
this._conversation.topology = e;
|
|
11839
11917
|
for (let e of Object.values(this._participants)) {
|
|
11840
|
-
let t =
|
|
11918
|
+
let t = to.setSessionStateApplicable(e.connectionStatus, this._isParticipantSessionStateApplicable(e.id));
|
|
11841
11919
|
this._emitParticipantTransition(e, t);
|
|
11842
11920
|
}
|
|
11843
11921
|
this._changeFeatureSet(), this._forceOpenTransportForAloneInCall();
|
|
@@ -11893,7 +11971,7 @@ var ls = 15, $ = class e extends b {
|
|
|
11893
11971
|
].includes(t) ? null : this._setTransportStatus(e, t), n);
|
|
11894
11972
|
}
|
|
11895
11973
|
_setParticipantsStalled(e, t) {
|
|
11896
|
-
this._updateParticipantsStatus(e, (e) =>
|
|
11974
|
+
this._updateParticipantsStatus(e, (e) => to.setStalled(e.connectionStatus, t));
|
|
11897
11975
|
}
|
|
11898
11976
|
_updateParticipantsStatus(e, t, n = null) {
|
|
11899
11977
|
let r = e.reduce((e, n) => {
|
|
@@ -11911,46 +11989,63 @@ var ls = 15, $ = class e extends b {
|
|
|
11911
11989
|
}
|
|
11912
11990
|
_onRoomsUpdated(e) {
|
|
11913
11991
|
if (this._isCalledState()) return;
|
|
11914
|
-
let t = {};
|
|
11915
|
-
for (let
|
|
11916
|
-
let
|
|
11917
|
-
|
|
11918
|
-
|
|
11919
|
-
|
|
11920
|
-
|
|
11992
|
+
let t = {}, n = [], r = [];
|
|
11993
|
+
for (let i of Object.keys(Ya)) {
|
|
11994
|
+
let a = e.updates[i];
|
|
11995
|
+
a && (a?.rooms?.forEach((e) => {
|
|
11996
|
+
let { room: t, missingParticipantIds: i } = this._convertRoomToExternal(e);
|
|
11997
|
+
t && n.push(t), r.push(...i);
|
|
11998
|
+
}), t[i] = {
|
|
11999
|
+
rooms: n,
|
|
12000
|
+
roomIds: a?.roomIds,
|
|
12001
|
+
deactivated: a?.deactivated
|
|
11921
12002
|
});
|
|
11922
12003
|
}
|
|
11923
|
-
L.onRoomsUpdated(t, this.id);
|
|
12004
|
+
this._reportMissingExternalIds(r, "ROOMS_UPDATED"), L.onRoomsUpdated(t, this.id);
|
|
11924
12005
|
}
|
|
11925
12006
|
_onRoomUpdated(e) {
|
|
11926
|
-
let t = this._convertRoomToExternal(e.room || null);
|
|
11927
|
-
e.events.some((e) => e ===
|
|
12007
|
+
let { room: t, missingParticipantIds: n } = this._convertRoomToExternal(e.room || null);
|
|
12008
|
+
e.events.some((e) => e === Ya.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));
|
|
11928
12009
|
}
|
|
11929
12010
|
_convertRoomToExternal(e) {
|
|
11930
|
-
if (!e) return
|
|
11931
|
-
|
|
12011
|
+
if (!e) return {
|
|
12012
|
+
room: null,
|
|
12013
|
+
missingParticipantIds: []
|
|
12014
|
+
};
|
|
12015
|
+
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 ?? []);
|
|
12016
|
+
t.push(...r, ...a, ...s);
|
|
12017
|
+
let c;
|
|
12018
|
+
if (e.pinnedParticipantId) {
|
|
12019
|
+
let n = this._getExternalIdByParticipantId(e.pinnedParticipantId);
|
|
12020
|
+
n ? c = n : t.push(e.pinnedParticipantId);
|
|
12021
|
+
}
|
|
11932
12022
|
return {
|
|
11933
|
-
|
|
11934
|
-
|
|
11935
|
-
|
|
11936
|
-
|
|
11937
|
-
|
|
11938
|
-
|
|
11939
|
-
|
|
11940
|
-
|
|
11941
|
-
|
|
11942
|
-
|
|
11943
|
-
|
|
11944
|
-
|
|
12023
|
+
room: {
|
|
12024
|
+
id: e.id,
|
|
12025
|
+
name: e.name,
|
|
12026
|
+
participantCount: e.participantCount,
|
|
12027
|
+
participantIds: n,
|
|
12028
|
+
addParticipantIds: i,
|
|
12029
|
+
removeParticipantIds: o,
|
|
12030
|
+
participants: e.participants?.participants ? this._participantListChunkToExternalChunk(e.participants) : void 0,
|
|
12031
|
+
active: e.active,
|
|
12032
|
+
muteStates: e.muteStates,
|
|
12033
|
+
pinnedParticipantId: c,
|
|
12034
|
+
countdownSec: e.countdownSec,
|
|
12035
|
+
timeoutMs: e.timeoutMs
|
|
12036
|
+
},
|
|
12037
|
+
missingParticipantIds: t
|
|
11945
12038
|
};
|
|
11946
12039
|
}
|
|
11947
12040
|
async _onRoomParticipantsUpdated(e) {
|
|
11948
|
-
let t = this._transport?.getState(), n = e.roomId ?? null, r =
|
|
11949
|
-
|
|
12041
|
+
let t = this._transport?.getState(), n = e.roomId ?? null, r = [], { externalIds: i, missingIds: a } = this._getExternalIdsByParticipantIds(e.addedParticipantIds ?? []);
|
|
12042
|
+
r.push(...a);
|
|
12043
|
+
let o = e.addedParticipants;
|
|
12044
|
+
if (i.length && o?.length !== i.length && !this._isCalledState()) {
|
|
11950
12045
|
let e = this._convertExternalIdsToServerExternalIds(i);
|
|
11951
|
-
|
|
12046
|
+
o = (await this._signaling.getParticipants(e)).participants;
|
|
11952
12047
|
}
|
|
11953
|
-
let
|
|
12048
|
+
let s = o?.map((e) => {
|
|
11954
12049
|
let r = j.composeId(e);
|
|
11955
12050
|
return this._createParticipant({
|
|
11956
12051
|
id: r,
|
|
@@ -11966,38 +12061,38 @@ var ls = 15, $ = class e extends b {
|
|
|
11966
12061
|
observedIds: e.observedIds || [],
|
|
11967
12062
|
markers: this._denormalizeMarkers(r, e.markers),
|
|
11968
12063
|
isInRoom: n !== null
|
|
11969
|
-
}, e
|
|
11970
|
-
}) || [],
|
|
11971
|
-
for (let e of
|
|
11972
|
-
this._transport?.getState() === q.IDLE && !this._isCalledState() && this._openTransport(
|
|
11973
|
-
let
|
|
12064
|
+
}, j.composeDecorativeId(e));
|
|
12065
|
+
}) || [], c = !1;
|
|
12066
|
+
for (let e of s) e.id === this._conversation?.compositeUserId && (c = !0), this._registerParticipantInCache(e);
|
|
12067
|
+
this._transport?.getState() === q.IDLE && !this._isCalledState() && this._openTransport(s, !0);
|
|
12068
|
+
let l = [];
|
|
11974
12069
|
if (e?.removedParticipantMarkers) {
|
|
11975
12070
|
for (let t of e.removedParticipantMarkers) if (t.GRID?.id) {
|
|
11976
12071
|
let e = this._getExternalIdByParticipantId(t.GRID.id);
|
|
11977
|
-
|
|
12072
|
+
e ? l.push(e) : r.push(t.GRID.id);
|
|
11978
12073
|
}
|
|
11979
12074
|
}
|
|
11980
|
-
if (
|
|
12075
|
+
if (this._reportMissingExternalIds(r, "ROOM_PARTICIPANTS_UPDATED"), c && await this._onRoomSwitched(n), l) {
|
|
11981
12076
|
let e = this._conversation?.pinnedParticipantIdByRoom.get(n);
|
|
11982
12077
|
if (e) {
|
|
11983
12078
|
let t = this._getExternalIdByParticipantId(e);
|
|
11984
12079
|
if (t) {
|
|
11985
|
-
for (let e of
|
|
12080
|
+
for (let e of l) if (Q.compare(t, e)) {
|
|
11986
12081
|
this._conversation?.pinnedParticipantIdByRoom.delete(n);
|
|
11987
12082
|
break;
|
|
11988
12083
|
}
|
|
11989
12084
|
}
|
|
11990
12085
|
}
|
|
11991
12086
|
}
|
|
11992
|
-
let
|
|
12087
|
+
let u = {
|
|
11993
12088
|
roomId: n,
|
|
11994
12089
|
participantCount: e.participantCount,
|
|
11995
12090
|
addedParticipantIds: i,
|
|
11996
|
-
addedParticipants: j.mapSharedParticipants(
|
|
12091
|
+
addedParticipants: j.mapSharedParticipants(s),
|
|
11997
12092
|
removedParticipantMarkers: e?.removedParticipantMarkers,
|
|
11998
|
-
removedParticipantIds:
|
|
12093
|
+
removedParticipantIds: l
|
|
11999
12094
|
};
|
|
12000
|
-
this._isCalledState() || L.onRoomParticipantsUpdated(
|
|
12095
|
+
this._isCalledState() || L.onRoomParticipantsUpdated(u, this.id);
|
|
12001
12096
|
}
|
|
12002
12097
|
async _onRoomSwitched(e, t = !1) {
|
|
12003
12098
|
if (!this._conversation || this._conversation.roomId === e) return;
|
|
@@ -12017,11 +12112,11 @@ var ls = 15, $ = class e extends b {
|
|
|
12017
12112
|
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) {
|
|
12018
12113
|
let e = this._participants;
|
|
12019
12114
|
await this._registerParticipants(t?.participants?.participants?.filter((t) => !e[j.composeId(t)]) || [], !0);
|
|
12020
|
-
let n = this._convertRoomToExternal(t);
|
|
12115
|
+
let { room: n } = this._convertRoomToExternal(t);
|
|
12021
12116
|
n && r.push(n);
|
|
12022
12117
|
}
|
|
12023
12118
|
}
|
|
12024
|
-
r.length && !this._isCalledState() && L.onRoomsUpdated({ [
|
|
12119
|
+
r.length && !this._isCalledState() && L.onRoomsUpdated({ [Ya.UPDATE]: { rooms: r } }, this.id);
|
|
12025
12120
|
}
|
|
12026
12121
|
_onFeedback(e) {
|
|
12027
12122
|
let t = [];
|
|
@@ -12051,7 +12146,9 @@ var ls = 15, $ = class e extends b {
|
|
|
12051
12146
|
return;
|
|
12052
12147
|
}
|
|
12053
12148
|
let o = Q.fromSignaling(r, a.deviceIdx);
|
|
12054
|
-
|
|
12149
|
+
L.onParticipantIdChanged(a, o, this.id);
|
|
12150
|
+
let s = j.compose(n, a.deviceIdx), c = j.compose(t, a.deviceIdx);
|
|
12151
|
+
if (this._api.cacheExternalId(s, o), this._api.mapDecorativeId(s, c), i) this._conversation.externalId = o;
|
|
12055
12152
|
else {
|
|
12056
12153
|
let e = this._participants;
|
|
12057
12154
|
e[t].externalId = o;
|
|
@@ -12095,19 +12192,19 @@ var ls = 15, $ = class e extends b {
|
|
|
12095
12192
|
_getParticipant(e) {
|
|
12096
12193
|
return this._participants[e];
|
|
12097
12194
|
}
|
|
12098
|
-
},
|
|
12195
|
+
}, ds = null, fs = class e extends Error {
|
|
12099
12196
|
constructor(t, n) {
|
|
12100
12197
|
super(t), h(this, "participantErrors", void 0), Object.setPrototypeOf(this, e.prototype), this.participantErrors = n;
|
|
12101
12198
|
}
|
|
12102
|
-
},
|
|
12103
|
-
function
|
|
12104
|
-
|
|
12199
|
+
}, ps = null, ms = null, hs = 64 * 1024;
|
|
12200
|
+
function gs() {
|
|
12201
|
+
ps = null, ms = null;
|
|
12105
12202
|
}
|
|
12106
|
-
function
|
|
12203
|
+
function _s(e) {
|
|
12107
12204
|
return e?.endsWith("/") ? e.slice(0, -1) : e;
|
|
12108
12205
|
}
|
|
12109
|
-
async function
|
|
12110
|
-
let n =
|
|
12206
|
+
async function vs(e = null, t) {
|
|
12207
|
+
let n = _s(e ?? M.apiBaseUrl);
|
|
12111
12208
|
if (n) return n;
|
|
12112
12209
|
if ((t ?? M.apiEnv) !== "AUTO") return M.apiEndpoint(t);
|
|
12113
12210
|
try {
|
|
@@ -12122,25 +12219,25 @@ async function _s(e = null, t) {
|
|
|
12122
12219
|
return R.warn("Failed to resolve API endpoint using DNS, default is used", e), M.apiEndpoint(t);
|
|
12123
12220
|
}
|
|
12124
12221
|
}
|
|
12125
|
-
async function
|
|
12126
|
-
return
|
|
12222
|
+
async function ys() {
|
|
12223
|
+
return ps || ms || (ms = vs(), ps = await ms, ms = null, ps);
|
|
12127
12224
|
}
|
|
12128
|
-
async function
|
|
12225
|
+
async function bs(e, t = {}, n = !1) {
|
|
12129
12226
|
if (!window.Blob || !window.navigator.sendBeacon) return;
|
|
12130
|
-
await
|
|
12131
|
-
let r =
|
|
12132
|
-
window.navigator.sendBeacon(`${
|
|
12227
|
+
await ys();
|
|
12228
|
+
let r = Es(e, t, n), i = new window.Blob([r], { type: "application/x-www-form-urlencoded" });
|
|
12229
|
+
window.navigator.sendBeacon(`${ps}/fb.do`, i);
|
|
12133
12230
|
}
|
|
12134
|
-
async function
|
|
12135
|
-
return await
|
|
12231
|
+
async function xs(e, t = {}, n = !1, r) {
|
|
12232
|
+
return await ys(), Cs(Es(e, t, n), r);
|
|
12136
12233
|
}
|
|
12137
|
-
async function
|
|
12138
|
-
await
|
|
12139
|
-
let r =
|
|
12140
|
-
return
|
|
12234
|
+
async function Ss(e, t = {}, n = !1) {
|
|
12235
|
+
await ys();
|
|
12236
|
+
let r = Es(e, t, n);
|
|
12237
|
+
return Cs(r, void 0, new Blob([r]).size <= hs);
|
|
12141
12238
|
}
|
|
12142
|
-
async function
|
|
12143
|
-
let r = `${t ??
|
|
12239
|
+
async function Cs(e, t, n = !1) {
|
|
12240
|
+
let r = `${t ?? ps}/fb.do`, i = new AbortController(), a = new O(x.NETWORK, { callError: {
|
|
12144
12241
|
scope: "network",
|
|
12145
12242
|
source: "api",
|
|
12146
12243
|
code: "timeout",
|
|
@@ -12159,16 +12256,16 @@ async function Ss(e, t, n = !1) {
|
|
|
12159
12256
|
} catch {
|
|
12160
12257
|
o = { result: a };
|
|
12161
12258
|
}
|
|
12162
|
-
if (!t.ok && !
|
|
12259
|
+
if (!t.ok && !ws(o)) throw new O(x.API, { callError: {
|
|
12163
12260
|
scope: "server",
|
|
12164
12261
|
source: "api",
|
|
12165
12262
|
code: `http-${t.status}`,
|
|
12166
12263
|
description: "http-error"
|
|
12167
12264
|
} });
|
|
12168
|
-
if (
|
|
12265
|
+
if (ws(o)) throw o;
|
|
12169
12266
|
return o;
|
|
12170
12267
|
} catch (e) {
|
|
12171
|
-
throw e instanceof O ? e : i.signal.aborted ? a :
|
|
12268
|
+
throw e instanceof O ? e : i.signal.aborted ? a : ws(e) ? e : new O(x.NETWORK, { callError: {
|
|
12172
12269
|
scope: "network",
|
|
12173
12270
|
source: "api",
|
|
12174
12271
|
code: "fetch-failed",
|
|
@@ -12178,12 +12275,12 @@ async function Ss(e, t, n = !1) {
|
|
|
12178
12275
|
clearTimeout(o);
|
|
12179
12276
|
}
|
|
12180
12277
|
}
|
|
12181
|
-
function
|
|
12278
|
+
function ws(e) {
|
|
12182
12279
|
if (typeof e != "object" || !e) return !1;
|
|
12183
12280
|
let t = e;
|
|
12184
12281
|
return typeof t.error_code == "number" && typeof t.error_msg == "string";
|
|
12185
12282
|
}
|
|
12186
|
-
async function
|
|
12283
|
+
async function Ts(e, t) {
|
|
12187
12284
|
try {
|
|
12188
12285
|
let n = await fetch(e, {
|
|
12189
12286
|
method: "POST",
|
|
@@ -12196,7 +12293,7 @@ async function ws(e, t) {
|
|
|
12196
12293
|
throw R.warn("Failed to send form data", e), e;
|
|
12197
12294
|
}
|
|
12198
12295
|
}
|
|
12199
|
-
function
|
|
12296
|
+
function Es(e, t = {}, n = !1) {
|
|
12200
12297
|
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));
|
|
12201
12298
|
for (let [e, n] of Object.entries(t)) typeof n == "object" && (t[e] = JSON.stringify(n));
|
|
12202
12299
|
let r = "";
|
|
@@ -12205,7 +12302,7 @@ function Ts(e, t = {}, n = !1) {
|
|
|
12205
12302
|
}
|
|
12206
12303
|
//#endregion
|
|
12207
12304
|
//#region src/abstract/BaseApi.ts
|
|
12208
|
-
var
|
|
12305
|
+
var Ds = class {
|
|
12209
12306
|
constructor() {
|
|
12210
12307
|
h(this, "_abortSignal", void 0);
|
|
12211
12308
|
}
|
|
@@ -12223,22 +12320,16 @@ var Es = class {
|
|
|
12223
12320
|
}
|
|
12224
12321
|
log(e) {}
|
|
12225
12322
|
logClientStats(e) {}
|
|
12226
|
-
|
|
12227
|
-
return null;
|
|
12228
|
-
}
|
|
12229
|
-
getCachedRawOkIdByExternalId(e) {
|
|
12323
|
+
getCachedParticipantIdByExternalId(e) {
|
|
12230
12324
|
return null;
|
|
12231
12325
|
}
|
|
12232
|
-
|
|
12326
|
+
getCachedExternalIdByParticipantId(e) {
|
|
12233
12327
|
return null;
|
|
12234
12328
|
}
|
|
12235
12329
|
cacheExternalId(e, t) {}
|
|
12236
12330
|
mapDecorativeId(e, t) {}
|
|
12237
12331
|
unmapDecorativeId(e) {}
|
|
12238
12332
|
getDecorativeIdByInitialId(e) {}
|
|
12239
|
-
replaceByInitialIdIdIfExists(e) {
|
|
12240
|
-
return typeof e == "string" ? parseInt(e, 10) : e;
|
|
12241
|
-
}
|
|
12242
12333
|
hangupConversation(e, t = D.HUNGUP, n) {}
|
|
12243
12334
|
async removeHistoryRecords(e) {}
|
|
12244
12335
|
async getServerTime() {
|
|
@@ -12248,78 +12339,62 @@ var Es = class {
|
|
|
12248
12339
|
async getInbounds() {
|
|
12249
12340
|
return [];
|
|
12250
12341
|
}
|
|
12251
|
-
},
|
|
12342
|
+
}, Os = class e {
|
|
12252
12343
|
constructor() {
|
|
12253
|
-
h(this, "
|
|
12344
|
+
h(this, "_participantIdToExternalId", /* @__PURE__ */ new Map()), h(this, "_externalIdToParticipantId", /* @__PURE__ */ new Map()), h(this, "_decorativeIdToInitialId", /* @__PURE__ */ new Map()), h(this, "_initialIdToDecorativeId", /* @__PURE__ */ new Map());
|
|
12254
12345
|
}
|
|
12255
12346
|
static _normalizeType(e) {
|
|
12256
|
-
return e.type ===
|
|
12347
|
+
return e.type === no.GROUP ? {
|
|
12257
12348
|
...e,
|
|
12258
|
-
type:
|
|
12349
|
+
type: no.USER
|
|
12259
12350
|
} : e;
|
|
12260
12351
|
}
|
|
12261
|
-
getOkId(t) {
|
|
12262
|
-
let n = Q.toString(e._normalizeType(t)), r = this._externalIdToOkId.get(n);
|
|
12263
|
-
return r == null ? null : this.replaceByInitialIdIdIfExists(r);
|
|
12264
|
-
}
|
|
12265
12352
|
getExternalId(e) {
|
|
12266
|
-
let t = this.
|
|
12353
|
+
let t = this._initialIdToDecorativeId.get(e) ?? e, n = this._participantIdToExternalId.get(t);
|
|
12267
12354
|
return n == null ? null : Q.fromString(n);
|
|
12268
12355
|
}
|
|
12269
|
-
|
|
12270
|
-
|
|
12271
|
-
|
|
12272
|
-
hasByOkId(e) {
|
|
12273
|
-
return this._okIdToExternalId.has(e);
|
|
12356
|
+
getParticipantId(t) {
|
|
12357
|
+
let n = Q.toString(e._normalizeType(t)), r = this._externalIdToParticipantId.get(n);
|
|
12358
|
+
return r == null ? null : this._decorativeIdToInitialId.get(r) ?? r;
|
|
12274
12359
|
}
|
|
12275
12360
|
cache(t, n) {
|
|
12276
|
-
let r =
|
|
12277
|
-
this.
|
|
12361
|
+
let r = e._normalizeType(n), i = Q.toString(r);
|
|
12362
|
+
this._participantIdToExternalId.set(t, i), this._externalIdToParticipantId.set(i, t);
|
|
12278
12363
|
}
|
|
12279
12364
|
mapDecorativeId(e, t) {
|
|
12280
|
-
|
|
12281
|
-
this._decorativeIdToInitialId.set(n, r), this._initialIdToDecorativeId.set(r, n);
|
|
12365
|
+
this._decorativeIdToInitialId.set(e, t), this._initialIdToDecorativeId.set(t, e);
|
|
12282
12366
|
}
|
|
12283
12367
|
unmapDecorativeId(e) {
|
|
12284
|
-
let t =
|
|
12285
|
-
|
|
12368
|
+
let t = this._initialIdToDecorativeId.get(e);
|
|
12369
|
+
t && this._decorativeIdToInitialId.delete(t), this._initialIdToDecorativeId.delete(e);
|
|
12286
12370
|
}
|
|
12287
12371
|
getDecorativeIdByInitialId(e) {
|
|
12288
|
-
|
|
12289
|
-
return this._initialIdToDecorativeId.get(t);
|
|
12290
|
-
}
|
|
12291
|
-
replaceByInitialIdIdIfExists(e) {
|
|
12292
|
-
let t = j.extractOkId(e);
|
|
12293
|
-
return this._decorativeIdToInitialId.get(t) ?? t;
|
|
12294
|
-
}
|
|
12295
|
-
getParticipantIdByExternalId(e) {
|
|
12296
|
-
let t = this.getOkId(e);
|
|
12297
|
-
return t == null ? null : j.composeParticipantId(t, A.USER, e.deviceIdx ?? 0);
|
|
12372
|
+
return this._initialIdToDecorativeId.get(e);
|
|
12298
12373
|
}
|
|
12299
12374
|
clear() {
|
|
12300
|
-
this.
|
|
12375
|
+
this._participantIdToExternalId.clear(), this._externalIdToParticipantId.clear(), this._decorativeIdToInitialId.clear(), this._initialIdToDecorativeId.clear();
|
|
12301
12376
|
}
|
|
12302
|
-
},
|
|
12303
|
-
function
|
|
12377
|
+
}, ks = "anonymLogin:", As = 700, js = 3e3;
|
|
12378
|
+
function Ms(e) {
|
|
12304
12379
|
let t = e.error_code;
|
|
12305
12380
|
switch (t) {
|
|
12306
|
-
case 2: return
|
|
12307
|
-
case 4: return e.error_msg.includes("participants.limit.exceeded") ?
|
|
12308
|
-
case 300: return
|
|
12309
|
-
case 1101: return
|
|
12310
|
-
case 1102: return
|
|
12311
|
-
case 1103: return
|
|
12312
|
-
case 1104: return
|
|
12313
|
-
case 1106: return
|
|
12314
|
-
case 1113: return
|
|
12381
|
+
case 2: return Ns(D.SERVICE_UNAVAILABLE, t, "service-unavailable");
|
|
12382
|
+
case 4: return e.error_msg.includes("participants.limit.exceeded") ? Ns(D.PARTICIPANT_LIMIT_REACHED, t, "participants-limit-exceeded") : Ns(x.API, t, "request-error");
|
|
12383
|
+
case 300: return Ns(D.NOT_FOUND, t, "not-found");
|
|
12384
|
+
case 1101: return Ns(D.SERVICE_DISABLED, t, "vchat-service-disabled");
|
|
12385
|
+
case 1102: return Ns(D.CALLEE_IS_OFFLINE, t, "target-user-unavailable");
|
|
12386
|
+
case 1103: return Ns(D.NOT_FRIENDS, t, "friendship-required");
|
|
12387
|
+
case 1104: return Ps(t, "youla-api-error");
|
|
12388
|
+
case 1106: return Ps(t, "vk-api-error");
|
|
12389
|
+
case 1113: return Ns(D.CALLER_IS_REJECTED, t, "caller-is-rejected");
|
|
12315
12390
|
case 1114: {
|
|
12316
12391
|
let n = e.custom_error?.vchat_detailed_api_error?.code, r = n?.startsWith("obsolete_client");
|
|
12317
|
-
return
|
|
12392
|
+
return Ns(r ? D.OBSOLETE_CLIENT : D.VCHAT_DETAILED_ERROR, t, n ?? "detailed-error", r ? n : void 0);
|
|
12318
12393
|
}
|
|
12319
|
-
default: return
|
|
12394
|
+
default: return Ns(x.API, t, "api-error");
|
|
12320
12395
|
}
|
|
12321
12396
|
}
|
|
12322
|
-
function
|
|
12397
|
+
function Ns(e, t, n, r) {
|
|
12323
12398
|
return {
|
|
12324
12399
|
type: e,
|
|
12325
12400
|
callError: {
|
|
@@ -12331,7 +12406,7 @@ function Ms(e, t, n, r) {
|
|
|
12331
12406
|
message: r
|
|
12332
12407
|
};
|
|
12333
12408
|
}
|
|
12334
|
-
function
|
|
12409
|
+
function Ps(e, t) {
|
|
12335
12410
|
return {
|
|
12336
12411
|
type: D.EXTERNAL_API_ERROR,
|
|
12337
12412
|
callError: {
|
|
@@ -12342,19 +12417,19 @@ function Ns(e, t) {
|
|
|
12342
12417
|
}
|
|
12343
12418
|
};
|
|
12344
12419
|
}
|
|
12345
|
-
var
|
|
12420
|
+
var Fs = class extends Ds {
|
|
12346
12421
|
constructor(...e) {
|
|
12347
|
-
super(...e), h(this, "_uuid", void 0), h(this, "_idCache", new
|
|
12422
|
+
super(...e), h(this, "_uuid", void 0), h(this, "_idCache", new Os());
|
|
12348
12423
|
}
|
|
12349
12424
|
async _callUnsafe(e, t = {}, n = !1) {
|
|
12350
12425
|
let r = async (i) => {
|
|
12351
12426
|
try {
|
|
12352
|
-
return await
|
|
12427
|
+
return await xs(e, t, n);
|
|
12353
12428
|
} catch (t) {
|
|
12354
12429
|
if (!t || typeof t != "object" || !Object.hasOwn(t, "error_msg")) {
|
|
12355
12430
|
i++;
|
|
12356
12431
|
let n = t && (typeof t == "object" || typeof t == "function") ? Object.getOwnPropertyNames(t).map((e) => `${e}: ${JSON.stringify(t[e])}`) : [String(t)];
|
|
12357
|
-
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 *
|
|
12432
|
+
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 * As, js), { signal: this._abortSignal }), r(i);
|
|
12358
12433
|
}
|
|
12359
12434
|
throw R.warn(e, "error", t), t;
|
|
12360
12435
|
}
|
|
@@ -12377,16 +12452,19 @@ var Ps = class extends Es {
|
|
|
12377
12452
|
message: i?.error_msg,
|
|
12378
12453
|
code: i?.error_code
|
|
12379
12454
|
};
|
|
12380
|
-
if (i.custom_error && (a.custom_error = i.custom_error),
|
|
12381
|
-
let e =
|
|
12455
|
+
if (i.custom_error && (a.custom_error = i.custom_error), Is(i)) {
|
|
12456
|
+
let e = Ms(i);
|
|
12382
12457
|
throw a.callError = e.callError, a.message = e.message ?? a.message, new O(e.type, a);
|
|
12383
12458
|
}
|
|
12384
12459
|
throw new O(x.API, a);
|
|
12385
12460
|
}
|
|
12386
12461
|
}
|
|
12387
12462
|
userId(e) {
|
|
12388
|
-
|
|
12389
|
-
|
|
12463
|
+
if (y.isEmpty()) {
|
|
12464
|
+
let { compositeUserId: t } = j.decomposeParticipantId(e), { id: n } = j.decomposeId(t);
|
|
12465
|
+
return Q.fromId(String(n));
|
|
12466
|
+
}
|
|
12467
|
+
return this._idCache.getExternalId(e);
|
|
12390
12468
|
}
|
|
12391
12469
|
async authorize() {
|
|
12392
12470
|
if (this._ensureUuid(), !M.apiKey) throw new O(x.API, {
|
|
@@ -12424,17 +12502,17 @@ var Ps = class extends Es {
|
|
|
12424
12502
|
});
|
|
12425
12503
|
}
|
|
12426
12504
|
_getAnonymLoginCacheKey() {
|
|
12427
|
-
return M.authToken ? `${
|
|
12505
|
+
return M.authToken ? `${ks}${M.authToken}` : null;
|
|
12428
12506
|
}
|
|
12429
12507
|
_getCachedAnonymLogin() {
|
|
12430
12508
|
let e = this._getAnonymLoginCacheKey();
|
|
12431
12509
|
if (!e) return null;
|
|
12432
12510
|
let t = at.get(e);
|
|
12433
|
-
return
|
|
12511
|
+
return Ls(t) ? t : (t && at.remove(e), null);
|
|
12434
12512
|
}
|
|
12435
12513
|
_setCachedAnonymLogin(e) {
|
|
12436
12514
|
let t = this._getAnonymLoginCacheKey();
|
|
12437
|
-
!t || !
|
|
12515
|
+
!t || !Ls(e) || at.set(t, {
|
|
12438
12516
|
session_key: e.session_key,
|
|
12439
12517
|
session_secret_key: e.session_secret_key,
|
|
12440
12518
|
uid: e.uid
|
|
@@ -12452,7 +12530,7 @@ var Ps = class extends Es {
|
|
|
12452
12530
|
}
|
|
12453
12531
|
async _sendClientStats(e, t = !0) {
|
|
12454
12532
|
try {
|
|
12455
|
-
(await
|
|
12533
|
+
(await Ss("vchat.clientStats", e))?.items_responses?.forEach((e) => {
|
|
12456
12534
|
e.errors && R.error("[vchat.clientStats]", e);
|
|
12457
12535
|
});
|
|
12458
12536
|
} catch (n) {
|
|
@@ -12482,14 +12560,14 @@ var Ps = class extends Es {
|
|
|
12482
12560
|
}, a = await this._callUnsafe("vchat.getLogUploadUrl", i), o = new FormData(), s = new Blob([r], { type: "application/json" });
|
|
12483
12561
|
o.append("file", s, "log.json");
|
|
12484
12562
|
let c = new URL(a.upload_url);
|
|
12485
|
-
return c.searchParams.append("size", s.size.toString()),
|
|
12563
|
+
return c.searchParams.append("size", s.size.toString()), Ts(c.toString(), o);
|
|
12486
12564
|
}
|
|
12487
12565
|
async joinConversation(e, t = !1, n) {
|
|
12488
12566
|
let r = {
|
|
12489
12567
|
conversationId: e,
|
|
12490
12568
|
isVideo: t,
|
|
12491
12569
|
protocolVersion: M.protocolVersion,
|
|
12492
|
-
capabilities:
|
|
12570
|
+
capabilities: Sa.getFlags()
|
|
12493
12571
|
};
|
|
12494
12572
|
return n && (r.chatId = n), this._call("vchat.joinConversation", r);
|
|
12495
12573
|
}
|
|
@@ -12521,13 +12599,13 @@ var Ps = class extends Es {
|
|
|
12521
12599
|
externalIds: l
|
|
12522
12600
|
});
|
|
12523
12601
|
if (t && t.length) switch (n) {
|
|
12524
|
-
case
|
|
12602
|
+
case Ha.USER:
|
|
12525
12603
|
u.uids = t.join(",");
|
|
12526
12604
|
break;
|
|
12527
|
-
case
|
|
12605
|
+
case Ha.GROUP:
|
|
12528
12606
|
u.gid = t[0];
|
|
12529
12607
|
break;
|
|
12530
|
-
case
|
|
12608
|
+
case Ha.CHAT:
|
|
12531
12609
|
u.chatId = t[0];
|
|
12532
12610
|
break;
|
|
12533
12611
|
}
|
|
@@ -12570,17 +12648,14 @@ var Ps = class extends Es {
|
|
|
12570
12648
|
joinLink: e,
|
|
12571
12649
|
isVideo: t,
|
|
12572
12650
|
protocolVersion: M.protocolVersion,
|
|
12573
|
-
capabilities:
|
|
12651
|
+
capabilities: Sa.getFlags()
|
|
12574
12652
|
};
|
|
12575
12653
|
return n?.length && (i.observedIds = n.join(",")), M.anonymToken && (i.anonymToken = M.anonymToken), r && (i.payload = r), this._call("vchat.joinConversationByLink", i);
|
|
12576
12654
|
}
|
|
12577
|
-
|
|
12578
|
-
return this._idCache.
|
|
12579
|
-
}
|
|
12580
|
-
getCachedRawOkIdByExternalId(e) {
|
|
12581
|
-
return this._idCache.getOkId(e);
|
|
12655
|
+
getCachedParticipantIdByExternalId(e) {
|
|
12656
|
+
return this._idCache.getParticipantId(e);
|
|
12582
12657
|
}
|
|
12583
|
-
|
|
12658
|
+
getCachedExternalIdByParticipantId(e) {
|
|
12584
12659
|
return this._idCache.getExternalId(e);
|
|
12585
12660
|
}
|
|
12586
12661
|
cacheExternalId(e, t) {
|
|
@@ -12595,9 +12670,6 @@ var Ps = class extends Es {
|
|
|
12595
12670
|
getDecorativeIdByInitialId(e) {
|
|
12596
12671
|
return this._idCache.getDecorativeIdByInitialId(e);
|
|
12597
12672
|
}
|
|
12598
|
-
replaceByInitialIdIdIfExists(e) {
|
|
12599
|
-
return this._idCache.replaceByInitialIdIdIfExists(e);
|
|
12600
|
-
}
|
|
12601
12673
|
async getConversationParams(e) {
|
|
12602
12674
|
let t = {};
|
|
12603
12675
|
return M.anonymToken && (t.anonymToken = M.anonymToken), e && (t.conversationId = e), this._call("vchat.getConversationParams", t);
|
|
@@ -12613,7 +12685,7 @@ var Ps = class extends Es {
|
|
|
12613
12685
|
conversationId: e,
|
|
12614
12686
|
reason: t
|
|
12615
12687
|
};
|
|
12616
|
-
M.anonymToken && (r.anonymToken = M.anonymToken), n?.peerId && (r.peerId = n.peerId),
|
|
12688
|
+
M.anonymToken && (r.anonymToken = M.anonymToken), n?.peerId && (r.peerId = n.peerId), bs("vchat.hangupConversation", r);
|
|
12617
12689
|
}
|
|
12618
12690
|
async removeHistoryRecords(e) {
|
|
12619
12691
|
await this._call("vchat.removeHistoryRecords", { recordIds: e.join(",") });
|
|
@@ -12629,19 +12701,19 @@ var Ps = class extends Es {
|
|
|
12629
12701
|
return Array.isArray(e?.inbounds) ? e.inbounds : [];
|
|
12630
12702
|
}
|
|
12631
12703
|
};
|
|
12632
|
-
function
|
|
12704
|
+
function Is(e) {
|
|
12633
12705
|
return typeof e == "object" && !!e && "error_code" in e && "error_msg" in e;
|
|
12634
12706
|
}
|
|
12635
|
-
function
|
|
12707
|
+
function Ls(e) {
|
|
12636
12708
|
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;
|
|
12637
12709
|
}
|
|
12638
12710
|
//#endregion
|
|
12639
12711
|
//#region src/enums/RecordRole.ts
|
|
12640
|
-
var
|
|
12712
|
+
var Rs = /* @__PURE__ */ function(e) {
|
|
12641
12713
|
return e.KING = "KING", e.PAWN = "PAWN", e;
|
|
12642
|
-
}(
|
|
12714
|
+
}(Rs || {}), zs = /* @__PURE__ */ function(e) {
|
|
12643
12715
|
return e.OFF = "0", e.ON = "1", e;
|
|
12644
|
-
}({}),
|
|
12716
|
+
}({}), Bs = class {
|
|
12645
12717
|
constructor(e) {
|
|
12646
12718
|
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;
|
|
12647
12719
|
}
|
|
@@ -12664,12 +12736,12 @@ var Ls = /* @__PURE__ */ function(e) {
|
|
|
12664
12736
|
let e = this._queue[this._readCursor];
|
|
12665
12737
|
return e && (this._moveReadCursor = !1, this._queue[this._readCursor] = null, this._readCursor = this.nextCursor(this._readCursor), --this._left), e;
|
|
12666
12738
|
}
|
|
12667
|
-
},
|
|
12739
|
+
}, Vs = class {
|
|
12668
12740
|
constructor(e, t, n, r = null) {
|
|
12669
12741
|
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;
|
|
12670
12742
|
}
|
|
12671
12743
|
async authorize() {
|
|
12672
|
-
let e = await
|
|
12744
|
+
let e = await xs("auth.anonymLogin", {
|
|
12673
12745
|
session_data: {
|
|
12674
12746
|
device_id: this._uuid,
|
|
12675
12747
|
client_version: M.appVersion,
|
|
@@ -12678,7 +12750,7 @@ var Ls = /* @__PURE__ */ function(e) {
|
|
|
12678
12750
|
version: 3
|
|
12679
12751
|
},
|
|
12680
12752
|
application_key: this._apiKey
|
|
12681
|
-
}, !0, await
|
|
12753
|
+
}, !0, await vs(this._baseApiUrl, this._apiEnv));
|
|
12682
12754
|
return j.isObject(e) && !("error_msg" in e) ? (this._sessionKey = e.session_key, !0) : !1;
|
|
12683
12755
|
}
|
|
12684
12756
|
async hangupConversation(e, t) {
|
|
@@ -12688,9 +12760,9 @@ var Ls = /* @__PURE__ */ function(e) {
|
|
|
12688
12760
|
application_key: this._apiKey,
|
|
12689
12761
|
session_key: this._sessionKey
|
|
12690
12762
|
};
|
|
12691
|
-
t?.peerId && (n.peerId = t.peerId), await
|
|
12763
|
+
t?.peerId && (n.peerId = t.peerId), await xs("vchat.hangupConversation", n, !0, await vs(this._baseApiUrl, this._apiEnv));
|
|
12692
12764
|
}
|
|
12693
|
-
},
|
|
12765
|
+
}, Hs, Us = null, Ws = {
|
|
12694
12766
|
getCameras: T.getCameras,
|
|
12695
12767
|
getMicrophones: T.getMicrophones,
|
|
12696
12768
|
getOutput: T.getOutput,
|
|
@@ -12716,27 +12788,27 @@ var Ls = /* @__PURE__ */ function(e) {
|
|
|
12716
12788
|
baseChromeVersion: T.baseChromeVersion,
|
|
12717
12789
|
getAudioContext: T.getAudioContext,
|
|
12718
12790
|
isAudioShareSupported: T.isAudioShareSupported
|
|
12719
|
-
},
|
|
12720
|
-
function Gs(e) {
|
|
12721
|
-
Hs = e;
|
|
12722
|
-
}
|
|
12791
|
+
}, Gs = { participantMarkerCompare: j.participantMarkerCompare };
|
|
12723
12792
|
function Ks(e) {
|
|
12724
|
-
|
|
12793
|
+
Us = e;
|
|
12725
12794
|
}
|
|
12726
12795
|
function qs(e) {
|
|
12796
|
+
M.videoEffects = e;
|
|
12797
|
+
}
|
|
12798
|
+
function Js(e) {
|
|
12727
12799
|
M.audioEffects = e;
|
|
12728
12800
|
}
|
|
12729
|
-
function
|
|
12801
|
+
function Ys(e, t = {}) {
|
|
12730
12802
|
M.vad = e, M.vadOptions = t;
|
|
12731
12803
|
}
|
|
12732
|
-
function
|
|
12804
|
+
function Xs(e, t = null, n = {}, r = 1) {
|
|
12733
12805
|
M.vmoji = e, M.vmojiOptions = {
|
|
12734
12806
|
protocolVersion: r,
|
|
12735
12807
|
renderingOptions: n
|
|
12736
12808
|
}, t && e.setSDK(t);
|
|
12737
12809
|
}
|
|
12738
|
-
async function
|
|
12739
|
-
M.set(t),
|
|
12810
|
+
async function Zs(t) {
|
|
12811
|
+
M.set(t), Hs || (Hs = new Fs()), e.disableLog(!M.debug), R.toggle(M.debug), R.log(`Calls SDK ${M.sdkVersion}`, t), await T.init();
|
|
12740
12812
|
let n = T.getBrowserSupportFailure();
|
|
12741
12813
|
if (n) throw new O(x.UNSUPPORTED, { callError: {
|
|
12742
12814
|
scope: "internal",
|
|
@@ -12745,13 +12817,19 @@ async function Xs(t) {
|
|
|
12745
12817
|
} });
|
|
12746
12818
|
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}`);
|
|
12747
12819
|
}
|
|
12748
|
-
async function
|
|
12820
|
+
async function Qs(e, t = [S.AUDIO], n = "", r = !1, i = !1, a, o, s) {
|
|
12749
12821
|
let c = [];
|
|
12750
|
-
return Array.isArray(e) ? c = e.length ? e : [] : e && (c = [e]),
|
|
12822
|
+
return Array.isArray(e) ? c = e.length ? e : [] : e && (c = [e]), ec([], Ha.USER, t, n, r, i, a, c, o, s);
|
|
12751
12823
|
}
|
|
12752
|
-
|
|
12753
|
-
|
|
12754
|
-
return
|
|
12824
|
+
function $s(e, t = []) {
|
|
12825
|
+
let n = e.getIncomingCallerExternalId();
|
|
12826
|
+
return n ? t.length === 1 && t[0].id === n.id && t[0].type === n.type : !1;
|
|
12827
|
+
}
|
|
12828
|
+
async function ec(e, t = Ha.USER, n, r = "", i = !1, a = !1, o, s, c, l) {
|
|
12829
|
+
if (!M.hold && z.getActive()) throw R.error("There is already active call"), new O(D.HAS_ACTIVE_CALL);
|
|
12830
|
+
let u = z.getAll().find((e) => e.isIncomingRinging);
|
|
12831
|
+
if (!M.hold && u && !$s(u, s)) throw R.error("There is already incoming call"), new O(D.HAS_ACTIVE_CALL);
|
|
12832
|
+
return new $(new Fs(), Us).onStart({
|
|
12755
12833
|
opponentIds: e,
|
|
12756
12834
|
opponentType: t,
|
|
12757
12835
|
mediaOptions: n,
|
|
@@ -12764,40 +12842,40 @@ async function Qs(e, t = Va.USER, n, r = "", i = !1, a = !1, o, s, c, l) {
|
|
|
12764
12842
|
conversationId: l
|
|
12765
12843
|
});
|
|
12766
12844
|
}
|
|
12767
|
-
async function
|
|
12768
|
-
return
|
|
12845
|
+
async function tc(e, t) {
|
|
12846
|
+
return nc(e, A.USER, void 0, t);
|
|
12769
12847
|
}
|
|
12770
|
-
async function
|
|
12848
|
+
async function nc(e, t = A.USER, n, r, i, a) {
|
|
12771
12849
|
if (e === $.id()) throw Error("Push has already been processed");
|
|
12772
|
-
return new $(new
|
|
12850
|
+
return new $(new Fs(), Us).onPush(e, t, n, r, i, a);
|
|
12773
12851
|
}
|
|
12774
|
-
async function
|
|
12775
|
-
return
|
|
12852
|
+
async function rc() {
|
|
12853
|
+
return Hs.getInbounds();
|
|
12776
12854
|
}
|
|
12777
|
-
async function
|
|
12778
|
-
return e && (M.authToken = e), t !== void 0 && M.apiBaseUrl !== t && (M.apiBaseUrl = t,
|
|
12855
|
+
async function ic(e, t) {
|
|
12856
|
+
return e && (M.authToken = e), t !== void 0 && M.apiBaseUrl !== t && (M.apiBaseUrl = t, gs()), Hs.authorize();
|
|
12779
12857
|
}
|
|
12780
|
-
async function
|
|
12781
|
-
return
|
|
12858
|
+
async function ac(e = [S.AUDIO], t) {
|
|
12859
|
+
return Al(t).accept(e);
|
|
12782
12860
|
}
|
|
12783
|
-
async function
|
|
12784
|
-
let t =
|
|
12861
|
+
async function oc(e) {
|
|
12862
|
+
let t = Dl(e?.conversationId);
|
|
12785
12863
|
if (t) return t.decline(e);
|
|
12786
12864
|
}
|
|
12787
|
-
async function
|
|
12788
|
-
return
|
|
12865
|
+
async function sc(e, t = [S.AUDIO]) {
|
|
12866
|
+
return cc(e, t);
|
|
12789
12867
|
}
|
|
12790
|
-
async function
|
|
12868
|
+
async function cc(e, t, n) {
|
|
12791
12869
|
if (!M.hold && z.callsLength > 0) throw R.error("There is already active call"), new O(D.HAS_ACTIVE_CALL);
|
|
12792
|
-
return new $(new
|
|
12870
|
+
return new $(new Fs(), Us).onJoin({
|
|
12793
12871
|
conversationId: e,
|
|
12794
12872
|
mediaOptions: t,
|
|
12795
12873
|
chatId: n
|
|
12796
12874
|
});
|
|
12797
12875
|
}
|
|
12798
|
-
async function
|
|
12876
|
+
async function lc(e, t = [S.AUDIO], n, r, i, a) {
|
|
12799
12877
|
if (!M.hold && z.callsLength > 0) throw R.error("There is already active call"), new O(D.HAS_ACTIVE_CALL);
|
|
12800
|
-
return n && (M.anonymToken = n), new $(new
|
|
12878
|
+
return n && (M.anonymToken = n), new $(new Fs(), Us).onJoin({
|
|
12801
12879
|
joinLink: e,
|
|
12802
12880
|
mediaOptions: t,
|
|
12803
12881
|
observedIds: r,
|
|
@@ -12806,30 +12884,30 @@ async function sc(e, t = [S.AUDIO], n, r, i, a) {
|
|
|
12806
12884
|
anonymous: !!M.anonymToken
|
|
12807
12885
|
});
|
|
12808
12886
|
}
|
|
12809
|
-
function
|
|
12810
|
-
let t =
|
|
12887
|
+
function uc(e) {
|
|
12888
|
+
let t = Dl(e?.conversationId);
|
|
12811
12889
|
return t ? t.hangup(e) : ($.hangupAfterInit(e?.onFastHangup), Promise.resolve());
|
|
12812
12890
|
}
|
|
12813
|
-
async function
|
|
12891
|
+
async function dc(e, t) {
|
|
12814
12892
|
let n = Array.isArray(e) ? e : [e], r = $.current();
|
|
12815
12893
|
r && await r.addParticipant(n, t);
|
|
12816
12894
|
}
|
|
12817
|
-
async function
|
|
12895
|
+
async function fc(e, t) {
|
|
12818
12896
|
let n = $.current();
|
|
12819
12897
|
if (n) {
|
|
12820
12898
|
let r = e.map((e) => j.composeUserId(e));
|
|
12821
12899
|
await n.addParticipantLegacy(r, t);
|
|
12822
12900
|
}
|
|
12823
12901
|
}
|
|
12824
|
-
async function
|
|
12825
|
-
let n =
|
|
12826
|
-
if (
|
|
12827
|
-
|
|
12828
|
-
|
|
12902
|
+
async function pc(e, t = !1) {
|
|
12903
|
+
let n = jl(e, "removeParticipant");
|
|
12904
|
+
if (n) try {
|
|
12905
|
+
await n.conversation.removeParticipant(j.decomposeParticipantId(n.participantId).compositeUserId, t);
|
|
12906
|
+
} catch (e) {
|
|
12907
|
+
R.warn(`Failed to remove participant ${n.participantId}. Perhaps he is no longer on the call. ${e}`);
|
|
12829
12908
|
}
|
|
12830
|
-
return fc(n, t);
|
|
12831
12909
|
}
|
|
12832
|
-
async function
|
|
12910
|
+
async function mc(e, t = !1) {
|
|
12833
12911
|
let n = $.current();
|
|
12834
12912
|
if (n) try {
|
|
12835
12913
|
await n.removeParticipant(j.composeUserId(e), t);
|
|
@@ -12837,13 +12915,13 @@ async function fc(e, t = !1) {
|
|
|
12837
12915
|
R.warn(`Failed to remove participant ${e}. Perhaps he is no longer on the call. ${t}`);
|
|
12838
12916
|
}
|
|
12839
12917
|
}
|
|
12840
|
-
async function
|
|
12918
|
+
async function hc(e, t) {
|
|
12841
12919
|
let n = $.current();
|
|
12842
12920
|
if (e === "videoinput" && jt.contains(t)) return M.videoFacingMode = t, n ? (T.isMobile() && n.stopVideoTrack(), n.changeDevice(e)) : void 0;
|
|
12843
12921
|
if (!await T._saveDeviceId(e, t)) throw Error(`Device not found: ${t}`);
|
|
12844
12922
|
if (n) return n.changeDevice(e);
|
|
12845
12923
|
}
|
|
12846
|
-
async function
|
|
12924
|
+
async function gc(e, t) {
|
|
12847
12925
|
let n = typeof e == "object" ? {
|
|
12848
12926
|
...e,
|
|
12849
12927
|
fastScreenSharing: e.captureScreen && e.fastScreenSharing,
|
|
@@ -12852,267 +12930,264 @@ async function mc(e, t) {
|
|
|
12852
12930
|
captureScreen: e,
|
|
12853
12931
|
fastScreenSharing: !1,
|
|
12854
12932
|
captureAudio: !1
|
|
12855
|
-
}, r =
|
|
12933
|
+
}, r = Dl(t);
|
|
12856
12934
|
return r ? r.toggleScreenCapturing(n) : Promise.reject();
|
|
12857
12935
|
}
|
|
12858
|
-
function
|
|
12936
|
+
function _c(e) {
|
|
12859
12937
|
let t = $.current();
|
|
12860
12938
|
t && t.toggleAnimojiCapturing(e);
|
|
12861
12939
|
}
|
|
12862
|
-
async function
|
|
12940
|
+
async function vc(e, t = !1) {
|
|
12863
12941
|
let n = $.current();
|
|
12864
12942
|
n && await n.setVideoStream(e, t);
|
|
12865
12943
|
}
|
|
12866
|
-
async function
|
|
12867
|
-
let n =
|
|
12944
|
+
async function yc(e, t) {
|
|
12945
|
+
let n = Dl(t);
|
|
12868
12946
|
n && await n.toggleLocalVideo(e);
|
|
12869
12947
|
}
|
|
12870
|
-
async function
|
|
12871
|
-
let n =
|
|
12948
|
+
async function bc(e, t) {
|
|
12949
|
+
let n = Dl(t);
|
|
12872
12950
|
n && await n.toggleLocalAudio(e);
|
|
12873
12951
|
}
|
|
12874
|
-
async function
|
|
12952
|
+
async function xc(e) {
|
|
12875
12953
|
let t = $.current();
|
|
12876
12954
|
if (t) return t.setLocalResolution(e);
|
|
12877
12955
|
}
|
|
12878
|
-
async function
|
|
12956
|
+
async function Sc(e) {
|
|
12879
12957
|
let t = $.current();
|
|
12880
12958
|
t && await t.changePriorities(e);
|
|
12881
12959
|
}
|
|
12882
|
-
async function
|
|
12960
|
+
async function Cc(e, t) {
|
|
12883
12961
|
let n = $.current();
|
|
12884
12962
|
if (n) {
|
|
12885
|
-
let r;
|
|
12886
12963
|
if (t) {
|
|
12887
|
-
let
|
|
12888
|
-
if (!
|
|
12889
|
-
|
|
12964
|
+
let r = n.getCachedParticipantIdByExternalId(t);
|
|
12965
|
+
if (!r) {
|
|
12966
|
+
Ol(t, "changeParticipantState", n);
|
|
12890
12967
|
return;
|
|
12891
12968
|
}
|
|
12892
|
-
|
|
12969
|
+
await n.changeParticipantState(e, r);
|
|
12970
|
+
return;
|
|
12893
12971
|
}
|
|
12894
|
-
await n.changeParticipantState(e
|
|
12972
|
+
await n.changeParticipantState(e);
|
|
12895
12973
|
}
|
|
12896
12974
|
}
|
|
12897
|
-
async function
|
|
12975
|
+
async function wc() {
|
|
12898
12976
|
let e = $.current();
|
|
12899
12977
|
e && await e.putHandsDown();
|
|
12900
12978
|
}
|
|
12901
|
-
async function
|
|
12979
|
+
async function Tc(e) {
|
|
12902
12980
|
let t = $.current();
|
|
12903
12981
|
t && await t.updateDisplayLayout(e);
|
|
12904
12982
|
}
|
|
12905
|
-
async function
|
|
12983
|
+
async function Ec(e) {
|
|
12906
12984
|
let t = $.current();
|
|
12907
12985
|
t && await t.requestDisplayLayout(e);
|
|
12908
12986
|
}
|
|
12909
|
-
async function
|
|
12910
|
-
let r =
|
|
12911
|
-
|
|
12912
|
-
R.warn("grantRoles: externalId not found in cache", e);
|
|
12913
|
-
return;
|
|
12914
|
-
}
|
|
12915
|
-
return Ec(r, Q.getDeviceIdx(e), t, n);
|
|
12987
|
+
async function Dc(e, t, n = !1) {
|
|
12988
|
+
let r = jl(e, "grantRoles");
|
|
12989
|
+
r && await r.conversation.grantRoles(r.participantId, t, n);
|
|
12916
12990
|
}
|
|
12917
|
-
async function
|
|
12991
|
+
async function Oc(e, t, n, r = !1) {
|
|
12918
12992
|
let i = $.current();
|
|
12919
12993
|
i && await i.grantRoles(j.composeParticipantId(e, A.USER, t), n, r);
|
|
12920
12994
|
}
|
|
12921
|
-
async function
|
|
12922
|
-
|
|
12923
|
-
|
|
12924
|
-
|
|
12925
|
-
|
|
12926
|
-
|
|
12927
|
-
|
|
12928
|
-
roomId: r
|
|
12929
|
-
});
|
|
12995
|
+
async function kc({ externalId: e = null, muteStates: t, requestedMedia: n = [], roomId: r = null }) {
|
|
12996
|
+
if (e) {
|
|
12997
|
+
let i = jl(e, "muteParticipant");
|
|
12998
|
+
return i ? i.conversation.muteParticipant(i.participantId, t, n, r) : void 0;
|
|
12999
|
+
}
|
|
13000
|
+
let i = $.current();
|
|
13001
|
+
i && await i.muteParticipant(null, t, n, r);
|
|
12930
13002
|
}
|
|
12931
|
-
async function
|
|
13003
|
+
async function Ac({ uid: e = null, muteStates: t, requestedMedia: n = [], deviceIdx: r = 0, roomId: i = null }) {
|
|
12932
13004
|
let a = $.current();
|
|
12933
13005
|
if (a) {
|
|
12934
13006
|
let o = e ? j.composeParticipantId(e, A.USER, r) : null;
|
|
12935
13007
|
await a.muteParticipant(o, t, n, i);
|
|
12936
13008
|
}
|
|
12937
13009
|
}
|
|
12938
|
-
async function
|
|
12939
|
-
let r =
|
|
12940
|
-
|
|
12941
|
-
R.warn("pinParticipant: externalId not found in cache", e);
|
|
12942
|
-
return;
|
|
12943
|
-
}
|
|
12944
|
-
return Ac(r, t, Q.getDeviceIdx(e), n);
|
|
13010
|
+
async function jc(e, t = !1, n = null) {
|
|
13011
|
+
let r = jl(e, "pinParticipant");
|
|
13012
|
+
r && await r.conversation.pinParticipant(r.participantId, t, n);
|
|
12945
13013
|
}
|
|
12946
|
-
async function
|
|
13014
|
+
async function Mc(e, t = !1, n = 0, r = null) {
|
|
12947
13015
|
let i = $.current();
|
|
12948
13016
|
i && await i.pinParticipant(j.composeParticipantId(e, A.USER, n), t, r);
|
|
12949
13017
|
}
|
|
12950
|
-
async function
|
|
13018
|
+
async function Nc(e) {
|
|
12951
13019
|
let t = $.current();
|
|
12952
13020
|
t && await t.updateMediaModifiers(e);
|
|
12953
13021
|
}
|
|
12954
|
-
async function
|
|
13022
|
+
async function Pc(e) {
|
|
12955
13023
|
let t = $.current();
|
|
12956
13024
|
t && await t.enableVideoSuspend(e);
|
|
12957
13025
|
}
|
|
12958
|
-
async function
|
|
13026
|
+
async function Fc(e) {
|
|
12959
13027
|
let t = $.current();
|
|
12960
13028
|
t && await t.enableVideoSuspendSuggest(e);
|
|
12961
13029
|
}
|
|
12962
|
-
async function
|
|
13030
|
+
async function Ic(e) {
|
|
12963
13031
|
let t = $.current();
|
|
12964
13032
|
t && await t.changeOptions(e);
|
|
12965
13033
|
}
|
|
12966
|
-
async function
|
|
12967
|
-
|
|
12968
|
-
|
|
13034
|
+
async function Lc(e, t = null) {
|
|
13035
|
+
if (t) {
|
|
13036
|
+
let n = jl(t, "chatMessage");
|
|
13037
|
+
return n ? n.conversation.chatMessage(e, j.decomposeParticipantId(n.participantId).compositeUserId) : void 0;
|
|
13038
|
+
}
|
|
13039
|
+
let n = $.current();
|
|
13040
|
+
n && await n.chatMessage(e, null);
|
|
12969
13041
|
}
|
|
12970
|
-
async function
|
|
13042
|
+
async function Rc(e, t = null) {
|
|
12971
13043
|
let n = $.current();
|
|
12972
13044
|
if (n) {
|
|
12973
13045
|
let r = t ? j.composeUserId(t) : null;
|
|
12974
13046
|
await n.chatMessage(e, r);
|
|
12975
13047
|
}
|
|
12976
13048
|
}
|
|
12977
|
-
async function
|
|
13049
|
+
async function zc(e = 10) {
|
|
12978
13050
|
let t = $.current();
|
|
12979
13051
|
if (t) return t.chatHistory(e);
|
|
12980
13052
|
}
|
|
12981
|
-
async function
|
|
12982
|
-
|
|
12983
|
-
|
|
13053
|
+
async function Bc(e, t = null) {
|
|
13054
|
+
if (t) {
|
|
13055
|
+
let n = jl(t, "customData");
|
|
13056
|
+
return n ? n.conversation.customData(e, n.participantId) : void 0;
|
|
13057
|
+
}
|
|
13058
|
+
let n = $.current();
|
|
13059
|
+
n && await n.customData(e, null);
|
|
12984
13060
|
}
|
|
12985
|
-
async function
|
|
13061
|
+
async function Vc(e, t = null, n = 0) {
|
|
12986
13062
|
let r = $.current();
|
|
12987
13063
|
if (r) {
|
|
12988
13064
|
let i = t ? j.composeParticipantId(t, A.USER, n) : null;
|
|
12989
13065
|
await r.customData(e, i);
|
|
12990
13066
|
}
|
|
12991
13067
|
}
|
|
12992
|
-
async function
|
|
12993
|
-
return (await
|
|
13068
|
+
async function Hc(e = "", t = !1, { onlyAdminCanShareMovie: n = !1, waitForAdmin: r = !1, closedConversation: i = !1 } = {}, a) {
|
|
13069
|
+
return (await Hs.createConversation(a ?? j.uuid(), e, t, {
|
|
12994
13070
|
onlyAdminCanShareMovie: n,
|
|
12995
13071
|
waitForAdmin: r,
|
|
12996
13072
|
closedConversation: i
|
|
12997
13073
|
})).join_link;
|
|
12998
13074
|
}
|
|
12999
|
-
async function
|
|
13075
|
+
async function Uc(e = "", t = !1, { onlyAdminCanShareMovie: n = !1, audioOnly: r = !1 } = {}, i) {
|
|
13000
13076
|
let a = i.map((e) => Q.fromId(e));
|
|
13001
|
-
return (await
|
|
13077
|
+
return (await Hs.createConversation(j.uuid(), e, t, {
|
|
13002
13078
|
onlyAdminCanShareMovie: n,
|
|
13003
13079
|
audienceMode: !0,
|
|
13004
13080
|
audioOnly: r
|
|
13005
13081
|
}, a)).join_link;
|
|
13006
13082
|
}
|
|
13007
|
-
async function
|
|
13083
|
+
async function Wc() {
|
|
13008
13084
|
let e = $.current();
|
|
13009
13085
|
return e ? e.createJoinLink() : Promise.reject();
|
|
13010
13086
|
}
|
|
13011
|
-
async function
|
|
13087
|
+
async function Gc() {
|
|
13012
13088
|
let e = $.current();
|
|
13013
13089
|
return e ? e.removeJoinLink() : Promise.reject();
|
|
13014
13090
|
}
|
|
13015
|
-
async function
|
|
13016
|
-
return
|
|
13091
|
+
async function Kc(e, t) {
|
|
13092
|
+
return Hs.getAnonymTokenByLink(e, t);
|
|
13017
13093
|
}
|
|
13018
|
-
function
|
|
13094
|
+
function qc(e) {
|
|
13019
13095
|
let t = $.current();
|
|
13020
13096
|
t && t.setVolume(e);
|
|
13021
13097
|
}
|
|
13022
|
-
function
|
|
13098
|
+
function Jc(e) {
|
|
13023
13099
|
M.forceRelayPolicy = e;
|
|
13024
13100
|
}
|
|
13025
|
-
async function
|
|
13101
|
+
async function Yc(e = !1, t = null, n = null, r = "DIRECT_LINK", i = null, a = null) {
|
|
13026
13102
|
let o = $.current();
|
|
13027
13103
|
return o ? o.startStream(e, t, n, r, i, a) : Promise.reject();
|
|
13028
13104
|
}
|
|
13029
|
-
async function
|
|
13105
|
+
async function Xc(e = null, t) {
|
|
13030
13106
|
let n = $.current();
|
|
13031
13107
|
return n ? n.stopStream(e, t) : Promise.reject();
|
|
13032
13108
|
}
|
|
13033
|
-
async function
|
|
13109
|
+
async function Zc(e = null) {
|
|
13034
13110
|
let t = $.current();
|
|
13035
13111
|
return t ? t.publishStream(e) : Promise.reject();
|
|
13036
13112
|
}
|
|
13037
|
-
async function
|
|
13113
|
+
async function Qc() {
|
|
13038
13114
|
let e = $.current();
|
|
13039
13115
|
return e ? e.getStreamInfo() : Promise.reject();
|
|
13040
13116
|
}
|
|
13041
|
-
async function
|
|
13117
|
+
async function $c(e) {
|
|
13042
13118
|
let t = $.current();
|
|
13043
13119
|
return t ? t.addMovie(e) : Promise.reject();
|
|
13044
13120
|
}
|
|
13045
|
-
async function
|
|
13121
|
+
async function el(e) {
|
|
13046
13122
|
let t = $.current();
|
|
13047
13123
|
return t ? t.updateMovie(e) : Promise.reject();
|
|
13048
13124
|
}
|
|
13049
|
-
async function
|
|
13125
|
+
async function tl(e) {
|
|
13050
13126
|
let t = $.current();
|
|
13051
13127
|
return t ? t.removeMovie(e) : Promise.reject();
|
|
13052
13128
|
}
|
|
13053
|
-
async function
|
|
13129
|
+
async function nl(e, t) {
|
|
13054
13130
|
let n = $.current();
|
|
13055
13131
|
if (n) {
|
|
13056
|
-
let r = [];
|
|
13132
|
+
let r = [], i = [];
|
|
13057
13133
|
for (let t of e) {
|
|
13058
|
-
let e,
|
|
13134
|
+
let e, a;
|
|
13059
13135
|
t.addParticipantIds && (e = [], t.addParticipantIds.forEach((t) => {
|
|
13060
|
-
let r = n.
|
|
13061
|
-
r ? e.push(j.
|
|
13062
|
-
})), t.removeParticipantIds && (
|
|
13063
|
-
let t = n.
|
|
13064
|
-
t ?
|
|
13136
|
+
let r = n.getCachedParticipantIdByExternalId(t);
|
|
13137
|
+
r ? e.push(j.decomposeParticipantId(r).compositeUserId) : i.push(t.id);
|
|
13138
|
+
})), t.removeParticipantIds && (a = [], t.removeParticipantIds.forEach((e) => {
|
|
13139
|
+
let t = n.getCachedParticipantIdByExternalId(e);
|
|
13140
|
+
t ? a.push(j.decomposeParticipantId(t).compositeUserId) : i.push(e.id);
|
|
13065
13141
|
})), r.push({
|
|
13066
13142
|
id: t.id,
|
|
13067
13143
|
name: t.name,
|
|
13068
13144
|
participantCount: t.participantCount,
|
|
13069
13145
|
addParticipantIds: e,
|
|
13070
|
-
removeParticipantIds:
|
|
13146
|
+
removeParticipantIds: a,
|
|
13071
13147
|
countdownSec: t.countdownSec
|
|
13072
13148
|
});
|
|
13073
13149
|
}
|
|
13150
|
+
if (i.length) {
|
|
13151
|
+
kl(i, "updateRooms", n);
|
|
13152
|
+
return;
|
|
13153
|
+
}
|
|
13074
13154
|
return n.updateRooms(r, t);
|
|
13075
13155
|
}
|
|
13076
13156
|
return Promise.reject();
|
|
13077
13157
|
}
|
|
13078
|
-
async function
|
|
13158
|
+
async function rl(e, t) {
|
|
13079
13159
|
let n = $.current();
|
|
13080
13160
|
return n ? n.activateRooms(e, t) : Promise.reject();
|
|
13081
13161
|
}
|
|
13082
|
-
async function
|
|
13162
|
+
async function il(e = null, t = null) {
|
|
13083
13163
|
let n = $.current();
|
|
13084
13164
|
if (!n) return Promise.reject();
|
|
13085
13165
|
let r;
|
|
13086
|
-
if (t) {
|
|
13087
|
-
|
|
13088
|
-
|
|
13089
|
-
R.warn("switchRoom: externalId not found in cache", t);
|
|
13090
|
-
return;
|
|
13091
|
-
}
|
|
13092
|
-
let i = Q.getDeviceIdx(t);
|
|
13093
|
-
r = j.composeParticipantId(e, A.USER, i);
|
|
13166
|
+
if (t && (r = n.getCachedParticipantIdByExternalId(t) ?? void 0, !r)) {
|
|
13167
|
+
Ol(t, "switchRoom", n);
|
|
13168
|
+
return;
|
|
13094
13169
|
}
|
|
13095
13170
|
return n.switchRoom(e, r);
|
|
13096
13171
|
}
|
|
13097
|
-
async function
|
|
13172
|
+
async function al(e) {
|
|
13098
13173
|
let t = $.current();
|
|
13099
13174
|
return t ? t.removeRooms(e) : Promise.reject();
|
|
13100
13175
|
}
|
|
13101
|
-
function
|
|
13176
|
+
function ol(e) {
|
|
13102
13177
|
M.statisticsInterval = e;
|
|
13103
13178
|
let t = $.current();
|
|
13104
13179
|
if (t) return t.updateStatisticsInterval();
|
|
13105
13180
|
}
|
|
13106
|
-
function
|
|
13181
|
+
function sl(t) {
|
|
13107
13182
|
e.disableLog(!t), R.toggle(t);
|
|
13108
13183
|
}
|
|
13109
|
-
function
|
|
13184
|
+
function cl(e, ...t) {
|
|
13110
13185
|
M.debugLog && ($.debugMessage(e, "[external]", ...t) || R.send(e, "[external]", ...t));
|
|
13111
13186
|
}
|
|
13112
|
-
function
|
|
13187
|
+
function ll(e, t, ...n) {
|
|
13113
13188
|
M.debugLog && ($.debugMessageWithContext(e, t, "[external]", ...n) || R.send(e, "[external]", ...n));
|
|
13114
13189
|
}
|
|
13115
|
-
var
|
|
13190
|
+
var ul = {
|
|
13116
13191
|
list: Ne,
|
|
13117
13192
|
get: Pe,
|
|
13118
13193
|
getJson: Fe,
|
|
@@ -13120,7 +13195,7 @@ var cl = {
|
|
|
13120
13195
|
clear: Le,
|
|
13121
13196
|
stats: Re
|
|
13122
13197
|
};
|
|
13123
|
-
function
|
|
13198
|
+
function dl() {
|
|
13124
13199
|
let e = [
|
|
13125
13200
|
[`Calls SDK ${M.sdkVersion}`, M.toJSON()],
|
|
13126
13201
|
["UserAgent:", navigator.userAgent],
|
|
@@ -13137,124 +13212,139 @@ function ll() {
|
|
|
13137
13212
|
d: e
|
|
13138
13213
|
}));
|
|
13139
13214
|
}
|
|
13140
|
-
async function
|
|
13215
|
+
async function fl() {
|
|
13141
13216
|
let e = $.id(), t = $.debugSessionId();
|
|
13142
13217
|
if (!t || !e) throw R.error("[uploadDebugLogs]", "No conversation id found"), Error("No conversation id found");
|
|
13143
13218
|
let n = await Pe({ sessionId: t });
|
|
13144
13219
|
if (n.length === 0) throw R.error("[uploadDebugLogs]", "No logs found"), Error("No logs found");
|
|
13145
13220
|
let r = n[0].t, i = n[n.length - 1].t;
|
|
13146
13221
|
try {
|
|
13147
|
-
return
|
|
13222
|
+
return Hs?.uploadDebugLogs(e, r, i, JSON.stringify([...dl(), ...n]));
|
|
13148
13223
|
} catch (e) {
|
|
13149
13224
|
throw R.error("[uploadDebugLogs]", "Error while uploading logs", e), Error("Error while uploading logs", { cause: e });
|
|
13150
13225
|
}
|
|
13151
13226
|
}
|
|
13152
|
-
async function
|
|
13227
|
+
async function pl(e) {
|
|
13153
13228
|
let t = $.current();
|
|
13154
13229
|
if (t) return t.videoEffect(e);
|
|
13155
13230
|
}
|
|
13156
|
-
async function
|
|
13231
|
+
async function ml(e, t) {
|
|
13157
13232
|
let n = $.current();
|
|
13158
13233
|
if (n) return n.audioEffect(e.length > 0 ? e : null, t);
|
|
13159
13234
|
}
|
|
13160
|
-
async function
|
|
13235
|
+
async function hl(e) {
|
|
13161
13236
|
let t = $.current();
|
|
13162
13237
|
t && await t.setAudioStream(e);
|
|
13163
13238
|
}
|
|
13164
|
-
async function
|
|
13239
|
+
async function gl(e, t = null, n = null) {
|
|
13165
13240
|
let r = $.current();
|
|
13166
13241
|
if (!r) return;
|
|
13167
13242
|
let i = n ?? t?.id, a = null;
|
|
13168
|
-
if (t) {
|
|
13169
|
-
|
|
13170
|
-
|
|
13171
|
-
a = j.composeParticipantId(e, A.USER, Q.getDeviceIdx(t));
|
|
13243
|
+
if (t && (a = r.getCachedParticipantIdByExternalId(t), !a)) {
|
|
13244
|
+
Ol(t, "setVmojiSvg", r);
|
|
13245
|
+
return;
|
|
13172
13246
|
}
|
|
13173
13247
|
r.setAnimojiSvg(e, a, i);
|
|
13174
13248
|
}
|
|
13175
|
-
function
|
|
13249
|
+
function _l(e) {
|
|
13176
13250
|
let t = $.current();
|
|
13177
13251
|
t && t.setAnimojiFill(e);
|
|
13178
13252
|
}
|
|
13179
|
-
async function
|
|
13180
|
-
return
|
|
13253
|
+
async function vl(e = null, t, n = !1) {
|
|
13254
|
+
return Al().getWaitingHall(e, t, n);
|
|
13181
13255
|
}
|
|
13182
|
-
async function
|
|
13183
|
-
return
|
|
13256
|
+
async function yl() {
|
|
13257
|
+
return Al().getAudienceModeHands();
|
|
13184
13258
|
}
|
|
13185
|
-
async function
|
|
13186
|
-
let n =
|
|
13259
|
+
async function bl(e, t = !1) {
|
|
13260
|
+
let n = Al(), r;
|
|
13187
13261
|
if (e) {
|
|
13188
|
-
let t = n.
|
|
13262
|
+
let t = n.getCachedParticipantIdByExternalId(e);
|
|
13189
13263
|
if (!t) {
|
|
13190
|
-
|
|
13264
|
+
Ol(e, "promoteParticipant", n);
|
|
13191
13265
|
return;
|
|
13192
13266
|
}
|
|
13193
|
-
r = j.
|
|
13267
|
+
r = j.decomposeParticipantId(t).compositeUserId;
|
|
13194
13268
|
}
|
|
13195
13269
|
return n.promoteParticipant(r, t);
|
|
13196
13270
|
}
|
|
13197
|
-
async function
|
|
13198
|
-
return
|
|
13271
|
+
async function xl(e = !1) {
|
|
13272
|
+
return Al().requestPromotion(e);
|
|
13199
13273
|
}
|
|
13200
|
-
async function
|
|
13201
|
-
return
|
|
13274
|
+
async function Sl(e = !1) {
|
|
13275
|
+
return Al().acceptPromotion(e);
|
|
13202
13276
|
}
|
|
13203
|
-
async function
|
|
13204
|
-
return
|
|
13277
|
+
async function Cl(e) {
|
|
13278
|
+
return Al().getParticipantListChunk(e);
|
|
13205
13279
|
}
|
|
13206
|
-
async function
|
|
13207
|
-
return
|
|
13280
|
+
async function wl(e) {
|
|
13281
|
+
return Al().getParticipants(e);
|
|
13208
13282
|
}
|
|
13209
|
-
async function
|
|
13210
|
-
return
|
|
13283
|
+
async function Tl(e) {
|
|
13284
|
+
return Al().feedback(e);
|
|
13211
13285
|
}
|
|
13212
|
-
async function
|
|
13213
|
-
return
|
|
13286
|
+
async function El(e, t, n) {
|
|
13287
|
+
return Al(n).enableFeatureForRoles(e, t);
|
|
13214
13288
|
}
|
|
13215
|
-
function
|
|
13289
|
+
function Dl(e) {
|
|
13216
13290
|
return e ? z.get(e) ?? null : $.current() ?? z.getFirst();
|
|
13217
13291
|
}
|
|
13218
|
-
function
|
|
13219
|
-
|
|
13292
|
+
function Ol(e, t, n) {
|
|
13293
|
+
L.onNonFatalError(/* @__PURE__ */ Error(`Participant ID mapping not found for external ID "${e.id}" while handling ${t}`), n.id);
|
|
13294
|
+
}
|
|
13295
|
+
function kl(e, t, n) {
|
|
13296
|
+
let r = Array.from(new Set(e));
|
|
13297
|
+
L.onNonFatalError(/* @__PURE__ */ Error(`Participant ID mapping not found for external IDs "${r.join("\", \"")}" while handling ${t}`), n.id);
|
|
13298
|
+
}
|
|
13299
|
+
function Al(e) {
|
|
13300
|
+
let t = Dl(e);
|
|
13220
13301
|
if (!t) throw Error("Conversation not found");
|
|
13221
13302
|
return t;
|
|
13222
13303
|
}
|
|
13223
|
-
|
|
13224
|
-
|
|
13304
|
+
function jl(e, t) {
|
|
13305
|
+
let n = $.current();
|
|
13306
|
+
if (!n) return null;
|
|
13307
|
+
let r = n.getCachedParticipantIdByExternalId(e);
|
|
13308
|
+
return r ? {
|
|
13309
|
+
conversation: n,
|
|
13310
|
+
participantId: r
|
|
13311
|
+
} : (Ol(e, t, n), null);
|
|
13312
|
+
}
|
|
13313
|
+
async function Ml(e) {
|
|
13314
|
+
await Hs.removeHistoryRecords(e);
|
|
13225
13315
|
}
|
|
13226
|
-
async function
|
|
13316
|
+
async function Nl(e) {
|
|
13227
13317
|
let t = $.current() ?? z.getFirst();
|
|
13228
13318
|
t && await t.startAsr(e);
|
|
13229
13319
|
}
|
|
13230
|
-
async function
|
|
13320
|
+
async function Pl(e) {
|
|
13231
13321
|
let t = $.current() ?? z.getFirst();
|
|
13232
13322
|
t && await t.stopAsr(e);
|
|
13233
13323
|
}
|
|
13234
|
-
async function
|
|
13324
|
+
async function Fl(e) {
|
|
13235
13325
|
let t = $.current() ?? z.getFirst();
|
|
13236
13326
|
t && await t.requestAsr(e);
|
|
13237
13327
|
}
|
|
13238
|
-
async function
|
|
13328
|
+
async function Il(e) {
|
|
13239
13329
|
let t = $.current();
|
|
13240
13330
|
return t ? t.startUrlSharing(e) : Promise.reject();
|
|
13241
13331
|
}
|
|
13242
|
-
async function
|
|
13332
|
+
async function Ll() {
|
|
13243
13333
|
let e = $.current();
|
|
13244
13334
|
return e ? e.stopUrlSharing() : Promise.reject();
|
|
13245
13335
|
}
|
|
13246
|
-
async function
|
|
13336
|
+
async function Rl(e) {
|
|
13247
13337
|
await z.switchCall(e);
|
|
13248
13338
|
}
|
|
13249
|
-
function
|
|
13339
|
+
function zl() {
|
|
13250
13340
|
return z.getActiveId();
|
|
13251
13341
|
}
|
|
13252
|
-
function
|
|
13342
|
+
function Bl() {
|
|
13253
13343
|
return $.getSyncedTime();
|
|
13254
13344
|
}
|
|
13255
|
-
function
|
|
13345
|
+
function Vl() {
|
|
13256
13346
|
return M.sdkVersion;
|
|
13257
13347
|
}
|
|
13258
13348
|
typeof window < "u" && (window.__CALLS_SDK = yn);
|
|
13259
13349
|
//#endregion
|
|
13260
|
-
export {
|
|
13350
|
+
export { Fs as Api, Vs as ApiExternal, Bs as ArrayDequeue, y as AuthData, f as BaseLogger, Va as CallDirection, Ha as CallType, Ua as ChatRoomEventType, Wa as ConversationFeature, Ga as ConversationOption, Sn as DebugMessageType, no as ExternalIdType, jt as FacingMode, x as FatalError, O as HangupReason, D as HangupType, S as MediaOption, k as MediaTrackKind, V as MediaType, Ja as MuteState, Z as ParticipantState, zs as ParticipantStateDataValue, N as ParticipantStatus, Rs as RecordRole, Ya as RoomsEventType, Ba as Signaling, B as SignalingCommandType, vr as SignalingConnectionType, K as SignalingNotification, J as TransportTopology, Qa as UserRole, A as UserType, Eo as VolumeDetector, ac as acceptCall, Sl as acceptPromotion, rl as activateRooms, $c as addMovie, dc as addParticipant, fc as addParticipantInternal, ic as authorize, Ws as browser, ec as callInternal, Qs as callTo, gc as captureScreen, _c as captureVmoji, ml as changeAudioEffect, Ic as changeConversationOptions, hc as changeDevice, Cc as changeParticipantState, Sc as changePriorities, pl as changeVideoEffect, zc as chatHistory, Lc as chatMessage, Rc as chatMessageInternal, Wc as createJoinLink, Bc as customData, Vc as customDataInternal, sl as debug, ul as debugLogs, cl as debugMessage, ll as debugMessageWithContext, oc as declineCall, El as enableFeatureForRoles, Pc as enableVideoSuspend, Fc as enableVideoSuspendSuggest, Tl as feedback, Jc as forceRelayPolicy, zl as getActiveCallId, Kc as getAnonymTokenByLink, yl as getAudienceModeHands, rc as getInbounds, Cl as getParticipantListChunk, wl as getParticipants, Qc as getStreamInfo, Bl as getSyncedTime, vl as getWaitingHall, Dc as grantRoles, Oc as grantRolesInternal, uc as hangup, Zs as init, sc as joinCall, lc as joinCallByLink, cc as joinCallInternal, kc as muteParticipant, Ac as muteParticipantInternal, jc as pinParticipant, Mc as pinParticipantInternal, tc as processPush, nc as processPushInternal, bl as promoteParticipant, Zc as publishStream, wc as putHandsDown, Ml as removeHistoryRecords, Gc as removeJoinLink, tl as removeMovie, pc as removeParticipant, mc as removeParticipantInternal, al as removeRooms, Fl as requestAsr, Ec as requestDisplayLayout, xl as requestPromotion, Js as setAudioEffects, hl as setAudioStream, xc as setLocalResolution, Ks as setLogger, Nc as setMediaModifiers, ol as setStatisticsInterval, Ys as setVad, qs as setVideoEffects, vc as setVideoStream, Xs as setVmoji, _l as setVmojiFill, gl as setVmojiSvg, qc as setVolume, Nl as startAsr, Uc as startAudienceConversation, Hc as startConversation, Yc as startStream, Il as startUrlSharing, Pl as stopAsr, Xc as stopStream, Ll as stopUrlSharing, Rl as switchCall, il as switchRoom, bc as toggleLocalAudio, yc as toggleLocalVideo, Tc as updateDisplayLayout, el as updateMovie, nl as updateRooms, fl as uploadDebugLogs, Gs as utils, Vl as version };
|