@ikonai/sdk 1.0.8 → 1.0.9
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/client/connection-state.d.ts +1 -1
- package/client/ikon-client.d.ts +6 -6
- package/connection/urls.d.ts +5 -0
- package/index.js +414 -405
- package/package.json +1 -1
package/index.js
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
const zr = {
|
|
2
2
|
Compressed: 8
|
|
3
3
|
};
|
|
4
|
-
function
|
|
4
|
+
function kl(t) {
|
|
5
5
|
return t;
|
|
6
6
|
}
|
|
7
|
-
function
|
|
7
|
+
function fe(t) {
|
|
8
8
|
if (t.length < 8)
|
|
9
9
|
throw new Error("Protocol message too short");
|
|
10
10
|
return (t[4] | t[5] << 8 | t[6] << 16 | t[7] << 24) >>> 0;
|
|
11
11
|
}
|
|
12
|
-
function
|
|
13
|
-
return
|
|
12
|
+
function he(t) {
|
|
13
|
+
return fe(t) & 4294901760;
|
|
14
14
|
}
|
|
15
|
-
function
|
|
16
|
-
const e =
|
|
15
|
+
function ie(t) {
|
|
16
|
+
const e = oe(t), r = new DataView(e.buffer, e.byteOffset, e.byteLength);
|
|
17
17
|
if (e.length < 27)
|
|
18
18
|
throw new Error("Protocol payload too short");
|
|
19
19
|
const n = r.getUint32(0, !0), s = r.getUint32(4, !0), i = r.getUint32(8, !0), o = r.getUint32(12, !0), a = r.getUint32(16, !0), c = r.getUint32(20, !0), l = r.getUint8(24), E = r.getUint8(25), d = r.getUint8(26);
|
|
@@ -36,7 +36,7 @@ function se(t) {
|
|
|
36
36
|
};
|
|
37
37
|
}
|
|
38
38
|
async function Be(t, e, r) {
|
|
39
|
-
const n =
|
|
39
|
+
const n = oe(t), s = ie(n);
|
|
40
40
|
if (e !== void 0 && s.opcode !== e)
|
|
41
41
|
throw new Error(`Unexpected opcode ${s.opcode}`);
|
|
42
42
|
if (s.payloadType !== 8)
|
|
@@ -71,8 +71,8 @@ async function Xr(t) {
|
|
|
71
71
|
a.set(i[l], c), c += i[l].length;
|
|
72
72
|
return a;
|
|
73
73
|
}
|
|
74
|
-
var
|
|
75
|
-
const It = 161, mt = 162,
|
|
74
|
+
var R = /* @__PURE__ */ ((t) => (t[t.Null = 1] = "Null", t[t.Bool = 2] = "Bool", t[t.Int32 = 3] = "Int32", t[t.Int64 = 4] = "Int64", t[t.UInt32 = 5] = "UInt32", t[t.UInt64 = 6] = "UInt64", t[t.Float32 = 7] = "Float32", t[t.Float64 = 8] = "Float64", t[t.Array = 9] = "Array", t[t.Dict = 10] = "Dict", t[t.Object = 11] = "Object", t[t.String = 12] = "String", t[t.Binary = 13] = "Binary", t[t.Guid = 14] = "Guid", t))(R || {});
|
|
75
|
+
const It = 161, mt = 162, Ee = new TextEncoder(), Jr = new TextDecoder("utf-8", { fatal: !0 });
|
|
76
76
|
class D {
|
|
77
77
|
constructor(e = 1) {
|
|
78
78
|
this.version = e, this.buffer.writeByte(It), this.buffer.writeVarUInt(e >>> 0);
|
|
@@ -108,7 +108,7 @@ class D {
|
|
|
108
108
|
this.writeFixedField(e, 14, () => this.buffer.writeBytes(n));
|
|
109
109
|
}
|
|
110
110
|
writeStringField(e, r) {
|
|
111
|
-
const n =
|
|
111
|
+
const n = Ee.encode(r ?? "");
|
|
112
112
|
this.writeVariableField(e, 12, n);
|
|
113
113
|
}
|
|
114
114
|
writeBinaryField(e, r) {
|
|
@@ -121,7 +121,7 @@ class D {
|
|
|
121
121
|
this.writeVariableField(e, 11, i);
|
|
122
122
|
}
|
|
123
123
|
writeArrayField(e, r, n) {
|
|
124
|
-
const s = new
|
|
124
|
+
const s = new we(r);
|
|
125
125
|
n(s);
|
|
126
126
|
const i = s.finish();
|
|
127
127
|
this.writeVariableField(e, 9, i);
|
|
@@ -142,10 +142,10 @@ class D {
|
|
|
142
142
|
this.writeFieldHeader(e, r, n.length), this.buffer.writeBytes(n);
|
|
143
143
|
}
|
|
144
144
|
writeFieldHeader(e, r, n) {
|
|
145
|
-
this.buffer.writeUInt32(e >>> 0), this.buffer.writeByte(
|
|
145
|
+
this.buffer.writeUInt32(e >>> 0), this.buffer.writeByte(pe(r)), tn(r) && this.buffer.writeVarUInt(n >>> 0);
|
|
146
146
|
}
|
|
147
147
|
}
|
|
148
|
-
class
|
|
148
|
+
class we {
|
|
149
149
|
constructor(e) {
|
|
150
150
|
this.elementType = e;
|
|
151
151
|
}
|
|
@@ -208,7 +208,7 @@ class Se {
|
|
|
208
208
|
12
|
|
209
209
|
/* String */
|
|
210
210
|
), this.count++;
|
|
211
|
-
const r =
|
|
211
|
+
const r = Ee.encode(e ?? "");
|
|
212
212
|
this.payload.writeVarUInt(r.length), this.payload.writeBytes(r);
|
|
213
213
|
}
|
|
214
214
|
writeBinary(e) {
|
|
@@ -232,7 +232,7 @@ class Se {
|
|
|
232
232
|
9
|
|
233
233
|
/* Array */
|
|
234
234
|
), this.count++;
|
|
235
|
-
const n = new
|
|
235
|
+
const n = new we(e);
|
|
236
236
|
r(n);
|
|
237
237
|
const s = n.finish();
|
|
238
238
|
this.payload.writeBytes(s);
|
|
@@ -249,11 +249,11 @@ class Se {
|
|
|
249
249
|
}
|
|
250
250
|
finish() {
|
|
251
251
|
const e = new $();
|
|
252
|
-
return e.writeByte(
|
|
252
|
+
return e.writeByte(pe(this.elementType)), e.writeVarUInt(this.count), e.writeBytes(this.payload.toUint8Array()), e.toUint8Array();
|
|
253
253
|
}
|
|
254
254
|
ensureElementType(e) {
|
|
255
255
|
if (this.elementType !== e)
|
|
256
|
-
throw new Error(`Array element type is ${
|
|
256
|
+
throw new Error(`Array element type is ${R[this.elementType]}, expected ${R[e]}`);
|
|
257
257
|
}
|
|
258
258
|
}
|
|
259
259
|
class xe {
|
|
@@ -274,7 +274,7 @@ class xe {
|
|
|
274
274
|
if (this.entryOpen)
|
|
275
275
|
throw new Error("Dictionary entry not completed");
|
|
276
276
|
const e = new $();
|
|
277
|
-
return e.writeByte(
|
|
277
|
+
return e.writeByte(pe(this.keyType)), e.writeByte(pe(this.valueType)), e.writeVarUInt(this.count), e.writeBytes(this.payload.toUint8Array()), e.toUint8Array();
|
|
278
278
|
}
|
|
279
279
|
}
|
|
280
280
|
class Qr {
|
|
@@ -341,7 +341,7 @@ class Qr {
|
|
|
341
341
|
12
|
|
342
342
|
/* String */
|
|
343
343
|
);
|
|
344
|
-
const r =
|
|
344
|
+
const r = Ee.encode(e ?? "");
|
|
345
345
|
this.payload.writeVarUInt(r.length), this.payload.writeBytes(r), this.keyWritten = !0;
|
|
346
346
|
}
|
|
347
347
|
writeKeyBinary(e) {
|
|
@@ -419,7 +419,7 @@ class Qr {
|
|
|
419
419
|
12
|
|
420
420
|
/* String */
|
|
421
421
|
);
|
|
422
|
-
const r =
|
|
422
|
+
const r = Ee.encode(e ?? "");
|
|
423
423
|
this.payload.writeVarUInt(r.length), this.payload.writeBytes(r), this.valueWritten = !0;
|
|
424
424
|
}
|
|
425
425
|
writeValueObject(e, r) {
|
|
@@ -437,7 +437,7 @@ class Qr {
|
|
|
437
437
|
9
|
|
438
438
|
/* Array */
|
|
439
439
|
);
|
|
440
|
-
const n = new
|
|
440
|
+
const n = new we(e);
|
|
441
441
|
r(n);
|
|
442
442
|
const s = n.finish();
|
|
443
443
|
this.payload.writeBytes(s), this.valueWritten = !0;
|
|
@@ -461,11 +461,11 @@ class Qr {
|
|
|
461
461
|
}
|
|
462
462
|
ensureKeyType(e) {
|
|
463
463
|
if (this.keyType !== e)
|
|
464
|
-
throw new Error(`Dictionary key type is ${
|
|
464
|
+
throw new Error(`Dictionary key type is ${R[this.keyType]}, expected ${R[e]}`);
|
|
465
465
|
}
|
|
466
466
|
ensureValueType(e) {
|
|
467
467
|
if (this.valueType !== e)
|
|
468
|
-
throw new Error(`Dictionary value type is ${
|
|
468
|
+
throw new Error(`Dictionary value type is ${R[this.valueType]}, expected ${R[e]}`);
|
|
469
469
|
}
|
|
470
470
|
}
|
|
471
471
|
class X {
|
|
@@ -475,7 +475,7 @@ class X {
|
|
|
475
475
|
offset;
|
|
476
476
|
end;
|
|
477
477
|
static create(e) {
|
|
478
|
-
const r =
|
|
478
|
+
const r = oe(e);
|
|
479
479
|
if (r.length < 2)
|
|
480
480
|
throw new Error("Teleport payload too short");
|
|
481
481
|
if (r[0] !== It || r[r.length - 1] !== mt)
|
|
@@ -594,7 +594,7 @@ class F {
|
|
|
594
594
|
}
|
|
595
595
|
ensureType(e) {
|
|
596
596
|
if (this.type !== e)
|
|
597
|
-
throw new Error(`Teleport value has type ${
|
|
597
|
+
throw new Error(`Teleport value has type ${R[this.type]}, expected ${R[e]}`);
|
|
598
598
|
}
|
|
599
599
|
}
|
|
600
600
|
class Zr extends F {
|
|
@@ -621,7 +621,7 @@ class Ge {
|
|
|
621
621
|
this.count = U(e, n, "ArrayMalformed"), this.offset = n.offset;
|
|
622
622
|
}
|
|
623
623
|
static create(e) {
|
|
624
|
-
return new Ge(
|
|
624
|
+
return new Ge(oe(e));
|
|
625
625
|
}
|
|
626
626
|
next() {
|
|
627
627
|
if (this.index >= this.count) {
|
|
@@ -669,7 +669,7 @@ class Ge {
|
|
|
669
669
|
return this.offset += e, new ee(10, r);
|
|
670
670
|
}
|
|
671
671
|
default:
|
|
672
|
-
throw new Error(`Unsupported array element type ${
|
|
672
|
+
throw new Error(`Unsupported array element type ${R[this.elementType]}`);
|
|
673
673
|
}
|
|
674
674
|
}
|
|
675
675
|
}
|
|
@@ -695,7 +695,7 @@ class Ve {
|
|
|
695
695
|
this.count = U(e, r, "DictMalformed"), this.offset = r.offset;
|
|
696
696
|
}
|
|
697
697
|
static create(e) {
|
|
698
|
-
return new Ve(
|
|
698
|
+
return new Ve(oe(e));
|
|
699
699
|
}
|
|
700
700
|
next() {
|
|
701
701
|
if (this.index >= this.count) {
|
|
@@ -759,7 +759,7 @@ class Ve {
|
|
|
759
759
|
return this.offset += e, new F(this.valueType, r);
|
|
760
760
|
}
|
|
761
761
|
default:
|
|
762
|
-
throw new Error(`Unsupported dictionary value type ${
|
|
762
|
+
throw new Error(`Unsupported dictionary value type ${R[this.valueType]}`);
|
|
763
763
|
}
|
|
764
764
|
}
|
|
765
765
|
}
|
|
@@ -909,7 +909,7 @@ function U(t, e, r) {
|
|
|
909
909
|
function en(t) {
|
|
910
910
|
return t < 128 ? 1 : t < 16384 ? 2 : t < 2097152 ? 3 : t < 268435456 ? 4 : 5;
|
|
911
911
|
}
|
|
912
|
-
function
|
|
912
|
+
function pe(t, e = 0) {
|
|
913
913
|
if ((e & 240) !== 0)
|
|
914
914
|
throw new Error("Teleport flags must fit into 4 bits");
|
|
915
915
|
return (t & 15) << 4 | e & 15;
|
|
@@ -961,7 +961,7 @@ function He(t, e) {
|
|
|
961
961
|
}
|
|
962
962
|
let a = s.offset;
|
|
963
963
|
for (let c = 0; c < i; c++)
|
|
964
|
-
a =
|
|
964
|
+
a = be(n, t, a, "ArrayMalformed");
|
|
965
965
|
return a - e;
|
|
966
966
|
}
|
|
967
967
|
function $e(t, e) {
|
|
@@ -974,10 +974,10 @@ function $e(t, e) {
|
|
|
974
974
|
const s = { offset: e + 2 }, i = U(t, s, "DictMalformed");
|
|
975
975
|
let o = s.offset;
|
|
976
976
|
for (let a = 0; a < i; a++)
|
|
977
|
-
o =
|
|
977
|
+
o = be(r, t, o, "DictMalformed"), o = be(n, t, o, "DictMalformed");
|
|
978
978
|
return o - e;
|
|
979
979
|
}
|
|
980
|
-
function
|
|
980
|
+
function be(t, e, r, n) {
|
|
981
981
|
const s = j(t);
|
|
982
982
|
if (s >= 0)
|
|
983
983
|
return C(e, r, s), r + s;
|
|
@@ -996,16 +996,16 @@ function Re(t, e, r, n) {
|
|
|
996
996
|
case 10:
|
|
997
997
|
return r + $e(e, r);
|
|
998
998
|
default:
|
|
999
|
-
throw new Error(`Unsupported Teleport type ${
|
|
999
|
+
throw new Error(`Unsupported Teleport type ${R[t]}`);
|
|
1000
1000
|
}
|
|
1001
1001
|
}
|
|
1002
1002
|
function qe(t) {
|
|
1003
1003
|
return Array.from(t).map((e) => e.toString(16).padStart(2, "0")).join("");
|
|
1004
1004
|
}
|
|
1005
|
-
function
|
|
1005
|
+
function oe(t) {
|
|
1006
1006
|
return t instanceof Uint8Array ? t : new Uint8Array(t);
|
|
1007
1007
|
}
|
|
1008
|
-
var _t = /* @__PURE__ */ ((t) => (t[t.Unknown = 0] = "Unknown", t[t.Opus = 1] = "Opus", t[t.Mp3 = 2] = "Mp3", t[t.RawPcm16 = 3] = "RawPcm16", t))(_t || {}), J = /* @__PURE__ */ ((t) => (t[t.Unknown = 0] = "Unknown", t[t.MobileWeb = 1] = "MobileWeb", t[t.MobileApp = 2] = "MobileApp", t[t.DesktopWeb = 3] = "DesktopWeb", t[t.DesktopApp = 4] = "DesktopApp", t))(J || {}), Q = /* @__PURE__ */ ((t) => (t[t.Unknown = 0] = "Unknown", t[t.Backend = 2] = "Backend", t[t.Server = 4] = "Server", t[t.Plugin = 8] = "Plugin", t[t.Browser = 16] = "Browser", t))(Q || {}), k = /* @__PURE__ */ ((t) => (t[t.None = 0] = "None", t[t.WebSocket = 1] = "WebSocket", t[t.WebSocketProxy = 2] = "WebSocketProxy", t[t.WebTransport = 4] = "WebTransport", t[t.WebTransportProxy = 8] = "WebTransportProxy", t[t.Tcp = 16] = "Tcp", t[t.TcpProxy = 32] = "TcpProxy", t[t.Https = 64] = "Https", t))(k || {}), Z = /* @__PURE__ */ ((t) => (t[t.Unknown = 0] = "Unknown", t[t.MessagePack = 1] = "MessagePack", t[t.MemoryPack = 2] = "MemoryPack", t[t.Json = 4] = "Json", t[t.Teleport = 8] = "Teleport", t[t.All = 15] = "All", t))(Z || {}), Tt = /* @__PURE__ */ ((t) => (t[t.Face = 0] = "Face", t[t.Hands = 1] = "Hands", t[t.Pose = 2] = "Pose", t[t.All = 3] = "All", t))(Tt || {}), q = /* @__PURE__ */ ((t) => (t[t.Unknown = 0] = "Unknown", t[t.Machine = 1] = "Machine", t[t.Human = 2] = "Human", t))(q || {}), St = /* @__PURE__ */ ((t) => (t[t.Unknown = 0] = "Unknown", t[t.H264 = 1] = "H264", t[t.Vp8 = 2] = "Vp8", t[t.Vp9 = 3] = "Vp9", t[t.Av1 = 4] = "Av1", t))(St || {}), Ke = /* @__PURE__ */ ((t) => (t[t.Unknown = 0] = "Unknown", t[t.DotNet = 1] = "DotNet", t[t.TypeScript = 2] = "TypeScript", t[t.Cpp = 3] = "Cpp", t))(Ke || {}), wt = /* @__PURE__ */ ((t) => (t[t.Local = 0] = "Local", t[t.Cloud = 1] = "Cloud", t))(wt || {}), At = /* @__PURE__ */ ((t) => (t[t.Bundle = 0] = "Bundle", t[t.GitSource = 1] = "GitSource", t))(At || {}), T = /* @__PURE__ */ ((t) => (t[t.NONE = 0] = "NONE", t[t.CONSTANT_GROUP_BITS = 15] = "CONSTANT_GROUP_BITS", t[t.CONSTANT_GROUP_OFFSET = 16] = "CONSTANT_GROUP_OFFSET", t[t.GROUP_CORE = 65536] = "GROUP_CORE", t[t.CORE_AUTH_RESPONSE = 65537] = "CORE_AUTH_RESPONSE", t[t.CORE_AUTH_TICKET = 65538] = "CORE_AUTH_TICKET", t[t.CORE_GLOBAL_STATE = 65539] = "CORE_GLOBAL_STATE", t[t.CORE_ON_SERVER_STATUS_PING = 65540] = "CORE_ON_SERVER_STATUS_PING", t[t.CORE_ON_USER_JOINED = 65541] = "CORE_ON_USER_JOINED", t[t.CORE_ON_USER_LEFT = 65542] = "CORE_ON_USER_LEFT", t[t.CORE_ON_CLIENT_JOINED = 65543] = "CORE_ON_CLIENT_JOINED", t[t.CORE_ON_CLIENT_LEFT = 65544] = "CORE_ON_CLIENT_LEFT", t[t.CORE_ON_SERVER_STARTED = 65545] = "CORE_ON_SERVER_STARTED", t[t.CORE_ON_SERVER_STOPPED = 65546] = "CORE_ON_SERVER_STOPPED", t[t.CORE_ON_SERVER_STOPPING = 65547] = "CORE_ON_SERVER_STOPPING", t[t.CORE_ON_CLIENT_READY = 65548] = "CORE_ON_CLIENT_READY", t[t.CORE_CLIENT_READY = 65549] = "CORE_CLIENT_READY", t[t.CORE_SERVER_INIT = 65550] = "CORE_SERVER_INIT", t[t.CORE_ON_PLUGIN_RELOADED = 65551] = "CORE_ON_PLUGIN_RELOADED", t[t.CORE_SERVER_START = 65552] = "CORE_SERVER_START", t[t.CORE_SERVER_STOP = 65553] = "CORE_SERVER_STOP", t[t.CORE_ON_HOSTED_SERVER_EXIT = 65554] = "CORE_ON_HOSTED_SERVER_EXIT", t[t.CORE_DYNAMIC_CONFIG = 65555] = "CORE_DYNAMIC_CONFIG", t[t.CORE_PROXY_RPC_AUTH_TICKET = 65556] = "CORE_PROXY_RPC_AUTH_TICKET", t[t.CORE_SERVER_INIT2 = 65557] = "CORE_SERVER_INIT2", t[t.GROUP_KEEPALIVE = 131072] = "GROUP_KEEPALIVE", t[t.KEEPALIVE_REQUEST = 131073] = "KEEPALIVE_REQUEST", t[t.KEEPALIVE_RESPONSE = 131074] = "KEEPALIVE_RESPONSE", t[t.GROUP_EVENTS = 262144] = "GROUP_EVENTS", t[t.EVENTS_PROFILE_UPDATE = 262145] = "EVENTS_PROFILE_UPDATE", t[t.EVENTS_CHANNEL_COMPLETE = 262146] = "EVENTS_CHANNEL_COMPLETE", t[t.EVENTS_SPEECH_PLAYBACK_COMPLETE = 262147] = "EVENTS_SPEECH_PLAYBACK_COMPLETE", t[t.GROUP_ANALYTICS = 524288] = "GROUP_ANALYTICS", t[t.ANALYTICS_LOGS = 524289] = "ANALYTICS_LOGS", t[t.ANALYTICS_EVENTS = 524290] = "ANALYTICS_EVENTS", t[t.ANALYTICS_USAGES = 524291] = "ANALYTICS_USAGES", t[t.ANALYTICS_USAGE = 524292] = "ANALYTICS_USAGE", t[t.ANALYTICS_SPECIAL_LOG = 524293] = "ANALYTICS_SPECIAL_LOG", t[t.ANALYTICS_PROCESSING_UPDATE = 524294] = "ANALYTICS_PROCESSING_UPDATE", t[t.ANALYTICS_REACTIVE_PROCESSING_UPDATE = 524295] = "ANALYTICS_REACTIVE_PROCESSING_UPDATE", t[t.ANALYTICS_IKON_PROXY_SERVER_STATS = 524296] = "ANALYTICS_IKON_PROXY_SERVER_STATS", t[t.GROUP_ACTIONS = 1048576] = "GROUP_ACTIONS", t[t.ACTION_CALL = 1048577] = "ACTION_CALL", t[t.ACTION_ACTIVE = 1048578] = "ACTION_ACTIVE", t[t.ACTION_TEXT_OUTPUT = 1048579] = "ACTION_TEXT_OUTPUT", t[t.ACTION_TEXT_OUTPUT_DELTA = 1048580] = "ACTION_TEXT_OUTPUT_DELTA", t[t.ACTION_TEXT_OUTPUT_DELTA_FULL = 1048581] = "ACTION_TEXT_OUTPUT_DELTA_FULL", t[t.ACTION_SET_STATE = 1048582] = "ACTION_SET_STATE", t[t.ACTION_TAP = 1048583] = "ACTION_TAP", t[t.ACTION_PAN = 1048584] = "ACTION_PAN", t[t.ACTION_ZOOM = 1048585] = "ACTION_ZOOM", t[t.ACTION_FILE_UPLOAD_BEGIN = 1048586] = "ACTION_FILE_UPLOAD_BEGIN", t[t.ACTION_FILE_UPLOAD_DATA = 1048587] = "ACTION_FILE_UPLOAD_DATA", t[t.ACTION_FILE_UPLOAD_ACK = 1048588] = "ACTION_FILE_UPLOAD_ACK", t[t.ACTION_FILE_UPLOAD_END = 1048589] = "ACTION_FILE_UPLOAD_END", t[t.ACTION_FILE_UPLOAD_RESULT = 1048590] = "ACTION_FILE_UPLOAD_RESULT", t[t.ACTION_OPEN_CHANNEL = 1048591] = "ACTION_OPEN_CHANNEL", t[t.ACTION_OPEN_EXTERNAL_URL = 1048592] = "ACTION_OPEN_EXTERNAL_URL", t[t.ACTION_UI_OPEN_VIEW = 1048593] = "ACTION_UI_OPEN_VIEW", t[t.ACTION_UI_CLOSE_VIEW = 1048594] = "ACTION_UI_CLOSE_VIEW", t[t.ACTION_UI_BLOCKING_BEGIN = 1048595] = "ACTION_UI_BLOCKING_BEGIN", t[t.ACTION_UI_BLOCKING_END = 1048596] = "ACTION_UI_BLOCKING_END", t[t.ACTION_UI_UPDATE_TEXT_DELTA = 1048597] = "ACTION_UI_UPDATE_TEXT_DELTA", t[t.ACTION_UI_DELETE_CONTAINER = 1048598] = "ACTION_UI_DELETE_CONTAINER", t[t.ACTION_UPDATE_GFX_SHADER = 1048599] = "ACTION_UPDATE_GFX_SHADER", t[t.ACTION_FUNCTION_REGISTER = 1048600] = "ACTION_FUNCTION_REGISTER", t[t.ACTION_FUNCTION_CALL = 1048601] = "ACTION_FUNCTION_CALL", t[t.ACTION_FUNCTION_RESULT = 1048602] = "ACTION_FUNCTION_RESULT", t[t.ACTION_GENERATE_ANSWER = 1048603] = "ACTION_GENERATE_ANSWER", t[t.ACTION_REGENERATE_ANSWER = 1048604] = "ACTION_REGENERATE_ANSWER", t[t.ACTION_CLEAR_CHAT_MESSAGE_HISTORY = 1048605] = "ACTION_CLEAR_CHAT_MESSAGE_HISTORY", t[t.ACTION_CLEAR_STATE = 1048606] = "ACTION_CLEAR_STATE", t[t.ACTION_RELOAD_CHANNELS = 1048607] = "ACTION_RELOAD_CHANNELS", t[t.ACTION_RELOAD_PROFILE = 1048608] = "ACTION_RELOAD_PROFILE", t[t.ACTION_CLASSIFICATION_RESULT = 1048609] = "ACTION_CLASSIFICATION_RESULT", t[t.ACTION_AUDIO_STOP = 1048610] = "ACTION_AUDIO_STOP", t[t.ACTION_CALL_TEXT = 1048611] = "ACTION_CALL_TEXT", t[t.ACTION_RELOAD_APPLICATION = 1048612] = "ACTION_RELOAD_APPLICATION", t[t.ACTION_CANCEL_GENERATION = 1048613] = "ACTION_CANCEL_GENERATION", t[t.ACTION_UI_SET_CONTAINER_STABLE = 1048614] = "ACTION_UI_SET_CONTAINER_STABLE", t[t.ACTION_SPEECH_RECOGNIZED = 1048615] = "ACTION_SPEECH_RECOGNIZED", t[t.ACTION_CALL_RESULT = 1048616] = "ACTION_CALL_RESULT", t[t.ACTION_RELOAD_PROVIDER = 1048617] = "ACTION_RELOAD_PROVIDER", t[t.ACTION_DOWNLOAD = 1048618] = "ACTION_DOWNLOAD", t[t.ACTION_SCROLL_TO_CONTAINER = 1048619] = "ACTION_SCROLL_TO_CONTAINER", t[t.ACTION_UI_CLEAR_STREAM = 1048620] = "ACTION_UI_CLEAR_STREAM", t[t.ACTION_PLAY_SOUND = 1048621] = "ACTION_PLAY_SOUND", t[t.ACTION_ENTER_FULLSCREEN = 1048622] = "ACTION_ENTER_FULLSCREEN", t[t.ACTION_STOP_SOUND = 1048623] = "ACTION_STOP_SOUND", t[t.ACTION_START_RECORDING = 1048624] = "ACTION_START_RECORDING", t[t.ACTION_STOP_RECORDING = 1048625] = "ACTION_STOP_RECORDING", t[t.ACTION_OPTIMISTIC_CLIENT_CALLS = 1048626] = "ACTION_OPTIMISTIC_CLIENT_CALLS", t[t.ACTION_FUNCTION_ENUMERATION_ITEM = 1048627] = "ACTION_FUNCTION_ENUMERATION_ITEM", t[t.ACTION_FUNCTION_ENUMERATION_END = 1048628] = "ACTION_FUNCTION_ENUMERATION_END", t[t.ACTION_FUNCTION_CANCEL = 1048629] = "ACTION_FUNCTION_CANCEL", t[t.ACTION_FUNCTION_DISPOSE = 1048630] = "ACTION_FUNCTION_DISPOSE", t[t.ACTION_FUNCTION_ERROR = 1048631] = "ACTION_FUNCTION_ERROR", t[t.ACTION_FUNCTION_ACK = 1048632] = "ACTION_FUNCTION_ACK", t[t.ACTION_FUNCTION_AWAITING_APPROVAL = 1048633] = "ACTION_FUNCTION_AWAITING_APPROVAL", t[t.ACTION_FUNCTION_APPROVAL_REQUIRED = 1048634] = "ACTION_FUNCTION_APPROVAL_REQUIRED", t[t.ACTION_FUNCTION_APPROVAL_RESPONSE = 1048635] = "ACTION_FUNCTION_APPROVAL_RESPONSE", t[t.UI_UPDATE_ACK = 1048636] = "UI_UPDATE_ACK", t[t.ACTION_CALL2 = 1048637] = "ACTION_CALL2", t[t.ACTION_FUNCTION_REGISTER_BATCH = 1048638] = "ACTION_FUNCTION_REGISTER_BATCH", t[t.ACTION_TRIGGER_GIT_PULL = 1048639] = "ACTION_TRIGGER_GIT_PULL", t[t.ACTION_FILE_UPLOAD_CALLBACK = 1048640] = "ACTION_FILE_UPLOAD_CALLBACK", t[t.ACTION_CUSTOM_USER_MESSAGE = 1048641] = "ACTION_CUSTOM_USER_MESSAGE", t[t.GROUP_UI = 2097152] = "GROUP_UI", t[t.UI_STREAM_BEGIN = 2097153] = "UI_STREAM_BEGIN", t[t.UI_STREAM_END = 2097154] = "UI_STREAM_END", t[t.UI_CONTAINER_BEGIN = 2097155] = "UI_CONTAINER_BEGIN", t[t.UI_CONTAINER_END = 2097156] = "UI_CONTAINER_END", t[t.UI_SECTION_BEGIN = 2097157] = "UI_SECTION_BEGIN", t[t.UI_SECTION_END = 2097158] = "UI_SECTION_END", t[t.UI_LIST_BEGIN = 2097159] = "UI_LIST_BEGIN", t[t.UI_LIST_ITEM = 2097160] = "UI_LIST_ITEM", t[t.UI_LIST_END = 2097161] = "UI_LIST_END", t[t.UI_TEXT = 2097162] = "UI_TEXT", t[t.UI_HEADER = 2097163] = "UI_HEADER", t[t.UI_SEPARATOR = 2097164] = "UI_SEPARATOR", t[t.UI_BUTTON = 2097165] = "UI_BUTTON", t[t.UI_ICON_BUTTON = 2097166] = "UI_ICON_BUTTON", t[t.UI_IMAGE = 2097167] = "UI_IMAGE", t[t.UI_FILE = 2097168] = "UI_FILE", t[t.UI_BADGE = 2097169] = "UI_BADGE", t[t.UI_CONTENT_LINK = 2097170] = "UI_CONTENT_LINK", t[t.UI_MAP = 2097171] = "UI_MAP", t[t.UI_VEGA_CHART = 2097172] = "UI_VEGA_CHART", t[t.UI_ICON = 2097173] = "UI_ICON", t[t.UI_FILE_UPLOAD_SECTION_BEGIN = 2097174] = "UI_FILE_UPLOAD_SECTION_BEGIN", t[t.UI_FILE_UPLOAD_SECTION_END = 2097175] = "UI_FILE_UPLOAD_SECTION_END", t[t.UI_MATERIAL_SYMBOL = 2097176] = "UI_MATERIAL_SYMBOL", t[t.UI_BUTTON_BEGIN = 2097177] = "UI_BUTTON_BEGIN", t[t.UI_BUTTON_END = 2097178] = "UI_BUTTON_END", t[t.UI_CONTAINER_DELETE = 2097179] = "UI_CONTAINER_DELETE", t[t.UI_INPUT_TEXT = 2097180] = "UI_INPUT_TEXT", t[t.UI_PROGRESS_BAR = 2097181] = "UI_PROGRESS_BAR", t[t.UI_UPDATE_BEGIN = 2097182] = "UI_UPDATE_BEGIN", t[t.UI_UPDATE_END = 2097183] = "UI_UPDATE_END", t[t.UI_AUTOCOMPLETE = 2097184] = "UI_AUTOCOMPLETE", t[t.UI_CHECKBOX = 2097185] = "UI_CHECKBOX", t[t.UI_QS = 2097186] = "UI_QS", t[t.UI_ELEMENT = 2097187] = "UI_ELEMENT", t[t.UI_STYLES = 2097188] = "UI_STYLES", t[t.UI_SVG = 2097189] = "UI_SVG", t[t.UI_UPDATE = 2097190] = "UI_UPDATE", t[t.UI_INIT = 2097191] = "UI_INIT", t[t.UI_STYLES_BATCH = 2097192] = "UI_STYLES_BATCH", t[t.UI_STYLES_DELETE = 2097193] = "UI_STYLES_DELETE", t[t.GROUP_COMMON = 4128768] = "GROUP_COMMON", t[t.GROUP_AUDIO = 4194304] = "GROUP_AUDIO", t[t.AUDIO_STREAM_BEGIN = 4194305] = "AUDIO_STREAM_BEGIN", t[t.AUDIO_STREAM_END = 4194306] = "AUDIO_STREAM_END", t[t.AUDIO_FRAME = 4194307] = "AUDIO_FRAME", t[t.AUDIO_FRAME_VOLUME = 4194308] = "AUDIO_FRAME_VOLUME", t[t.AUDIO_FRAME2 = 4194309] = "AUDIO_FRAME2", t[t.GROUP_VIDEO = 8388608] = "GROUP_VIDEO", t[t.VIDEO_STREAM_BEGIN = 8388609] = "VIDEO_STREAM_BEGIN", t[t.VIDEO_STREAM_END = 8388610] = "VIDEO_STREAM_END", t[t.VIDEO_FRAME = 8388611] = "VIDEO_FRAME", t[t.VIDEO_REQUEST_IDR_FRAME = 8388612] = "VIDEO_REQUEST_IDR_FRAME", t[t.VIDEO_INVALIDATE_FRAME = 8388613] = "VIDEO_INVALIDATE_FRAME", t[t.GROUP_TRACKING = 16777216] = "GROUP_TRACKING", t[t.TRACKING_STREAM_BEGIN = 16777217] = "TRACKING_STREAM_BEGIN", t[t.TRACKING_STREAM_END = 16777218] = "TRACKING_STREAM_END", t[t.TRACKING_FRAME = 16777219] = "TRACKING_FRAME", t[t.GROUP_SCENE = 33554432] = "GROUP_SCENE", t[t.SCENE_MESH = 33554433] = "SCENE_MESH", t[t.SCENE_ARRAY = 33554434] = "SCENE_ARRAY", t[t.GROUP_ALL = 67043328] = "GROUP_ALL", t[t.CONSTANT_GROUP_MASK = 2147418112] = "CONSTANT_GROUP_MASK", t))(T || {});
|
|
1008
|
+
var _t = /* @__PURE__ */ ((t) => (t[t.Unknown = 0] = "Unknown", t[t.Opus = 1] = "Opus", t[t.Mp3 = 2] = "Mp3", t[t.RawPcm16 = 3] = "RawPcm16", t))(_t || {}), J = /* @__PURE__ */ ((t) => (t[t.Unknown = 0] = "Unknown", t[t.MobileWeb = 1] = "MobileWeb", t[t.MobileApp = 2] = "MobileApp", t[t.DesktopWeb = 3] = "DesktopWeb", t[t.DesktopApp = 4] = "DesktopApp", t))(J || {}), Q = /* @__PURE__ */ ((t) => (t[t.Unknown = 0] = "Unknown", t[t.Backend = 2] = "Backend", t[t.Server = 4] = "Server", t[t.Plugin = 8] = "Plugin", t[t.Browser = 16] = "Browser", t))(Q || {}), k = /* @__PURE__ */ ((t) => (t[t.None = 0] = "None", t[t.WebSocket = 1] = "WebSocket", t[t.WebSocketProxy = 2] = "WebSocketProxy", t[t.WebTransport = 4] = "WebTransport", t[t.WebTransportProxy = 8] = "WebTransportProxy", t[t.Tcp = 16] = "Tcp", t[t.TcpProxy = 32] = "TcpProxy", t[t.Https = 64] = "Https", t))(k || {}), Z = /* @__PURE__ */ ((t) => (t[t.Unknown = 0] = "Unknown", t[t.MessagePack = 1] = "MessagePack", t[t.MemoryPack = 2] = "MemoryPack", t[t.Json = 4] = "Json", t[t.Teleport = 8] = "Teleport", t[t.All = 15] = "All", t))(Z || {}), Tt = /* @__PURE__ */ ((t) => (t[t.Face = 0] = "Face", t[t.Hands = 1] = "Hands", t[t.Pose = 2] = "Pose", t[t.All = 3] = "All", t))(Tt || {}), q = /* @__PURE__ */ ((t) => (t[t.Unknown = 0] = "Unknown", t[t.Machine = 1] = "Machine", t[t.Human = 2] = "Human", t))(q || {}), St = /* @__PURE__ */ ((t) => (t[t.Unknown = 0] = "Unknown", t[t.H264 = 1] = "H264", t[t.Vp8 = 2] = "Vp8", t[t.Vp9 = 3] = "Vp9", t[t.Av1 = 4] = "Av1", t))(St || {}), Ke = /* @__PURE__ */ ((t) => (t[t.Unknown = 0] = "Unknown", t[t.DotNet = 1] = "DotNet", t[t.TypeScript = 2] = "TypeScript", t[t.Cpp = 3] = "Cpp", t))(Ke || {}), wt = /* @__PURE__ */ ((t) => (t[t.Local = 0] = "Local", t[t.Cloud = 1] = "Cloud", t))(wt || {}), At = /* @__PURE__ */ ((t) => (t[t.Bundle = 0] = "Bundle", t[t.GitSource = 1] = "GitSource", t))(At || {}), S = /* @__PURE__ */ ((t) => (t[t.NONE = 0] = "NONE", t[t.CONSTANT_GROUP_BITS = 15] = "CONSTANT_GROUP_BITS", t[t.CONSTANT_GROUP_OFFSET = 16] = "CONSTANT_GROUP_OFFSET", t[t.GROUP_CORE = 65536] = "GROUP_CORE", t[t.CORE_AUTH_RESPONSE = 65537] = "CORE_AUTH_RESPONSE", t[t.CORE_AUTH_TICKET = 65538] = "CORE_AUTH_TICKET", t[t.CORE_GLOBAL_STATE = 65539] = "CORE_GLOBAL_STATE", t[t.CORE_ON_SERVER_STATUS_PING = 65540] = "CORE_ON_SERVER_STATUS_PING", t[t.CORE_ON_USER_JOINED = 65541] = "CORE_ON_USER_JOINED", t[t.CORE_ON_USER_LEFT = 65542] = "CORE_ON_USER_LEFT", t[t.CORE_ON_CLIENT_JOINED = 65543] = "CORE_ON_CLIENT_JOINED", t[t.CORE_ON_CLIENT_LEFT = 65544] = "CORE_ON_CLIENT_LEFT", t[t.CORE_ON_SERVER_STARTED = 65545] = "CORE_ON_SERVER_STARTED", t[t.CORE_ON_SERVER_STOPPED = 65546] = "CORE_ON_SERVER_STOPPED", t[t.CORE_ON_SERVER_STOPPING = 65547] = "CORE_ON_SERVER_STOPPING", t[t.CORE_ON_CLIENT_READY = 65548] = "CORE_ON_CLIENT_READY", t[t.CORE_CLIENT_READY = 65549] = "CORE_CLIENT_READY", t[t.CORE_SERVER_INIT = 65550] = "CORE_SERVER_INIT", t[t.CORE_ON_PLUGIN_RELOADED = 65551] = "CORE_ON_PLUGIN_RELOADED", t[t.CORE_SERVER_START = 65552] = "CORE_SERVER_START", t[t.CORE_SERVER_STOP = 65553] = "CORE_SERVER_STOP", t[t.CORE_ON_HOSTED_SERVER_EXIT = 65554] = "CORE_ON_HOSTED_SERVER_EXIT", t[t.CORE_DYNAMIC_CONFIG = 65555] = "CORE_DYNAMIC_CONFIG", t[t.CORE_PROXY_RPC_AUTH_TICKET = 65556] = "CORE_PROXY_RPC_AUTH_TICKET", t[t.CORE_SERVER_INIT2 = 65557] = "CORE_SERVER_INIT2", t[t.GROUP_KEEPALIVE = 131072] = "GROUP_KEEPALIVE", t[t.KEEPALIVE_REQUEST = 131073] = "KEEPALIVE_REQUEST", t[t.KEEPALIVE_RESPONSE = 131074] = "KEEPALIVE_RESPONSE", t[t.GROUP_EVENTS = 262144] = "GROUP_EVENTS", t[t.EVENTS_PROFILE_UPDATE = 262145] = "EVENTS_PROFILE_UPDATE", t[t.EVENTS_CHANNEL_COMPLETE = 262146] = "EVENTS_CHANNEL_COMPLETE", t[t.EVENTS_SPEECH_PLAYBACK_COMPLETE = 262147] = "EVENTS_SPEECH_PLAYBACK_COMPLETE", t[t.GROUP_ANALYTICS = 524288] = "GROUP_ANALYTICS", t[t.ANALYTICS_LOGS = 524289] = "ANALYTICS_LOGS", t[t.ANALYTICS_EVENTS = 524290] = "ANALYTICS_EVENTS", t[t.ANALYTICS_USAGES = 524291] = "ANALYTICS_USAGES", t[t.ANALYTICS_USAGE = 524292] = "ANALYTICS_USAGE", t[t.ANALYTICS_SPECIAL_LOG = 524293] = "ANALYTICS_SPECIAL_LOG", t[t.ANALYTICS_PROCESSING_UPDATE = 524294] = "ANALYTICS_PROCESSING_UPDATE", t[t.ANALYTICS_REACTIVE_PROCESSING_UPDATE = 524295] = "ANALYTICS_REACTIVE_PROCESSING_UPDATE", t[t.ANALYTICS_IKON_PROXY_SERVER_STATS = 524296] = "ANALYTICS_IKON_PROXY_SERVER_STATS", t[t.GROUP_ACTIONS = 1048576] = "GROUP_ACTIONS", t[t.ACTION_CALL = 1048577] = "ACTION_CALL", t[t.ACTION_ACTIVE = 1048578] = "ACTION_ACTIVE", t[t.ACTION_TEXT_OUTPUT = 1048579] = "ACTION_TEXT_OUTPUT", t[t.ACTION_TEXT_OUTPUT_DELTA = 1048580] = "ACTION_TEXT_OUTPUT_DELTA", t[t.ACTION_TEXT_OUTPUT_DELTA_FULL = 1048581] = "ACTION_TEXT_OUTPUT_DELTA_FULL", t[t.ACTION_SET_STATE = 1048582] = "ACTION_SET_STATE", t[t.ACTION_TAP = 1048583] = "ACTION_TAP", t[t.ACTION_PAN = 1048584] = "ACTION_PAN", t[t.ACTION_ZOOM = 1048585] = "ACTION_ZOOM", t[t.ACTION_FILE_UPLOAD_BEGIN = 1048586] = "ACTION_FILE_UPLOAD_BEGIN", t[t.ACTION_FILE_UPLOAD_DATA = 1048587] = "ACTION_FILE_UPLOAD_DATA", t[t.ACTION_FILE_UPLOAD_ACK = 1048588] = "ACTION_FILE_UPLOAD_ACK", t[t.ACTION_FILE_UPLOAD_END = 1048589] = "ACTION_FILE_UPLOAD_END", t[t.ACTION_FILE_UPLOAD_RESULT = 1048590] = "ACTION_FILE_UPLOAD_RESULT", t[t.ACTION_OPEN_CHANNEL = 1048591] = "ACTION_OPEN_CHANNEL", t[t.ACTION_OPEN_EXTERNAL_URL = 1048592] = "ACTION_OPEN_EXTERNAL_URL", t[t.ACTION_UI_OPEN_VIEW = 1048593] = "ACTION_UI_OPEN_VIEW", t[t.ACTION_UI_CLOSE_VIEW = 1048594] = "ACTION_UI_CLOSE_VIEW", t[t.ACTION_UI_BLOCKING_BEGIN = 1048595] = "ACTION_UI_BLOCKING_BEGIN", t[t.ACTION_UI_BLOCKING_END = 1048596] = "ACTION_UI_BLOCKING_END", t[t.ACTION_UI_UPDATE_TEXT_DELTA = 1048597] = "ACTION_UI_UPDATE_TEXT_DELTA", t[t.ACTION_UI_DELETE_CONTAINER = 1048598] = "ACTION_UI_DELETE_CONTAINER", t[t.ACTION_UPDATE_GFX_SHADER = 1048599] = "ACTION_UPDATE_GFX_SHADER", t[t.ACTION_FUNCTION_REGISTER = 1048600] = "ACTION_FUNCTION_REGISTER", t[t.ACTION_FUNCTION_CALL = 1048601] = "ACTION_FUNCTION_CALL", t[t.ACTION_FUNCTION_RESULT = 1048602] = "ACTION_FUNCTION_RESULT", t[t.ACTION_GENERATE_ANSWER = 1048603] = "ACTION_GENERATE_ANSWER", t[t.ACTION_REGENERATE_ANSWER = 1048604] = "ACTION_REGENERATE_ANSWER", t[t.ACTION_CLEAR_CHAT_MESSAGE_HISTORY = 1048605] = "ACTION_CLEAR_CHAT_MESSAGE_HISTORY", t[t.ACTION_CLEAR_STATE = 1048606] = "ACTION_CLEAR_STATE", t[t.ACTION_RELOAD_CHANNELS = 1048607] = "ACTION_RELOAD_CHANNELS", t[t.ACTION_RELOAD_PROFILE = 1048608] = "ACTION_RELOAD_PROFILE", t[t.ACTION_CLASSIFICATION_RESULT = 1048609] = "ACTION_CLASSIFICATION_RESULT", t[t.ACTION_AUDIO_STOP = 1048610] = "ACTION_AUDIO_STOP", t[t.ACTION_CALL_TEXT = 1048611] = "ACTION_CALL_TEXT", t[t.ACTION_RELOAD_APPLICATION = 1048612] = "ACTION_RELOAD_APPLICATION", t[t.ACTION_CANCEL_GENERATION = 1048613] = "ACTION_CANCEL_GENERATION", t[t.ACTION_UI_SET_CONTAINER_STABLE = 1048614] = "ACTION_UI_SET_CONTAINER_STABLE", t[t.ACTION_SPEECH_RECOGNIZED = 1048615] = "ACTION_SPEECH_RECOGNIZED", t[t.ACTION_CALL_RESULT = 1048616] = "ACTION_CALL_RESULT", t[t.ACTION_RELOAD_PROVIDER = 1048617] = "ACTION_RELOAD_PROVIDER", t[t.ACTION_DOWNLOAD = 1048618] = "ACTION_DOWNLOAD", t[t.ACTION_SCROLL_TO_CONTAINER = 1048619] = "ACTION_SCROLL_TO_CONTAINER", t[t.ACTION_UI_CLEAR_STREAM = 1048620] = "ACTION_UI_CLEAR_STREAM", t[t.ACTION_PLAY_SOUND = 1048621] = "ACTION_PLAY_SOUND", t[t.ACTION_ENTER_FULLSCREEN = 1048622] = "ACTION_ENTER_FULLSCREEN", t[t.ACTION_STOP_SOUND = 1048623] = "ACTION_STOP_SOUND", t[t.ACTION_START_RECORDING = 1048624] = "ACTION_START_RECORDING", t[t.ACTION_STOP_RECORDING = 1048625] = "ACTION_STOP_RECORDING", t[t.ACTION_OPTIMISTIC_CLIENT_CALLS = 1048626] = "ACTION_OPTIMISTIC_CLIENT_CALLS", t[t.ACTION_FUNCTION_ENUMERATION_ITEM = 1048627] = "ACTION_FUNCTION_ENUMERATION_ITEM", t[t.ACTION_FUNCTION_ENUMERATION_END = 1048628] = "ACTION_FUNCTION_ENUMERATION_END", t[t.ACTION_FUNCTION_CANCEL = 1048629] = "ACTION_FUNCTION_CANCEL", t[t.ACTION_FUNCTION_DISPOSE = 1048630] = "ACTION_FUNCTION_DISPOSE", t[t.ACTION_FUNCTION_ERROR = 1048631] = "ACTION_FUNCTION_ERROR", t[t.ACTION_FUNCTION_ACK = 1048632] = "ACTION_FUNCTION_ACK", t[t.ACTION_FUNCTION_AWAITING_APPROVAL = 1048633] = "ACTION_FUNCTION_AWAITING_APPROVAL", t[t.ACTION_FUNCTION_APPROVAL_REQUIRED = 1048634] = "ACTION_FUNCTION_APPROVAL_REQUIRED", t[t.ACTION_FUNCTION_APPROVAL_RESPONSE = 1048635] = "ACTION_FUNCTION_APPROVAL_RESPONSE", t[t.UI_UPDATE_ACK = 1048636] = "UI_UPDATE_ACK", t[t.ACTION_CALL2 = 1048637] = "ACTION_CALL2", t[t.ACTION_FUNCTION_REGISTER_BATCH = 1048638] = "ACTION_FUNCTION_REGISTER_BATCH", t[t.ACTION_TRIGGER_GIT_PULL = 1048639] = "ACTION_TRIGGER_GIT_PULL", t[t.ACTION_FILE_UPLOAD_CALLBACK = 1048640] = "ACTION_FILE_UPLOAD_CALLBACK", t[t.ACTION_CUSTOM_USER_MESSAGE = 1048641] = "ACTION_CUSTOM_USER_MESSAGE", t[t.GROUP_UI = 2097152] = "GROUP_UI", t[t.UI_STREAM_BEGIN = 2097153] = "UI_STREAM_BEGIN", t[t.UI_STREAM_END = 2097154] = "UI_STREAM_END", t[t.UI_CONTAINER_BEGIN = 2097155] = "UI_CONTAINER_BEGIN", t[t.UI_CONTAINER_END = 2097156] = "UI_CONTAINER_END", t[t.UI_SECTION_BEGIN = 2097157] = "UI_SECTION_BEGIN", t[t.UI_SECTION_END = 2097158] = "UI_SECTION_END", t[t.UI_LIST_BEGIN = 2097159] = "UI_LIST_BEGIN", t[t.UI_LIST_ITEM = 2097160] = "UI_LIST_ITEM", t[t.UI_LIST_END = 2097161] = "UI_LIST_END", t[t.UI_TEXT = 2097162] = "UI_TEXT", t[t.UI_HEADER = 2097163] = "UI_HEADER", t[t.UI_SEPARATOR = 2097164] = "UI_SEPARATOR", t[t.UI_BUTTON = 2097165] = "UI_BUTTON", t[t.UI_ICON_BUTTON = 2097166] = "UI_ICON_BUTTON", t[t.UI_IMAGE = 2097167] = "UI_IMAGE", t[t.UI_FILE = 2097168] = "UI_FILE", t[t.UI_BADGE = 2097169] = "UI_BADGE", t[t.UI_CONTENT_LINK = 2097170] = "UI_CONTENT_LINK", t[t.UI_MAP = 2097171] = "UI_MAP", t[t.UI_VEGA_CHART = 2097172] = "UI_VEGA_CHART", t[t.UI_ICON = 2097173] = "UI_ICON", t[t.UI_FILE_UPLOAD_SECTION_BEGIN = 2097174] = "UI_FILE_UPLOAD_SECTION_BEGIN", t[t.UI_FILE_UPLOAD_SECTION_END = 2097175] = "UI_FILE_UPLOAD_SECTION_END", t[t.UI_MATERIAL_SYMBOL = 2097176] = "UI_MATERIAL_SYMBOL", t[t.UI_BUTTON_BEGIN = 2097177] = "UI_BUTTON_BEGIN", t[t.UI_BUTTON_END = 2097178] = "UI_BUTTON_END", t[t.UI_CONTAINER_DELETE = 2097179] = "UI_CONTAINER_DELETE", t[t.UI_INPUT_TEXT = 2097180] = "UI_INPUT_TEXT", t[t.UI_PROGRESS_BAR = 2097181] = "UI_PROGRESS_BAR", t[t.UI_UPDATE_BEGIN = 2097182] = "UI_UPDATE_BEGIN", t[t.UI_UPDATE_END = 2097183] = "UI_UPDATE_END", t[t.UI_AUTOCOMPLETE = 2097184] = "UI_AUTOCOMPLETE", t[t.UI_CHECKBOX = 2097185] = "UI_CHECKBOX", t[t.UI_QS = 2097186] = "UI_QS", t[t.UI_ELEMENT = 2097187] = "UI_ELEMENT", t[t.UI_STYLES = 2097188] = "UI_STYLES", t[t.UI_SVG = 2097189] = "UI_SVG", t[t.UI_UPDATE = 2097190] = "UI_UPDATE", t[t.UI_INIT = 2097191] = "UI_INIT", t[t.UI_STYLES_BATCH = 2097192] = "UI_STYLES_BATCH", t[t.UI_STYLES_DELETE = 2097193] = "UI_STYLES_DELETE", t[t.GROUP_COMMON = 4128768] = "GROUP_COMMON", t[t.GROUP_AUDIO = 4194304] = "GROUP_AUDIO", t[t.AUDIO_STREAM_BEGIN = 4194305] = "AUDIO_STREAM_BEGIN", t[t.AUDIO_STREAM_END = 4194306] = "AUDIO_STREAM_END", t[t.AUDIO_FRAME = 4194307] = "AUDIO_FRAME", t[t.AUDIO_FRAME_VOLUME = 4194308] = "AUDIO_FRAME_VOLUME", t[t.AUDIO_FRAME2 = 4194309] = "AUDIO_FRAME2", t[t.GROUP_VIDEO = 8388608] = "GROUP_VIDEO", t[t.VIDEO_STREAM_BEGIN = 8388609] = "VIDEO_STREAM_BEGIN", t[t.VIDEO_STREAM_END = 8388610] = "VIDEO_STREAM_END", t[t.VIDEO_FRAME = 8388611] = "VIDEO_FRAME", t[t.VIDEO_REQUEST_IDR_FRAME = 8388612] = "VIDEO_REQUEST_IDR_FRAME", t[t.VIDEO_INVALIDATE_FRAME = 8388613] = "VIDEO_INVALIDATE_FRAME", t[t.GROUP_TRACKING = 16777216] = "GROUP_TRACKING", t[t.TRACKING_STREAM_BEGIN = 16777217] = "TRACKING_STREAM_BEGIN", t[t.TRACKING_STREAM_END = 16777218] = "TRACKING_STREAM_END", t[t.TRACKING_FRAME = 16777219] = "TRACKING_FRAME", t[t.GROUP_SCENE = 33554432] = "GROUP_SCENE", t[t.SCENE_MESH = 33554433] = "SCENE_MESH", t[t.SCENE_ARRAY = 33554434] = "SCENE_ARRAY", t[t.GROUP_ALL = 67043328] = "GROUP_ALL", t[t.CONSTANT_GROUP_MASK = 2147418112] = "CONSTANT_GROUP_MASK", t))(S || {});
|
|
1009
1009
|
const yt = 1, nn = 1048637, sn = 727023925, on = 3395085689;
|
|
1010
1010
|
function an(t) {
|
|
1011
1011
|
const e = new D(yt);
|
|
@@ -1081,9 +1081,9 @@ function Ct(t) {
|
|
|
1081
1081
|
}
|
|
1082
1082
|
function Cn(t, e) {
|
|
1083
1083
|
const r = e ?? Nt();
|
|
1084
|
-
return Ct(r),
|
|
1084
|
+
return Ct(r), Rn(t, r), r;
|
|
1085
1085
|
}
|
|
1086
|
-
function
|
|
1086
|
+
function Rn(t, e) {
|
|
1087
1087
|
let r;
|
|
1088
1088
|
for (; (r = t.next()) !== null; )
|
|
1089
1089
|
switch (r.fieldId) {
|
|
@@ -1092,7 +1092,7 @@ function bn(t, e) {
|
|
|
1092
1092
|
e.ShapeSets = void 0;
|
|
1093
1093
|
break;
|
|
1094
1094
|
}
|
|
1095
|
-
e.ShapeSets =
|
|
1095
|
+
e.ShapeSets = bn(r.asArray());
|
|
1096
1096
|
break;
|
|
1097
1097
|
}
|
|
1098
1098
|
case wn: {
|
|
@@ -1122,7 +1122,7 @@ function bn(t, e) {
|
|
|
1122
1122
|
}
|
|
1123
1123
|
}
|
|
1124
1124
|
}
|
|
1125
|
-
function
|
|
1125
|
+
function bn(t) {
|
|
1126
1126
|
const e = [];
|
|
1127
1127
|
let r;
|
|
1128
1128
|
for (; (r = t.next()) !== null; )
|
|
@@ -1132,14 +1132,14 @@ function Rn(t) {
|
|
|
1132
1132
|
const kn = 1107713536, Un = 1154362099, Dn = 1185721362;
|
|
1133
1133
|
function Mn(t) {
|
|
1134
1134
|
const e = {};
|
|
1135
|
-
return
|
|
1135
|
+
return Rt(e), e;
|
|
1136
1136
|
}
|
|
1137
|
-
function
|
|
1137
|
+
function Rt(t) {
|
|
1138
1138
|
return t.SetId = 0, t.Name = "", t.ShapeNames = [], t;
|
|
1139
1139
|
}
|
|
1140
1140
|
function On(t, e) {
|
|
1141
1141
|
const r = e ?? Mn();
|
|
1142
|
-
return
|
|
1142
|
+
return Rt(r), Ln(t, r), r;
|
|
1143
1143
|
}
|
|
1144
1144
|
function Ln(t, e) {
|
|
1145
1145
|
let r;
|
|
@@ -1172,14 +1172,14 @@ function vn(t) {
|
|
|
1172
1172
|
const Fn = 76337612, Pn = 185396121, Bn = 388632637, xn = 417197284, Gn = 469070965, Vn = 470595159, Wn = 781727218, Hn = 834078886, $n = 1043273762, Kn = 1236999138, Yn = 1368629611, jn = 1715899485, zn = 1942830531, Xn = 1999510636, Jn = 2079864626, Qn = 2142346422, Zn = 2598291686, qn = 2719718823, es = 2810953526, ts = 2840065720, rs = 2885165957, ns = 3586157513, ss = 3717933110, is = 4062655306;
|
|
1173
1173
|
function ke(t) {
|
|
1174
1174
|
const e = {};
|
|
1175
|
-
return
|
|
1175
|
+
return bt(e), e;
|
|
1176
1176
|
}
|
|
1177
|
-
function
|
|
1177
|
+
function bt(t) {
|
|
1178
1178
|
return t.ContextType = Q.Unknown, t.UserType = q.Unknown, t.PayloadType = Z.Unknown, t.Description = "", t.UserId = "", t.DeviceId = "", t.ProductId = "", t.VersionId = "", t.InstallId = "", t.Locale = "", t.SessionId = -1, t.IsInternal = !1, t.IsReady = !1, t.HasInput = !1, t.ChannelLocale = "", t.EmbeddedSpaceId = "", t.AuthSessionId = "", t.ReceiveAllMessages = !1, t.PreciseJoinedAt = 0n, t.UserAgent = "", t.ClientType = J.Unknown, t.UniqueSessionId = "", t.Parameters = /* @__PURE__ */ Object.create(null), t.SdkType = Ke.Unknown, t;
|
|
1179
1179
|
}
|
|
1180
1180
|
function Ue(t, e) {
|
|
1181
1181
|
const r = e ?? ke();
|
|
1182
|
-
return
|
|
1182
|
+
return bt(r), os(t, r), r;
|
|
1183
1183
|
}
|
|
1184
1184
|
function os(t, e) {
|
|
1185
1185
|
let r;
|
|
@@ -1322,7 +1322,7 @@ function ps(t) {
|
|
|
1322
1322
|
return kt(e), e;
|
|
1323
1323
|
}
|
|
1324
1324
|
function kt(t) {
|
|
1325
|
-
return t.Type = k.None, t.Uri = "", t.OpcodeGroupsFromServer =
|
|
1325
|
+
return t.Type = k.None, t.Uri = "", t.OpcodeGroupsFromServer = S.NONE, t.OpcodeGroupsToServer = S.NONE, t.Priority = 0, t.Description = "", t.AuthTicket = new Uint8Array(0), t;
|
|
1326
1326
|
}
|
|
1327
1327
|
function Is(t, e) {
|
|
1328
1328
|
const r = e ?? ps();
|
|
@@ -1369,8 +1369,8 @@ function ms(t, e) {
|
|
|
1369
1369
|
}
|
|
1370
1370
|
}
|
|
1371
1371
|
}
|
|
1372
|
-
const _s = 65537, Ts = 166277978, Ss = 1482635149, ws = 1559330978, As = 2802434353, ys = 3085883711, gs = 3669484338, Ns = 3707543140, Cs = 3712281496,
|
|
1373
|
-
function
|
|
1372
|
+
const _s = 65537, Ts = 166277978, Ss = 1482635149, ws = 1559330978, As = 2802434353, ys = 3085883711, gs = 3669484338, Ns = 3707543140, Cs = 3712281496, Rs = 3823842552;
|
|
1373
|
+
function bs(t) {
|
|
1374
1374
|
const e = {};
|
|
1375
1375
|
return Ut(e), e;
|
|
1376
1376
|
}
|
|
@@ -1382,7 +1382,7 @@ function ks(t, e) {
|
|
|
1382
1382
|
return Us(r, e);
|
|
1383
1383
|
}
|
|
1384
1384
|
function Us(t, e) {
|
|
1385
|
-
const r = e ??
|
|
1385
|
+
const r = e ?? bs();
|
|
1386
1386
|
return Ut(r), Ds(t, r), r;
|
|
1387
1387
|
}
|
|
1388
1388
|
function Ds(t, e) {
|
|
@@ -1429,7 +1429,7 @@ function Ds(t, e) {
|
|
|
1429
1429
|
e.PrimaryUserId = r.asString();
|
|
1430
1430
|
break;
|
|
1431
1431
|
}
|
|
1432
|
-
case
|
|
1432
|
+
case Rs: {
|
|
1433
1433
|
if (r.isNull) throw new Error();
|
|
1434
1434
|
e.ChannelInstanceId = r.asString();
|
|
1435
1435
|
break;
|
|
@@ -1461,7 +1461,7 @@ function vs(t) {
|
|
|
1461
1461
|
return Fs(e), t && Object.assign(e, t), e;
|
|
1462
1462
|
}
|
|
1463
1463
|
function Fs(t) {
|
|
1464
|
-
return t.ServerSessionId = "", t.ContextType = Q.Unknown, t.UserType = q.Unknown, t.PayloadType = Z.Unknown, t.IsInternal = !1, t.Description = "", t.UserId = "", t.DeviceId = "", t.ProductId = "", t.VersionId = "", t.InstallId = "", t.Locale = "", t.OpcodeGroupsFromServer =
|
|
1464
|
+
return t.ServerSessionId = "", t.ContextType = Q.Unknown, t.UserType = q.Unknown, t.PayloadType = Z.Unknown, t.IsInternal = !1, t.Description = "", t.UserId = "", t.DeviceId = "", t.ProductId = "", t.VersionId = "", t.InstallId = "", t.Locale = "", t.OpcodeGroupsFromServer = S.NONE, t.OpcodeGroupsToServer = S.NONE, t.ProtocolVersion = 0, t.HasInput = !1, t.ChannelLocale = "", t.EmbeddedSpaceId = "", t.AuthSessionId = "", t.ReceiveAllMessages = !1, t.UserAgent = "", t.ClientType = J.Unknown, t.Parameters = /* @__PURE__ */ Object.create(null), t.SdkType = Ke.Unknown, t;
|
|
1465
1465
|
}
|
|
1466
1466
|
const Dt = 1, Ps = 1048632, Bs = 3748161056, xs = 4289118421;
|
|
1467
1467
|
function Gs(t) {
|
|
@@ -1617,7 +1617,7 @@ function gi(t) {
|
|
|
1617
1617
|
return jt(t, e), e.finish();
|
|
1618
1618
|
}
|
|
1619
1619
|
function jt(t, e) {
|
|
1620
|
-
e.writeStringField(vt, t.ResultTypeName), e.writeStringField(Ft, t.FunctionName), e.writeStringField(Pt, t.EnumerableItemTypeName), e.writeGuidField(Bt, t.FunctionId), e.writeStringField(xt, t.Description), e.writeBoolField(Gt, t.IsCancellable), e.writeBoolField(Vt, t.RequiresInstance), e.writeBoolField(Wt, t.LlmInlineResult), e.writeBoolField(Ht, t.IsEnumerable), e.writeArrayField($t,
|
|
1620
|
+
e.writeStringField(vt, t.ResultTypeName), e.writeStringField(Ft, t.FunctionName), e.writeStringField(Pt, t.EnumerableItemTypeName), e.writeGuidField(Bt, t.FunctionId), e.writeStringField(xt, t.Description), e.writeBoolField(Gt, t.IsCancellable), e.writeBoolField(Vt, t.RequiresInstance), e.writeBoolField(Wt, t.LlmInlineResult), e.writeBoolField(Ht, t.IsEnumerable), e.writeArrayField($t, R.Object, (r) => {
|
|
1621
1621
|
for (const n of t.Parameters)
|
|
1622
1622
|
r.writeObject(ki, (s) => {
|
|
1623
1623
|
Di(n, s);
|
|
@@ -1679,7 +1679,7 @@ function Ci(t, e) {
|
|
|
1679
1679
|
}
|
|
1680
1680
|
case $t: {
|
|
1681
1681
|
if (r.isNull) throw new Error();
|
|
1682
|
-
e.Parameters =
|
|
1682
|
+
e.Parameters = bi(r.asArray());
|
|
1683
1683
|
break;
|
|
1684
1684
|
}
|
|
1685
1685
|
case Kt: {
|
|
@@ -1689,11 +1689,11 @@ function Ci(t, e) {
|
|
|
1689
1689
|
}
|
|
1690
1690
|
}
|
|
1691
1691
|
}
|
|
1692
|
-
function
|
|
1692
|
+
function Ri(t, e, r) {
|
|
1693
1693
|
const n = gi(t);
|
|
1694
1694
|
return P(Ai, n, Ye, e, r);
|
|
1695
1695
|
}
|
|
1696
|
-
function
|
|
1696
|
+
function bi(t) {
|
|
1697
1697
|
const e = [];
|
|
1698
1698
|
let r;
|
|
1699
1699
|
for (; (r = t.next()) !== null; )
|
|
@@ -1779,7 +1779,7 @@ function Bi(t) {
|
|
|
1779
1779
|
return xi(t, e), e.finish();
|
|
1780
1780
|
}
|
|
1781
1781
|
function xi(t, e) {
|
|
1782
|
-
e.writeArrayField(vi,
|
|
1782
|
+
e.writeArrayField(vi, R.Object, (r) => {
|
|
1783
1783
|
for (const n of t.Functions)
|
|
1784
1784
|
r.writeObject(Ye, (s) => {
|
|
1785
1785
|
jt(n, s);
|
|
@@ -1936,7 +1936,7 @@ function _o(t, e) {
|
|
|
1936
1936
|
}
|
|
1937
1937
|
}
|
|
1938
1938
|
}
|
|
1939
|
-
const To = 65539, So = 693643444, wo = 1144553441, Ao = 1497620243, yo = 1559330978, go = 1976546434, No = 1999510636, Co = 2277643855,
|
|
1939
|
+
const To = 65539, So = 693643444, wo = 1144553441, Ao = 1497620243, yo = 1559330978, go = 1976546434, No = 1999510636, Co = 2277643855, Ro = 2469008121, bo = 3042922213, ko = 3064612128, Uo = 3219210453, Do = 3504054055, Mo = 3678477544, Oo = 3696445035, Lo = 3707543140, vo = 3712281496, Fo = 3895362455, Po = 3897397815, Bo = 4225107827;
|
|
1940
1940
|
function xo(t) {
|
|
1941
1941
|
const e = {};
|
|
1942
1942
|
return fr(e), e;
|
|
@@ -1991,12 +1991,12 @@ function Wo(t, e) {
|
|
|
1991
1991
|
e.ChannelUrl = r.asString();
|
|
1992
1992
|
break;
|
|
1993
1993
|
}
|
|
1994
|
-
case
|
|
1994
|
+
case Ro: {
|
|
1995
1995
|
if (r.isNull) throw new Error();
|
|
1996
1996
|
e.ChannelName = r.asString();
|
|
1997
1997
|
break;
|
|
1998
1998
|
}
|
|
1999
|
-
case
|
|
1999
|
+
case bo: {
|
|
2000
2000
|
if (r.isNull) throw new Error();
|
|
2001
2001
|
e.PublicAccess = r.asBool();
|
|
2002
2002
|
break;
|
|
@@ -2281,8 +2281,8 @@ function Sr(t, e, r) {
|
|
|
2281
2281
|
const n = Ca();
|
|
2282
2282
|
return P(Na, n, _r, e, r);
|
|
2283
2283
|
}
|
|
2284
|
-
const wr = 1,
|
|
2285
|
-
function
|
|
2284
|
+
const wr = 1, Ra = 8388612;
|
|
2285
|
+
function ba(t) {
|
|
2286
2286
|
return {};
|
|
2287
2287
|
}
|
|
2288
2288
|
function ka(t) {
|
|
@@ -2290,7 +2290,7 @@ function ka(t) {
|
|
|
2290
2290
|
}
|
|
2291
2291
|
function Ua(t, e, r) {
|
|
2292
2292
|
const n = ka();
|
|
2293
|
-
return P(
|
|
2293
|
+
return P(Ra, n, wr, e, r);
|
|
2294
2294
|
}
|
|
2295
2295
|
class je extends Error {
|
|
2296
2296
|
constructor(e, r) {
|
|
@@ -2322,17 +2322,17 @@ class Ma extends g {
|
|
|
2322
2322
|
super(`Channel provisioning timeout after ${e}ms`), this.name = "ProvisioningTimeoutError";
|
|
2323
2323
|
}
|
|
2324
2324
|
}
|
|
2325
|
-
class
|
|
2325
|
+
class Ul extends g {
|
|
2326
2326
|
constructor(e) {
|
|
2327
2327
|
super(`Channel not found: ${e}`), this.name = "ChannelNotFoundError";
|
|
2328
2328
|
}
|
|
2329
2329
|
}
|
|
2330
|
-
class
|
|
2330
|
+
class Dl extends g {
|
|
2331
2331
|
constructor(e) {
|
|
2332
2332
|
super(`Space not found for domain: ${e}`), this.name = "SpaceNotFoundError";
|
|
2333
2333
|
}
|
|
2334
2334
|
}
|
|
2335
|
-
class
|
|
2335
|
+
class Ml extends g {
|
|
2336
2336
|
constructor() {
|
|
2337
2337
|
super("No channels available in this space"), this.name = "NoChannelsError";
|
|
2338
2338
|
}
|
|
@@ -2351,22 +2351,22 @@ function Ar(t, e) {
|
|
|
2351
2351
|
e?.addEventListener("abort", s, { once: !0 });
|
|
2352
2352
|
});
|
|
2353
2353
|
}
|
|
2354
|
-
var
|
|
2355
|
-
let Xe = 1,
|
|
2354
|
+
var Ae = /* @__PURE__ */ ((t) => (t[t.DEBUG = 0] = "DEBUG", t[t.INFO = 1] = "INFO", t[t.WARN = 2] = "WARN", t[t.ERROR = 3] = "ERROR", t[t.NONE = 4] = "NONE", t))(Ae || {});
|
|
2355
|
+
let Xe = 1, Ie = null;
|
|
2356
2356
|
const De = /* @__PURE__ */ new Map();
|
|
2357
2357
|
function yr(t) {
|
|
2358
2358
|
Xe = t;
|
|
2359
2359
|
}
|
|
2360
|
-
function
|
|
2360
|
+
function Ol() {
|
|
2361
2361
|
return Xe;
|
|
2362
2362
|
}
|
|
2363
2363
|
function Oa(t) {
|
|
2364
|
-
|
|
2364
|
+
Ie = t;
|
|
2365
2365
|
}
|
|
2366
|
-
function
|
|
2367
|
-
return
|
|
2366
|
+
function Ll() {
|
|
2367
|
+
return Ie;
|
|
2368
2368
|
}
|
|
2369
|
-
function
|
|
2369
|
+
function vl(t, e) {
|
|
2370
2370
|
return De.set(t, e ?? {
|
|
2371
2371
|
minLevel: 2
|
|
2372
2372
|
/* WARN */
|
|
@@ -2384,7 +2384,7 @@ const La = {
|
|
|
2384
2384
|
function va(t, e) {
|
|
2385
2385
|
return `[${t}] ${e}`;
|
|
2386
2386
|
}
|
|
2387
|
-
function
|
|
2387
|
+
function ae(t, e, r, n) {
|
|
2388
2388
|
const s = (/* @__PURE__ */ new Date()).toISOString(), i = La[t], o = {
|
|
2389
2389
|
timestamp: s,
|
|
2390
2390
|
level: t,
|
|
@@ -2393,7 +2393,7 @@ function oe(t, e, r, n) {
|
|
|
2393
2393
|
message: r,
|
|
2394
2394
|
args: n
|
|
2395
2395
|
};
|
|
2396
|
-
|
|
2396
|
+
Ie && Ie(o);
|
|
2397
2397
|
for (const [a, c] of De) {
|
|
2398
2398
|
const l = c?.minLevel ?? 2;
|
|
2399
2399
|
if (t >= l)
|
|
@@ -2423,20 +2423,20 @@ function oe(t, e, r, n) {
|
|
|
2423
2423
|
function M(t) {
|
|
2424
2424
|
return {
|
|
2425
2425
|
debug(e, ...r) {
|
|
2426
|
-
|
|
2426
|
+
ae(0, t, e, r);
|
|
2427
2427
|
},
|
|
2428
2428
|
info(e, ...r) {
|
|
2429
|
-
|
|
2429
|
+
ae(1, t, e, r);
|
|
2430
2430
|
},
|
|
2431
2431
|
warn(e, ...r) {
|
|
2432
|
-
|
|
2432
|
+
ae(2, t, e, r);
|
|
2433
2433
|
},
|
|
2434
2434
|
error(e, ...r) {
|
|
2435
|
-
|
|
2435
|
+
ae(3, t, e, r);
|
|
2436
2436
|
}
|
|
2437
2437
|
};
|
|
2438
2438
|
}
|
|
2439
|
-
const
|
|
2439
|
+
const ce = M("WebSocketTransport"), Fa = 1e4;
|
|
2440
2440
|
class Pa {
|
|
2441
2441
|
ws = null;
|
|
2442
2442
|
keepaliveTimeout = null;
|
|
@@ -2468,7 +2468,7 @@ class Pa {
|
|
|
2468
2468
|
this.ws.onopen = () => {
|
|
2469
2469
|
i = !0, clearTimeout(c), this.ws.send(r), this.resetKeepaliveTimeout(), o || (o = !0, n());
|
|
2470
2470
|
}, this.ws.onerror = () => {
|
|
2471
|
-
clearTimeout(c),
|
|
2471
|
+
clearTimeout(c), ce.error("WebSocket error"), o || (o = !0, a(), s(new H("WebSocket connection failed")));
|
|
2472
2472
|
}, this.ws.onclose = (l) => {
|
|
2473
2473
|
if (this.clearKeepaliveTimeout(), !i && !o) {
|
|
2474
2474
|
o = !0, a(), s(new H("WebSocket connection closed before opening"));
|
|
@@ -2482,7 +2482,7 @@ class Pa {
|
|
|
2482
2482
|
});
|
|
2483
2483
|
}
|
|
2484
2484
|
send(e) {
|
|
2485
|
-
this.ws?.readyState === WebSocket.OPEN ? this.ws.send(e) :
|
|
2485
|
+
this.ws?.readyState === WebSocket.OPEN ? this.ws.send(e) : ce.warn("Cannot send: WebSocket not connected");
|
|
2486
2486
|
}
|
|
2487
2487
|
close() {
|
|
2488
2488
|
this.clearKeepaliveTimeout(), this.ws && (this.ws.close(1e3, "Client closing"), this.ws = null);
|
|
@@ -2495,18 +2495,18 @@ class Pa {
|
|
|
2495
2495
|
}
|
|
2496
2496
|
handleProtocolMessage(e) {
|
|
2497
2497
|
try {
|
|
2498
|
-
if (
|
|
2498
|
+
if (ie(e).opcode === S.KEEPALIVE_REQUEST) {
|
|
2499
2499
|
this.send(this.getKeepaliveResponse()), this.resetKeepaliveTimeout();
|
|
2500
2500
|
return;
|
|
2501
2501
|
}
|
|
2502
2502
|
this.resetKeepaliveTimeout(), this.callbacks.onProtocolMessage(e);
|
|
2503
2503
|
} catch (r) {
|
|
2504
|
-
|
|
2504
|
+
ce.error("Failed to process protocol message:", r), this.callbacks.onError(r instanceof Error ? r : new Error(String(r)));
|
|
2505
2505
|
}
|
|
2506
2506
|
}
|
|
2507
2507
|
resetKeepaliveTimeout() {
|
|
2508
2508
|
this.clearKeepaliveTimeout(), this.keepaliveTimeout = setTimeout(() => {
|
|
2509
|
-
|
|
2509
|
+
ce.error(`No keepalive received in ${this.keepaliveTimeoutMs}ms, closing connection`), this.callbacks.onError(new ze(this.keepaliveTimeoutMs)), this.close();
|
|
2510
2510
|
}, this.keepaliveTimeoutMs);
|
|
2511
2511
|
}
|
|
2512
2512
|
clearKeepaliveTimeout() {
|
|
@@ -2637,7 +2637,7 @@ class xa {
|
|
|
2637
2637
|
*/
|
|
2638
2638
|
handleProtocolMessage(e) {
|
|
2639
2639
|
try {
|
|
2640
|
-
if (
|
|
2640
|
+
if (ie(e).opcode === S.KEEPALIVE_REQUEST) {
|
|
2641
2641
|
this.send(this.getKeepaliveResponse()), this.resetKeepaliveTimeout();
|
|
2642
2642
|
return;
|
|
2643
2643
|
}
|
|
@@ -2776,7 +2776,7 @@ class Ga {
|
|
|
2776
2776
|
handleProtocolMessage(e) {
|
|
2777
2777
|
try {
|
|
2778
2778
|
const r = e;
|
|
2779
|
-
if (
|
|
2779
|
+
if (fe(r) === S.CORE_ON_SERVER_STOPPING) {
|
|
2780
2780
|
te.debug("Received server stopping message"), this.setState("stopped"), this.transport?.close();
|
|
2781
2781
|
return;
|
|
2782
2782
|
}
|
|
@@ -2849,7 +2849,7 @@ class Va {
|
|
|
2849
2849
|
* The opcode group is extracted from the message automatically.
|
|
2850
2850
|
*/
|
|
2851
2851
|
sendProtocolMessage(e) {
|
|
2852
|
-
const r =
|
|
2852
|
+
const r = he(e);
|
|
2853
2853
|
for (const [n, s] of this.channels)
|
|
2854
2854
|
if (n & r) {
|
|
2855
2855
|
s.send(e);
|
|
@@ -3000,14 +3000,14 @@ function Je() {
|
|
|
3000
3000
|
return crypto.randomUUID();
|
|
3001
3001
|
}
|
|
3002
3002
|
}
|
|
3003
|
-
function
|
|
3003
|
+
function Fl() {
|
|
3004
3004
|
if (!(typeof localStorage > "u"))
|
|
3005
3005
|
try {
|
|
3006
3006
|
localStorage.removeItem(Me);
|
|
3007
3007
|
} catch {
|
|
3008
3008
|
}
|
|
3009
3009
|
}
|
|
3010
|
-
function
|
|
3010
|
+
function Pl(t) {
|
|
3011
3011
|
try {
|
|
3012
3012
|
const e = t.split(".");
|
|
3013
3013
|
return e.length !== 3 ? null : JSON.parse(atob(e[1])).id ?? null;
|
|
@@ -3015,26 +3015,26 @@ function vl(t) {
|
|
|
3015
3015
|
return null;
|
|
3016
3016
|
}
|
|
3017
3017
|
}
|
|
3018
|
-
const
|
|
3018
|
+
const me = {}, Oe = "https://api.prod.ikon.live", _e = "https://api.dev.ikon.live", ot = "https://auth.ikonai.com", at = "https://auth.dev.ikonai.com", Bl = "https://auth.ikonai.com";
|
|
3019
3019
|
function Cr(t) {
|
|
3020
|
-
return t === "development" ?
|
|
3020
|
+
return t === "development" ? _e : Oe;
|
|
3021
3021
|
}
|
|
3022
|
-
function
|
|
3023
|
-
const t = typeof import.meta < "u" ?
|
|
3024
|
-
return t || (typeof window > "u" ? Oe : !Qe() || window.location.hostname.includes(".dev.") ?
|
|
3022
|
+
function xl() {
|
|
3023
|
+
const t = typeof import.meta < "u" ? me?.VITE_IKON_BACKEND_URL : void 0;
|
|
3024
|
+
return t || (typeof window > "u" ? Oe : !Qe() || window.location.hostname.includes(".dev.") ? _e : Oe);
|
|
3025
3025
|
}
|
|
3026
|
-
function
|
|
3027
|
-
const t = typeof import.meta < "u" ?
|
|
3026
|
+
function Gl() {
|
|
3027
|
+
const t = typeof import.meta < "u" ? me?.VITE_IKON_BACKEND_TYPE : void 0;
|
|
3028
3028
|
if (t === "development" || t === "production")
|
|
3029
3029
|
return t;
|
|
3030
|
-
const e = typeof import.meta < "u" ?
|
|
3030
|
+
const e = typeof import.meta < "u" ? me?.VITE_IKON_BACKEND_URL : void 0;
|
|
3031
3031
|
return e ? e.includes(".dev.") ? "development" : "production" : typeof window > "u" ? "production" : Qe() ? window.location.hostname.includes(".dev.") ? "development" : "production" : "development";
|
|
3032
3032
|
}
|
|
3033
|
-
function
|
|
3034
|
-
const t = typeof import.meta < "u" ?
|
|
3033
|
+
function Vl() {
|
|
3034
|
+
const t = typeof import.meta < "u" ? me?.VITE_IKON_AUTH_URL : void 0;
|
|
3035
3035
|
return t || (typeof window > "u" ? ot : !Qe() || window.location.hostname.includes(".dev.") ? at : ot);
|
|
3036
3036
|
}
|
|
3037
|
-
function
|
|
3037
|
+
function Rr() {
|
|
3038
3038
|
if (typeof window > "u")
|
|
3039
3039
|
return {};
|
|
3040
3040
|
const t = new URLSearchParams(window.location.search), e = {};
|
|
@@ -3042,8 +3042,11 @@ function br() {
|
|
|
3042
3042
|
e[r] = n;
|
|
3043
3043
|
return e;
|
|
3044
3044
|
}
|
|
3045
|
-
const $a = ["ikon_token", "ikon_provider", "error"];
|
|
3046
|
-
function
|
|
3045
|
+
const $a = ["ikon_token", "ikon_provider", "error"], Ka = "ikon_server_url";
|
|
3046
|
+
function Ya() {
|
|
3047
|
+
return typeof window > "u" ? void 0 : new URLSearchParams(window.location.search).get(Ka) ?? void 0;
|
|
3048
|
+
}
|
|
3049
|
+
function Wl() {
|
|
3047
3050
|
if (typeof window > "u")
|
|
3048
3051
|
return { parameters: {} };
|
|
3049
3052
|
const t = window.location.pathname;
|
|
@@ -3053,7 +3056,7 @@ function Gl() {
|
|
|
3053
3056
|
const s = t.match(/^\/c\/([^/]+)/);
|
|
3054
3057
|
if (s && (r = decodeURIComponent(s[1])), e && r)
|
|
3055
3058
|
throw new Error("URL cannot contain both /s/[sessionId] and /c/[channelKey]");
|
|
3056
|
-
const i =
|
|
3059
|
+
const i = Rr(), o = {};
|
|
3057
3060
|
for (const [a, c] of Object.entries(i))
|
|
3058
3061
|
$a.includes(a) || (o[a] = c);
|
|
3059
3062
|
return { sessionId: e, channelKey: r, parameters: o };
|
|
@@ -3070,10 +3073,10 @@ function Qe() {
|
|
|
3070
3073
|
}
|
|
3071
3074
|
return !0;
|
|
3072
3075
|
}
|
|
3073
|
-
const
|
|
3074
|
-
async function
|
|
3076
|
+
const Te = M("Authenticator"), z = S.GROUP_CORE | S.GROUP_KEEPALIVE | S.GROUP_EVENTS | S.GROUP_ACTIONS | S.GROUP_UI | S.GROUP_AUDIO | S.GROUP_VIDEO | S.GROUP_ANALYTICS, ja = 1e3, za = 5e3;
|
|
3077
|
+
async function Xa(t) {
|
|
3075
3078
|
try {
|
|
3076
|
-
const e = await fetch(`${
|
|
3079
|
+
const e = await fetch(`${_e}/users/me`, {
|
|
3077
3080
|
credentials: "include",
|
|
3078
3081
|
signal: t
|
|
3079
3082
|
});
|
|
@@ -3082,7 +3085,7 @@ async function ja(t) {
|
|
|
3082
3085
|
return;
|
|
3083
3086
|
}
|
|
3084
3087
|
}
|
|
3085
|
-
function
|
|
3088
|
+
function br(t, e, r) {
|
|
3086
3089
|
const n = {
|
|
3087
3090
|
method: "POST",
|
|
3088
3091
|
headers: {
|
|
@@ -3100,15 +3103,15 @@ async function kr(t, e, r, n, s, i, o) {
|
|
|
3100
3103
|
...r ? { key: r } : {},
|
|
3101
3104
|
...n && Object.keys(n).length > 0 ? { params: n } : {},
|
|
3102
3105
|
...s ? { hash: s } : {}
|
|
3103
|
-
}, l = await fetch(a,
|
|
3106
|
+
}, l = await fetch(a, br(c, i, o));
|
|
3104
3107
|
if (!l.ok) {
|
|
3105
3108
|
const d = await l.text().catch(() => "Unknown error");
|
|
3106
3109
|
throw new g(`Failed to request channel: ${l.status} ${d}`);
|
|
3107
3110
|
}
|
|
3108
3111
|
return await l.json();
|
|
3109
3112
|
}
|
|
3110
|
-
async function
|
|
3111
|
-
const s = `${t}/rooms/connect`, i = await fetch(s,
|
|
3113
|
+
async function Ja(t, e, r, n) {
|
|
3114
|
+
const s = `${t}/rooms/connect`, i = await fetch(s, br(e, r, n));
|
|
3112
3115
|
if (!i.ok) {
|
|
3113
3116
|
const o = await i.text().catch(() => "Unknown error");
|
|
3114
3117
|
throw new g(`Backend connect failed: ${i.status} ${o}`);
|
|
@@ -3117,23 +3120,23 @@ async function za(t, e, r, n) {
|
|
|
3117
3120
|
}
|
|
3118
3121
|
async function Ur(t, e, r, n, s) {
|
|
3119
3122
|
const i = Date.now();
|
|
3120
|
-
let o =
|
|
3123
|
+
let o = ja;
|
|
3121
3124
|
for (; ; ) {
|
|
3122
3125
|
if (s?.aborted)
|
|
3123
3126
|
throw new g("Connection aborted");
|
|
3124
3127
|
if (Date.now() - i >= r)
|
|
3125
3128
|
throw new Ma(r);
|
|
3126
|
-
const c = await
|
|
3129
|
+
const c = await Ja(t, e, n, s), l = c.state?.toLowerCase();
|
|
3127
3130
|
if (l === "running")
|
|
3128
3131
|
return c;
|
|
3129
3132
|
if (l === "provisioning") {
|
|
3130
|
-
await Ar(o, s), o = Math.min(o * 1.5,
|
|
3133
|
+
await Ar(o, s), o = Math.min(o * 1.5, za);
|
|
3131
3134
|
continue;
|
|
3132
3135
|
}
|
|
3133
3136
|
throw new g(`Unexpected channel state: ${c.state}`);
|
|
3134
3137
|
}
|
|
3135
3138
|
}
|
|
3136
|
-
async function
|
|
3139
|
+
async function ne(t, e) {
|
|
3137
3140
|
const r = await fetch(t, { signal: e });
|
|
3138
3141
|
if (!r.ok) {
|
|
3139
3142
|
const o = await r.text().catch(() => "Unknown error");
|
|
@@ -3142,7 +3145,7 @@ async function Ae(t, e) {
|
|
|
3142
3145
|
const n = await r.arrayBuffer(), s = new Uint8Array(n);
|
|
3143
3146
|
return { authResponse: await Ms(s) };
|
|
3144
3147
|
}
|
|
3145
|
-
function
|
|
3148
|
+
function Qa(t, e) {
|
|
3146
3149
|
return vs({
|
|
3147
3150
|
ServerSessionId: "",
|
|
3148
3151
|
// Server will fill this in
|
|
@@ -3170,7 +3173,7 @@ function Xa(t, e) {
|
|
|
3170
3173
|
Parameters: t.parameters ?? {}
|
|
3171
3174
|
});
|
|
3172
3175
|
}
|
|
3173
|
-
function
|
|
3176
|
+
function Za(t) {
|
|
3174
3177
|
return {
|
|
3175
3178
|
ServerSessionId: t.ServerSessionId,
|
|
3176
3179
|
ContextType: t.ContextType,
|
|
@@ -3197,13 +3200,13 @@ function Ja(t) {
|
|
|
3197
3200
|
Parameters: t.Parameters
|
|
3198
3201
|
};
|
|
3199
3202
|
}
|
|
3200
|
-
async function
|
|
3203
|
+
async function qa(t, e) {
|
|
3201
3204
|
const r = `https://${t.host}:${t.httpsPort}`;
|
|
3202
|
-
|
|
3203
|
-
const s = { ...
|
|
3205
|
+
Te.debug(`Authenticating with local server: ${r}`);
|
|
3206
|
+
const s = { ...Rr(), ...t.parameters };
|
|
3204
3207
|
let i = t.userId;
|
|
3205
|
-
i || (i = await
|
|
3206
|
-
const o =
|
|
3208
|
+
i || (i = await Xa(e), i || (i = "local", Te.warn('Could not determine user ID. Using fallback "local". To fix: either provide userId in config, or log in to the Ikon portal at https://portal.dev.ikon.live')));
|
|
3209
|
+
const o = Qa({ ...t, parameters: s }, i), a = Za(o), c = await fetch(`${r}/connect-token`, {
|
|
3207
3210
|
method: "POST",
|
|
3208
3211
|
headers: {
|
|
3209
3212
|
"Content-Type": "application/json"
|
|
@@ -3219,13 +3222,13 @@ async function Qa(t, e) {
|
|
|
3219
3222
|
if (!E)
|
|
3220
3223
|
throw new g("Server did not return a token");
|
|
3221
3224
|
const d = `${r}/connect?token=${encodeURIComponent(E)}`;
|
|
3222
|
-
return
|
|
3225
|
+
return ne(d, e);
|
|
3223
3226
|
}
|
|
3224
|
-
async function
|
|
3227
|
+
async function ec(t, e) {
|
|
3225
3228
|
if (t.sessionId && t.channelKey)
|
|
3226
3229
|
throw new g("Cannot specify both sessionId and channelKey. Use sessionId for precomputed sessions or channelKey to select a channel.");
|
|
3227
3230
|
const r = Cr(t.backendType);
|
|
3228
|
-
|
|
3231
|
+
Te.debug(`Authenticating with cloud server: ${r}, space ID: ${t.spaceId}`);
|
|
3229
3232
|
const n = await fetch(`${r}/auth/api-key`, {
|
|
3230
3233
|
method: "POST",
|
|
3231
3234
|
headers: {
|
|
@@ -3279,13 +3282,13 @@ async function Za(t, e) {
|
|
|
3279
3282
|
if (!E.configuration?.url)
|
|
3280
3283
|
throw new g("Backend did not return a connect URL");
|
|
3281
3284
|
const d = E.configuration.url;
|
|
3282
|
-
return
|
|
3285
|
+
return ne(d, e);
|
|
3283
3286
|
}
|
|
3284
|
-
async function
|
|
3287
|
+
async function tc(t, e) {
|
|
3285
3288
|
if (t.sessionId && t.channelKey)
|
|
3286
3289
|
throw new g("Cannot specify both sessionId and channelKey. Use sessionId for precomputed sessions or channelKey to select a channel.");
|
|
3287
3290
|
const r = Cr(t.backendType), n = t.token;
|
|
3288
|
-
|
|
3291
|
+
Te.debug(`Authenticating with session token to: ${r}, space ID: ${t.spaceId}`);
|
|
3289
3292
|
const s = await fetch(`${r}/profiles/me?space=${encodeURIComponent(t.spaceId)}`, {
|
|
3290
3293
|
method: "GET",
|
|
3291
3294
|
headers: {
|
|
@@ -3320,24 +3323,24 @@ async function qa(t, e) {
|
|
|
3320
3323
|
if (!c.configuration?.url)
|
|
3321
3324
|
throw new g("Backend did not return a connect URL");
|
|
3322
3325
|
const l = c.configuration.url;
|
|
3323
|
-
return
|
|
3326
|
+
return ne(l, e);
|
|
3324
3327
|
}
|
|
3325
|
-
const Dr = "ikon.theme", Le = "ikon.theme-user",
|
|
3328
|
+
const Dr = "ikon.theme", Le = "ikon.theme-user", rc = "ikon.theme-change";
|
|
3326
3329
|
function Mr(t) {
|
|
3327
3330
|
typeof document < "u" && document.documentElement && document.documentElement.setAttribute("data-theme", t);
|
|
3328
3331
|
}
|
|
3329
|
-
const
|
|
3332
|
+
const nc = {
|
|
3330
3333
|
name: "ikon.client.getTheme",
|
|
3331
3334
|
description: "Get the currently selected client theme",
|
|
3332
3335
|
returnType: { kind: "string", nullable: !0 }
|
|
3333
3336
|
};
|
|
3334
|
-
function
|
|
3337
|
+
function sc() {
|
|
3335
3338
|
if (typeof window > "u" || !window.localStorage)
|
|
3336
3339
|
return null;
|
|
3337
3340
|
const t = window.localStorage.getItem(Le) ?? window.localStorage.getItem(Dr) ?? "light";
|
|
3338
3341
|
return Mr(t), t;
|
|
3339
3342
|
}
|
|
3340
|
-
const
|
|
3343
|
+
const ic = {
|
|
3341
3344
|
name: "ikon.client.setTheme",
|
|
3342
3345
|
description: "Update the client UI theme",
|
|
3343
3346
|
returnType: { kind: "boolean" },
|
|
@@ -3346,7 +3349,7 @@ const nc = {
|
|
|
3346
3349
|
{ name: "persist", type: { kind: "boolean", nullable: !0 }, description: "Whether to persist as user preference" }
|
|
3347
3350
|
]
|
|
3348
3351
|
};
|
|
3349
|
-
function
|
|
3352
|
+
function oc(t, e) {
|
|
3350
3353
|
if (typeof window > "u" || !window.localStorage || typeof t != "string")
|
|
3351
3354
|
return !1;
|
|
3352
3355
|
const r = t.trim().toLowerCase();
|
|
@@ -3355,40 +3358,40 @@ function sc(t, e) {
|
|
|
3355
3358
|
const n = e === void 0 ? !0 : !!e, s = window.localStorage;
|
|
3356
3359
|
n ? s.setItem(Le, r) : s.removeItem(Le), s.setItem(Dr, r);
|
|
3357
3360
|
try {
|
|
3358
|
-
window.dispatchEvent(new CustomEvent(
|
|
3361
|
+
window.dispatchEvent(new CustomEvent(rc, { detail: { mode: r } }));
|
|
3359
3362
|
} catch {
|
|
3360
3363
|
}
|
|
3361
3364
|
return Mr(r), !0;
|
|
3362
3365
|
}
|
|
3363
|
-
const
|
|
3366
|
+
const ac = {
|
|
3364
3367
|
name: "ikon.client.getLanguage",
|
|
3365
3368
|
description: "Get the browser language preference",
|
|
3366
3369
|
returnType: { kind: "string" }
|
|
3367
3370
|
};
|
|
3368
|
-
function
|
|
3371
|
+
function cc() {
|
|
3369
3372
|
return typeof navigator > "u" ? "en-US" : navigator.language || "en-US";
|
|
3370
3373
|
}
|
|
3371
|
-
const
|
|
3374
|
+
const lc = {
|
|
3372
3375
|
name: "ikon.client.getTimezone",
|
|
3373
3376
|
description: "Get the browser timezone (IANA format)",
|
|
3374
3377
|
returnType: { kind: "string" }
|
|
3375
3378
|
};
|
|
3376
|
-
function
|
|
3379
|
+
function uc() {
|
|
3377
3380
|
try {
|
|
3378
3381
|
return Intl.DateTimeFormat().resolvedOptions().timeZone;
|
|
3379
3382
|
} catch {
|
|
3380
3383
|
return "UTC";
|
|
3381
3384
|
}
|
|
3382
3385
|
}
|
|
3383
|
-
const
|
|
3386
|
+
const hc = {
|
|
3384
3387
|
name: "ikon.client.getUrl",
|
|
3385
3388
|
description: "Get the current browser URL path and query string",
|
|
3386
3389
|
returnType: { kind: "string", nullable: !0 }
|
|
3387
3390
|
};
|
|
3388
|
-
function
|
|
3391
|
+
function dc() {
|
|
3389
3392
|
return typeof window > "u" ? null : window.location.pathname + window.location.search;
|
|
3390
3393
|
}
|
|
3391
|
-
const
|
|
3394
|
+
const fc = {
|
|
3392
3395
|
name: "ikon.client.setUrl",
|
|
3393
3396
|
description: "Update the browser URL without triggering a page reload",
|
|
3394
3397
|
returnType: { kind: "boolean" },
|
|
@@ -3397,7 +3400,7 @@ const hc = {
|
|
|
3397
3400
|
{ name: "replace", type: { kind: "boolean", nullable: !0 }, description: "If true, replaces current history entry instead of adding new one" }
|
|
3398
3401
|
]
|
|
3399
3402
|
};
|
|
3400
|
-
function
|
|
3403
|
+
function Ec(t, e) {
|
|
3401
3404
|
if (typeof window > "u" || !window.history || typeof t != "string")
|
|
3402
3405
|
return !1;
|
|
3403
3406
|
const r = t.trim();
|
|
@@ -3409,13 +3412,13 @@ function dc(t, e) {
|
|
|
3409
3412
|
return !1;
|
|
3410
3413
|
}
|
|
3411
3414
|
}
|
|
3412
|
-
const
|
|
3415
|
+
const pc = {
|
|
3413
3416
|
name: "ikon.client.vibrate",
|
|
3414
3417
|
description: "Trigger haptic feedback on supported devices",
|
|
3415
3418
|
returnType: { kind: "boolean" },
|
|
3416
3419
|
parameters: [{ name: "pattern", type: { kind: "string" }, description: 'Duration in ms, or comma-separated pattern (e.g., "200" or "100,50,100")' }]
|
|
3417
3420
|
};
|
|
3418
|
-
function
|
|
3421
|
+
function Ic(t) {
|
|
3419
3422
|
if (typeof navigator > "u" || !navigator.vibrate || typeof t != "string")
|
|
3420
3423
|
return !1;
|
|
3421
3424
|
try {
|
|
@@ -3426,13 +3429,13 @@ function Ec(t) {
|
|
|
3426
3429
|
}
|
|
3427
3430
|
}
|
|
3428
3431
|
let re = null;
|
|
3429
|
-
const
|
|
3432
|
+
const mc = {
|
|
3430
3433
|
name: "ikon.client.keepScreenAwake",
|
|
3431
3434
|
description: "Prevent or allow the screen to sleep",
|
|
3432
3435
|
returnType: { kind: "boolean" },
|
|
3433
3436
|
parameters: [{ name: "enabled", type: { kind: "boolean" }, description: "Whether to keep the screen awake" }]
|
|
3434
3437
|
};
|
|
3435
|
-
async function
|
|
3438
|
+
async function _c(t) {
|
|
3436
3439
|
if (typeof navigator > "u" || !("wakeLock" in navigator))
|
|
3437
3440
|
return !1;
|
|
3438
3441
|
try {
|
|
@@ -3441,15 +3444,15 @@ async function Ic(t) {
|
|
|
3441
3444
|
return !1;
|
|
3442
3445
|
}
|
|
3443
3446
|
}
|
|
3444
|
-
const
|
|
3447
|
+
const Tc = {
|
|
3445
3448
|
name: "ikon.client.getVisibility",
|
|
3446
3449
|
description: "Get the current page visibility state",
|
|
3447
3450
|
returnType: { kind: "string", nullable: !0 }
|
|
3448
3451
|
};
|
|
3449
|
-
function
|
|
3452
|
+
function Sc() {
|
|
3450
3453
|
return typeof document > "u" ? null : document.visibilityState || null;
|
|
3451
3454
|
}
|
|
3452
|
-
const
|
|
3455
|
+
const wc = {
|
|
3453
3456
|
name: "ikon.client.scrollTo",
|
|
3454
3457
|
description: "Scroll the page to a specific position",
|
|
3455
3458
|
returnType: { kind: "boolean" },
|
|
@@ -3459,7 +3462,7 @@ const Tc = {
|
|
|
3459
3462
|
{ name: "smooth", type: { kind: "boolean", nullable: !0 }, description: "Whether to animate the scroll" }
|
|
3460
3463
|
]
|
|
3461
3464
|
};
|
|
3462
|
-
function
|
|
3465
|
+
function Ac(t, e, r) {
|
|
3463
3466
|
if (typeof window > "u" || typeof t != "number" || typeof e != "number")
|
|
3464
3467
|
return !1;
|
|
3465
3468
|
try {
|
|
@@ -3472,12 +3475,12 @@ function Sc(t, e, r) {
|
|
|
3472
3475
|
return !1;
|
|
3473
3476
|
}
|
|
3474
3477
|
}
|
|
3475
|
-
const
|
|
3478
|
+
const yc = {
|
|
3476
3479
|
name: "ikon.client.getBatteryLevel",
|
|
3477
3480
|
description: "Get the current battery level (0-100)",
|
|
3478
3481
|
returnType: { kind: "number", nullable: !0 }
|
|
3479
3482
|
};
|
|
3480
|
-
async function
|
|
3483
|
+
async function gc() {
|
|
3481
3484
|
if (typeof navigator > "u" || !("getBattery" in navigator))
|
|
3482
3485
|
return null;
|
|
3483
3486
|
try {
|
|
@@ -3487,19 +3490,18 @@ async function Ac() {
|
|
|
3487
3490
|
return null;
|
|
3488
3491
|
}
|
|
3489
3492
|
}
|
|
3490
|
-
const
|
|
3493
|
+
const Nc = {
|
|
3491
3494
|
name: "ikon.client.getNetworkType",
|
|
3492
3495
|
description: "Get the current network connection type",
|
|
3493
3496
|
returnType: { kind: "string", nullable: !0 }
|
|
3494
3497
|
};
|
|
3495
|
-
function
|
|
3498
|
+
function Cc() {
|
|
3496
3499
|
if (typeof navigator > "u")
|
|
3497
3500
|
return null;
|
|
3498
3501
|
const t = navigator.connection;
|
|
3499
3502
|
return t && (t.effectiveType || t.type) || null;
|
|
3500
3503
|
}
|
|
3501
|
-
const
|
|
3502
|
-
{ definition: tc, handler: rc },
|
|
3504
|
+
const Rc = [
|
|
3503
3505
|
{ definition: nc, handler: sc },
|
|
3504
3506
|
{ definition: ic, handler: oc },
|
|
3505
3507
|
{ definition: ac, handler: cc },
|
|
@@ -3510,29 +3512,30 @@ const Nc = [
|
|
|
3510
3512
|
{ definition: mc, handler: _c },
|
|
3511
3513
|
{ definition: Tc, handler: Sc },
|
|
3512
3514
|
{ definition: wc, handler: Ac },
|
|
3513
|
-
{ definition: yc, handler: gc }
|
|
3515
|
+
{ definition: yc, handler: gc },
|
|
3516
|
+
{ definition: Nc, handler: Cc }
|
|
3514
3517
|
];
|
|
3515
|
-
function
|
|
3516
|
-
const e =
|
|
3518
|
+
function bc(t) {
|
|
3519
|
+
const e = Rc.map(({ definition: r, handler: n }) => t.register(r, n));
|
|
3517
3520
|
return () => e.forEach((r) => r());
|
|
3518
3521
|
}
|
|
3519
3522
|
function ct() {
|
|
3520
3523
|
return typeof window < "u" && typeof navigator < "u";
|
|
3521
3524
|
}
|
|
3522
|
-
const
|
|
3523
|
-
function
|
|
3525
|
+
const kc = new Uint8Array(0);
|
|
3526
|
+
function Se(t) {
|
|
3524
3527
|
switch (t.kind) {
|
|
3525
3528
|
case "array":
|
|
3526
3529
|
return {
|
|
3527
3530
|
kind: "array",
|
|
3528
|
-
element:
|
|
3531
|
+
element: Se(t.element),
|
|
3529
3532
|
nullable: t.nullable ?? !1
|
|
3530
3533
|
};
|
|
3531
3534
|
case "dictionary":
|
|
3532
3535
|
return {
|
|
3533
3536
|
kind: "dictionary",
|
|
3534
3537
|
keyType: t.keyType ?? "string",
|
|
3535
|
-
value:
|
|
3538
|
+
value: Se(t.value),
|
|
3536
3539
|
nullable: t.nullable ?? !1
|
|
3537
3540
|
};
|
|
3538
3541
|
default:
|
|
@@ -3542,7 +3545,7 @@ function Te(t) {
|
|
|
3542
3545
|
};
|
|
3543
3546
|
}
|
|
3544
3547
|
}
|
|
3545
|
-
function
|
|
3548
|
+
function se(t) {
|
|
3546
3549
|
switch (t.kind) {
|
|
3547
3550
|
case "boolean":
|
|
3548
3551
|
return "System.Boolean";
|
|
@@ -3551,9 +3554,9 @@ function ne(t) {
|
|
|
3551
3554
|
case "string":
|
|
3552
3555
|
return "System.String";
|
|
3553
3556
|
case "array":
|
|
3554
|
-
return `System.Collections.Generic.List\`1[${
|
|
3557
|
+
return `System.Collections.Generic.List\`1[${se(t.element)}]`;
|
|
3555
3558
|
case "dictionary":
|
|
3556
|
-
return `System.Collections.Generic.Dictionary\`2[${t.keyType === "int" ? "System.Int32" : "System.String"},${
|
|
3559
|
+
return `System.Collections.Generic.Dictionary\`2[${t.keyType === "int" ? "System.Int32" : "System.String"},${se(t.value)}]`;
|
|
3557
3560
|
default:
|
|
3558
3561
|
return t;
|
|
3559
3562
|
}
|
|
@@ -3579,9 +3582,9 @@ function Or(t, e) {
|
|
|
3579
3582
|
}
|
|
3580
3583
|
return JSON.stringify(t);
|
|
3581
3584
|
}
|
|
3582
|
-
function
|
|
3585
|
+
function Uc(t, e) {
|
|
3583
3586
|
const r = (t.parameters ?? []).map((i) => {
|
|
3584
|
-
const o =
|
|
3587
|
+
const o = Se(i.type), a = Object.prototype.hasOwnProperty.call(i, "defaultValue"), c = a ? Or(i.defaultValue, o) : "";
|
|
3585
3588
|
return {
|
|
3586
3589
|
name: i.name,
|
|
3587
3590
|
descriptor: o,
|
|
@@ -3589,13 +3592,13 @@ function Rc(t, e) {
|
|
|
3589
3592
|
defaultValueJson: c,
|
|
3590
3593
|
description: i.description
|
|
3591
3594
|
};
|
|
3592
|
-
}), n =
|
|
3595
|
+
}), n = Se(t.returnType), s = {
|
|
3593
3596
|
FunctionId: m.createRandom(),
|
|
3594
3597
|
FunctionName: t.name,
|
|
3595
3598
|
Description: t.description ?? "",
|
|
3596
3599
|
LlmInlineResult: t.llmInlineResult ?? !1,
|
|
3597
3600
|
LlmCallOnlyOnce: t.llmCallOnlyOnce ?? !1,
|
|
3598
|
-
ResultTypeName:
|
|
3601
|
+
ResultTypeName: se(n),
|
|
3599
3602
|
IsEnumerable: !1,
|
|
3600
3603
|
EnumerableItemTypeName: "",
|
|
3601
3604
|
IsCancellable: !1,
|
|
@@ -3603,10 +3606,10 @@ function Rc(t, e) {
|
|
|
3603
3606
|
Parameters: r.map((i, o) => ({
|
|
3604
3607
|
ParameterIndex: o,
|
|
3605
3608
|
ParameterName: i.name,
|
|
3606
|
-
TypeName:
|
|
3609
|
+
TypeName: se(i.descriptor),
|
|
3607
3610
|
HasDefaultValue: i.hasDefaultValue,
|
|
3608
3611
|
DefaultValueJson: i.defaultValueJson,
|
|
3609
|
-
DefaultValueData:
|
|
3612
|
+
DefaultValueData: kc,
|
|
3610
3613
|
IsEnumerable: !1,
|
|
3611
3614
|
EnumerableItemTypeName: "",
|
|
3612
3615
|
Description: i.description ?? ""
|
|
@@ -3620,11 +3623,11 @@ function Rc(t, e) {
|
|
|
3620
3623
|
returnType: n
|
|
3621
3624
|
};
|
|
3622
3625
|
}
|
|
3623
|
-
const ge = M("FunctionRegistry"),
|
|
3624
|
-
function
|
|
3626
|
+
const ge = M("FunctionRegistry"), Dc = new Uint8Array(0);
|
|
3627
|
+
function Mc(t) {
|
|
3625
3628
|
return !t || typeof t != "object" ? !1 : t.data instanceof Uint8Array;
|
|
3626
3629
|
}
|
|
3627
|
-
class
|
|
3630
|
+
class Oc {
|
|
3628
3631
|
functions = /* @__PURE__ */ new Map();
|
|
3629
3632
|
remoteFunctions = /* @__PURE__ */ new Map();
|
|
3630
3633
|
config = null;
|
|
@@ -3647,7 +3650,7 @@ class Dc {
|
|
|
3647
3650
|
* If already connected, sends registration to server immediately.
|
|
3648
3651
|
*/
|
|
3649
3652
|
register(e, r) {
|
|
3650
|
-
const n =
|
|
3653
|
+
const n = Uc(e, r);
|
|
3651
3654
|
return this.functions.set(e.name, n), this.isConnected && this.config && this.sendRegistration(n), () => this.unregister(e.name);
|
|
3652
3655
|
}
|
|
3653
3656
|
/**
|
|
@@ -3736,8 +3739,8 @@ class Dc {
|
|
|
3736
3739
|
* Returns true if the message was handled.
|
|
3737
3740
|
*/
|
|
3738
3741
|
handleProtocolMessage(e, r) {
|
|
3739
|
-
if (r ===
|
|
3740
|
-
const n =
|
|
3742
|
+
if (r === S.ACTION_FUNCTION_CALL) {
|
|
3743
|
+
const n = ie(e);
|
|
3741
3744
|
return this.handleFunctionCall(e, n.senderId).catch((s) => {
|
|
3742
3745
|
ge.error("Failed to handle function call:", s);
|
|
3743
3746
|
}), !0;
|
|
@@ -3760,7 +3763,7 @@ class Dc {
|
|
|
3760
3763
|
sendRegistration(e) {
|
|
3761
3764
|
if (!this.config)
|
|
3762
3765
|
return;
|
|
3763
|
-
const r =
|
|
3766
|
+
const r = Ri(e.registerPayload, this.config.sessionId);
|
|
3764
3767
|
this.config.sendProtocolMessage(r);
|
|
3765
3768
|
}
|
|
3766
3769
|
/**
|
|
@@ -3785,8 +3788,8 @@ class Dc {
|
|
|
3785
3788
|
h === void 0 || h === "" ? E.hasDefaultValue ? s.push(lt(E.defaultValueJson, E.descriptor)) : s.push(void 0) : s.push(lt(h, E.descriptor));
|
|
3786
3789
|
}
|
|
3787
3790
|
const i = await e.handler(...s);
|
|
3788
|
-
let o = i, a =
|
|
3789
|
-
|
|
3791
|
+
let o = i, a = Dc;
|
|
3792
|
+
Mc(i) && (o = i.value, a = new Uint8Array(i.data));
|
|
3790
3793
|
const c = Or(o, e.returnType);
|
|
3791
3794
|
this.sendResult(r.CallId, r.InstanceId, n, e, c, a);
|
|
3792
3795
|
} catch (s) {
|
|
@@ -3812,7 +3815,7 @@ class Dc {
|
|
|
3812
3815
|
ji({
|
|
3813
3816
|
CallId: e,
|
|
3814
3817
|
InstanceId: r,
|
|
3815
|
-
ResultTypeName:
|
|
3818
|
+
ResultTypeName: se(s.returnType),
|
|
3816
3819
|
ResultJson: i,
|
|
3817
3820
|
ResultData: o
|
|
3818
3821
|
}),
|
|
@@ -3841,7 +3844,7 @@ class Dc {
|
|
|
3841
3844
|
this.config.sendProtocolMessage(i);
|
|
3842
3845
|
}
|
|
3843
3846
|
}
|
|
3844
|
-
function
|
|
3847
|
+
function Lc(t, e) {
|
|
3845
3848
|
return { value: t, data: e };
|
|
3846
3849
|
}
|
|
3847
3850
|
function Ne(t) {
|
|
@@ -3857,7 +3860,7 @@ const ye = {
|
|
|
3857
3860
|
StartAudioCapture: "ikon.client.startAudioCapture",
|
|
3858
3861
|
StopCapture: "ikon.client.stopCapture",
|
|
3859
3862
|
CaptureImage: "ikon.client.captureImage"
|
|
3860
|
-
},
|
|
3863
|
+
}, vc = {
|
|
3861
3864
|
name: ye.StartVideoCapture,
|
|
3862
3865
|
description: "Start camera or screen capture and stream video frames to the server",
|
|
3863
3866
|
returnType: { kind: "string" },
|
|
@@ -3865,26 +3868,26 @@ const ye = {
|
|
|
3865
3868
|
{ name: "source", type: { kind: "string", nullable: !0 }, description: "camera or screen" },
|
|
3866
3869
|
{ name: "optionsJson", type: { kind: "string", nullable: !0 }, description: "JSON encoded capture options" }
|
|
3867
3870
|
]
|
|
3868
|
-
},
|
|
3871
|
+
}, Fc = {
|
|
3869
3872
|
name: ye.StartAudioCapture,
|
|
3870
3873
|
description: "Start microphone capture and stream audio frames to the server",
|
|
3871
3874
|
returnType: { kind: "string" },
|
|
3872
3875
|
parameters: [{ name: "optionsJson", type: { kind: "string", nullable: !0 }, description: "JSON encoded capture options" }]
|
|
3873
|
-
},
|
|
3876
|
+
}, Pc = {
|
|
3874
3877
|
name: ye.StopCapture,
|
|
3875
3878
|
description: "Stop a previously started capture by captureId",
|
|
3876
3879
|
returnType: { kind: "boolean" },
|
|
3877
3880
|
parameters: [{ name: "captureId", type: { kind: "string" }, description: "Capture ID to stop" }]
|
|
3878
|
-
},
|
|
3881
|
+
}, Bc = {
|
|
3879
3882
|
name: ye.CaptureImage,
|
|
3880
3883
|
description: "Capture a single image from the camera and return metadata (JSON) plus binary image data",
|
|
3881
3884
|
returnType: { kind: "string" },
|
|
3882
3885
|
parameters: [{ name: "optionsJson", type: { kind: "string", nullable: !0 }, description: "JSON encoded capture options" }]
|
|
3883
3886
|
};
|
|
3884
|
-
function
|
|
3887
|
+
function xc(t, e) {
|
|
3885
3888
|
const r = [];
|
|
3886
3889
|
return r.push(
|
|
3887
|
-
t.register(
|
|
3890
|
+
t.register(vc, async (n, s) => {
|
|
3888
3891
|
const i = e.mediaCapture;
|
|
3889
3892
|
if (!i)
|
|
3890
3893
|
throw new Error("Media capture is not available in this environment");
|
|
@@ -3892,7 +3895,7 @@ function Pc(t, e) {
|
|
|
3892
3895
|
return ((typeof n == "string" && n.trim().toLowerCase() === "screen" ? "screen" : "camera") === "screen" ? await i.video.startScreen({ userGesture: !1, options: o, constraints: o?.constraints }) : await i.video.startCamera({ userGesture: !1, options: o, constraints: o?.constraints })).captureId;
|
|
3893
3896
|
})
|
|
3894
3897
|
), r.push(
|
|
3895
|
-
t.register(
|
|
3898
|
+
t.register(Fc, async (n) => {
|
|
3896
3899
|
const s = e.mediaCapture;
|
|
3897
3900
|
if (!s)
|
|
3898
3901
|
throw new Error("Media capture is not available in this environment");
|
|
@@ -3900,7 +3903,7 @@ function Pc(t, e) {
|
|
|
3900
3903
|
return (await s.audio.startMic({ userGesture: !1, options: i, constraints: i?.constraints })).captureId;
|
|
3901
3904
|
})
|
|
3902
3905
|
), r.push(
|
|
3903
|
-
t.register(
|
|
3906
|
+
t.register(Pc, async (n) => {
|
|
3904
3907
|
const s = e.mediaCapture;
|
|
3905
3908
|
if (!s || typeof n != "string" || !n.trim())
|
|
3906
3909
|
return !1;
|
|
@@ -3908,7 +3911,7 @@ function Pc(t, e) {
|
|
|
3908
3911
|
return i || o;
|
|
3909
3912
|
})
|
|
3910
3913
|
), r.push(
|
|
3911
|
-
t.register(
|
|
3914
|
+
t.register(Bc, async (n) => {
|
|
3912
3915
|
const s = e.mediaCapture;
|
|
3913
3916
|
if (!s)
|
|
3914
3917
|
throw new Error("Media capture is not available in this environment");
|
|
@@ -3920,7 +3923,7 @@ function Pc(t, e) {
|
|
|
3920
3923
|
width: i.width,
|
|
3921
3924
|
height: i.height
|
|
3922
3925
|
}), a = JSON.stringify({ mime: o.mime, width: o.width, height: o.height });
|
|
3923
|
-
return
|
|
3926
|
+
return Lc(a, o.data);
|
|
3924
3927
|
})
|
|
3925
3928
|
), () => {
|
|
3926
3929
|
for (const n of r)
|
|
@@ -3932,25 +3935,25 @@ const Lr = () => {
|
|
|
3932
3935
|
return !1;
|
|
3933
3936
|
const t = navigator.userAgent, e = /iPad|iPhone|iPod/.test(t), r = t.includes("Macintosh") && typeof navigator.maxTouchPoints == "number" && navigator.maxTouchPoints > 1;
|
|
3934
3937
|
return e || r;
|
|
3935
|
-
},
|
|
3936
|
-
function
|
|
3938
|
+
}, le = M("Capabilities"), Gc = globalThis;
|
|
3939
|
+
function de() {
|
|
3937
3940
|
if (typeof SharedArrayBuffer > "u")
|
|
3938
|
-
return
|
|
3941
|
+
return le.debug("SharedArrayBuffer not supported: SharedArrayBuffer is undefined"), !1;
|
|
3939
3942
|
if (typeof Atomics > "u")
|
|
3940
|
-
return
|
|
3941
|
-
if (
|
|
3942
|
-
return
|
|
3943
|
+
return le.debug("SharedArrayBuffer not supported: Atomics is undefined"), !1;
|
|
3944
|
+
if (Gc.crossOriginIsolated === !1)
|
|
3945
|
+
return le.debug("SharedArrayBuffer not supported: crossOriginIsolated is false (missing COOP/COEP headers)"), !1;
|
|
3943
3946
|
try {
|
|
3944
3947
|
new SharedArrayBuffer(1);
|
|
3945
3948
|
} catch (t) {
|
|
3946
|
-
return
|
|
3949
|
+
return le.debug(`SharedArrayBuffer not supported: construction failed - ${t instanceof Error ? t.message : String(t)}`), !1;
|
|
3947
3950
|
}
|
|
3948
3951
|
return !0;
|
|
3949
3952
|
}
|
|
3950
3953
|
function vr(t) {
|
|
3951
3954
|
return typeof AudioWorkletNode != "function" ? !1 : typeof t.audioWorklet?.addModule == "function";
|
|
3952
3955
|
}
|
|
3953
|
-
function
|
|
3956
|
+
function Vc(t) {
|
|
3954
3957
|
return new Worker(
|
|
3955
3958
|
"" + new URL("assets/audio-playback-worker-CM2aCt54.js", import.meta.url).href,
|
|
3956
3959
|
{
|
|
@@ -3959,7 +3962,7 @@ function xc(t) {
|
|
|
3959
3962
|
}
|
|
3960
3963
|
);
|
|
3961
3964
|
}
|
|
3962
|
-
const
|
|
3965
|
+
const ue = 48e3, b = 2, Fr = 1500, ut = 512, ht = "playback", Wc = 120, Hc = 300, $c = 4, Kc = 200, Yc = 100, jc = 8e3, zc = 10, Pr = 100, ve = 50, Br = 128, Xc = 20, Jc = !0, G = 1500, Qc = -20, Zc = -100, qc = 200, A = M("IkonAudioPlayback"), el = () => {
|
|
3963
3966
|
if (typeof navigator > "u" || typeof window > "u")
|
|
3964
3967
|
return !1;
|
|
3965
3968
|
const t = navigator.userAgent, e = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(t), r = t.includes("Macintosh") && typeof navigator.maxTouchPoints == "number" && navigator.maxTouchPoints > 1;
|
|
@@ -3971,19 +3974,19 @@ const le = 48e3, R = 2, Fr = 1500, ut = 512, ht = "playback", Gc = 120, Vc = 300
|
|
|
3971
3974
|
function V(t) {
|
|
3972
3975
|
return t instanceof Error ? `${t.name}: ${t.message}` : String(t);
|
|
3973
3976
|
}
|
|
3974
|
-
function
|
|
3977
|
+
function tl(t) {
|
|
3975
3978
|
return `
|
|
3976
3979
|
// Audio buffer constants
|
|
3977
3980
|
const OUTPUT_SAMPLE_RATE_HZ = ${t.outputSampleRateHz};
|
|
3978
3981
|
const DEFAULT_FRAME_SAMPLES_PER_CHANNEL = Math.max(1, Math.round(OUTPUT_SAMPLE_RATE_HZ * 0.02));
|
|
3979
|
-
const BUFFER_TARGET_MIN_MS = ${
|
|
3980
|
-
const BUFFER_TARGET_MAX_MS = ${
|
|
3981
|
-
const JITTER_MULTIPLIER = ${
|
|
3982
|
+
const BUFFER_TARGET_MIN_MS = ${Wc};
|
|
3983
|
+
const BUFFER_TARGET_MAX_MS = ${Hc};
|
|
3984
|
+
const JITTER_MULTIPLIER = ${$c};
|
|
3982
3985
|
const LOCAL_BUFFER_MAX_MS = ${Fr};
|
|
3983
|
-
const CONTROL_PERIOD_MS = ${
|
|
3984
|
-
const UNDERRUN_JUMP_MS = ${
|
|
3985
|
-
const STABLE_TIME_TO_DECREASE_MS = ${
|
|
3986
|
-
const DECREASE_STEP_MS = ${
|
|
3986
|
+
const CONTROL_PERIOD_MS = ${Kc};
|
|
3987
|
+
const UNDERRUN_JUMP_MS = ${Yc};
|
|
3988
|
+
const STABLE_TIME_TO_DECREASE_MS = ${jc};
|
|
3989
|
+
const DECREASE_STEP_MS = ${zc};
|
|
3987
3990
|
const DEFAULT_STATS_INTERVAL_SAMPLES = OUTPUT_SAMPLE_RATE_HZ;
|
|
3988
3991
|
|
|
3989
3992
|
// Pre-computed reciprocals for division-free calculations
|
|
@@ -4002,7 +4005,7 @@ const FADE_OUT_INCREMENT = 1.0 / FADE_OUT_DURATION_SAMPLES;
|
|
|
4002
4005
|
const RENDER_QUANTUM_SIZE = ${Br};
|
|
4003
4006
|
|
|
4004
4007
|
// Buffer reduction crossfade constants (align to quantum boundary to avoid partial quanta)
|
|
4005
|
-
const BUFFER_REDUCTION_CROSSFADE_MS = ${
|
|
4008
|
+
const BUFFER_REDUCTION_CROSSFADE_MS = ${Xc};
|
|
4006
4009
|
const BUFFER_REDUCTION_CROSSFADE_SAMPLES_RAW = Math.round(OUTPUT_SAMPLE_RATE_HZ * BUFFER_REDUCTION_CROSSFADE_MS / 1000);
|
|
4007
4010
|
const BUFFER_REDUCTION_CROSSFADE_SAMPLES = Math.ceil(BUFFER_REDUCTION_CROSSFADE_SAMPLES_RAW / RENDER_QUANTUM_SIZE) * RENDER_QUANTUM_SIZE;
|
|
4008
4011
|
|
|
@@ -4213,7 +4216,7 @@ class IkonAudioPlayerProcessor extends AudioWorkletProcessor {
|
|
|
4213
4216
|
this.statsIntervalSamples = Math.max(1, Math.round((OUTPUT_SAMPLE_RATE_HZ * statusIntervalMs) / 1000));
|
|
4214
4217
|
|
|
4215
4218
|
// Normalization config (hardcoded)
|
|
4216
|
-
this.normalizationEnabled = ${
|
|
4219
|
+
this.normalizationEnabled = ${Jc};
|
|
4217
4220
|
|
|
4218
4221
|
// Stream states for audio buffer
|
|
4219
4222
|
this.streams = new Map();
|
|
@@ -4896,7 +4899,7 @@ class Ze {
|
|
|
4896
4899
|
config;
|
|
4897
4900
|
enabled = !1;
|
|
4898
4901
|
stateUnsubscribe = null;
|
|
4899
|
-
isMobile =
|
|
4902
|
+
isMobile = el();
|
|
4900
4903
|
boundVisibilityChange = null;
|
|
4901
4904
|
boundPageHide = null;
|
|
4902
4905
|
unlockHandler = null;
|
|
@@ -4905,7 +4908,7 @@ class Ze {
|
|
|
4905
4908
|
/** Timeout for AudioContext.resume() - normally resolves instantly, but some browsers hang indefinitely */
|
|
4906
4909
|
static RESUME_TIMEOUT_MS = 100;
|
|
4907
4910
|
audioContext = null;
|
|
4908
|
-
outputSampleRateHz =
|
|
4911
|
+
outputSampleRateHz = ue;
|
|
4909
4912
|
audioWorkletNode = null;
|
|
4910
4913
|
scriptProcessorNode = null;
|
|
4911
4914
|
scriptDiagnosticsTimer = null;
|
|
@@ -5011,7 +5014,7 @@ class Ze {
|
|
|
5011
5014
|
this.stopAudioGraph();
|
|
5012
5015
|
try {
|
|
5013
5016
|
const e = new AudioContext({
|
|
5014
|
-
sampleRate:
|
|
5017
|
+
sampleRate: ue,
|
|
5015
5018
|
latencyHint: ht
|
|
5016
5019
|
});
|
|
5017
5020
|
this.audioContext = e, this.outputSampleRateHz = e.sampleRate, e.resume(), this.setupAudioGraphAfterRecreate();
|
|
@@ -5101,7 +5104,7 @@ class Ze {
|
|
|
5101
5104
|
const e = this.audioContext;
|
|
5102
5105
|
if (!e)
|
|
5103
5106
|
return null;
|
|
5104
|
-
const r = e.currentTime, n = e.sampleRate, s =
|
|
5107
|
+
const r = e.currentTime, n = e.sampleRate, s = b;
|
|
5105
5108
|
for (const i of this.visemeBuffers.values()) {
|
|
5106
5109
|
if (!i.timingEstablished || i.count === 0)
|
|
5107
5110
|
continue;
|
|
@@ -5150,7 +5153,7 @@ class Ze {
|
|
|
5150
5153
|
if (typeof window > "u")
|
|
5151
5154
|
return;
|
|
5152
5155
|
if (!this.audioContext) {
|
|
5153
|
-
const a =
|
|
5156
|
+
const a = ue, c = ht;
|
|
5154
5157
|
try {
|
|
5155
5158
|
this.audioContext = new AudioContext({ sampleRate: a, latencyHint: c });
|
|
5156
5159
|
} catch (l) {
|
|
@@ -5167,7 +5170,7 @@ class Ze {
|
|
|
5167
5170
|
}
|
|
5168
5171
|
A.debug(`AudioContext sample rate request unsupported: ${V(l)}`);
|
|
5169
5172
|
}
|
|
5170
|
-
this.outputSampleRateHz = this.audioContext.sampleRate ||
|
|
5173
|
+
this.outputSampleRateHz = this.audioContext.sampleRate || ue, this.outputSampleRateHz !== a && A.debug(`AudioContext running at ${this.outputSampleRateHz}Hz (requested ${a}Hz)`), this.attachAudioContextHealthHandlers(this.audioContext);
|
|
5171
5174
|
}
|
|
5172
5175
|
const n = this.audioContext, s = this.resolveDiagnosticsConfig();
|
|
5173
5176
|
if ((this.config.performance?.preferAudioWorklet ?? !0) && vr(n)) {
|
|
@@ -5323,14 +5326,14 @@ class Ze {
|
|
|
5323
5326
|
await this.resumeWithTimeout(e), this.getContextState(e) === "running" && this.removeUnlockHandler();
|
|
5324
5327
|
} catch {
|
|
5325
5328
|
}
|
|
5326
|
-
const i = `${this.outputSampleRateHz}_${
|
|
5329
|
+
const i = `${this.outputSampleRateHz}_${b}`;
|
|
5327
5330
|
if (!this.workletModuleUrl || this.workletModuleKey !== i) {
|
|
5328
5331
|
if (this.workletModuleUrl)
|
|
5329
5332
|
try {
|
|
5330
5333
|
URL.revokeObjectURL(this.workletModuleUrl);
|
|
5331
5334
|
} catch {
|
|
5332
5335
|
}
|
|
5333
|
-
this.workletModuleKey = i, this.workletReady = null, this.workletModuleUrl = URL.createObjectURL(new Blob([
|
|
5336
|
+
this.workletModuleKey = i, this.workletReady = null, this.workletModuleUrl = URL.createObjectURL(new Blob([tl({ outputSampleRateHz: this.outputSampleRateHz, outputChannels: b })], { type: "text/javascript" }));
|
|
5334
5337
|
}
|
|
5335
5338
|
this.workletReady || (this.workletReady = e.audioWorklet.addModule(this.workletModuleUrl).catch((E) => {
|
|
5336
5339
|
throw A.warn(`Failed to load AudioWorklet module, falling back: ${V(E)}`), E;
|
|
@@ -5342,15 +5345,15 @@ class Ze {
|
|
|
5342
5345
|
return;
|
|
5343
5346
|
}
|
|
5344
5347
|
this.stopScriptProcessor();
|
|
5345
|
-
const a = (this.config.performance?.preferSharedArrayBuffer ?? !0) &&
|
|
5348
|
+
const a = (this.config.performance?.preferSharedArrayBuffer ?? !0) && de();
|
|
5346
5349
|
this.audioWorkletNode = new AudioWorkletNode(e, "ikon-audio-player", {
|
|
5347
5350
|
numberOfInputs: 0,
|
|
5348
5351
|
numberOfOutputs: 1,
|
|
5349
|
-
outputChannelCount: [
|
|
5352
|
+
outputChannelCount: [b],
|
|
5350
5353
|
processorOptions: {
|
|
5351
5354
|
outputAudioConfig: { diagnostics: r },
|
|
5352
5355
|
useSharedArrayBuffer: a,
|
|
5353
|
-
outputChannels:
|
|
5356
|
+
outputChannels: b
|
|
5354
5357
|
}
|
|
5355
5358
|
}), this.audioWorkletNode.port.onmessage = (E) => {
|
|
5356
5359
|
const d = E.data;
|
|
@@ -5384,7 +5387,7 @@ class Ze {
|
|
|
5384
5387
|
if (this.scriptProcessorNode)
|
|
5385
5388
|
return;
|
|
5386
5389
|
this.stopAudioWorklet(), this.pendingWorkletMessages = [];
|
|
5387
|
-
const n = 1024, s = new Float32Array(n *
|
|
5390
|
+
const n = 1024, s = new Float32Array(n * b), i = Math.round(this.outputSampleRateHz * Pr / 1e3), o = Math.round(this.outputSampleRateHz * ve / 1e3), a = 1 / i, c = 1 / o, l = new Array(b), E = [], d = e.createScriptProcessor(n, 0, b);
|
|
5388
5391
|
d.onaudioprocess = (h) => {
|
|
5389
5392
|
const f = h.outputBuffer, p = f.numberOfChannels, I = f.length;
|
|
5390
5393
|
for (let _ = 0; _ < p; _++) {
|
|
@@ -5460,7 +5463,7 @@ class Ze {
|
|
|
5460
5463
|
e.totalSamples < 0 && (e.totalSamples = 0), this.compactFallbackQueue(e);
|
|
5461
5464
|
}
|
|
5462
5465
|
trimFallbackQueue(e) {
|
|
5463
|
-
const r = Math.floor(this.outputSampleRateHz *
|
|
5466
|
+
const r = Math.floor(this.outputSampleRateHz * b * Fr / 1e3), n = e.totalSamples - r;
|
|
5464
5467
|
n <= 0 || this.skipFromFallbackQueue(e, n);
|
|
5465
5468
|
}
|
|
5466
5469
|
stopScriptProcessorDiagnostics() {
|
|
@@ -5479,7 +5482,7 @@ class Ze {
|
|
|
5479
5482
|
for (const [n, s] of this.fallbackQueues.entries()) {
|
|
5480
5483
|
if (s.totalSamples <= 0)
|
|
5481
5484
|
continue;
|
|
5482
|
-
const o = s.totalSamples /
|
|
5485
|
+
const o = s.totalSamples / b * 1e3 / this.outputSampleRateHz;
|
|
5483
5486
|
A.debug(`[Audio] stream=${n.substring(0, 8)} buffer=${o.toFixed(0)}ms renderer=ScriptProcessor`);
|
|
5484
5487
|
}
|
|
5485
5488
|
}, r);
|
|
@@ -5556,13 +5559,13 @@ class Ze {
|
|
|
5556
5559
|
rebindWorkerTransportIfNeeded() {
|
|
5557
5560
|
if (!this.audioWorker || !this.audioContext)
|
|
5558
5561
|
return;
|
|
5559
|
-
const s = (this.config.performance?.preferSharedArrayBuffer ?? !0) && !!this.audioWorkletNode &&
|
|
5562
|
+
const s = (this.config.performance?.preferSharedArrayBuffer ?? !0) && !!this.audioWorkletNode && de() ? "sab" : "pcm";
|
|
5560
5563
|
try {
|
|
5561
5564
|
this.audioWorker.postMessage({
|
|
5562
5565
|
type: "rebind",
|
|
5563
5566
|
transport: s,
|
|
5564
5567
|
outputSampleRate: this.outputSampleRateHz,
|
|
5565
|
-
outputChannels:
|
|
5568
|
+
outputChannels: b
|
|
5566
5569
|
});
|
|
5567
5570
|
} catch {
|
|
5568
5571
|
}
|
|
@@ -5574,14 +5577,14 @@ class Ze {
|
|
|
5574
5577
|
A.warn("Audio decode worker unavailable (Workers not supported)");
|
|
5575
5578
|
return;
|
|
5576
5579
|
}
|
|
5577
|
-
const e = this.client.createProtocolMessagePort({ opcodeGroupsMask:
|
|
5580
|
+
const e = this.client.createProtocolMessagePort({ opcodeGroupsMask: S.GROUP_AUDIO });
|
|
5578
5581
|
if (!e) {
|
|
5579
5582
|
this.enabled && A.debug("Audio pipeline waiting for client connection");
|
|
5580
5583
|
return;
|
|
5581
5584
|
}
|
|
5582
5585
|
this.protocolPort = e;
|
|
5583
5586
|
try {
|
|
5584
|
-
this.audioWorker = new
|
|
5587
|
+
this.audioWorker = new Vc();
|
|
5585
5588
|
} catch (d) {
|
|
5586
5589
|
A.warn(`Failed to create audio worker: ${V(d)}`), this.protocolPort.close(), this.protocolPort = null;
|
|
5587
5590
|
return;
|
|
@@ -5591,16 +5594,16 @@ class Ze {
|
|
|
5591
5594
|
const h = [d.message, d.filename, d.lineno, d.colno].filter((f) => f != null && String(f).length > 0);
|
|
5592
5595
|
A.error(`Audio worker failed: ${h.join(" ")}`.trim());
|
|
5593
5596
|
});
|
|
5594
|
-
const s = (this.config.performance?.preferSharedArrayBuffer ?? !0) && !!this.audioWorkletNode &&
|
|
5597
|
+
const s = (this.config.performance?.preferSharedArrayBuffer ?? !0) && !!this.audioWorkletNode && de(), i = this.config.performance?.preferWebCodecs ?? !0, o = {
|
|
5595
5598
|
type: "configure",
|
|
5596
5599
|
transport: s ? "sab" : "pcm",
|
|
5597
5600
|
outputSampleRate: this.outputSampleRateHz,
|
|
5598
|
-
outputChannels:
|
|
5601
|
+
outputChannels: b,
|
|
5599
5602
|
preferWebCodecs: i
|
|
5600
5603
|
};
|
|
5601
5604
|
r.postMessage(o), r.postMessage({ type: "attachProtocolPort", port: e.port }, [e.port]);
|
|
5602
5605
|
const a = this.audioWorkletNode ? "AudioWorklet" : "ScriptProcessor", c = s ? "SharedArrayBuffer" : "MessagePort", E = i && typeof AudioDecoder < "u" ? "WebCodecs" : "WASM Opus";
|
|
5603
|
-
A.debug(`Audio initialized: renderer=${a}, transport=${c}, decoder=${E}, output=${this.outputSampleRateHz}Hz/${
|
|
5606
|
+
A.debug(`Audio initialized: renderer=${a}, transport=${c}, decoder=${E}, output=${this.outputSampleRateHz}Hz/${b}ch`);
|
|
5604
5607
|
}
|
|
5605
5608
|
onAudioWorkerMessage(e) {
|
|
5606
5609
|
if (e.type === "streamBegin") {
|
|
@@ -5665,7 +5668,7 @@ class Ze {
|
|
|
5665
5668
|
s.epochTimestampSamples = e.timestampInterleavedSamples;
|
|
5666
5669
|
const c = this.audioContext;
|
|
5667
5670
|
if (c) {
|
|
5668
|
-
const l = (c.outputLatency ?? 0) + (c.baseLatency ?? 0), E =
|
|
5671
|
+
const l = (c.outputLatency ?? 0) + (c.baseLatency ?? 0), E = Qc + l * 1e3, d = Math.min(qc, Math.max(Zc, E));
|
|
5669
5672
|
s.playbackStartContextTime = c.currentTime + d / 1e3;
|
|
5670
5673
|
}
|
|
5671
5674
|
s.timingEstablished = !0;
|
|
@@ -5788,7 +5791,7 @@ class Ze {
|
|
|
5788
5791
|
}));
|
|
5789
5792
|
}
|
|
5790
5793
|
}
|
|
5791
|
-
function
|
|
5794
|
+
function rl(t) {
|
|
5792
5795
|
return new Worker(
|
|
5793
5796
|
"" + new URL("assets/video-playback-worker-C7sQMgD-.js", import.meta.url).href,
|
|
5794
5797
|
{
|
|
@@ -5801,7 +5804,7 @@ const W = M("IkonVideoPlayback");
|
|
|
5801
5804
|
function Ce(t) {
|
|
5802
5805
|
return t instanceof Error ? `${t.name}: ${t.message}` : String(t);
|
|
5803
5806
|
}
|
|
5804
|
-
class
|
|
5807
|
+
class nl {
|
|
5805
5808
|
client;
|
|
5806
5809
|
config;
|
|
5807
5810
|
enabled = !0;
|
|
@@ -5876,7 +5879,7 @@ class tl {
|
|
|
5876
5879
|
}
|
|
5877
5880
|
let e;
|
|
5878
5881
|
try {
|
|
5879
|
-
e = new
|
|
5882
|
+
e = new rl();
|
|
5880
5883
|
} catch (r) {
|
|
5881
5884
|
W.warn(`Failed to create video worker: ${Ce(r)}`);
|
|
5882
5885
|
return;
|
|
@@ -5965,7 +5968,7 @@ class tl {
|
|
|
5965
5968
|
const r = this.parseStreamId(e);
|
|
5966
5969
|
if (!r)
|
|
5967
5970
|
return;
|
|
5968
|
-
const n = Ua(
|
|
5971
|
+
const n = Ua(ba(), this.client.sessionId ?? 0, {
|
|
5969
5972
|
trackId: r.trackId,
|
|
5970
5973
|
targetIds: [r.senderId]
|
|
5971
5974
|
});
|
|
@@ -5990,7 +5993,7 @@ class tl {
|
|
|
5990
5993
|
ensureProtocolPort() {
|
|
5991
5994
|
if (!this.worker || this.protocolPort)
|
|
5992
5995
|
return;
|
|
5993
|
-
const e = this.client.createProtocolMessagePort({ opcodeGroupsMask:
|
|
5996
|
+
const e = this.client.createProtocolMessagePort({ opcodeGroupsMask: S.GROUP_VIDEO });
|
|
5994
5997
|
if (e) {
|
|
5995
5998
|
this.protocolPort = e;
|
|
5996
5999
|
try {
|
|
@@ -6025,11 +6028,11 @@ class tl {
|
|
|
6025
6028
|
}));
|
|
6026
6029
|
}
|
|
6027
6030
|
}
|
|
6028
|
-
class
|
|
6031
|
+
class sl {
|
|
6029
6032
|
audio;
|
|
6030
6033
|
video;
|
|
6031
6034
|
constructor(e, r) {
|
|
6032
|
-
this.audio = new Ze(e, r?.audio), this.video = new
|
|
6035
|
+
this.audio = new Ze(e, r?.audio), this.video = new nl(e, r?.video), r?.mediaSession && this.audio.setMediaSession(r.mediaSession);
|
|
6033
6036
|
}
|
|
6034
6037
|
/**
|
|
6035
6038
|
* Releases media resources (workers, audio graph, decoders).
|
|
@@ -6040,7 +6043,7 @@ class rl {
|
|
|
6040
6043
|
this.audio.dispose(), this.video.dispose();
|
|
6041
6044
|
}
|
|
6042
6045
|
}
|
|
6043
|
-
class
|
|
6046
|
+
class il {
|
|
6044
6047
|
static getStorageForCapacity(e, r) {
|
|
6045
6048
|
const n = Int32Array.BYTES_PER_ELEMENT * 2, s = r.BYTES_PER_ELEMENT * e;
|
|
6046
6049
|
return new SharedArrayBuffer(n + s);
|
|
@@ -6094,7 +6097,7 @@ class nl {
|
|
|
6094
6097
|
return n = (n + r) % this.capacity, Atomics.store(this.readWrite, 0, n), r;
|
|
6095
6098
|
}
|
|
6096
6099
|
}
|
|
6097
|
-
function
|
|
6100
|
+
function ol(t) {
|
|
6098
6101
|
return new Worker(
|
|
6099
6102
|
"" + new URL("assets/audio-capture-worker-D0tD-mzj.js", import.meta.url).href,
|
|
6100
6103
|
{
|
|
@@ -6104,11 +6107,11 @@ function sl(t) {
|
|
|
6104
6107
|
);
|
|
6105
6108
|
}
|
|
6106
6109
|
const ft = M("IkonAudioCapture");
|
|
6107
|
-
function
|
|
6110
|
+
function al() {
|
|
6108
6111
|
const t = globalThis.crypto;
|
|
6109
6112
|
return t?.randomUUID ? t.randomUUID() : `cap_${Date.now()}_${Math.floor(Math.random() * 1e9)}`;
|
|
6110
6113
|
}
|
|
6111
|
-
function
|
|
6114
|
+
function cl() {
|
|
6112
6115
|
return `
|
|
6113
6116
|
class RingBuffer {
|
|
6114
6117
|
static getStorageForCapacity(capacity, type) {
|
|
@@ -6237,7 +6240,7 @@ class IkonAudioCaptureProcessor extends AudioWorkletProcessor {
|
|
|
6237
6240
|
registerProcessor('ikon-audio-capture', IkonAudioCaptureProcessor);
|
|
6238
6241
|
`;
|
|
6239
6242
|
}
|
|
6240
|
-
class
|
|
6243
|
+
class ll {
|
|
6241
6244
|
constructor(e, r) {
|
|
6242
6245
|
this.client = e, this.config = r ?? {};
|
|
6243
6246
|
}
|
|
@@ -6257,7 +6260,7 @@ class al {
|
|
|
6257
6260
|
ensureWorker() {
|
|
6258
6261
|
if (this.worker)
|
|
6259
6262
|
return this.worker;
|
|
6260
|
-
const e = new
|
|
6263
|
+
const e = new ol();
|
|
6261
6264
|
return this.worker = e, e.addEventListener("message", (r) => {
|
|
6262
6265
|
const n = r.data;
|
|
6263
6266
|
if (n?.type === "error") {
|
|
@@ -6271,7 +6274,7 @@ class al {
|
|
|
6271
6274
|
throw new Error("Cannot start audio capture before client is connected");
|
|
6272
6275
|
const r = this.ensureWorker();
|
|
6273
6276
|
if (!this.sendPort) {
|
|
6274
|
-
const n = this.client.createProtocolSendPort({ opcodeGroupsMask:
|
|
6277
|
+
const n = this.client.createProtocolSendPort({ opcodeGroupsMask: S.GROUP_AUDIO });
|
|
6275
6278
|
if (!n)
|
|
6276
6279
|
throw new Error("Failed to create protocol send port for audio capture");
|
|
6277
6280
|
this.sendPort = n, r.postMessage({ type: "attachSendPort", port: n.port }, [n.port]);
|
|
@@ -6300,7 +6303,7 @@ class al {
|
|
|
6300
6303
|
async ensureWorklet(e) {
|
|
6301
6304
|
if (!vr(e))
|
|
6302
6305
|
throw new Error("AudioWorklet is not supported in this browser");
|
|
6303
|
-
this.workletModuleUrl || (this.workletModuleUrl = URL.createObjectURL(new Blob([
|
|
6306
|
+
this.workletModuleUrl || (this.workletModuleUrl = URL.createObjectURL(new Blob([cl()], { type: "text/javascript" }))), (!this.workletReady || this.workletContext !== e) && (this.workletContext = e, this.workletReady = e.audioWorklet.addModule(this.workletModuleUrl));
|
|
6304
6307
|
try {
|
|
6305
6308
|
await this.workletReady;
|
|
6306
6309
|
} catch (r) {
|
|
@@ -6316,13 +6319,13 @@ class al {
|
|
|
6316
6319
|
if (!i)
|
|
6317
6320
|
throw s.getTracks().forEach((_) => _.stop()), new Error("No audio track available");
|
|
6318
6321
|
await this.ensureWorklet(n);
|
|
6319
|
-
const o =
|
|
6322
|
+
const o = al(), a = this.allocateTrackId(), c = n.createMediaStreamSource(s), l = n.createGain();
|
|
6320
6323
|
l.gain.value = 0, l.connect(n.destination);
|
|
6321
|
-
const h =
|
|
6324
|
+
const h = de() ? "sab" : "pcm";
|
|
6322
6325
|
let f;
|
|
6323
6326
|
if (h === "sab") {
|
|
6324
6327
|
const _ = Math.floor(n.sampleRate * 2);
|
|
6325
|
-
f =
|
|
6328
|
+
f = il.getStorageForCapacity(_, Float32Array);
|
|
6326
6329
|
}
|
|
6327
6330
|
const p = this.ensureWorker();
|
|
6328
6331
|
p.postMessage({
|
|
@@ -6463,9 +6466,9 @@ class al {
|
|
|
6463
6466
|
}
|
|
6464
6467
|
}
|
|
6465
6468
|
}
|
|
6466
|
-
const xr = 1280, Gr = 720,
|
|
6467
|
-
async function
|
|
6468
|
-
const r = e.mime ?? Vr, n = e.quality ??
|
|
6469
|
+
const xr = 1280, Gr = 720, ul = 30, Vr = "image/jpeg", hl = 0.92;
|
|
6470
|
+
async function dl(t, e) {
|
|
6471
|
+
const r = e.mime ?? Vr, n = e.quality ?? hl;
|
|
6469
6472
|
if (typeof OffscreenCanvas < "u" && t instanceof OffscreenCanvas)
|
|
6470
6473
|
try {
|
|
6471
6474
|
return await t.convertToBlob({ type: r, quality: n });
|
|
@@ -6482,7 +6485,7 @@ async function ul(t, e) {
|
|
|
6482
6485
|
);
|
|
6483
6486
|
});
|
|
6484
6487
|
}
|
|
6485
|
-
class
|
|
6488
|
+
class fl {
|
|
6486
6489
|
async acquireCameraStream(e) {
|
|
6487
6490
|
if (!navigator.mediaDevices)
|
|
6488
6491
|
throw new Error("Media devices are not available in this environment");
|
|
@@ -6519,7 +6522,7 @@ class hl {
|
|
|
6519
6522
|
if (!E)
|
|
6520
6523
|
throw new Error("2D canvas context unavailable");
|
|
6521
6524
|
E.drawImage(s, 0, 0, a, c);
|
|
6522
|
-
const d = await
|
|
6525
|
+
const d = await dl(l, e), h = await d.arrayBuffer();
|
|
6523
6526
|
return {
|
|
6524
6527
|
mime: d.type || e.mime || Vr,
|
|
6525
6528
|
width: a,
|
|
@@ -6546,7 +6549,7 @@ class hl {
|
|
|
6546
6549
|
}
|
|
6547
6550
|
}
|
|
6548
6551
|
}
|
|
6549
|
-
function
|
|
6552
|
+
function El(t) {
|
|
6550
6553
|
return new Worker(
|
|
6551
6554
|
"" + new URL("assets/video-capture-worker-DZZ0ggvo.js", import.meta.url).href,
|
|
6552
6555
|
{
|
|
@@ -6556,17 +6559,17 @@ function dl(t) {
|
|
|
6556
6559
|
);
|
|
6557
6560
|
}
|
|
6558
6561
|
const Et = M("IkonVideoCapture");
|
|
6559
|
-
function
|
|
6562
|
+
function pl() {
|
|
6560
6563
|
const t = globalThis.crypto;
|
|
6561
6564
|
return t?.randomUUID ? t.randomUUID() : `cap_${Date.now()}_${Math.floor(Math.random() * 1e9)}`;
|
|
6562
6565
|
}
|
|
6563
|
-
function
|
|
6566
|
+
function Il() {
|
|
6564
6567
|
const t = globalThis.MediaStreamTrackProcessor;
|
|
6565
6568
|
if (!t)
|
|
6566
6569
|
throw new Error("MediaStreamTrackProcessor is not available in this browser");
|
|
6567
6570
|
return t;
|
|
6568
6571
|
}
|
|
6569
|
-
class
|
|
6572
|
+
class ml {
|
|
6570
6573
|
constructor(e) {
|
|
6571
6574
|
this.client = e;
|
|
6572
6575
|
}
|
|
@@ -6582,7 +6585,7 @@ class pl {
|
|
|
6582
6585
|
ensureWorker() {
|
|
6583
6586
|
if (this.worker)
|
|
6584
6587
|
return this.worker;
|
|
6585
|
-
const e = new
|
|
6588
|
+
const e = new El();
|
|
6586
6589
|
return this.worker = e, e.addEventListener("message", (r) => {
|
|
6587
6590
|
const n = r.data;
|
|
6588
6591
|
if (n?.type === "error") {
|
|
@@ -6596,20 +6599,20 @@ class pl {
|
|
|
6596
6599
|
throw new Error("Cannot start video capture before client is connected");
|
|
6597
6600
|
const r = this.ensureWorker();
|
|
6598
6601
|
if (!this.sendPort) {
|
|
6599
|
-
const n = this.client.createProtocolSendPort({ opcodeGroupsMask:
|
|
6602
|
+
const n = this.client.createProtocolSendPort({ opcodeGroupsMask: S.GROUP_VIDEO });
|
|
6600
6603
|
if (!n)
|
|
6601
6604
|
throw new Error("Failed to create protocol send port for video capture");
|
|
6602
6605
|
this.sendPort = n, r.postMessage({ type: "attachSendPort", port: n.port }, [n.port]);
|
|
6603
6606
|
}
|
|
6604
6607
|
if (!this.protocolPort) {
|
|
6605
|
-
const n = this.client.createProtocolMessagePort({ opcodeGroupsMask:
|
|
6608
|
+
const n = this.client.createProtocolMessagePort({ opcodeGroupsMask: S.GROUP_VIDEO });
|
|
6606
6609
|
n && (this.protocolPort = n, r.postMessage({ type: "attachProtocolPort", port: n.port }, [n.port]));
|
|
6607
6610
|
}
|
|
6608
6611
|
}
|
|
6609
6612
|
async getMediaStream(e) {
|
|
6610
6613
|
if (!navigator.mediaDevices)
|
|
6611
6614
|
throw new Error("Media devices are not available in this environment");
|
|
6612
|
-
const r = e.constraints ?? {}, n = e.options?.framerate ??
|
|
6615
|
+
const r = e.constraints ?? {}, n = e.options?.framerate ?? ul, s = {
|
|
6613
6616
|
...r,
|
|
6614
6617
|
frameRate: r.frameRate ?? { ideal: n }
|
|
6615
6618
|
};
|
|
@@ -6620,10 +6623,10 @@ class pl {
|
|
|
6620
6623
|
if (!r)
|
|
6621
6624
|
throw new Error("Cannot start video capture before client is connected");
|
|
6622
6625
|
this.ensurePorts();
|
|
6623
|
-
const n =
|
|
6626
|
+
const n = pl(), s = await this.getMediaStream(e), i = s.getVideoTracks()[0];
|
|
6624
6627
|
if (!i)
|
|
6625
6628
|
throw s.getTracks().forEach((I) => I.stop()), new Error("No video track available");
|
|
6626
|
-
const o = i.getSettings(), a = e.options?.width ?? o.width ?? xr, c = e.options?.height ?? o.height ?? Gr, l =
|
|
6629
|
+
const o = i.getSettings(), a = e.options?.width ?? o.width ?? xr, c = e.options?.height ?? o.height ?? Gr, l = Il(), d = new l({ track: i }).readable, h = this.allocateTrackId(), f = this.ensureWorker();
|
|
6627
6630
|
f.postMessage(
|
|
6628
6631
|
{
|
|
6629
6632
|
type: "start",
|
|
@@ -6691,12 +6694,12 @@ class pl {
|
|
|
6691
6694
|
this.protocolPort?.close(), this.protocolPort = null, this.sendPort?.close(), this.sendPort = null;
|
|
6692
6695
|
}
|
|
6693
6696
|
}
|
|
6694
|
-
class
|
|
6697
|
+
class _l {
|
|
6695
6698
|
audio;
|
|
6696
6699
|
video;
|
|
6697
6700
|
image;
|
|
6698
6701
|
constructor(e, r) {
|
|
6699
|
-
this.audio = new
|
|
6702
|
+
this.audio = new ll(e, r?.audio), this.video = new ml(e), this.image = new fl();
|
|
6700
6703
|
}
|
|
6701
6704
|
dispose() {
|
|
6702
6705
|
this.audio.dispose(), this.video.dispose();
|
|
@@ -6704,19 +6707,19 @@ class Il {
|
|
|
6704
6707
|
}
|
|
6705
6708
|
const Wr = M("DebugMode");
|
|
6706
6709
|
let Y = !1;
|
|
6707
|
-
function
|
|
6710
|
+
function Tl() {
|
|
6708
6711
|
return typeof window > "u" ? !1 : new URLSearchParams(window.location.search).get("debug") === "true";
|
|
6709
6712
|
}
|
|
6710
|
-
function
|
|
6711
|
-
return Y =
|
|
6713
|
+
function Sl() {
|
|
6714
|
+
return Y = Tl(), Y && (yr(Ae.DEBUG), Wr.warn("Debug mode enabled")), Y;
|
|
6712
6715
|
}
|
|
6713
|
-
function
|
|
6716
|
+
function wl() {
|
|
6714
6717
|
return Y;
|
|
6715
6718
|
}
|
|
6716
|
-
function
|
|
6717
|
-
Y || (Y = !0, yr(
|
|
6719
|
+
function Al() {
|
|
6720
|
+
Y || (Y = !0, yr(Ae.DEBUG), Wr.warn("Debug mode enabled"));
|
|
6718
6721
|
}
|
|
6719
|
-
function
|
|
6722
|
+
function yl(t) {
|
|
6720
6723
|
return new Worker(
|
|
6721
6724
|
"" + new URL("assets/protocol-worker-CH5R2dxZ.js", import.meta.url).href,
|
|
6722
6725
|
{
|
|
@@ -6730,8 +6733,8 @@ const pt = {
|
|
|
6730
6733
|
[k.WebSocket]: 1,
|
|
6731
6734
|
[k.WebTransportProxy]: 2,
|
|
6732
6735
|
[k.WebSocketProxy]: 3
|
|
6733
|
-
},
|
|
6734
|
-
class
|
|
6736
|
+
}, Re = "ikon_endpoint_type";
|
|
6737
|
+
class gl {
|
|
6735
6738
|
isLocal;
|
|
6736
6739
|
workingEndpointType = null;
|
|
6737
6740
|
constructor(e) {
|
|
@@ -6763,7 +6766,7 @@ class Al {
|
|
|
6763
6766
|
if (!this.isLocal) {
|
|
6764
6767
|
this.workingEndpointType = e;
|
|
6765
6768
|
try {
|
|
6766
|
-
localStorage.setItem(
|
|
6769
|
+
localStorage.setItem(Re, String(e));
|
|
6767
6770
|
} catch {
|
|
6768
6771
|
}
|
|
6769
6772
|
}
|
|
@@ -6774,7 +6777,7 @@ class Al {
|
|
|
6774
6777
|
clearRememberedType() {
|
|
6775
6778
|
this.workingEndpointType = null;
|
|
6776
6779
|
try {
|
|
6777
|
-
localStorage.removeItem(
|
|
6780
|
+
localStorage.removeItem(Re);
|
|
6778
6781
|
} catch {
|
|
6779
6782
|
}
|
|
6780
6783
|
}
|
|
@@ -6783,7 +6786,7 @@ class Al {
|
|
|
6783
6786
|
*/
|
|
6784
6787
|
loadRememberedType() {
|
|
6785
6788
|
try {
|
|
6786
|
-
const e = localStorage.getItem(
|
|
6789
|
+
const e = localStorage.getItem(Re);
|
|
6787
6790
|
if (e !== null) {
|
|
6788
6791
|
const r = Number(e);
|
|
6789
6792
|
k[r] !== void 0 && (this.workingEndpointType = r);
|
|
@@ -6792,11 +6795,11 @@ class Al {
|
|
|
6792
6795
|
}
|
|
6793
6796
|
}
|
|
6794
6797
|
}
|
|
6795
|
-
const
|
|
6796
|
-
function
|
|
6797
|
-
return typeof
|
|
6798
|
+
const T = M("IkonClient");
|
|
6799
|
+
function Nl() {
|
|
6800
|
+
return typeof __IKON_WAIT_FOR_EXTERNAL_CONNECT_URL__ < "u" && __IKON_WAIT_FOR_EXTERNAL_CONNECT_URL__;
|
|
6798
6801
|
}
|
|
6799
|
-
class
|
|
6802
|
+
class Hl {
|
|
6800
6803
|
channelManager = null;
|
|
6801
6804
|
protocolWorker = null;
|
|
6802
6805
|
workerManagerState = null;
|
|
@@ -6833,9 +6836,9 @@ class Vl {
|
|
|
6833
6836
|
nextProtocolSendPortId = 1;
|
|
6834
6837
|
_media;
|
|
6835
6838
|
_mediaCapture = null;
|
|
6836
|
-
// External
|
|
6837
|
-
|
|
6838
|
-
|
|
6839
|
+
// External connect URL mode
|
|
6840
|
+
_waitForExternalConnectUrl = Nl();
|
|
6841
|
+
_externalConnectUrlCleanup = null;
|
|
6839
6842
|
/**
|
|
6840
6843
|
* SDK-provided media pipelines (audio/video).
|
|
6841
6844
|
*
|
|
@@ -6860,21 +6863,21 @@ class Vl {
|
|
|
6860
6863
|
throw new Error('IkonClient requires one of: "local", "apiKey", or "sessionToken" configuration');
|
|
6861
6864
|
if (r > 1)
|
|
6862
6865
|
throw new Error('IkonClient accepts only one of: "local", "apiKey", or "sessionToken" configuration');
|
|
6863
|
-
this.endpointSelector = new
|
|
6866
|
+
this.endpointSelector = new gl({
|
|
6864
6867
|
local: e.local
|
|
6865
|
-
}), this._functionRegistry = new
|
|
6868
|
+
}), this._functionRegistry = new Oc(), ct() && !e.disableBrowserFunctions && (this.unregisterBrowserFunctions = bc(this._functionRegistry));
|
|
6866
6869
|
const n = e.audio ? {
|
|
6867
6870
|
performance: e.audio.performance,
|
|
6868
6871
|
background: e.audio.background,
|
|
6869
6872
|
diagnostics: e.audio.diagnostics
|
|
6870
6873
|
} : void 0, s = e.video ? { performance: e.video.performance } : void 0;
|
|
6871
|
-
this._media = new
|
|
6874
|
+
this._media = new sl(this, { audio: n, video: s, mediaSession: e.mediaSession }), this._media.audio.setEnabled(!0), this._media.video.setEnabled(!0), ct() && (this._mediaCapture = new _l(this, {
|
|
6872
6875
|
audio: {
|
|
6873
6876
|
performance: {
|
|
6874
6877
|
preferWebCodecs: e.audio?.performance?.preferWebCodecs
|
|
6875
6878
|
}
|
|
6876
6879
|
}
|
|
6877
|
-
}), this.unregisterMediaCaptureFunctions =
|
|
6880
|
+
}), this.unregisterMediaCaptureFunctions = xc(this._functionRegistry, this));
|
|
6878
6881
|
}
|
|
6879
6882
|
_lastError = void 0;
|
|
6880
6883
|
/**
|
|
@@ -6918,11 +6921,17 @@ class Vl {
|
|
|
6918
6921
|
async connect() {
|
|
6919
6922
|
if (this.currentState !== "idle")
|
|
6920
6923
|
throw new Error(`Cannot connect: already in state ${this.currentState}`);
|
|
6921
|
-
|
|
6922
|
-
|
|
6924
|
+
this.setupLifecycleHandlers();
|
|
6925
|
+
const e = Ya();
|
|
6926
|
+
if (e) {
|
|
6927
|
+
T.info("Found external connect URL in query parameter"), await this.executeConnection(() => ne(e, this.abortController.signal));
|
|
6928
|
+
return;
|
|
6929
|
+
}
|
|
6930
|
+
if (this._waitForExternalConnectUrl) {
|
|
6931
|
+
T.info("Waiting for external connect URL from parent window"), this.setState("waitingForExternalConnectUrl"), this._externalConnectUrlCleanup = this.setupExternalConnectUrlListener();
|
|
6923
6932
|
return;
|
|
6924
6933
|
}
|
|
6925
|
-
|
|
6934
|
+
T.info("Connecting to Ikon server"), await this.executeConnection(() => this.authenticate());
|
|
6926
6935
|
}
|
|
6927
6936
|
/**
|
|
6928
6937
|
* Execute the connection flow with the provided authentication function.
|
|
@@ -6931,22 +6940,22 @@ class Vl {
|
|
|
6931
6940
|
this._lastError = void 0, this.abortController = new AbortController(), this.setState("connecting"), this.slowConnectionTimer = setTimeout(() => {
|
|
6932
6941
|
this.currentState === "connecting" && this.setState("connectingSlow");
|
|
6933
6942
|
}, this.slowConnectionThresholdMs), this.connectionTimer = setTimeout(() => {
|
|
6934
|
-
(this.currentState === "connecting" || this.currentState === "connectingSlow") && (
|
|
6943
|
+
(this.currentState === "connecting" || this.currentState === "connectingSlow") && (T.error("Connection timeout"), this.abortController?.abort(), this.setState("offline"), this.config.onError?.(new Error("Connection timeout")));
|
|
6935
6944
|
}, this.connectionTimeoutMs);
|
|
6936
6945
|
try {
|
|
6937
6946
|
const r = await e();
|
|
6938
|
-
this.authResponse = r.authResponse, this._sessionId = r.authResponse.ClientContext.SessionId,
|
|
6947
|
+
this.authResponse = r.authResponse, this._sessionId = r.authResponse.ClientContext.SessionId, T.info("Authenticated to Ikon server"), await this.connectProtocol(this.authResponse.Entrypoints);
|
|
6939
6948
|
} catch (r) {
|
|
6940
6949
|
if (r instanceof DOMException && r.name === "AbortError")
|
|
6941
6950
|
return;
|
|
6942
|
-
throw
|
|
6951
|
+
throw T.error("Connection failed:", r), this.clearTimers(), this.setState("offline"), this.config.onError?.(r instanceof Error ? r : new Error(String(r))), r;
|
|
6943
6952
|
}
|
|
6944
6953
|
}
|
|
6945
6954
|
/**
|
|
6946
6955
|
* Disconnect from the server.
|
|
6947
6956
|
*/
|
|
6948
6957
|
disconnect() {
|
|
6949
|
-
|
|
6958
|
+
T.info("Disconnecting from Ikon server"), this.clearTimers(), this.cleanupLifecycleHandlers(), this._externalConnectUrlCleanup && (this._externalConnectUrlCleanup(), this._externalConnectUrlCleanup = null), this._mediaCapture?.dispose(), this.unregisterMediaCaptureFunctions && (this.unregisterMediaCaptureFunctions(), this.unregisterMediaCaptureFunctions = null), this.unregisterBrowserFunctions && (this.unregisterBrowserFunctions(), this.unregisterBrowserFunctions = null), this.abortController?.abort(), this.abortController = null, this.disconnectProtocol(), this.authResponse = null, this._sessionId = void 0, this._globalState = null, this._globalStateReceived = !1, this._channelsConnected = !1, this._joinedHandled = !1, this._functionRegistry.detach(), this.setState("idle");
|
|
6950
6959
|
}
|
|
6951
6960
|
sendActionCall(e, r) {
|
|
6952
6961
|
const n = ln(
|
|
@@ -6972,7 +6981,7 @@ class Vl {
|
|
|
6972
6981
|
this.channelManager.sendProtocolMessage(e);
|
|
6973
6982
|
return;
|
|
6974
6983
|
}
|
|
6975
|
-
|
|
6984
|
+
T.warn("Cannot send: not connected");
|
|
6976
6985
|
}
|
|
6977
6986
|
/**
|
|
6978
6987
|
* Create a MessagePort that receives raw protocol message buffers.
|
|
@@ -7010,7 +7019,7 @@ class Vl {
|
|
|
7010
7019
|
s.start?.();
|
|
7011
7020
|
const i = this.subscribeToProtocolMessages(
|
|
7012
7021
|
(o) => {
|
|
7013
|
-
const a =
|
|
7022
|
+
const a = ie(o), c = o.slice().buffer;
|
|
7014
7023
|
s.postMessage({ type: "protocol", message: c, headers: a }, [c]);
|
|
7015
7024
|
},
|
|
7016
7025
|
{ opcodeGroupsMask: e.opcodeGroupsMask }
|
|
@@ -7065,11 +7074,11 @@ class Vl {
|
|
|
7065
7074
|
if (!(!a || typeof a != "object") && !(a.type !== "send" || !(a.message instanceof ArrayBuffer)))
|
|
7066
7075
|
try {
|
|
7067
7076
|
const c = new Uint8Array(a.message);
|
|
7068
|
-
if ((
|
|
7077
|
+
if ((he(c) & e.opcodeGroupsMask) === 0)
|
|
7069
7078
|
return;
|
|
7070
7079
|
this.channelManager?.sendProtocolMessage(c);
|
|
7071
7080
|
} catch (c) {
|
|
7072
|
-
|
|
7081
|
+
T.warn(`Failed to forward protocol send port message: ${c}`);
|
|
7073
7082
|
}
|
|
7074
7083
|
};
|
|
7075
7084
|
try {
|
|
@@ -7125,26 +7134,26 @@ class Vl {
|
|
|
7125
7134
|
async authenticate() {
|
|
7126
7135
|
const e = this.abortController?.signal;
|
|
7127
7136
|
if (this.config.local)
|
|
7128
|
-
return
|
|
7137
|
+
return qa(this.config.local, e);
|
|
7129
7138
|
if (this.config.apiKey)
|
|
7130
|
-
return
|
|
7139
|
+
return ec(this.config.apiKey, e);
|
|
7131
7140
|
if (this.config.sessionToken)
|
|
7132
|
-
return
|
|
7141
|
+
return tc(this.config.sessionToken, e);
|
|
7133
7142
|
throw new Error("No connection configuration provided (need local, apiKey, or sessionToken)");
|
|
7134
7143
|
}
|
|
7135
7144
|
/**
|
|
7136
7145
|
* Handle incoming protocol message from channel manager.
|
|
7137
7146
|
*/
|
|
7138
7147
|
handleProtocolMessage(e) {
|
|
7139
|
-
const r =
|
|
7148
|
+
const r = fe(e), n = he(e);
|
|
7140
7149
|
if (this._functionRegistry.handleProtocolMessage(e, r)) {
|
|
7141
7150
|
this.notifyMessageSubscribers(e, r, n);
|
|
7142
7151
|
return;
|
|
7143
7152
|
}
|
|
7144
|
-
r ===
|
|
7145
|
-
this._globalState = s, this._sessionId !== void 0 && this._functionRegistry.syncFromGlobalState(s, this._sessionId), this._globalState.DebugMode &&
|
|
7153
|
+
r === S.CORE_GLOBAL_STATE && Ho(e).then((s) => {
|
|
7154
|
+
this._globalState = s, this._sessionId !== void 0 && this._functionRegistry.syncFromGlobalState(s, this._sessionId), this._globalState.DebugMode && Al(), wl() && this.protocolWorker && this.protocolWorker.postMessage({ type: "enableDevtools", enabled: !0 }), this._globalStateReceived || (this._globalStateReceived = !0, this.tryHandleJoined());
|
|
7146
7155
|
}).catch((s) => {
|
|
7147
|
-
|
|
7156
|
+
T.error("Failed to parse GlobalState:", s);
|
|
7148
7157
|
}), this.notifyMessageSubscribers(e, r, n);
|
|
7149
7158
|
}
|
|
7150
7159
|
/**
|
|
@@ -7158,17 +7167,17 @@ class Vl {
|
|
|
7158
7167
|
const c = i[a];
|
|
7159
7168
|
try {
|
|
7160
7169
|
if (c) {
|
|
7161
|
-
if (c.opcodeGroupsMask !== void 0 && ((n ??
|
|
7170
|
+
if (c.opcodeGroupsMask !== void 0 && ((n ?? he(e)) & c.opcodeGroupsMask) === 0)
|
|
7162
7171
|
continue;
|
|
7163
7172
|
if (c.opcodes && c.opcodes.length > 0) {
|
|
7164
|
-
const l = r ??
|
|
7173
|
+
const l = r ?? fe(e);
|
|
7165
7174
|
if (!c.opcodes.includes(l))
|
|
7166
7175
|
continue;
|
|
7167
7176
|
}
|
|
7168
7177
|
}
|
|
7169
7178
|
s[a](e);
|
|
7170
7179
|
} catch (l) {
|
|
7171
|
-
|
|
7180
|
+
T.error("Message subscriber error:", l);
|
|
7172
7181
|
}
|
|
7173
7182
|
}
|
|
7174
7183
|
}
|
|
@@ -7185,7 +7194,7 @@ class Vl {
|
|
|
7185
7194
|
this.currentState === "connected" && this.setState("reconnecting");
|
|
7186
7195
|
break;
|
|
7187
7196
|
case "stopped":
|
|
7188
|
-
|
|
7197
|
+
T.info("Ikon server has stopped"), this.clearTimers(), this.setState("offline");
|
|
7189
7198
|
break;
|
|
7190
7199
|
case "offline":
|
|
7191
7200
|
this.currentState !== "idle" && (this.clearTimers(), this.setState("offline"));
|
|
@@ -7210,7 +7219,7 @@ class Vl {
|
|
|
7210
7219
|
try {
|
|
7211
7220
|
r(e);
|
|
7212
7221
|
} catch (n) {
|
|
7213
|
-
|
|
7222
|
+
T.error("State subscriber error:", n);
|
|
7214
7223
|
}
|
|
7215
7224
|
this.config.onConnectionStateChange?.(e);
|
|
7216
7225
|
}
|
|
@@ -7220,7 +7229,7 @@ class Vl {
|
|
|
7220
7229
|
* Use this for unrecoverable SDK internal errors.
|
|
7221
7230
|
*/
|
|
7222
7231
|
setErrorState(e) {
|
|
7223
|
-
|
|
7232
|
+
T.error("SDK error, going offline:", e), this._lastError = e, this.clearTimers(), this.cleanupLifecycleHandlers(), this.disconnectProtocol(), this.currentState = "offlineError", this.config.onConnectionStateChange?.("offlineError"), this.config.onError?.(e);
|
|
7224
7233
|
}
|
|
7225
7234
|
async connectProtocol(e) {
|
|
7226
7235
|
if (typeof Worker > "u") {
|
|
@@ -7229,9 +7238,9 @@ class Vl {
|
|
|
7229
7238
|
}
|
|
7230
7239
|
let r;
|
|
7231
7240
|
try {
|
|
7232
|
-
r = new
|
|
7241
|
+
r = new yl();
|
|
7233
7242
|
} catch (l) {
|
|
7234
|
-
|
|
7243
|
+
T.warn(`Failed to create protocol worker, falling back to main thread: ${l}`), await this.connectProtocolOnMainThread(e);
|
|
7235
7244
|
return;
|
|
7236
7245
|
}
|
|
7237
7246
|
this.channelManager = null, this.protocolWorker = r, this.workerManagerState = "idle";
|
|
@@ -7260,7 +7269,7 @@ class Vl {
|
|
|
7260
7269
|
E(new Error(`Protocol worker failed: ${f.join(" ")}`.trim()));
|
|
7261
7270
|
});
|
|
7262
7271
|
}), s = this.computeOrderedEndpointTypes(e), i = this.config.timeouts?.keepaliveTimeoutMs ?? nt, o = this.config.timeouts?.reconnectBackoffMs ?? st, a = this.config.timeouts?.maxReconnectAttempts ?? it;
|
|
7263
|
-
this.updateWorkerInterestMask(),
|
|
7272
|
+
this.updateWorkerInterestMask(), Sl() && r.postMessage({ type: "enableDevtools", enabled: !0 }), r.postMessage({
|
|
7264
7273
|
type: "connect",
|
|
7265
7274
|
sessionId: this._sessionId,
|
|
7266
7275
|
entrypoints: e,
|
|
@@ -7272,7 +7281,7 @@ class Vl {
|
|
|
7272
7281
|
try {
|
|
7273
7282
|
await n;
|
|
7274
7283
|
} catch (l) {
|
|
7275
|
-
|
|
7284
|
+
T.warn(`Protocol worker connect failed, falling back to main thread: ${l}`), this.disconnectProtocol(), await this.connectProtocolOnMainThread(e);
|
|
7276
7285
|
}
|
|
7277
7286
|
}
|
|
7278
7287
|
async connectProtocolOnMainThread(e) {
|
|
@@ -7318,7 +7327,7 @@ class Vl {
|
|
|
7318
7327
|
this.protocolWorker.postMessage({ type: "setInterest", opcodeGroupsMask: void 0 });
|
|
7319
7328
|
return;
|
|
7320
7329
|
}
|
|
7321
|
-
let e =
|
|
7330
|
+
let e = S.GROUP_CORE | S.GROUP_ACTIONS;
|
|
7322
7331
|
for (const [, r] of this.messageSubscribers.entries()) {
|
|
7323
7332
|
if (!r || r.opcodeGroupsMask === void 0) {
|
|
7324
7333
|
this.protocolWorker.postMessage({ type: "setInterest", opcodeGroupsMask: void 0 });
|
|
@@ -7354,14 +7363,14 @@ class Vl {
|
|
|
7354
7363
|
* Close connection cleanly to avoid orphaned connections on the server.
|
|
7355
7364
|
*/
|
|
7356
7365
|
handleBeforeUnload() {
|
|
7357
|
-
|
|
7366
|
+
T.debug("Page unloading, closing connection..."), this.disconnect();
|
|
7358
7367
|
}
|
|
7359
7368
|
/**
|
|
7360
7369
|
* Handle page hide event (mobile-friendly, bfcache compatible).
|
|
7361
7370
|
* Only disconnect if page is actually being unloaded (not persisted).
|
|
7362
7371
|
*/
|
|
7363
7372
|
handlePageHide(e) {
|
|
7364
|
-
e.persisted || (
|
|
7373
|
+
e.persisted || (T.debug("Page hidden (not persisted), closing connection..."), this.disconnect());
|
|
7365
7374
|
}
|
|
7366
7375
|
/**
|
|
7367
7376
|
* Handle visibility change event.
|
|
@@ -7377,10 +7386,10 @@ class Vl {
|
|
|
7377
7386
|
*/
|
|
7378
7387
|
checkConnectionHealth() {
|
|
7379
7388
|
if (this.protocolWorker) {
|
|
7380
|
-
this.currentState === "connected" && this.workerManagerState !== "connected" && (
|
|
7389
|
+
this.currentState === "connected" && this.workerManagerState !== "connected" && (T.warn("Connection lost while page was backgrounded, reconnecting..."), this.setState("reconnecting"));
|
|
7381
7390
|
return;
|
|
7382
7391
|
}
|
|
7383
|
-
this.channelManager && this.currentState === "connected" && this.channelManager.managerState !== "connected" && (
|
|
7392
|
+
this.channelManager && this.currentState === "connected" && this.channelManager.managerState !== "connected" && (T.warn("Connection lost while page was backgrounded, reconnecting..."), this.setState("reconnecting"));
|
|
7384
7393
|
}
|
|
7385
7394
|
/**
|
|
7386
7395
|
* Try to handle joined state - only proceeds if both channels are connected and GlobalState is received.
|
|
@@ -7401,157 +7410,157 @@ class Vl {
|
|
|
7401
7410
|
const e = tt(et(), this._sessionId ?? 0);
|
|
7402
7411
|
this.sendProtocolMessage(e);
|
|
7403
7412
|
} catch (e) {
|
|
7404
|
-
|
|
7413
|
+
T.error("onJoined callback error:", e);
|
|
7405
7414
|
const r = tt(et(), this._sessionId ?? 0);
|
|
7406
7415
|
this.sendProtocolMessage(r);
|
|
7407
7416
|
}
|
|
7408
7417
|
}
|
|
7409
7418
|
/**
|
|
7410
|
-
* Set up listener for external
|
|
7419
|
+
* Set up listener for external connect URL from parent window.
|
|
7411
7420
|
* Returns cleanup function to remove the listener.
|
|
7412
7421
|
*/
|
|
7413
|
-
|
|
7422
|
+
setupExternalConnectUrlListener() {
|
|
7414
7423
|
const e = (r) => {
|
|
7415
|
-
r.data?.type === "
|
|
7416
|
-
|
|
7424
|
+
r.data?.type === "IKON_EXTERNAL_CONNECT_URL" && typeof r.data.serverUrl == "string" && (T.info("Received external connect URL from parent window"), this.handleExternalConnectUrl(r.data.serverUrl).catch((n) => {
|
|
7425
|
+
T.error("Failed to connect with external connect URL:", n), this.config.onError?.(n instanceof Error ? n : new Error(String(n))), this.setState("offlineError");
|
|
7417
7426
|
}));
|
|
7418
7427
|
};
|
|
7419
|
-
return window.addEventListener("message", e),
|
|
7420
|
-
window.removeEventListener("message", e),
|
|
7428
|
+
return window.addEventListener("message", e), T.debug("External connect URL listener registered"), () => {
|
|
7429
|
+
window.removeEventListener("message", e), T.debug("External connect URL listener removed");
|
|
7421
7430
|
};
|
|
7422
7431
|
}
|
|
7423
7432
|
/**
|
|
7424
|
-
* Handle external
|
|
7433
|
+
* Handle external connect URL injection from parent window.
|
|
7425
7434
|
*/
|
|
7426
|
-
async
|
|
7427
|
-
if (this.currentState !== "
|
|
7428
|
-
throw new Error(`Cannot connect with external
|
|
7429
|
-
|
|
7435
|
+
async handleExternalConnectUrl(e) {
|
|
7436
|
+
if (this.currentState !== "waitingForExternalConnectUrl")
|
|
7437
|
+
throw new Error(`Cannot connect with external connect URL: already in state ${this.currentState}`);
|
|
7438
|
+
T.info("Connecting with external connect URL");
|
|
7430
7439
|
try {
|
|
7431
|
-
await this.executeConnection(() =>
|
|
7440
|
+
await this.executeConnection(() => ne(e, this.abortController.signal));
|
|
7432
7441
|
} finally {
|
|
7433
|
-
this.
|
|
7442
|
+
this._externalConnectUrlCleanup && (this._externalConnectUrlCleanup(), this._externalConnectUrlCleanup = null);
|
|
7434
7443
|
}
|
|
7435
7444
|
}
|
|
7436
7445
|
}
|
|
7437
|
-
function
|
|
7438
|
-
return t === "
|
|
7446
|
+
function $l(t) {
|
|
7447
|
+
return t === "waitingForExternalConnectUrl" || t === "connecting" || t === "connectingSlow" || t === "reconnecting";
|
|
7439
7448
|
}
|
|
7440
|
-
function
|
|
7449
|
+
function Kl(t) {
|
|
7441
7450
|
return t === "connected";
|
|
7442
7451
|
}
|
|
7443
|
-
function
|
|
7452
|
+
function Yl(t) {
|
|
7444
7453
|
return t === "offline" || t === "offlineError" || t === "idle";
|
|
7445
7454
|
}
|
|
7446
|
-
function
|
|
7455
|
+
function jl(t) {
|
|
7447
7456
|
return t === "offlineError";
|
|
7448
7457
|
}
|
|
7449
7458
|
const Hr = /* @__PURE__ */ new Map();
|
|
7450
|
-
for (const [t, e] of Object.entries(
|
|
7459
|
+
for (const [t, e] of Object.entries(S))
|
|
7451
7460
|
typeof e == "number" && Hr.set(e, t);
|
|
7452
|
-
function
|
|
7461
|
+
function zl(t) {
|
|
7453
7462
|
return Hr.get(t) ?? `UNKNOWN_${t}`;
|
|
7454
7463
|
}
|
|
7455
|
-
const $r = 1e3, Kr =
|
|
7464
|
+
const $r = 1e3, Kr = Ae.INFO;
|
|
7456
7465
|
let L = [], Fe = $r, Yr = Kr, Pe = null;
|
|
7457
|
-
function
|
|
7466
|
+
function Cl(t) {
|
|
7458
7467
|
t.level < Yr || (L.push(t), L.length > Fe && (L = L.slice(-Fe)));
|
|
7459
7468
|
}
|
|
7460
|
-
function
|
|
7461
|
-
Fe = t?.maxBufferSize ?? $r, Yr = t?.minLevel ?? Kr, L = [], Oa(
|
|
7469
|
+
function Rl(t) {
|
|
7470
|
+
Fe = t?.maxBufferSize ?? $r, Yr = t?.minLevel ?? Kr, L = [], Oa(Cl);
|
|
7462
7471
|
}
|
|
7463
|
-
function
|
|
7472
|
+
function Xl(t) {
|
|
7464
7473
|
Pe = t;
|
|
7465
7474
|
}
|
|
7466
|
-
function
|
|
7475
|
+
function Jl() {
|
|
7467
7476
|
return L;
|
|
7468
7477
|
}
|
|
7469
|
-
function
|
|
7478
|
+
function bl() {
|
|
7470
7479
|
const t = L;
|
|
7471
7480
|
return L = [], t;
|
|
7472
7481
|
}
|
|
7473
|
-
function
|
|
7482
|
+
function Ql() {
|
|
7474
7483
|
if (!Pe || L.length === 0)
|
|
7475
7484
|
return 0;
|
|
7476
|
-
const t =
|
|
7485
|
+
const t = bl();
|
|
7477
7486
|
return Pe(t), t.length;
|
|
7478
7487
|
}
|
|
7479
|
-
function
|
|
7488
|
+
function Zl() {
|
|
7480
7489
|
L = [];
|
|
7481
7490
|
}
|
|
7482
|
-
function
|
|
7491
|
+
function ql() {
|
|
7483
7492
|
return L.length;
|
|
7484
7493
|
}
|
|
7485
|
-
|
|
7494
|
+
Rl();
|
|
7486
7495
|
export {
|
|
7487
7496
|
g as AuthenticationError,
|
|
7488
7497
|
Ga as Channel,
|
|
7489
7498
|
Va as ChannelManager,
|
|
7490
|
-
|
|
7499
|
+
Ul as ChannelNotFoundError,
|
|
7491
7500
|
J as ClientType,
|
|
7492
7501
|
je as ConnectionError,
|
|
7493
7502
|
Q as ContextType,
|
|
7494
|
-
|
|
7503
|
+
gl as EndpointSelector,
|
|
7495
7504
|
k as EntrypointType,
|
|
7496
|
-
|
|
7497
|
-
|
|
7505
|
+
Oc as FunctionRegistry,
|
|
7506
|
+
Bl as IKON_AUTH_BASE_URL,
|
|
7498
7507
|
at as IKON_AUTH_URL_DEV,
|
|
7499
7508
|
ot as IKON_AUTH_URL_PROD,
|
|
7500
|
-
|
|
7509
|
+
_e as IKON_BACKEND_URL_DEV,
|
|
7501
7510
|
Oe as IKON_BACKEND_URL_PROD,
|
|
7502
|
-
|
|
7511
|
+
ll as IkonAudioCapture,
|
|
7503
7512
|
Ze as IkonAudioPlayback,
|
|
7504
|
-
|
|
7505
|
-
|
|
7506
|
-
|
|
7507
|
-
|
|
7508
|
-
|
|
7509
|
-
|
|
7513
|
+
Hl as IkonClient,
|
|
7514
|
+
fl as IkonImageCapture,
|
|
7515
|
+
sl as IkonMedia,
|
|
7516
|
+
_l as IkonMediaCapture,
|
|
7517
|
+
ml as IkonVideoCapture,
|
|
7518
|
+
nl as IkonVideoPlayback,
|
|
7510
7519
|
ze as KeepaliveTimeoutError,
|
|
7511
|
-
|
|
7520
|
+
Ae as LogLevel,
|
|
7512
7521
|
Da as MaxRetriesExceededError,
|
|
7513
|
-
|
|
7514
|
-
|
|
7522
|
+
Ml as NoChannelsError,
|
|
7523
|
+
S as Opcode,
|
|
7515
7524
|
Ma as ProvisioningTimeoutError,
|
|
7516
|
-
|
|
7525
|
+
Dl as SpaceNotFoundError,
|
|
7517
7526
|
H as TransportError,
|
|
7518
7527
|
q as UserType,
|
|
7519
|
-
|
|
7520
|
-
|
|
7521
|
-
|
|
7528
|
+
kl as asProtocolMessage,
|
|
7529
|
+
Fl as clearDeviceId,
|
|
7530
|
+
Zl as clearLogBuffer,
|
|
7522
7531
|
M as createLogger,
|
|
7523
|
-
|
|
7524
|
-
|
|
7525
|
-
|
|
7526
|
-
|
|
7527
|
-
|
|
7528
|
-
|
|
7529
|
-
|
|
7530
|
-
|
|
7531
|
-
|
|
7532
|
-
|
|
7532
|
+
Vl as deriveAuthUrl,
|
|
7533
|
+
Gl as deriveBackendType,
|
|
7534
|
+
xl as deriveBackendUrl,
|
|
7535
|
+
Pl as extractUserIdFromToken,
|
|
7536
|
+
Ql as flushLogs,
|
|
7537
|
+
Jl as getBufferedLogs,
|
|
7538
|
+
ql as getLogBufferSize,
|
|
7539
|
+
Ol as getLogLevel,
|
|
7540
|
+
Ll as getLogSink,
|
|
7541
|
+
zl as getOpcodeName,
|
|
7533
7542
|
Je as getOrCreateDeviceId,
|
|
7534
|
-
|
|
7535
|
-
|
|
7543
|
+
Sl as initializeDebugMode,
|
|
7544
|
+
Rl as initializeLogSink,
|
|
7536
7545
|
vr as isAudioWorkletSupported,
|
|
7537
7546
|
ct as isBrowserEnvironment,
|
|
7538
7547
|
Qe as isCloudEnvironment,
|
|
7539
|
-
|
|
7540
|
-
|
|
7541
|
-
|
|
7542
|
-
|
|
7543
|
-
|
|
7544
|
-
|
|
7548
|
+
Kl as isConnected,
|
|
7549
|
+
$l as isConnecting,
|
|
7550
|
+
wl as isDebugModeEnabled,
|
|
7551
|
+
jl as isError,
|
|
7552
|
+
Yl as isOffline,
|
|
7553
|
+
de as isSharedArrayBufferSupported,
|
|
7545
7554
|
gr as isWebTransportSupported,
|
|
7546
|
-
|
|
7547
|
-
|
|
7548
|
-
|
|
7549
|
-
|
|
7550
|
-
|
|
7555
|
+
Wl as parseUrlParams,
|
|
7556
|
+
fe as readOpcode,
|
|
7557
|
+
he as readOpcodeGroup,
|
|
7558
|
+
ie as readProtocolMessageHeaders,
|
|
7559
|
+
bc as registerBrowserFunctions,
|
|
7551
7560
|
yr as setLogLevel,
|
|
7552
7561
|
Oa as setLogSink,
|
|
7553
|
-
|
|
7554
|
-
|
|
7555
|
-
|
|
7556
|
-
|
|
7562
|
+
Xl as setSendLogsCallback,
|
|
7563
|
+
vl as subscribeToLogEvents,
|
|
7564
|
+
bl as takeBufferedLogs,
|
|
7565
|
+
Lc as withResultData
|
|
7557
7566
|
};
|