omnigateway 0.12.2 → 0.12.4
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/README.md +4 -1
- package/bin/omni.js +41 -7
- package/gateway.js +124 -27
- package/package.json +1 -1
- package/public/assets/{_app.console-DM6ygS6a.js → _app.console-Co9d2ZiD.js} +1 -1
- package/public/assets/{_app.logs-BKjcBK68.js → _app.logs-CFixPsUw.js} +7 -7
- package/public/assets/{_app.plugins._pluginId-C7oxa5Wf.js → _app.plugins._pluginId-BK0ADugW.js} +1 -1
- package/public/assets/{client-B5gCdtC1.js → client-k1tkFSNH.js} +1 -1
- package/public/assets/{index-BT7ewgKS.js → index-Bk9sabex.js} +2 -2
- package/public/assets/{login-Sbmi96aa.js → login-DW2Ipp21.js} +1 -1
- package/public/index.html +1 -1
package/README.md
CHANGED
|
@@ -332,7 +332,10 @@ changed without a restart: the six routing weights, `maxAttempts`,
|
|
|
332
332
|
`ponytailMode` (`off` | `lite` | `full` | `ultra`),
|
|
333
333
|
and the two body-capture switches. Edit them with `omni settings set` or in the
|
|
334
334
|
console. `quotaPollIntervalMs` is the one exception: the poller reads it once at
|
|
335
|
-
boot, so a change to it takes a restart.
|
|
335
|
+
boot, so a change to it takes a restart. `requestDeadlineMs` defaults to `0`,
|
|
336
|
+
which imposes no deadline at all; what that means for whatever sits in front of
|
|
337
|
+
the gateway is
|
|
338
|
+
[Behind a reverse proxy](docs/deploying.md#behind-a-reverse-proxy). Snapshot retention —
|
|
336
339
|
`snapshotKeepLatest` and `snapshotMaxAgeDays` — is stored alongside them but
|
|
337
340
|
deliberately edited on the Database screen instead; see
|
|
338
341
|
[Snapshots and restore](docs/operations.md#snapshots-and-restore) for why.
|
package/bin/omni.js
CHANGED
|
@@ -19590,9 +19590,16 @@ function memoryCoord(options = {}) {
|
|
|
19590
19590
|
const now = options.now ?? (() => Date.now());
|
|
19591
19591
|
const windows = new Map;
|
|
19592
19592
|
const gauges = new Map;
|
|
19593
|
+
const named = (holder) => {
|
|
19594
|
+
if (holder === undefined)
|
|
19595
|
+
return;
|
|
19596
|
+
if (holder === "")
|
|
19597
|
+
throw new TypeError("gauge holder must be a non-empty string");
|
|
19598
|
+
return holder;
|
|
19599
|
+
};
|
|
19593
19600
|
const liveSlots = (key) => {
|
|
19594
19601
|
const at = now();
|
|
19595
|
-
const held = (gauges.get(key) ?? []).filter((
|
|
19602
|
+
const held = (gauges.get(key) ?? []).filter((slot) => slot.expiresAt > at);
|
|
19596
19603
|
if (held.length === 0)
|
|
19597
19604
|
gauges.delete(key);
|
|
19598
19605
|
else
|
|
@@ -19647,18 +19654,45 @@ function memoryCoord(options = {}) {
|
|
|
19647
19654
|
}
|
|
19648
19655
|
},
|
|
19649
19656
|
gauge: {
|
|
19650
|
-
acquire(key, ttlMs) {
|
|
19657
|
+
acquire(key, ttlMs, rawHolder) {
|
|
19658
|
+
const holder = named(rawHolder);
|
|
19651
19659
|
const held = liveSlots(key);
|
|
19660
|
+
const expiresAt = now() + ttlMs;
|
|
19661
|
+
const mine = holder === undefined ? -1 : held.findIndex((s) => s.holder === holder);
|
|
19662
|
+
if (mine !== -1 && holder !== undefined) {
|
|
19663
|
+
held[mine] = { expiresAt, holder };
|
|
19664
|
+
gauges.set(key, held);
|
|
19665
|
+
return Promise.resolve(held.length - 1);
|
|
19666
|
+
}
|
|
19652
19667
|
const before = held.length;
|
|
19653
|
-
held.push(
|
|
19668
|
+
held.push(holder === undefined ? { expiresAt } : { expiresAt, holder });
|
|
19654
19669
|
gauges.set(key, held);
|
|
19655
19670
|
return Promise.resolve(before);
|
|
19656
19671
|
},
|
|
19657
|
-
|
|
19672
|
+
renew(key, holder, ttlMs) {
|
|
19673
|
+
named(holder);
|
|
19674
|
+
const held = liveSlots(key);
|
|
19675
|
+
const mine = held.findIndex((slot) => slot.holder === holder);
|
|
19676
|
+
if (mine !== -1) {
|
|
19677
|
+
held[mine] = { expiresAt: now() + ttlMs, holder };
|
|
19678
|
+
gauges.set(key, held);
|
|
19679
|
+
}
|
|
19680
|
+
return Promise.resolve();
|
|
19681
|
+
},
|
|
19682
|
+
release(key, holder) {
|
|
19683
|
+
named(holder);
|
|
19658
19684
|
const held = liveSlots(key);
|
|
19659
|
-
|
|
19685
|
+
if (holder === undefined) {
|
|
19686
|
+
held.sort((x, y) => x.expiresAt - y.expiresAt).shift();
|
|
19687
|
+
} else {
|
|
19688
|
+
const mine = held.findIndex((slot) => slot.holder === holder);
|
|
19689
|
+
if (mine !== -1)
|
|
19690
|
+
held.splice(mine, 1);
|
|
19691
|
+
}
|
|
19660
19692
|
if (held.length === 0)
|
|
19661
19693
|
gauges.delete(key);
|
|
19694
|
+
else
|
|
19695
|
+
gauges.set(key, held);
|
|
19662
19696
|
return Promise.resolve();
|
|
19663
19697
|
},
|
|
19664
19698
|
read(key) {
|
|
@@ -21194,7 +21228,7 @@ var NODE_GRACE_MS = 60000;
|
|
|
21194
21228
|
var DEFAULT_SETTINGS = {
|
|
21195
21229
|
weights: { tier: 10, health: 3, quota: 2, load: 2, cost: 1, latency: 1 },
|
|
21196
21230
|
maxAttempts: 3,
|
|
21197
|
-
requestDeadlineMs:
|
|
21231
|
+
requestDeadlineMs: 0,
|
|
21198
21232
|
breakerThreshold: 3,
|
|
21199
21233
|
breakerCooldownMs: 30000,
|
|
21200
21234
|
logRetentionDays: 30,
|
|
@@ -37474,7 +37508,7 @@ function createServiceDeps(input2) {
|
|
|
37474
37508
|
}
|
|
37475
37509
|
|
|
37476
37510
|
// apps/cli/src/version.ts
|
|
37477
|
-
var VERSION = "0.12.
|
|
37511
|
+
var VERSION = "0.12.4";
|
|
37478
37512
|
|
|
37479
37513
|
// apps/cli/src/commands/service.ts
|
|
37480
37514
|
function gatewayArgv(root) {
|
package/gateway.js
CHANGED
|
@@ -24789,9 +24789,16 @@ function memoryCoord(options = {}) {
|
|
|
24789
24789
|
const now = options.now ?? (() => Date.now());
|
|
24790
24790
|
const windows = new Map;
|
|
24791
24791
|
const gauges = new Map;
|
|
24792
|
+
const named = (holder) => {
|
|
24793
|
+
if (holder === undefined)
|
|
24794
|
+
return;
|
|
24795
|
+
if (holder === "")
|
|
24796
|
+
throw new TypeError("gauge holder must be a non-empty string");
|
|
24797
|
+
return holder;
|
|
24798
|
+
};
|
|
24792
24799
|
const liveSlots = (key) => {
|
|
24793
24800
|
const at = now();
|
|
24794
|
-
const held = (gauges.get(key) ?? []).filter((
|
|
24801
|
+
const held = (gauges.get(key) ?? []).filter((slot) => slot.expiresAt > at);
|
|
24795
24802
|
if (held.length === 0)
|
|
24796
24803
|
gauges.delete(key);
|
|
24797
24804
|
else
|
|
@@ -24846,18 +24853,45 @@ function memoryCoord(options = {}) {
|
|
|
24846
24853
|
}
|
|
24847
24854
|
},
|
|
24848
24855
|
gauge: {
|
|
24849
|
-
acquire(key, ttlMs) {
|
|
24856
|
+
acquire(key, ttlMs, rawHolder) {
|
|
24857
|
+
const holder = named(rawHolder);
|
|
24850
24858
|
const held = liveSlots(key);
|
|
24859
|
+
const expiresAt = now() + ttlMs;
|
|
24860
|
+
const mine = holder === undefined ? -1 : held.findIndex((s) => s.holder === holder);
|
|
24861
|
+
if (mine !== -1 && holder !== undefined) {
|
|
24862
|
+
held[mine] = { expiresAt, holder };
|
|
24863
|
+
gauges.set(key, held);
|
|
24864
|
+
return Promise.resolve(held.length - 1);
|
|
24865
|
+
}
|
|
24851
24866
|
const before = held.length;
|
|
24852
|
-
held.push(
|
|
24867
|
+
held.push(holder === undefined ? { expiresAt } : { expiresAt, holder });
|
|
24853
24868
|
gauges.set(key, held);
|
|
24854
24869
|
return Promise.resolve(before);
|
|
24855
24870
|
},
|
|
24856
|
-
|
|
24871
|
+
renew(key, holder, ttlMs) {
|
|
24872
|
+
named(holder);
|
|
24873
|
+
const held = liveSlots(key);
|
|
24874
|
+
const mine = held.findIndex((slot) => slot.holder === holder);
|
|
24875
|
+
if (mine !== -1) {
|
|
24876
|
+
held[mine] = { expiresAt: now() + ttlMs, holder };
|
|
24877
|
+
gauges.set(key, held);
|
|
24878
|
+
}
|
|
24879
|
+
return Promise.resolve();
|
|
24880
|
+
},
|
|
24881
|
+
release(key, holder) {
|
|
24882
|
+
named(holder);
|
|
24857
24883
|
const held = liveSlots(key);
|
|
24858
|
-
|
|
24884
|
+
if (holder === undefined) {
|
|
24885
|
+
held.sort((x, y) => x.expiresAt - y.expiresAt).shift();
|
|
24886
|
+
} else {
|
|
24887
|
+
const mine = held.findIndex((slot) => slot.holder === holder);
|
|
24888
|
+
if (mine !== -1)
|
|
24889
|
+
held.splice(mine, 1);
|
|
24890
|
+
}
|
|
24859
24891
|
if (held.length === 0)
|
|
24860
24892
|
gauges.delete(key);
|
|
24893
|
+
else
|
|
24894
|
+
gauges.set(key, held);
|
|
24861
24895
|
return Promise.resolve();
|
|
24862
24896
|
},
|
|
24863
24897
|
read(key) {
|
|
@@ -26626,7 +26660,7 @@ var NODE_GRACE_MS = 60000;
|
|
|
26626
26660
|
var DEFAULT_SETTINGS = {
|
|
26627
26661
|
weights: { tier: 10, health: 3, quota: 2, load: 2, cost: 1, latency: 1 },
|
|
26628
26662
|
maxAttempts: 3,
|
|
26629
|
-
requestDeadlineMs:
|
|
26663
|
+
requestDeadlineMs: 0,
|
|
26630
26664
|
breakerThreshold: 3,
|
|
26631
26665
|
breakerCooldownMs: 30000,
|
|
26632
26666
|
logRetentionDays: 30,
|
|
@@ -54861,6 +54895,8 @@ var LONG_WINDOWS = ["5h", "1w"];
|
|
|
54861
54895
|
var GRAIN_MS = { "5h": 60000, "1w": 3600000 };
|
|
54862
54896
|
var SEED_LOCK_MS = 5000;
|
|
54863
54897
|
var GAUGE_TTL_MS = 300000;
|
|
54898
|
+
var RENEW_INTERVAL_MS = 1e5;
|
|
54899
|
+
var MAX_RENEWED_MS = 86400000;
|
|
54864
54900
|
function bucketKey(keyId, window2) {
|
|
54865
54901
|
return `lim:${keyId}:${window2}`;
|
|
54866
54902
|
}
|
|
@@ -54919,10 +54955,11 @@ class ApiKeyRateLimiter {
|
|
|
54919
54955
|
}
|
|
54920
54956
|
async admit(keyId, limits, requestId) {
|
|
54921
54957
|
if (!anyLimit(limits))
|
|
54922
|
-
return { release: () => {}, headroom: {} };
|
|
54958
|
+
return { release: () => {}, renew: async () => {}, headroom: {} };
|
|
54923
54959
|
const now = this.now();
|
|
54924
54960
|
this.limits.set(keyId, limits);
|
|
54925
|
-
const
|
|
54961
|
+
const holder = configured(limits.concurrency) ? crypto.randomUUID() : undefined;
|
|
54962
|
+
const claim2 = await this.claim(keyId, now, true, holder);
|
|
54926
54963
|
let admitted = false;
|
|
54927
54964
|
try {
|
|
54928
54965
|
const counters = await this.counters(keyId, limits, claim2, now, requestId);
|
|
@@ -54930,13 +54967,29 @@ class ApiKeyRateLimiter {
|
|
|
54930
54967
|
await this.refuse(keyId, decision, now, requestId);
|
|
54931
54968
|
admitted = true;
|
|
54932
54969
|
let released = false;
|
|
54970
|
+
const renewUntil = now + MAX_RENEWED_MS;
|
|
54971
|
+
const renew = async () => {
|
|
54972
|
+
if (released || holder === undefined)
|
|
54973
|
+
return;
|
|
54974
|
+
await this.coord.gauge.renew(keyId, holder, GAUGE_TTL_MS);
|
|
54975
|
+
};
|
|
54976
|
+
const renewal = holder === undefined ? null : setInterval(() => {
|
|
54977
|
+
if (this.now() >= renewUntil) {
|
|
54978
|
+
clearInterval(renewal ?? undefined);
|
|
54979
|
+
return;
|
|
54980
|
+
}
|
|
54981
|
+
renew();
|
|
54982
|
+
}, RENEW_INTERVAL_MS);
|
|
54983
|
+
renewal?.unref?.();
|
|
54933
54984
|
const release = () => {
|
|
54934
54985
|
if (released)
|
|
54935
54986
|
return;
|
|
54936
54987
|
released = true;
|
|
54937
|
-
|
|
54988
|
+
if (renewal !== null)
|
|
54989
|
+
clearInterval(renewal);
|
|
54990
|
+
this.coord.gauge.release(keyId, holder);
|
|
54938
54991
|
};
|
|
54939
|
-
return { release, headroom: decision.headroom };
|
|
54992
|
+
return { release, renew, headroom: decision.headroom };
|
|
54940
54993
|
} finally {
|
|
54941
54994
|
if (!admitted)
|
|
54942
54995
|
await this.rollback(keyId, claim2);
|
|
@@ -54959,15 +55012,15 @@ class ApiKeyRateLimiter {
|
|
|
54959
55012
|
await this.rollback(keyId, claim2);
|
|
54960
55013
|
}
|
|
54961
55014
|
}
|
|
54962
|
-
async claim(keyId, now, gauge) {
|
|
55015
|
+
async claim(keyId, now, gauge, holder) {
|
|
54963
55016
|
const ring = await this.coord.window.claim(keyId, WINDOW_MS["1m"], now);
|
|
54964
|
-
const concurrency = gauge ? await this.coord.gauge.acquire(keyId, GAUGE_TTL_MS) : await this.coord.gauge.read(keyId);
|
|
54965
|
-
return { stamp: ring.stamp, gauge, before: { requests: ring.before, concurrency } };
|
|
55017
|
+
const concurrency = gauge ? await this.coord.gauge.acquire(keyId, GAUGE_TTL_MS, holder) : await this.coord.gauge.read(keyId);
|
|
55018
|
+
return { stamp: ring.stamp, gauge, holder, before: { requests: ring.before, concurrency } };
|
|
54966
55019
|
}
|
|
54967
55020
|
async rollback(keyId, claim2) {
|
|
54968
55021
|
await this.coord.window.rollback(keyId, claim2.stamp);
|
|
54969
55022
|
if (claim2.gauge)
|
|
54970
|
-
await this.coord.gauge.release(keyId);
|
|
55023
|
+
await this.coord.gauge.release(keyId, claim2.holder);
|
|
54971
55024
|
}
|
|
54972
55025
|
debit(keyId, usage) {
|
|
54973
55026
|
const limits = this.limits.get(keyId);
|
|
@@ -55094,6 +55147,8 @@ function withReset(headroom, window2, resetAt) {
|
|
|
55094
55147
|
// apps/gateway/src/dispatch/loadRegistry.ts
|
|
55095
55148
|
var PREFIX6 = "load:";
|
|
55096
55149
|
var SLOT_TTL_MS = 300000;
|
|
55150
|
+
var RENEW_INTERVAL_MS2 = 1e5;
|
|
55151
|
+
var MAX_RENEWED_MS2 = 86400000;
|
|
55097
55152
|
var EWMA_ALPHA = 0.3;
|
|
55098
55153
|
function createLoadRegistry(coord = memoryCoord(), now = Date.now) {
|
|
55099
55154
|
const local = new Map;
|
|
@@ -55106,12 +55161,23 @@ function createLoadRegistry(coord = memoryCoord(), now = Date.now) {
|
|
|
55106
55161
|
local.set(key, (local.get(key) ?? 0) + 1);
|
|
55107
55162
|
if (provider !== undefined)
|
|
55108
55163
|
providers.set(provider, (providers.get(provider) ?? 0) + 1);
|
|
55109
|
-
|
|
55164
|
+
const holder = crypto.randomUUID();
|
|
55165
|
+
coord.gauge.acquire(PREFIX6 + key, SLOT_TTL_MS, holder);
|
|
55166
|
+
const renewUntil = now() + MAX_RENEWED_MS2;
|
|
55167
|
+
const renewal = setInterval(() => {
|
|
55168
|
+
if (now() >= renewUntil) {
|
|
55169
|
+
clearInterval(renewal);
|
|
55170
|
+
return;
|
|
55171
|
+
}
|
|
55172
|
+
coord.gauge.renew(PREFIX6 + key, holder, SLOT_TTL_MS);
|
|
55173
|
+
}, RENEW_INTERVAL_MS2);
|
|
55174
|
+
renewal.unref?.();
|
|
55110
55175
|
let released = false;
|
|
55111
55176
|
return (ttftMs) => {
|
|
55112
55177
|
if (released)
|
|
55113
55178
|
return;
|
|
55114
55179
|
released = true;
|
|
55180
|
+
clearInterval(renewal);
|
|
55115
55181
|
const prior = history.get(key)?.ewmaTtftMs ?? null;
|
|
55116
55182
|
history.set(key, {
|
|
55117
55183
|
lastReleasedAt: now(),
|
|
@@ -55129,7 +55195,7 @@ function createLoadRegistry(coord = memoryCoord(), now = Date.now) {
|
|
|
55129
55195
|
else
|
|
55130
55196
|
providers.delete(provider);
|
|
55131
55197
|
}
|
|
55132
|
-
coord.gauge.release(PREFIX6 + key);
|
|
55198
|
+
coord.gauge.release(PREFIX6 + key, holder);
|
|
55133
55199
|
};
|
|
55134
55200
|
},
|
|
55135
55201
|
counts() {
|
|
@@ -62302,7 +62368,7 @@ function createRing(limits = DEFAULT_RING_LIMITS) {
|
|
|
62302
62368
|
}
|
|
62303
62369
|
|
|
62304
62370
|
// apps/gateway/src/version.ts
|
|
62305
|
-
var VERSION = "0.12.
|
|
62371
|
+
var VERSION = "0.12.4";
|
|
62306
62372
|
|
|
62307
62373
|
// apps/gateway/src/app.ts
|
|
62308
62374
|
var ADMIN_SESSION_TTL_MS = 12 * 60 * 60 * 1000;
|
|
@@ -62580,19 +62646,35 @@ var WINDOW_ROLLBACK = `
|
|
|
62580
62646
|
`;
|
|
62581
62647
|
var GAUGE_ACQUIRE = `
|
|
62582
62648
|
redis.call('ZREMRANGEBYSCORE', KEYS[1], '-inf', ARGV[1])
|
|
62649
|
+
local mine = redis.call('ZSCORE', KEYS[1], ARGV[3])
|
|
62583
62650
|
local before = redis.call('ZCARD', KEYS[1])
|
|
62651
|
+
if mine then before = before - 1 end
|
|
62584
62652
|
redis.call('ZADD', KEYS[1], tonumber(ARGV[1]) + tonumber(ARGV[2]), ARGV[3])
|
|
62585
|
-
redis.call('
|
|
62653
|
+
if redis.call('PTTL', KEYS[1]) < tonumber(ARGV[2]) then
|
|
62654
|
+
redis.call('PEXPIRE', KEYS[1], ARGV[2])
|
|
62655
|
+
end
|
|
62586
62656
|
redis.call('SADD', KEYS[2], KEYS[1])
|
|
62587
62657
|
return before
|
|
62588
62658
|
`;
|
|
62659
|
+
var GAUGE_RENEW = `
|
|
62660
|
+
redis.call('ZREMRANGEBYSCORE', KEYS[1], '-inf', ARGV[1])
|
|
62661
|
+
redis.call('ZADD', KEYS[1], 'XX', tonumber(ARGV[1]) + tonumber(ARGV[2]), ARGV[3])
|
|
62662
|
+
if redis.call('PTTL', KEYS[1]) < tonumber(ARGV[2]) then
|
|
62663
|
+
redis.call('PEXPIRE', KEYS[1], ARGV[2])
|
|
62664
|
+
end
|
|
62665
|
+
return 0
|
|
62666
|
+
`;
|
|
62589
62667
|
var GAUGE_READ = `
|
|
62590
62668
|
redis.call('ZREMRANGEBYSCORE', KEYS[1], '-inf', ARGV[1])
|
|
62591
62669
|
return redis.call('ZCARD', KEYS[1])
|
|
62592
62670
|
`;
|
|
62593
62671
|
var GAUGE_RELEASE = `
|
|
62594
62672
|
redis.call('ZREMRANGEBYSCORE', KEYS[1], '-inf', ARGV[1])
|
|
62595
|
-
|
|
62673
|
+
if ARGV[2] == '' then
|
|
62674
|
+
redis.call('ZPOPMIN', KEYS[1])
|
|
62675
|
+
else
|
|
62676
|
+
redis.call('ZREM', KEYS[1], ARGV[2])
|
|
62677
|
+
end
|
|
62596
62678
|
return 0
|
|
62597
62679
|
`;
|
|
62598
62680
|
var GAUGE_SNAPSHOT = `
|
|
@@ -62601,8 +62683,10 @@ var GAUGE_SNAPSHOT = `
|
|
|
62601
62683
|
redis.call('ZREMRANGEBYSCORE', key, '-inf', ARGV[1])
|
|
62602
62684
|
local count = redis.call('ZCARD', key)
|
|
62603
62685
|
if count > 0 then
|
|
62604
|
-
|
|
62605
|
-
|
|
62686
|
+
if string.sub(key, 1, string.len(ARGV[2])) == ARGV[2] then
|
|
62687
|
+
out[#out + 1] = key
|
|
62688
|
+
out[#out + 1] = count
|
|
62689
|
+
end
|
|
62606
62690
|
else
|
|
62607
62691
|
redis.call('SREM', KEYS[1], key)
|
|
62608
62692
|
end
|
|
@@ -62667,6 +62751,7 @@ var SCRIPTS = [
|
|
|
62667
62751
|
WINDOW_CLAIM,
|
|
62668
62752
|
WINDOW_ROLLBACK,
|
|
62669
62753
|
GAUGE_ACQUIRE,
|
|
62754
|
+
GAUGE_RENEW,
|
|
62670
62755
|
GAUGE_READ,
|
|
62671
62756
|
GAUGE_RELEASE,
|
|
62672
62757
|
GAUGE_SNAPSHOT,
|
|
@@ -62701,6 +62786,10 @@ function redisCoord(deps) {
|
|
|
62701
62786
|
const colon = name.indexOf(":");
|
|
62702
62787
|
return `${NS}gidx:${colon === -1 ? name : name.slice(0, colon + 1)}`;
|
|
62703
62788
|
};
|
|
62789
|
+
const blankHolder = (holder) => {
|
|
62790
|
+
if (holder === "")
|
|
62791
|
+
throw new TypeError("gauge holder must be a non-empty string");
|
|
62792
|
+
};
|
|
62704
62793
|
let faults = 0;
|
|
62705
62794
|
const fault = (error62) => {
|
|
62706
62795
|
healthy = false;
|
|
@@ -62836,20 +62925,28 @@ function redisCoord(deps) {
|
|
|
62836
62925
|
}
|
|
62837
62926
|
},
|
|
62838
62927
|
gauge: {
|
|
62839
|
-
acquire(name, ttlMs) {
|
|
62840
|
-
|
|
62928
|
+
acquire(name, ttlMs, holder) {
|
|
62929
|
+
blankHolder(holder);
|
|
62930
|
+
return attempt2(async () => await evalScript(GAUGE_ACQUIRE, [key("g", name), indexOf2(name)], [now(), ttlMs, holder ?? crypto.randomUUID()]), () => fallback.gauge.acquire(name, ttlMs, holder));
|
|
62931
|
+
},
|
|
62932
|
+
renew(name, holder, ttlMs) {
|
|
62933
|
+
blankHolder(holder);
|
|
62934
|
+
return attempt2(async () => {
|
|
62935
|
+
await evalScript(GAUGE_RENEW, [key("g", name)], [now(), ttlMs, holder]);
|
|
62936
|
+
}, () => fallback.gauge.renew(name, holder, ttlMs));
|
|
62841
62937
|
},
|
|
62842
|
-
release(name) {
|
|
62938
|
+
release(name, holder) {
|
|
62939
|
+
blankHolder(holder);
|
|
62843
62940
|
return attempt2(async () => {
|
|
62844
|
-
await evalScript(GAUGE_RELEASE, [key("g", name)], [now()]);
|
|
62845
|
-
}, () => fallback.gauge.release(name));
|
|
62941
|
+
await evalScript(GAUGE_RELEASE, [key("g", name)], [now(), holder ?? ""]);
|
|
62942
|
+
}, () => fallback.gauge.release(name, holder));
|
|
62846
62943
|
},
|
|
62847
62944
|
read(name) {
|
|
62848
62945
|
return attempt2(async () => await evalScript(GAUGE_READ, [key("g", name)], [now()]), () => fallback.gauge.read(name));
|
|
62849
62946
|
},
|
|
62850
62947
|
snapshot(prefix2) {
|
|
62851
62948
|
return attempt2(async () => {
|
|
62852
|
-
const flat = await evalScript(GAUGE_SNAPSHOT, [indexOf2(prefix2)], [now()]);
|
|
62949
|
+
const flat = await evalScript(GAUGE_SNAPSHOT, [indexOf2(prefix2)], [now(), key("g", prefix2)]);
|
|
62853
62950
|
const out = new Map;
|
|
62854
62951
|
for (let i = 0;i + 1 < flat.length; i += 2) {
|
|
62855
62952
|
out.set(String(flat[i]).slice(key("g", "").length), Number(flat[i + 1]));
|
package/package.json
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{At as e,B as t,j as n,lt as r}from"./Lamp-DkvXKB-B.js";import{a as i,b as a,i as o,r as s,t as c,y as ee}from"./Panel-CWmOTDAP.js";import{D as l,t as u}from"./Rack-CEuCdVXc.js";import{a as d,c as f,o as p,s as m}from"./index-
|
|
1
|
+
import{At as e,B as t,j as n,lt as r}from"./Lamp-DkvXKB-B.js";import{a as i,b as a,i as o,r as s,t as c,y as ee}from"./Panel-CWmOTDAP.js";import{D as l,t as u}from"./Rack-CEuCdVXc.js";import{a as d,c as f,o as p,s as m}from"./index-Bk9sabex.js";import{i as h}from"./Field-BYBri2NV.js";import{useQueryClient as g}from"@tanstack/react-query";import{useLayoutEffect as te,useMemo as _,useRef as v,useState as y}from"react";import{jsx as b,jsxs as x}from"react/jsx-runtime";import S from"styled-components";var C={debug:10,info:20,warn:30,error:40};function w(e){return typeof e==`string`&&e in C}function T(e,t){return!w(t)||e.level===null||C[e.level]>=C[t]}function E(e){if(typeof e!=`object`||!e)return null;let{raw:t,at:n,level:r,msg:i}=e;return typeof t!=`string`||n!==null&&typeof n!=`number`||r!==null&&!w(r)||i!==null&&typeof i!=`string`?null:{raw:t,at:n,level:r,msg:i}}function D(e){if(typeof e!=`object`||!e)return null;let{lines:t}=e;if(!Array.isArray(t))return null;let n=[];for(let e of t){let t=E(e);if(t===null)return null;n.push(t)}return n}var O=[100,200,500],ne=[{value:``,label:`All levels`},{value:`debug`,label:`Debug and above`},{value:`info`,label:`Info and above`},{value:`warn`,label:`Warnings and errors`},{value:`error`,label:`Errors only`}],re=S(a)`
|
|
2
2
|
gap: ${({theme:e})=>e.space(2)};
|
|
3
3
|
flex-wrap: wrap;
|
|
4
4
|
`,k=S(h)`
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{Ct as e,Ft as t,K as n,Tt as r,V as i,W as a,Y as o,Zt as s,j as c,l,mt as u,u as d}from"./Lamp-DkvXKB-B.js";import{C as f,D as p,_ as m,a as h,b as g,i as _,r as v,t as y,x as b,y as x}from"./Panel-CWmOTDAP.js";import{D as S,i as C,t as w}from"./Rack-CEuCdVXc.js";import{a as
|
|
1
|
+
import{Ct as e,Ft as t,K as n,Tt as r,V as i,W as a,Y as o,Zt as s,j as c,l,mt as u,u as d}from"./Lamp-DkvXKB-B.js";import{C as f,D as p,_ as m,a as h,b as g,i as _,r as v,t as y,x as b,y as x}from"./Panel-CWmOTDAP.js";import{D as S,i as C,t as w}from"./Rack-CEuCdVXc.js";import{a as ee,i as T,n as E,r as D,t as O}from"./RequestTable-D8L6iVJV.js";import{t as k}from"./Chip-D4qvhu1D.js";import{i as A}from"./Field-BYBri2NV.js";import{useMemo as j,useRef as M,useState as N}from"react";import{Fragment as P,jsx as F,jsxs as I}from"react/jsx-runtime";import L from"styled-components";var R={none:{legend:`Not captured`,message:`Body capture was not running for this request. It needs OMNI_BODY_LOGGING_ALLOWED in the environment and the body logging setting turned on, and the calling key must not have opted out.`},missing:{legend:`Captured, then lost`,message:`This request was captured, but its artifact is no longer on disk. Retention or the row cap has since pruned it, or something removed the file underneath the gateway.`},corrupt:{legend:`Captured, but unreadable`,message:`This request was captured and the artifact is still on disk, but it failed its checksum or would not decrypt. Changing OMNI_ENCRYPTION_KEY invalidates every artifact written under the old one.`}},z=new Intl.NumberFormat(`en-US`),B=L.p`
|
|
2
2
|
font-size: 12px;
|
|
3
3
|
color: ${({theme:e})=>e.color.inkDim};
|
|
4
4
|
max-width: 62ch;
|
|
@@ -34,16 +34,16 @@ import{Ct as e,Ft as t,K as n,Tt as r,V as i,W as a,Y as o,Zt as s,j as c,l,mt a
|
|
|
34
34
|
line-height: 1.5;
|
|
35
35
|
white-space: pre-wrap;
|
|
36
36
|
word-break: break-word;
|
|
37
|
-
`;function K(e){if(typeof e!=`object`||!e||Array.isArray(e))return null;let t=e;if(t.omitted!==!0||typeof t.reason!=`string`)return null;let n=t.serializedBytes;return{omitted:!0,reason:t.reason,serializedBytes:typeof n==`number`?n:0}}function q({title:e,stage:t,value:n}){let r=K(n);return I(W,{children:[I(U,{children:[F(H,{children:e}),t===void 0?null:F(
|
|
37
|
+
`;function K(e){if(typeof e!=`object`||!e||Array.isArray(e))return null;let t=e;if(t.omitted!==!0||typeof t.reason!=`string`)return null;let n=t.serializedBytes;return{omitted:!0,reason:t.reason,serializedBytes:typeof n==`number`?n:0}}function q({title:e,stage:t,value:n}){let r=K(n);return I(W,{children:[I(U,{children:[F(H,{children:e}),t===void 0?null:F(k,{children:t})]}),r===null?n==null?F(B,{children:`Nothing was recorded for this half — it never happened, or never completed.`}):F(G,{children:JSON.stringify(n,null,2)}):I(B,{children:[`Too large to keep: `,r.reason,`. The payload was`,` `,z.format(r.serializedBytes),` bytes after structural bounding, so it was replaced by this marker rather than written oversized or dropped without a trace.`]})]})}function J({attempt:e}){return I(f,{$gap:2,children:[I(g,{$gap:2,$wrap:!0,children:[I(m,{as:`h3`,children:[`Attempt `,e.attempt,` · `,e.provider]}),e.truncated?F(k,{$tone:`warn`,children:`truncated`}):null]}),F(q,{title:`Request sent to the provider`,stage:`post-RTK`,value:e.request}),F(q,{title:`Response from the provider`,value:e.response}),e.streamChunks===null?null:F(q,{title:`Raw stream frames (${c(e.streamChunks.length)})`,value:e.streamChunks})]})}function Y({body:e}){let t=e.artifact;if(t===null){let t=R[e.detailState===`ready`?`corrupt`:e.detailState];return I(f,{$gap:1,children:[F(m,{children:t.legend}),F(B,{children:t.message})]})}return I(f,{$gap:3,children:[t.attempts.length===0?null:F(V,{children:`The client request below is what arrived at the gateway. Each attempt request is what went upstream after RTK filters ran, so the two are not the same payload — compare them to see what compression actually removed.`}),I(f,{$gap:2,children:[I(g,{$gap:2,$wrap:!0,children:[F(m,{as:`h3`,children:`Client`}),t.client.truncated?F(k,{$tone:`warn`,children:`truncated`}):null]}),F(q,{title:`Request from the client`,stage:`pre-RTK`,value:t.client.request}),F(q,{title:`Response returned to the client`,value:t.client.response})]}),t.attempts.map(e=>F(J,{attempt:e},`${e.attempt}-${e.provider}`)),t.error===null||t.error===void 0?null:F(q,{title:`Error`,value:t.error})]})}function X({requestId:e}){let n=t(e),r=n.data===void 0||n.data.detailState!==`ready`?void 0:`${z.format(n.data.sizeBytes)} bytes on disk`;return F(y,{legend:`Captured bodies`,...r===void 0?{}:{meta:r},...n.data?.truncated===!0?{actions:F(k,{$tone:`warn`,children:`truncated`})}:{},children:n.isError?F(_,{error:n.error,onRetry:()=>void n.refetch()}):n.isPending?F(h,{rows:3}):F(Y,{body:n.data})})}var Z=[50,100,250,500],Q=160,te=L(g)`
|
|
38
38
|
gap: ${({theme:e})=>e.space(2)};
|
|
39
39
|
flex-wrap: wrap;
|
|
40
|
-
|
|
40
|
+
`,ne=L(A)`
|
|
41
41
|
width: auto;
|
|
42
|
-
`,
|
|
42
|
+
`,re=L(g)`
|
|
43
43
|
justify-content: center;
|
|
44
44
|
gap: ${({theme:e})=>e.space(2)};
|
|
45
45
|
padding: ${({theme:e})=>e.space(3)};
|
|
46
|
-
`,
|
|
46
|
+
`,ie=L(y)`
|
|
47
47
|
flex: 1;
|
|
48
48
|
min-height: 0;
|
|
49
49
|
|
|
@@ -53,8 +53,8 @@ import{Ct as e,Ft as t,K as n,Tt as r,V as i,W as a,Y as o,Zt as s,j as c,l,mt a
|
|
|
53
53
|
flex-direction: column;
|
|
54
54
|
min-height: 0;
|
|
55
55
|
}
|
|
56
|
-
`,
|
|
56
|
+
`,ae=L(b)`
|
|
57
57
|
flex: 1;
|
|
58
58
|
min-height: 0;
|
|
59
59
|
overflow-y: auto;
|
|
60
|
-
`;function
|
|
60
|
+
`;function $(){let{cadence:t,live:f}=S(),[m,g]=N(100),[y,b]=N(ee),[k,A]=N(null),L=M(!1),R=r(y,m,t(i,`res:logs`)),z=j(()=>(R.data?.pages??[]).flatMap(e=>e.logs),[R.data?.pages]),B=!a(R.data),V=s(n.logPages(y,m)),H=M(null),U=()=>{H.current?.scrollTo({top:0}),V()},W=u(),G=e(),K=o(),q=D(f&&z.some(d)),J=j(()=>({accounts:new Map((W.data??[]).map(e=>[e.id,e.label])),keys:new Map((G.data??[]).map(e=>[e.id,e.label]))}),[W.data,G.data]),Y=z.filter(l).length,$=z.filter(d).length;return I(P,{children:[F(w,{legend:`Logs`,title:`Recent requests`,summary:R.isLoading?`Reading the request log…`:`${c(z.length)} requests loaded, ${c(Y)} of them failed${$===0?``:`, ${c($)} still running`}. ${K.data===!0?`Body capture is on: open a request to read what it sent and received.`:`Prompt and response bodies are not being recorded.`}`,actions:I(te,{children:[F(T,{filters:y,onChange:b,operator:!0}),F(ne,{value:m,"aria-label":`How many requests per page`,onChange:e=>g(Number(e.target.value)),children:Z.map(e=>I(`option`,{value:e,children:[e,` per page`]},e))}),B?F(p,{type:`button`,onClick:U,children:`Back to live`}):null]})}),F(ie,{legend:`Request log`,meta:`${z.length} shown`,flush:!0,children:R.isError?F(_,{error:R.error,onRetry:()=>void R.refetch()}):R.isLoading?F(`div`,{style:{padding:12},children:F(h,{rows:8})}):z.length===0?F(v,{legend:`Nothing to show`,message:Object.keys(y).length===0?`No requests have reached the gateway yet.`:`No request matches these filters. Clear them to see everything.`}):I(ae,{ref:H,"data-testid":`request-log-scroller`,onScroll:e=>{let t=e.currentTarget;t.scrollHeight-t.scrollTop-t.clientHeight>Q||R.hasNextPage&&(L.current||(L.current=!0,R.fetchNextPage().finally(()=>{L.current=!1})))},children:[F(E,{rows:z,now:q,names:J,onOpen:A}),R.isFetchingNextPage||B?I(re,{children:[R.isFetchingNextPage?F(x,{children:`Loading older requests…`}):null,B?F(x,{children:`Live updates are paused while older pages are loaded.`}):null]}):null]})}),F(C,{open:k!==null,onOpenChange:e=>{e||A(null)},title:`Request detail`,width:`760px`,footer:F(p,{type:`button`,onClick:()=>A(null),children:`Close`}),children:k===null?null:F(O,{log:k,names:J,children:F(X,{requestId:k.id})})})]})}var oe=$;export{oe as component};
|
package/public/assets/{_app.plugins._pluginId-C7oxa5Wf.js → _app.plugins._pluginId-BK0ADugW.js}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{jt as e}from"./Lamp-DkvXKB-B.js";import{t}from"./preload-helper-BPaHpbO_.js";import{C as n,a as r,c as i,d as a,f as o,i as s,l as c,r as l,t as u}from"./Panel-CWmOTDAP.js";import{t as d}from"./Rack-CEuCdVXc.js";import{t as f}from"./index-
|
|
1
|
+
import{jt as e}from"./Lamp-DkvXKB-B.js";import{t}from"./preload-helper-BPaHpbO_.js";import{C as n,a as r,c as i,d as a,f as o,i as s,l as c,r as l,t as u}from"./Panel-CWmOTDAP.js";import{t as d}from"./Rack-CEuCdVXc.js";import{t as f}from"./index-Bk9sabex.js";import{Component as p,Suspense as m,createContext as h,lazy as g,useContext as _,useMemo as v}from"react";import{Fragment as y,jsx as b,jsxs as x}from"react/jsx-runtime";import S from"styled-components";import{pluginApiPath as C}from"@omnigateway/dashboard-sdk";var w=new Map;function T(e){let t=w.get(e);if(t!==void 0)return t;let n={get:(t,n)=>c(C(e,t),n),post:(t,n)=>a(C(e,t),n),put:(t,n)=>o(C(e,t),n),del:t=>i(C(e,t))};return w.set(e,n),n}var E=h(e=>t(()=>import(e),[]));E.Provider;function D(){return _(E)}function O(e,t){let n=e?.default;if(n==null)throw Error(`plugin ${t} has no default export from definePluginUI`);if(typeof n.mount!=`function`)throw Error(`plugin ${t} exported a default without a mount function`);return n}function k(e,t,n){return g(async()=>{let r=O(await n(t),e);return{default:()=>r.mount({pluginId:e,api:T(e)})}})}var A=S.p`
|
|
2
2
|
font-size: 13px;
|
|
3
3
|
color: ${({theme:e})=>e.color.down};
|
|
4
4
|
`,j=S.p`
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{_ as e,i as t,y as n}from"./shared-Dtkw6SE0.js";import{$ as r,F as i,I as a,K as o,L as s,V as ee,W as te,Zt as ne,at as re,et as ie,g as c,it as ae,j as l,l as oe,nt as u,ot as d,r as f,rt as se,tt as p,u as ce}from"./Lamp-DkvXKB-B.js";import{C as m,D as h,O as g,_,a as le,b as v,i as ue,t as de,v as y,x as b,y as x}from"./Panel-CWmOTDAP.js";import{D as fe,i as pe,t as me,x as S}from"./Rack-CEuCdVXc.js";import{a as he,i as ge,n as _e,r as ve,t as ye}from"./RequestTable-D8L6iVJV.js";import{t as C}from"./chevron-down-Bs0tSOyA.js";import{t as w}from"./chevron-right-DSaI1kFo.js";import{i as T,r as E}from"./index-
|
|
1
|
+
import{_ as e,i as t,y as n}from"./shared-Dtkw6SE0.js";import{$ as r,F as i,I as a,K as o,L as s,V as ee,W as te,Zt as ne,at as re,et as ie,g as c,it as ae,j as l,l as oe,nt as u,ot as d,r as f,rt as se,tt as p,u as ce}from"./Lamp-DkvXKB-B.js";import{C as m,D as h,O as g,_,a as le,b as v,i as ue,t as de,v as y,x as b,y as x}from"./Panel-CWmOTDAP.js";import{D as fe,i as pe,t as me,x as S}from"./Rack-CEuCdVXc.js";import{a as he,i as ge,n as _e,r as ve,t as ye}from"./RequestTable-D8L6iVJV.js";import{t as C}from"./chevron-down-Bs0tSOyA.js";import{t as w}from"./chevron-right-DSaI1kFo.js";import{i as T,r as E}from"./index-Bk9sabex.js";import{i as be}from"./Field-BYBri2NV.js";import{t as D}from"./Meter-stpt3vQu.js";import{i as O,n as k,r as A,t as j}from"./Table-CVDZ69Zx.js";import{n as xe,r as M}from"./WindowChart-BeGPsccS.js";import{i as N,n as P,r as Se,t as Ce}from"./SummaryDeck-7ivuca39.js";import{Fragment as we,useMemo as F,useState as I}from"react";import{Fragment as Te,jsx as L,jsxs as R}from"react/jsx-runtime";import z from"styled-components";var B=z.div`
|
|
2
2
|
display: grid;
|
|
3
3
|
grid-template-areas:
|
|
4
4
|
"chassis"
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/_app-Drf03PWk.js","assets/Panel-CWmOTDAP.js","assets/client-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/_app-Drf03PWk.js","assets/Panel-CWmOTDAP.js","assets/client-k1tkFSNH.js","assets/shared-Dtkw6SE0.js","assets/Lamp-DkvXKB-B.js","assets/Rack-CEuCdVXc.js","assets/RequestTable-D8L6iVJV.js","assets/TokenBreakdown-D1Wtza1y.js","assets/chevron-right-DSaI1kFo.js","assets/dist-D03q-60i.js","assets/Chip-D4qvhu1D.js","assets/Field-BYBri2NV.js","assets/Table-CVDZ69Zx.js","assets/chevron-down-Bs0tSOyA.js","assets/Meter-stpt3vQu.js","assets/WindowChart-BeGPsccS.js","assets/SummaryDeck-7ivuca39.js","assets/Readout-BTh732hP.js","assets/login-DW2Ipp21.js","assets/reasons-Du1OBWAM.js","assets/_app.index-DigYfob3.js","assets/_app.accounts-W1USUo2Q.js","assets/CopyValue-SnsT2LML.js","assets/plus-BCfjC6nk.js","assets/trash-D4QWzEK_.js","assets/Toggle-t82IhqEt.js","assets/_app.console-Co9d2ZiD.js","assets/_app.database-CtFJLcfE.js","assets/_app.keys-B1fRMyU-.js","assets/_app.logs-CFixPsUw.js","assets/_app.models-Dpl1O2RE.js","assets/_app.settings-C3GzeJ4q.js","assets/_app.usage-D2qlcEp4.js","assets/_app.plugins._pluginId-BK0ADugW.js","assets/preload-helper-BPaHpbO_.js"])))=>i.map(i=>d[i]);
|
|
2
2
|
import{Cn as e,Dn as t,En as n,H as r,In as i,K as a,Mn as o,Mt as s,Nn as c,On as l,Pn as u,Sn as d,Tn as f,W as p,_n as m,an as h,cn as g,fn as _,gn as v,hn as y,jn as b,kn as x,ln as S,mn as C,on as w,pn as T,rn as E,sn as ee,un as te,vn as ne,wn as re,xn as ie,yn as ae}from"./Lamp-DkvXKB-B.js";import{a as oe,c as se,i as ce,n as D,o as le,r as O,s as ue,t as k}from"./preload-helper-BPaHpbO_.js";import{A as de,C as fe,D as pe,_ as me,a as he,k as A,l as ge,s as _e,t as ve}from"./Panel-CWmOTDAP.js";import{C as ye,E as be,T as xe,n as Se}from"./Rack-CEuCdVXc.js";import{MutationCache as Ce,QueryCache as we,QueryClient as Te,QueryClientProvider as Ee,useQueryClient as De}from"@tanstack/react-query";import*as j from"react";import{StrictMode as Oe,createContext as ke,use as Ae,useEffect as M,useRef as je,useState as Me,useSyncExternalStore as Ne}from"react";import{Fragment as Pe,jsx as N,jsxs as P}from"react/jsx-runtime";import{createRoot as Fe}from"react-dom/client";import Ie from"styled-components";(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),t.credentials=e.crossOrigin===`use-credentials`?`include`:e.crossOrigin===`anonymous`?`omit`:`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();function F(e){return e?.isNotFound===!0}function Le(){try{return sessionStorage}catch{return}}var Re=`tsr-scroll-restoration-v1_3`,ze=Le();function Be(){try{return JSON.parse(ze?.getItem(`tsr-scroll-restoration-v1_3`)||`{}`)}catch{return{}}}function Ve(){try{ze?.setItem(Re,JSON.stringify(I))}catch{}}var I=Be(),He=`data-scroll-restoration-id`,Ue=e=>e.state.__TSR_key||e.href;function We(e){let t=e.getAttribute(He);if(t)return`[${He}="${t}"]`;let n=``,r=e,i;for(;i=r.parentNode;){let e=1,t=r;for(;t=t.previousElementSibling;)e++;let a=`${r.localName}:nth-child(${e})`;n=n?`${a} > ${n}`:a,r=i}return n}var Ge=!1,Ke=`window`;function qe(e){try{return typeof e==`function`?e():document.querySelector(e)}catch{}}function Je(e){let t=new Set;for(let n of e){if(n===Ke)continue;let e=qe(n);e&&t.add(e)}return t}function Ye(e,t){let n=t??e.options.scrollRestoration,r=e._scroll;n&&(r.restoring=!0);let i=e.options.getScrollRestorationKey||Ue,a=new Set,o=e=>{let t=I[e]||={};for(let e of a)e===document?t[Ke]={scrollX,scrollY}:e.isConnected&&(t[We(e)]={scrollX:e.scrollLeft,scrollY:e.scrollTop})};n&&!r.restoration&&(r.restoration=!0,Ge=!1,history.scrollRestoration=`manual`,document.addEventListener(`scroll`,e=>{Ge||a.add(e.target)},!0),e.subscribe(`onBeforeLoad`,e=>{e.fromLocation&&o(i(e.fromLocation)),a.clear()}),addEventListener(`pagehide`,()=>{o(i(e.stores.resolvedLocation.get()??e.stores.location.get())),Ve()})),!r.reset&&(r.reset=!0,e.subscribe(`onRendered`,t=>{let n=e.options.scrollRestorationBehavior,o=e.options.scrollToTopSelectors,s=r.next,c=r.hash,l;if(a.clear(),r.next=!0,r.hash=!1,typeof e.options.scrollRestoration==`function`&&!e.options.scrollRestoration({location:e.latestLocation}))return;let u=i(t.toLocation),d=t.fromLocation&&i(t.fromLocation);if(r.restoring&&d&&d!==u){let e=I[d];if(e){let t=I[u];for(let n in e){if(n===Ke){if(s)continue}else{let e=qe(n);if(!e||s&&o&&(l??=Je(o),l.has(e)))continue}t||=I[u]={},t[n]??=e[n]}}}Ge=!0;try{let e=t.toLocation.hash,i=t.toLocation.state.__hashScrollIntoViewOptions??!0,a=!1;if(s){!e&&o&&(l??=Je(o));let t=e&&i&&c,s=r.restoring?I[u]:void 0;if(s)for(let e in s){let{scrollX:r,scrollY:i}=s[e];if(e===Ke){if(t)continue;scrollTo({top:i,left:r,behavior:n}),a=!0}else{let t=qe(e);t&&(t.scrollLeft=r,t.scrollTop=i,l?.delete(t))}}if(!e){let e={top:0,left:0,behavior:n};if(a||scrollTo(e),l)for(let t of l)t.scrollTo(e)}}!a&&e&&i&&document.getElementById(e)?.scrollIntoView(i)}finally{Ge=!1}}))}function Xe(e,t=String){let n;for(let r in e){let i=e[r];i!==void 0&&(n||=new URLSearchParams).set(r,t(i))}return n?n.toString():``}function Ze(e){return e?e===`false`?!1:e===`true`?!0:e*0==0&&+e+``===e?+e:e:``}function Qe(e){let t=new URLSearchParams(e),n=Object.create(null);for(let[e,r]of t.entries()){let t=n[e];t==null?n[e]=Ze(r):Array.isArray(t)?t.push(Ze(r)):n[e]=[t,Ze(r)]}return n}var $e=/^(?:\s|["[{\d-]|fa|nu|tr)/,et=nt(JSON.parse),tt=rt(JSON.stringify,JSON.parse);function nt(e){let t=e===JSON.parse;return n=>{n[0]===`?`&&(n=n.substring(1));let r=Qe(n);for(let n in r){let i=r[n];if(typeof i==`string`){if(t&&!$e.test(i))continue;try{r[n]=e(i)}catch{}}}return r}}function rt(e,t){let n=t===JSON.parse;function r(r){if(r&&typeof r==`object`)try{return e(r)}catch{}else if(t&&typeof r==`string`){if(n&&!$e.test(r))return r;try{return t(r),e(r)}catch{}}return r}return e=>{let t=Xe(e,r);return t?`?${t}`:``}}function it(e){return{input:({url:t})=>{for(let n of e)t=ot(n,t);return t},output:({url:t})=>{for(let n=e.length-1;n>=0;n--)t=st(e[n],t);return t}}}function at(e){let t=te(e.basepath),n=`/${t}`,r=e.caseSensitive?n:n.toLowerCase(),i=`${r}/`;return{input:({url:t})=>{let a=e.caseSensitive?t.pathname:t.pathname.toLowerCase();return a===r?t.pathname=`/`:a.startsWith(i)&&(t.pathname=t.pathname.slice(n.length)),t},output:({url:e})=>(e.pathname=g([`/`,t,e.pathname]),e)}}function ot(e,t){let n=e?.input?.({url:t});if(n){if(typeof n==`string`)return new URL(n);if(n instanceof URL)return n}return t}function st(e,t){let n=e?.output?.({url:t});if(n){if(typeof n==`string`)return new URL(n);if(n instanceof URL)return n}return t}function ct(e,t){let{createMutableStore:n,createReadonlyStore:r,batch:i}=t,a=new Map,o=n(`idle`),s=n(e),c=n(void 0),l=n([]),u=r(()=>l.get().map(e=>a.get(e).get())),f=r(()=>({status:o.get(),isLoading:o.get()===`pending`,matches:u.get(),location:s.get(),resolvedLocation:c.get()}));function p(e){let t=a.get(e);return t||(t=n(void 0),a.set(e,t)),t}let m={status:o,location:s,resolvedLocation:c,ids:l,matches:u,byRoute:a,__store:f,getMatchStore:p,setMatches:h};function h(e){let t=l.get(),n=e.map(e=>e.routeId);i(()=>{d(t,n)||l.set(n);for(let e of t)n.includes(e)||a.get(e).set(()=>void 0);for(let t of e){let e=p(t.routeId);e.get()!==t&&e.set(t)}})}return m}var L=`__TSR_index`,lt=`popstate`,ut=`beforeunload`,dt=/^[\x00-\x20]*(?:[\\/][\t\n\r]*){2,}/;function ft(e){let t=dt.exec(e);return t?`/`+e.slice(t[0].length):e}function pt(e){return/[\x00-\x1f\x7f]/.test(e)&&(e=e.replace(/[\x00-\x1f\x7f]/g,e=>`
|
|
3
3
|
\r`.includes(e)?``:encodeURIComponent(e))),ft(e)}function mt(e){let t=e.getLocation(),n=new Set,r=r=>{t=e.getLocation(),n.forEach(e=>e({location:t,action:r}))},i=n=>{e.notifyOnIndexChange??!0?r(n):t=e.getLocation()},a=async({task:n,navigateOpts:r,...i})=>{if(r?.ignoreBlocker??!1){n();return}let a=e.getBlockers?.()??[],o=i.type===`PUSH`||i.type===`REPLACE`;if(typeof document<`u`&&a.length&&o)for(let n of a){let r=_t(i.path,i.state);if(await n.blockerFn({currentLocation:t,nextLocation:r,action:i.type})){e.onBlocked?.();return}}n()};return{get location(){return t},get length(){return e.getLength()},subscribers:n,subscribe:e=>(n.add(e),()=>{n.delete(e)}),push:(n,i,o)=>{let s=t.state[L];i=ht(s+1,i),a({task:()=>{e.pushState(n,i),r({type:`PUSH`})},navigateOpts:o,type:`PUSH`,path:n,state:i})},replace:(n,i,o)=>{let s=t.state[L];i=ht(s,i),a({task:()=>{e.replaceState(n,i),r({type:`REPLACE`})},navigateOpts:o,type:`REPLACE`,path:n,state:i})},go:(t,n)=>{a({task:()=>{e.go(t,n?.ignoreBlocker??!1),i({type:`GO`,index:t})},navigateOpts:n,type:`GO`})},back:t=>{a({task:()=>{e.back(t?.ignoreBlocker??!1),i({type:`BACK`})},navigateOpts:t,type:`BACK`})},forward:t=>{a({task:()=>{e.forward(t?.ignoreBlocker??!1),i({type:`FORWARD`})},navigateOpts:t,type:`FORWARD`})},canGoBack:()=>t.state[L]!==0,createHref:t=>e.createHref(t),block:t=>{if(!e.setBlockers)return()=>{};let n=e.getBlockers?.()??[];return e.setBlockers([...n,t]),()=>{let n=e.getBlockers?.()??[];e.setBlockers?.(n.filter(e=>e!==t))}},flush:()=>e.flush?.(),destroy:()=>e.destroy?.(),notify:r,_getBlockers:()=>e.getBlockers?.()??[]}}function ht(e,t){t||={};let n=vt();return{...t,key:n,__TSR_key:n,[L]:e}}function gt(e){let t=e?.window??(typeof document<`u`?window:void 0),n=t.history.pushState,r=t.history.replaceState,i=[],a=()=>i,o=e=>i=e,s=t=>pt(e?.createHref?e.createHref(t):t),c=e?.parseLocation??(()=>_t(`${t.location.pathname}${t.location.search}${t.location.hash}`,t.history.state));if(!t.history.state?.__TSR_key&&!t.history.state?.key){let e=vt();t.history.replaceState({[L]:0,key:e,__TSR_key:e},``)}let l=c(),u,d=!1,f=!1,p=!1,m=!1,h=()=>l,g,_=()=>{g&&(S._ignoreSubscribers=!0,(g[2]?t.history.pushState:t.history.replaceState)(g[1],``,g[0]),S._ignoreSubscribers=!1,g=void 0,u=void 0)},v=(t,n,r)=>{let i=e?.createHref?s(n):void 0,a=!!g;a||(u=l),l=_t(n,r),g=[i??l.href,r,g?.[2]||t],a||queueMicrotask(()=>_())},y=e=>{l=c(),S.notify({type:e})},b=async()=>{if(m=!1,f){f=!1;return}let e=c(),n=e.state[L]-l.state[L],r=n===1,i=n===-1,o=!r&&!i||d;d=!1;let s=o?`GO`:i?`BACK`:`FORWARD`,u=o?{type:`GO`,index:n}:{type:i?`BACK`:`FORWARD`};if(p)p=!1;else{let r=a();if(typeof document<`u`&&r.length){for(let i of r)if(await i.blockerFn({currentLocation:l,nextLocation:e,action:s})){f=!0,t.history.go(-n),S.notify(u);return}}}l=c(),S.notify(u)},x=e=>{if(m){m=!1;return}let t=!1,n=a();if(typeof document<`u`&&n.length)for(let e of n){let n=e.enableBeforeUnload??!0;if(n===!0){t=!0;break}if(typeof n==`function`&&n()===!0){t=!0;break}}if(t)return e.preventDefault(),e.returnValue=``},S=mt({getLocation:h,getLength:()=>t.history.length,pushState:(e,t)=>v(!0,e,t),replaceState:(e,t)=>v(!1,e,t),back:e=>(e&&(p=!0,m=!0),t.history.back()),forward:e=>{e&&(p=!0,m=!0),t.history.forward()},go:(e,n)=>{d=!0,n&&(p=!0,m=!0),t.history.go(e)},createHref:e=>s(e),flush:_,destroy:()=>{t.history.pushState=n,t.history.replaceState=r,t.removeEventListener(ut,x,{capture:!0}),t.removeEventListener(lt,b)},onBlocked:()=>{u&&l!==u&&(l=u)},getBlockers:a,setBlockers:o,notifyOnIndexChange:!1});return S._ignoreNextBeforeUnload=e=>{m=!1;try{e=new URL(e,t.document.baseURI).href,m=/^https?:/.test(e)&&(!e.includes(`#`)||e.split(`#`)[0]!==t.location.href.split(`#`)[0])}catch{}},t.addEventListener(ut,x,{capture:!0}),t.addEventListener(lt,b),t.history.pushState=function(...e){let r=n.apply(t.history,e);return S._ignoreSubscribers||y(`PUSH`),r},t.history.replaceState=function(...e){let n=r.apply(t.history,e);return S._ignoreSubscribers||y(`REPLACE`),n},S}function _t(e,t){let n=pt(e),r=n.indexOf(`#`),i=n.indexOf(`?`),a=vt();return{href:n,pathname:n.substring(0,r>0?i>0?Math.min(r,i):r:i>0?i:n.length),hash:r>-1?n.substring(r):``,search:i>-1?n.slice(i,r===-1?void 0:r):``,state:t||{[L]:0,key:a,__TSR_key:a}}}function vt(){return(Math.random()+1).toString(36).substring(7)}function yt(e,t){return e.protocol!==`http:`&&e.protocol!==`https:`||e.origin!==t||!!e.username||!!e.password}function bt(e){return e.pathname+e.search+e.hash}function xt(e){return e.options.loader||e.options.beforeLoad||e.lazyFn||e.options.component?.preload||e.options.pendingComponent?.preload}function St(e,t){return{fromLocation:t,toLocation:e,pathChanged:t?.pathname!==e.pathname,hrefChanged:t?.href!==e.href,hashChanged:t?.hash!==e.hash}}function Ct({key:e,__TSR_key:t,__TSR_index:n,__hashScrollIntoViewOptions:r,...i}){return i}function wt(e){return e.findIndex(e=>e.status===`error`||e.status===`notFound`||e._notFound)+1}function Tt(e,t,n,r,i,a){r&&(t=t.slice(0,r)),i&&(n=n.slice(0,i));for(let r of t){if(a&&e._tx!==a)return;n.some(e=>e.routeId===r.routeId)||e.routesById[r.routeId].options.onLeave?.(r)}for(let r of n){if(a&&e._tx!==a)return;e.routesById[r.routeId].options[t.some(e=>e.routeId===r.routeId)?`onStay`:`onEnter`]?.(r)}}var Et=class{constructor(r,i){this.tempLocationKey=`${Math.round(Math.random()*1e7)}`,this._scroll={next:!0},this.subscribers=new Set,this._cache=new Map,this._committed=[],this.routeBranchCache=new WeakMap,this.lightweightCache=new WeakMap,this.startTransition=async e=>(e(),!1),this.update=e=>{let t=this.options,n=this.basepath??t?.basepath??`/`,r=this.basepath===void 0,i=t?.rewrite;if(this.options={...t,...e},this.isServer=this.options.isServer??!1??typeof document>`u`,this.protocolAllowlist=new Set(this.options.protocolAllowlist),this.options.pathParamsAllowedCharacters&&(this.pathParamsDecoder=w(this.options.pathParamsAllowedCharacters)),(!this.history||this.options.history&&this.options.history!==this.history)&&(this.history=this.options.history?this.options.history:gt()),this.origin=this.options.origin,this.origin||=window?.origin&&window.origin!==`null`?window.origin:`http://localhost`,this.history&&this.updateLatestLocation(),this.options.routeTree!==this.routeTree){this.routeTree=this.options.routeTree;let e;this.resolvePathCache=ae(1e3),e=this.buildRouteTree(),this.setRoutes(e)}if(!this.stores&&this.latestLocation){let e=this.getStoreConfig(this);this.batch=e.batch,this.stores=ct(this.latestLocation,e),Ye(this)}let a=this.options.basepath??`/`,o=this.options.rewrite;if(r||n!==a||i!==o){this.basepath=a;let e=[],t=te(a);t&&t!==`/`&&e.push(at({basepath:a})),o&&e.push(o),this.rewrite=e.length===0?void 0:e.length===1?e[0]:it(e),this.history&&this.updateLatestLocation(),this.stores&&this.stores.location.set(this.latestLocation)}},this.updateLatestLocation=()=>{this.latestLocation=this.parseLocation(this.history.location,this.latestLocation)},this.buildRouteTree=()=>{let e=ne(this.routeTree,this.options.caseSensitive,(e,t)=>{e.init({originalIndex:t})});return this.options.routeMasks&&m(this.options.routeMasks,e.processedTree),e},this.subscribe=(e,t)=>{let n={eventType:e,fn:t};return this.subscribers.add(n),()=>{this.subscribers.delete(n)}},this.emit=e=>{for(let t of this.subscribers)if(t.eventType===e.type)try{t.fn(e)}catch(e){console.error(e)}},this.parseLocation=(t,n)=>{let r=({pathname:t,search:r,hash:i,href:a,state:s})=>{if(!this.rewrite&&!/[ \x00-\x1f\x7f\u0080-\uffff]/.test(t)){let a=this.options.parseSearch(r),c=this.options.stringifySearch(a);return{href:t+c+i,publicHref:t+c+i,pathname:e(t),external:!1,searchStr:c,search:o(n?.search,a),hash:e(i.slice(1)),state:u(n?.state,s)}}let c=new URL(a,this.origin),l=ot(this.rewrite,c),d=this.options.parseSearch(l.search),f=this.options.stringifySearch(d);return l.search=f,{href:l.href.replace(l.origin,``),publicHref:a,pathname:e(ft(l.pathname)),external:!!this.rewrite&&yt(l,this.origin),searchStr:f,search:o(n?.search,d),hash:e(l.hash.slice(1)),state:u(n?.state,s)}},i=r(t),{__tempLocation:a,__tempKey:s}=i.state;if(a&&(!s||s===this.tempLocationKey)){let e=r(a);return e.state.key=i.state.key,e.state.__TSR_key=i.state.__TSR_key,delete e.state.__tempLocation,{...e,maskedLocation:i}}return i},this.resolvePathWithBase=(e,t)=>S({base:e,to:t,trailingSlash:this.options.trailingSlash,cache:this.resolvePathCache}),this.matchRoutes=(e,t,n)=>typeof e==`string`?this.matchRoutesInternal({pathname:e,search:t},n):this.matchRoutesInternal(e,t),this.getMatchedRoutes=e=>{let t=Object.create(null),n=y(_(e),this.processedTree,!0);return n&&Object.assign(t,n.rawParams),[n?.branch||[this.routesById.__root__],t,n?.route]},this.buildLocation=t=>{let r=(r={})=>{if(r.href){let e=_t(r.href,{});r={...r,to:ot(this.rewrite,new URL(e.pathname,this.origin)).pathname,search:this.options.parseSearch(e.search),hash:e.hash.slice(1)}}let i=r._fromLocation||this._pendingLocation||this.latestLocation,a=this.matchRoutesLightweight(i),s=r.unsafeRelative===`path`?i.pathname:r.from??a[1],c=a[2],d=a[3],p=this.resolvePathWithBase(s,r.to?`${r.to}`:`.`),m=Nt(r.params,d),h=this.routesByPath[_(p)],g;if(h)g=this.getRouteBranch(h);else if(p.includes(`$`))g=[];else{let[e,t,n]=this.getMatchedRoutes(p);g=e,this.options.notFoundRoute&&(!n||n.path!==`/`&&t[`**`])&&(g=[...g,this.options.notFoundRoute])}if(g.length&&l(m))for(let e of g){let t=e.options.params?.stringify??e.options.stringifyParams;if(t){m===d&&(m=Object.assign(Object.create(null),m));try{Object.assign(m,t(m))}catch{}}}let v=t.leaveParams?p:e(ft(ee({path:p,params:m,decoder:this.pathParamsDecoder,server:this.isServer}).interpolatedPath)),y=c;if(t._includeValidateSearch&&this.options.search?.strict){let e={};g.forEach(t=>{if(t.options.validateSearch)try{Object.assign(e,At(t.options.validateSearch,{...e,...y}))}catch{}}),y=e}y=jt(y,r,g,t._includeValidateSearch),y=o(c,y);let b=this.options.stringifySearch(y),x=r.hash===!0?i.hash:r.hash?n(r.hash,i.hash):void 0,S=x?`#${x}`:``,C=r.state===!0?i.state:r.state?n(r.state,i.state):{};r.state&&(C=u(i.state,C));let w=`${v}${b}${S}`,T,E,te=!1;if(this.rewrite){let e=new URL(w,this.origin),t=e.origin,n=st(this.rewrite,e);T=bt(e),yt(n,t)?(E=n.href,te=!0):E=ft(bt(n))}else T=f(w),E=T;return{publicHref:E,href:T,pathname:v,search:y,searchStr:b,state:C,hash:x??``,external:te,unmaskOnReload:r.unmaskOnReload}},i=r(t);if(t.mask)i.maskedLocation=r({from:t.from,...t.mask});else if(this.options.routeMasks){let e=C(i.pathname,this.processedTree);if(e){let n=Object.assign(Object.create(null),e.rawParams),{from:a,params:o,...s}=e.route,c=Nt(o,n);i.maskedLocation=r({from:t.from,...s,params:c})}}return i},this.commitLocation=async({viewTransition:e,ignoreBlocker:t,...n})=>{let r=n.maskedLocation??n;if(r.external)return Dt(this,r.publicHref,{replace:n.replace,ignoreBlocker:t});let i,a=_(this.latestLocation.href)===_(n.href)&&re(Ct(n.state),Ct(this.latestLocation.state)),o=this._commitPromise,s,c=new Promise(e=>{s=e});if(c.resolve=()=>{s(),o?.resolve()},this._commitPromise=c,a)this.load();else{let{maskedLocation:r,hashScrollIntoView:a,...o}=n;r&&(o={...r,state:{...r.state,__tempKey:void 0,__tempLocation:{...o,search:o.searchStr,state:{...o.state,__tempKey:void 0,__tempLocation:void 0,__TSR_key:void 0,key:void 0}}}},(o.unmaskOnReload??this.options.unmaskOnReload??!1)&&(o.state.__tempKey=this.tempLocationKey)),o.state.__hashScrollIntoViewOptions=a??this.options.defaultHashScrollIntoView??!0,this.shouldViewTransition=e,i=n.replace?`REPLACE`:`PUSH`,this.history[i===`REPLACE`?`replace`:`push`](o.publicHref,o.state,{ignoreBlocker:t}),this.history.subscribers.size||this.load({action:{type:i}})}return this._scroll.next=n.resetScroll??!0,this._commitPromise},this.buildAndCommitLocation=({replace:e,resetScroll:t,hashScrollIntoView:n,viewTransition:r,ignoreBlocker:i,...a}={})=>{let o=this.buildLocation({...a,_includeValidateSearch:!0});this._pendingLocation=o;let s=this.commitLocation({...o,viewTransition:r,replace:e,resetScroll:t,hashScrollIntoView:n,ignoreBlocker:i});return queueMicrotask(()=>{this._pendingLocation===o&&(this._pendingLocation=void 0)}),s},this.navigate=async({to:e,reloadDocument:n,href:r,publicHref:i,...a})=>{let o=r?t(r):void 0;if(o||n){if(e!==void 0||!r){let t=this.buildLocation({to:e,...a}),n=t.maskedLocation??t;r??=n.publicHref,i??=n.publicHref}let t=!o&&i?i:r;return Dt(this,t,a)}return this.buildAndCommitLocation({...a,href:r,to:e,_isNavigate:!0})},this.load=async e=>{this.updateLatestLocation(),e?.action&&(this._scroll.hash=e.action.type===`PUSH`||e.action.type===`REPLACE`),await pn(this,e)},this.startViewTransition=e=>{let t=this.shouldViewTransition??this.options.defaultViewTransition;if(this.shouldViewTransition=void 0,t&&typeof document.startViewTransition==`function`){let n;if(typeof t==`object`&&window.CSS?.supports?.(`selector(:active-view-transition-type(a))`)){let r=this.latestLocation,i=this.stores.resolvedLocation.get(),a=typeof t.types==`function`?t.types(St(r,i)):t.types;if(a===!1)return e();n={update:e,types:a}}else n=e;return document.startViewTransition(n).updateCallbackDone}return e()},this.invalidate=e=>{let t=this._committed,n=e?.filter,r=this._preloads,i=new Set([...t,...this._cache.values(),...[...r?.values()??[]].flat(),...this._tx?.[3]??[]].filter(e=>!n||n(e)).map(e=>e.id)),a=[];for(let[e,t]of r??[])t.some(e=>i.has(e.id))&&(r.delete(e),a.push(e));let o=t=>{if(i.has(t.id)){let n=this.routesById[t.routeId],r={...t,invalid:!0,...(e?.forcePending||t.status===`error`||t.status===`notFound`)&&xt(n)?{status:`pending`,error:void 0}:void 0};return t._flight=void 0,r}return t};this._committed=t.map(o);for(let[t,n]of this._cache)i.has(t)&&(n.invalid=!0,e?.forcePending&&(n.status=`pending`));for(let e of i)this._flights?.delete(e);for(let e of a)e.abort();return this.shouldViewTransition=!1,this.load({sync:e?.sync})},this.resolveRedirect=e=>{let n=e.options,r=e.headers.get(`Location`)||n.href;if(!r){let e=this.buildLocation(n);r=(e.maskedLocation??e).publicHref||`/`}let i;if(c.test(r)||(i=t(r))&&!this.protocolAllowlist.has(i))throw Error(`Redirect blocked: unsafe protocol`);if(i===`http:`||i===`https:`){let e=new URL(r);e.pathname.startsWith(`//`)?r=e.href:yt(e,this.origin)||(r=bt(e),i=void 0)}return i&&(n.reloadDocument=!0),n.href=r,e.headers.set(`Location`,r),e},this.clearCache=e=>{let t=this._cache,n=this._preloads,r=e?.filter,i=[],a=[];for(let[e,n]of t)(!r||r(n))&&(a.push(e),i.push(n));let o=[];for(let[e,t]of n??[])(!r||t.some(r))&&(o.push(e),i.push(...t));for(let e of a)t.delete(e);for(let e of o)n.delete(e);for(let e of i){let t=e._flight;e._flight=void 0,t&&!--t[2]&&(this._flights?.get(e.id)===t&&this._flights.delete(e.id),o.push(t[1]))}for(let e of o)e.abort()},this.loadRouteChunk=R,this.preloadRoute=e=>mn(this,e),this.matchRoute=(e,t)=>{let n={...e,to:e.to?this.resolvePathWithBase(e.from||``,e.to):void 0,params:e.params||{},leaveParams:!0},r=this.buildLocation(n),i=this.stores.status.get()===`pending`;if(t?.pending&&!i)return!1;let a=t?.pending??!i?this.latestLocation:this.stores.resolvedLocation.get()||this.stores.location.get(),o=v(r.pathname,t?.caseSensitive??!1,t?.fuzzy??!1,a.pathname,this.processedTree);return!o||e.params&&!re(o.rawParams,e.params,{partial:!0})?!1:t?.includeSearch??!0?re(a.search,r.search,{partial:!0})?o.rawParams:!1:o.rawParams},this.getStoreConfig=i,this.update({defaultPreloadDelay:50,defaultPendingMs:1e3,defaultPendingMinMs:500,context:void 0,...r,caseSensitive:r.caseSensitive??!1,notFoundMode:r.notFoundMode??`fuzzy`,stringifySearch:r.stringifySearch??tt,parseSearch:r.parseSearch??et,protocolAllowlist:r.protocolAllowlist??ie}),self.__TSR_ROUTER__=this}isShell(){return!!this.options.isShell}get state(){return this.stores.__store.get()}setRoutes({routesById:e,routesByPath:t,processedTree:n}){this.routesById=e,this.routesByPath=t,this.processedTree=n;let r=this.options.notFoundRoute;r&&(r.init({originalIndex:99999999999}),this.routesById[r.id]=r)}getRouteBranch(e){let t=this.routeBranchCache.get(e);return t||(t=T(e),this.routeBranchCache.set(e,t)),t}matchRoutesInternal(e,t){let[n,r,i]=this.getMatchedRoutes(e.pathname),a=n,s=!1;(i?i.path!==`/`&&r[`**`]:_(e.pathname))&&(this.options.notFoundRoute?a=[...a,this.options.notFoundRoute]:s=!0);let c=s?Mt(this.options.notFoundMode,a):void 0,l=Array(a.length),d=this._committed,f=(e,t)=>{let n=d[t];return n?.routeId===e.id?n:e===this.options.notFoundRoute?d.find(t=>t.routeId===e.id):void 0},p;for(let n=0;n<a.length;n++){let i=a[n],s=l[n-1],d,m,h;{let n=s?.search??e.search,r=s?._strictSearch??void 0;try{let e=At(i.options.validateSearch,{...n})??void 0;d={...n,...e},m={...r,...e}}catch(e){let r=e;if(e instanceof Ot||(r=new Ot(e.message,{cause:e})),t?.throwOnError)throw r;d=n,m={},h=r}}let g=``,_=``;try{g=i.options.loaderDeps?.({search:d})??``,_=g&&JSON.stringify(g)||``}catch(e){if(t?.throwOnError)throw e;h??=e}let{interpolatedPath:v,usedParams:y}=ee({path:i.fullPath,params:r,decoder:this.pathParamsDecoder,server:this.isServer}),b=i.id+v+_,x=f(i,n),S=this._cache.get(b)??(x?.id===b?x:void 0);p=S?._strictParams??Object.assign(y,p);let C;if(!S)try{Pt(i,p)}catch(e){if(C=F(e)||le(e)?e:new kt(e.message,{cause:e}),t?.throwOnError)throw C}let w=x?`stay`:`enter`,T;if(S)T={...S,cause:w,search:o(x?x.search:S.search,d),_strictSearch:m,searchError:h};else{let e=xt(i)?`pending`:`success`;T={id:b,ssr:i.options.ssr,index:n,routeId:i.id,params:x?.params??p,_strictParams:p,pathname:v,updatedAt:Date.now(),search:x?o(x.search,d):d,_strictSearch:m,searchError:h,status:e,isFetching:!1,error:void 0,paramsError:C,context:{},abortController:t?._controller??new AbortController,cause:w,loaderDeps:x?u(x.loaderDeps,g):g,invalid:!1,preload:!1,staticData:i.options.staticData||{},fullPath:i.fullPath}}let E=c===i.id;T._notFound&&!E&&(T.error=void 0),T._notFound=E,l[n]=T}for(let e=0;e<l.length;e++){let n=l[e];n.params=n.cause===`stay`?o(n.params,p):p,t?._controller&&(n.context={})}return l}matchRoutesLightweight(e){let t=b(this.stores.ids.get()),n=t?this.stores.byRoute.get(t).get():void 0,r=n?.id,i=this.lightweightCache.get(e);if(i&&i[0]===r)return i[1];let[a,o]=this.getMatchedRoutes(e.pathname),s=b(a),c={...e.search};for(let e of a)try{Object.assign(c,At(e.options.validateSearch,c))}catch{}let l=n&&n.routeId===s.id&&n.pathname===e.pathname,u;if(l)u=n.params;else{let e=Object.assign(Object.create(null),o);for(let t of a)try{Pt(t,e)}catch{}u=e}let d=[a,s.fullPath,c,u];return this.lightweightCache.set(e,[r,d]),d}};async function Dt(e,t,{replace:n,ignoreBlocker:r}){if(!x(t,e.protocolAllowlist)){if(!r){let t=e.history._getBlockers();for(let r of t)if(r?.blockerFn&&await r.blockerFn({currentLocation:e.history.location,nextLocation:e.history.location,action:n?`REPLACE`:`PUSH`}))return}e.history._ignoreNextBeforeUnload?.(t),n?window.location.replace(t):window.location.href=t}}var Ot=class extends Error{},kt=class extends Error{};function At(e,t){if(e==null)return{};if(`~standard`in e){let n=e[`~standard`].validate(t);if(n instanceof Promise)throw new Ot(`Async validation not supported`);if(n.issues)throw new Ot(JSON.stringify(n.issues,void 0,2),{cause:n});return n.value}return`parse`in e?e.parse(t):typeof e==`function`?e(t):{}}function jt(e,t,r,i){let a=[];for(let e of r){let t=e.options;`search`in t?t.search?.middlewares&&a.push(...t.search.middlewares):(t.preSearchFilters||t.postSearchFilters)&&a.push(({search:e,next:n})=>{let r=n(t.preSearchFilters?t.preSearchFilters.reduce((e,t)=>t(e),e):e);return t.postSearchFilters?t.postSearchFilters.reduce((e,t)=>t(e),r):r});let n=t.validateSearch;i&&n&&a.push(({search:e,next:t,meta:r})=>{let i=t(e);try{let e=At(n,i);if(r&&e)for(let t in e)t in i||(r.defaulted||=new Map).set(t,e[t]);return{...i,...e}}catch{}return i})}let o=(e,r,i)=>{if(e>=a.length){if(!t.search)return{};if(t.search===!0)return r;let e=n(t.search,r);return i&&(i.explicit=e),e}return a[e]({search:r,next:(t,n)=>{if(n){let n=i||{};return{search:o(e+1,t,n),meta:n}}return o(e+1,t,i)},meta:i})};return o(0,e)}function Mt(e,t){if(e!==`root`){let e;for(let n=t.length-1;n>=0;n--){let r=t[n];if(r.options.notFoundComponent)return r.id;e||=r.children&&r.id}if(e)return e}return se}function Nt(e,t){if(e===!1||e===null)return Object.create(null);if((e??!0)===!0)return t;let r=Object.assign(Object.create(null),t);return Object.assign(r,n(e,r))}function Pt(e,t){let n=e.options.params?.parse??e.options.parseParams;n&&Object.assign(t,n(t))}function Ft(e,t){return e.options[t]?.preload?.()}function It(e,t){let n=Ft(e,`component`),r=Ft(e,`pendingComponent`);return t&&(r?r=r.then(t):t()),n&&r?Promise.all([n,r]).then(()=>{}):n??r}function R(e,t,n){let r=()=>t===!1?void 0:t?Ft(e,t):It(e,n),i=e._lazy;if(i)return i===!0?r():i.then(r);if(!e.lazyFn)return r();let a=e.lazyFn().then(t=>{{let{id:n,...r}=t.options;Object.assign(e.options,r),e._lazy=!0}},t=>{throw e._lazy=void 0,t});return e._lazy=a,a.then(r)}function Lt(e){let t=e.findIndex(e=>e.status!==`success`||e._notFound)+1;return t&&t<e.length?e.slice(0,t):e}var z=0,B=1,Rt=2,V=3,H=[4];function zt(e){return typeof e[0]==`number`}function U(e,t){return t.aborted?Promise.race([Promise.reject(t),e]):new Promise((n,r)=>{let i=()=>r(t);t.addEventListener(`abort`,i,{once:!0}),Promise.resolve(e).then(n,r).then(()=>t.removeEventListener(`abort`,i))})}function W(e,t){return e.routesById[t.routeId]}function G(e,t,n){return le(e)?[V,e]:F(e)?(e.routeId||=n,[Rt,e]):t?(typeof e?.then==`function`&&(e=Error(`A Promise was thrown`,{cause:e})),[B,e]):[z,e]}function Bt(e,t){let n=G(t,!0,e.id);if(n[0]!==B)return n;try{e.options.onError?.(n[1])}catch(t){n=G(t,!0,e.id)}return n}function K(e,t,n,r,i){return i[0].signal.aborted?H:$t(e,t,n,Bt(n,r),i)}async function Vt(e,t,n,r,i,a){let[o,s]=t,c=n[0].signal,l=!!n[3];for(let i=n[6]??0;i<r;i++){let r=s[i],u=W(e,r);r.abortController=n[0];let d=s[i-1]?.context??e.options.context??{},f={params:r.params,location:o,navigate:t=>e.navigate({...t,_fromLocation:o}),buildLocation:e.buildLocation,cause:l?`preload`:r.cause,abortController:n[0],preload:l,matches:s,routeId:u.id};try{let e=r._ctx||=u.options.context?u.options.context({...f,deps:r.loaderDeps,context:d})||{}:void 0;r.context={...d,...e}}catch(a){return q(e,r),[i,K(e,t,u,a,n)]}if(c.aborted)return[i,H];let p=r.paramsError??r.searchError;if(p!==void 0)return q(e,r),[i,K(e,t,u,p,n)];let m=u.options.beforeLoad;if(!m)continue;let h=r.status;i>=a&&(r.status=`pending`,n[7]?.());try{Wt(e,r,`beforeLoad`,n[0]);let a=m({...f,search:r.search,context:r.context,...e.options.additionalContext}),o=await(typeof a?.then==`function`?U(a,c):a);if(c.aborted)return[i,H];let s=$t(e,t,u,G(o,!1,u.id),n);if(s[0]!==z)return q(e,r),[i,s];r.context={...r.context,...o}}catch(a){return q(e,r),[i,K(e,t,u,a,n)]}finally{r.status=h,Wt(e,r,!1,n[0])}}i()}function Ht(e,t,n){if(!(!n||--n[2])){if(e._flights?.get(t.id)===n){let n=e._tx;if(n&&!n[0].signal.aborted&&!n[3].includes(t)&&n[3].some(e=>e.id===t.id)&&n[3].some(e=>e.isFetching===`beforeLoad`))return;e._flights.delete(t.id)}return n[1]}}function q(e,t){let n=t._flight;t._flight=void 0,Ht(e,t,n)?.abort()}function J(e,t,n,r){let i=[];for(let a of t)if(!n?.includes(a)){let t=a._flight;if(a._flight=void 0,r&&t?.[2]===1&&e._flights?.get(a.id)===t&&n?.some(e=>e.id===a.id))t[2]=0;else{let n=Ht(e,a,t);n&&i.push(n)}}for(let e of i)e.abort()}function Ut(e){for(let t of e){let e=t._flight;e&&e[2]++}}function Wt(e,t,n,r){if(t.isFetching=n,r&&e._tx?.[0]!==r)return;let i=e.stores.byRoute.get(t.routeId),a=i?.get();a?.id===t.id&&i.set({...a,isFetching:n})}function Gt(e,t,n,r,i,a,o){let s=t[0];return{params:n.params,location:s,navigate:t=>e.navigate({...t,_fromLocation:s}),cause:o?`preload`:n.cause,abortController:i,preload:o,deps:n.loaderDeps,parentMatchPromise:a,context:n.context,route:r,...e.options.additionalContext}}async function Kt(e,t,n,r,i,a,o){let s=o[0],c=s.signal;if(c.aborted)return H;if(!i)return[z,void 0];let l=n._flight;Wt(e,n,`loader`,s);try{if(!l){let s=new AbortController;l=[Promise.resolve().then(()=>i(Gt(e,t,n,r,s,a,!!o[3]))).then(e=>G(e,!1,r.id),e=>G(e,!0,r.id)).then(t=>(t[0]!==z&&e._flights?.get(n.id)===l&&(e._flights.delete(n.id),l[2]||s.abort()),t[0]===B&&l[2]?Bt(r,t[1]):t)),s,1],(e._flights??=new Map).set(n.id,l)}return n._flight=l,n.abortController=l[1],$t(e,t,r,await U(l[0],c),o)}catch(t){if(t!==c||!c.aborted)throw t;return q(e,n),H}finally{Wt(e,n,!1,s)}}function qt(e,t,n){t[0]!==V&&(e.status=`success`,e.error=void 0,t[0]===z?(e.loaderData=t[1],e.invalid=!1,e.updatedAt=Date.now(),e.preload=n):e.invalid=!0)}function Jt(e,t,n){let r=e._cache.get(t.id);if(r!==n||e._committed.some(e=>e.id===t.id&&e._flight===t._flight))return;let i={...t,_notFound:void 0,context:{}};i._flight&&i._flight[2]++,e._cache.set(t.id,i),r&&q(e,r)}function Yt(e,t){return t[0]===B||t[0]===Rt?{...e,status:t[0]===B?`error`:`notFound`,error:t[1],_flight:void 0}:e}function Xt(e,t,n,r,i,a,o){let s=t[1][n],c=W(e,s),l=!!a[3],u=e._cache.get(s.id),d,f=!1,p;try{if(s.status===`success`&&(d=c.options.shouldReload,typeof d==`function`&&(d=d(Gt(e,t,s,c,a[0],i,l))),a[0].signal.aborted&&(p=H)),!p){if(s.status!==`success`)f=!0;else{let t=l||s.preload?c.options.preloadStaleTime??e.options.defaultPreloadStaleTime??3e4:c.options.staleTime??e.options.defaultStaleTime??0;f=!!(s.invalid||d||d===void 0&&Date.now()-s.updatedAt>=t&&(a[5]||s.cause===`enter`||a[2].some(e=>e.routeId===s.routeId&&e.id!==s.id)))}}}catch(n){s.invalid=!0,q(e,s),p=K(e,t,c,n,a)}let m=c.options.loader,h=typeof m==`function`,g=h?m:m?.handler,_=!l||c.options.preload!==!1,v=_&&m?e._flights?.get(s.id):void 0;v===s._flight||p?v=void 0:v&&!f&&!l&&d===void 0?f=!0:f||(v=void 0);let y=!(!m||!f||s.status!==`success`||l||a[4]||((h?void 0:m.staleReloadMode)??e.options.defaultStaleReloadMode)===`blocking`),b=f&&_,x=b&&!y&&(s.status!==`success`||!!m),S=n>=o?a[7]:void 0,C=c.lazyFn&&c._lazy!==!0?S:void 0;if(b&&!m&&(s.invalid=!1,s.updatedAt=Date.now()),v&&v[2]++,x){let t=s._flight;s._flight=v,Ht(e,s,t)?.abort(),n>=o&&(s.status=`pending`),S?.()}b||(s.isFetching=!1);let w=!p&&x?Kt(e,t,s,c,g,i,a).then(t=>(qt(s,t,l),t[0]===z&&(m&&!a[0].signal.aborted&&Jt(e,s,u),n>=o&&(s.status=`pending`)),t)):Promise.resolve(p??[z,s.loaderData]),T=(async()=>{try{let e=R(c,void 0,C);e&&await U(e,a[0].signal)}catch(r){if(!t[1].some((e,t)=>t<=n&&(e.status===`error`||e.status===`notFound`||e._notFound)))return[n,K(e,t,c,r,a)]}let r=await w;x&&r[0]===z&&s.status===`pending`&&!a[0].signal.aborted&&(s.status=`success`,S?.())})();if(r.push([n,w,T]),!y)return w.then(e=>Yt(s,e));let E={...s,status:`pending`,preload:!1,_flight:v};s.invalid=!1,s.isFetching=`loader`;let ee=Kt(e,t,E,c,g,i,a).then(e=>(s.isFetching=!1,qt(E,e,!1),e));return(t[2]??=[]).push([n,ee,T,E]),ee.then(e=>Yt(E,e))}async function Zt(e,t,n,r,i=0){let a=n?.[1][1],o=a?.routeId?t.findIndex(e=>e.routeId===a.routeId):n?.[0]??t.length-1;o<0&&(o=0);for(let n=o;n>=0;n--){let i=W(e,t[n]);try{let e=R(i,!1);e&&await U(e,r)}catch(e){if(e===r&&r.aborted)throw e}if(i.options.notFoundComponent)return n}return a?.routeId?o:i}function Y(e,t){t[2]&&=(J(e,t[2].map(e=>e[3])),void 0)}async function Qt(e,t,n,r){let i;try{await Promise.all(e.map(e=>e[1].then(async t=>{let a=e[0];if(!(r&&a>=await r)){if(t[0]>=V)throw[a,t];!i&&t[0]!==z&&(i=[a,t],await Promise.all((n??[]).map(e=>{if(!(e[0]<=a))return e[1].then(t=>{if(t[0]===V)throw[e[0],t]})})))}})))}catch(e){return e}return t??i}function $t(e,t,n,r,i,a){for(;r[0]===V;){let o=r[1],s=o.options;try{if((s.href||o.headers.has(`Location`))&&(e.resolveRedirect(o),s.reloadDocument)||(s.reloadDocument?i[3]:i[1]>=20))return r;let n=e.buildLocation({...s,_fromLocation:t[0],_includeValidateSearch:!0}),a=n.maskedLocation??n;if(a.external){let t=o.clone();return t.options={...s},t.headers.set(`Location`,a.publicHref),e.resolveRedirect(t),i[3]?[V,t]:[V,t,a]}return[V,o,n]}catch(e){r=a?[B,e]:Bt(n,e),a=!0}}return r}async function en(e,t,n,r,i,a){let o=t[1],s=await i,c=!1,l=o.findIndex(e=>e._notFound),u=t=>t[1][0]===Rt?Zt(e,o,t,r.signal):t[0],d=l<0?o.length:l;if((s?.[1][0]??0)>=V)d=0;else if(s){d=s[2]??=await u(s);for(let e of n){if(e[0]>=d)break;let t=await e[1];if(t[0]!==z&&t[0]<V&&!(`loaderData`in o[e[0]])){s=[e[0],t],d=s[2]=await u(s);break}}}for(let e of n){if(e[0]>=d)break;let t=await e[2];if(t){s=t;break}}if((s?.[1][0]??0)>=V){let n=s[1];if(n[0]!==V||n[1].options.reloadDocument||n[2])return Y(e,t),n;c=!0,s=[0,[B,Error(`Too many redirects`)]]}let f=s?s[2]??await u(s):l;if(f>=0){let i=s?.[1],l=i?.[0],u=o[f],d=i?.[1],p=()=>{i&&(u._notFound=void 0,l===B?u.status=`error`:(d.routeId=u.routeId,u.routeId===e.routeTree.id?(u.status=`success`,u._notFound=!0):u.status=`notFound`),u.error=d,u.isFetching=!1)};p(),i||a?.();let m=W(e,u);try{await U(i?Promise.resolve().then(()=>R(m,l===B?`errorComponent`:`notFoundComponent`)):Promise.all([R(m),R(m,`notFoundComponent`)]),r.signal)}catch(n){if(n===r.signal&&r.signal.aborted)return Y(e,t),H}i?c&&(r.abort(),await Promise.all([...n.map(e=>e[1]),...n.map(e=>e[2]),...(t[2]??[]).map(e=>e[1])]),Y(e,t),J(e,o),p()):u.status=`success`}return t}async function tn(e,t,n,r=0,i=t[1].length){let a=t[1];for(let t=r;t<i;t++){let r=a[t],i=W(e,r).options;if(i.head||i.scripts)try{let t={ssr:e.options.ssr,matches:a,match:r,params:r.params,loaderData:r.loaderData},[o,s]=await U(Promise.all([i.head?.(t),i.scripts?.(t)]),n);r.meta=o?.meta,r.links=o?.links,r.headScripts=o?.scripts,r.styles=o?.styles,r.scripts=s}catch(e){if(e===n&&n.aborted)break;console.error(e)}if(r.status!==`success`||r._notFound)break}return t}async function nn(e,t,n,r){let i=[t,n],a=r[0].signal,o;try{let t=e.stores.matches.get(),s=n.findIndex(e=>e._notFound);if(e.options.notFoundMode!==`root`&&s>=0){let t=await Zt(e,n,void 0,a,s);n[s]._notFound=void 0,n[t]._notFound=!0,s=t}let c=s<0?n.length:s+1,l=0;for(;l<c&&l!==s;){let e=n[l],i=r[2][l],a=t[l];if(i?.id!==e.id||i.status!==`success`||e.preload||a?.id!==e.id||a.status!==`success`||(l++,i._notFound||a._notFound))break}let u=[],d=r[6]??0,f=d?Promise.resolve(n[d-1]):void 0,p=()=>{for(let t=d;t<c&&!a.aborted;t++)f=Xt(e,i,t,u,f,r,l)},m=await Vt(e,i,r,c,p,l);if(m){if(r[4]=!0,c=m[0],m[1][0]===Rt){let t=await Zt(e,n,m,a);m[2]=t,c=Math.min(c,t+1)}else m[1][0]>=V&&(c=0);p()}if(!a.aborted&&!r[3]){let t=[];for(let[n,r]of e._flights??[])r[2]||(e._flights.delete(n),t.push(r[1]));for(let e of t)e.abort()}let h=en(e,i,u,r[0],Qt(u,m,i[2]),r[7]);i[2]?.length&&(i[3]=Qt(i[2],void 0,void 0,h.then(e=>zt(e)?0:Lt(n).length,()=>0))),o=await h}catch(t){if(Y(e,i),t===a&&a.aborted)return H;throw t}return zt(o)?o:tn(e,o,a,r[6]===n.length?r[6]:0)}function rn(e,t){if(e._tx!==t)return;let n=t[3],r=e.stores.matches.get(),i=e._pending;for(let a=0;a<n.length;a++){let o=n[a],s=o.status===`success`&&!o._notFound,c=r[a]?.id===o.id&&r[a]?.status===`pending`;if(s&&!c)continue;let l=W(e,o),u=s||o.invalid?0:l.options.pendingMs??e.options.defaultPendingMs,d=l.options.pendingComponent??e.options.defaultPendingComponent;if(!d||typeof u!=`number`||u===1/0){i&&(i[0]=t,i[2]=0,i[4]=!0);return}let f=l.options.pendingMinMs??e.options.defaultPendingMinMs??0,p=!1;if(i?.[1]===o.id?(p=i[0]!==t,i[0]=t):(clearTimeout(i?.[3]),e._pending=i=void 0),i||(e._pending=i=[t,o.id,c?Date.now()+f:t[4]+u,void 0,c||void 0,d]),i[4]&&!p&&i[5]===d)return;if(i[5]=d,!i[4]){clearTimeout(i[3]);let n=i[2]-Date.now();if(n>0){i[3]=setTimeout(()=>rn(e,t),n);return}i[2]=0}let m=n.map(e=>({...e,_flight:void 0}));m[a].status=`pending`;let h=i[4]=e.startTransition(()=>e.stores.setMatches(m),m).then(t=>(t&&e._pending===i&&i[4]===h&&!i[2]&&(i[2]=Date.now()+f),t));return}}function an(e,t){let n=e._pending;(e._tx===t||!e._tx?.[3].some(e=>e.id===n?.[1]))&&(clearTimeout(n?.[3]),e._pending=void 0)}async function on(e,t){let n=e._pending;if(!n)return;clearTimeout(n[3]);let r=n[2]-Date.now();if(!n[4]||r<=0||!Lt(t[3]).some(e=>e.id===n[1]))return;let i;try{await U(new Promise(e=>{i=setTimeout(e,r)}),t[0].signal)}catch{}clearTimeout(i)}function sn(e,t){e._committed=t,e.stores.setMatches(t)}function cn(e,t,n,r){let i=e._committed,a=e._lifecycleEnd,o=e._cache;for(let e of n)e.preload=!1,r&&(e._assetEnd=void 0);let s=Lt(n).length,c=new Map;{let t=Date.now(),r=new Set;for(let e=0;e<n.length;e++){let t=n[e];(e<s||t.status===`success`)&&r.add(t.id)}for(let n of[...i,...o.values()]){if(n.status!==`success`||r.has(n.id))continue;let i=W(e,n);!i.options.loader||t-n.updatedAt>=(n.preload?i.options.preloadGcTime??e.options.defaultPreloadGcTime??3e5:i.options.gcTime??e.options.defaultGcTime??3e5)||c.set(n.id,o.get(n.id)===n?n:{...n,_flight:void 0,isFetching:!1,context:{}})}}t[3]=[],e._cache=c;let l=e._lifecycleEnd=wt(n);sn(e,n),J(e,[...o.values(),...i].filter(e=>e._flight&&c.get(e.id)!==e),n),Tt(e,i,n,a,l,t)}async function ln(e,t){let n=e._tx;for(;n&&n!==t;)t=n,await n[5],n=e._tx}function un(e,t,n){let r=n[1].options,i=n[2];if(!i)return e.navigate({...r,replace:!0,ignoreBlocker:!0});if(r.reloadDocument)return e.navigate({href:(i.maskedLocation??i).publicHref,reloadDocument:!0,replace:!0,ignoreBlocker:!0});i._redirects=t[1]+1,e._pendingLocation=i;let a=e.commitLocation({...i,viewTransition:r.viewTransition,replace:!0,resetScroll:r.resetScroll,hashScrollIntoView:r.hashScrollIntoView,ignoreBlocker:!0});return queueMicrotask(()=>{e._pendingLocation===i&&(e._pendingLocation=void 0)}),a}async function dn(e,t,n,r,i){let a=n.map(e=>({...e}));Ut(a);for(let t of r)q(e,a[t[0]]),a[t[0]]=t[3];let o=[t[2],a],s;try{s=await en(e,o,r,t[0],i)}catch(t){throw J(e,a),t}if(zt(s)){J(e,a),s[0]===V&&e._tx===t&&e._committed===n&&await un(e,t,s);return}if(await tn(e,s,t[0].signal),e._tx!==t||e._committed!==n){J(e,a);return}for(let t of a){let n=e._cache.get(t.id);n?._flight&&n._flight===t._flight&&(e._cache.delete(t.id),q(e,n))}sn(e,a),J(e,n,a)}async function fn(e,t,n,r,i,a){let o=await nn(e,t[2],t[3],[t[0],t[1],e._committed,void 0,i,n,a,r]);if(zt(o)){let n=o[0]===V&&e._tx===t;if((!n||o[1].options.reloadDocument)&&an(e,t),J(e,t[3]),t[3]=[],!n)return;if(e._tx!==t){an(e,t);return}await un(e,t,o);return}let s=o[1];if(e._tx===t&&await on(e,t),e._tx!==t){an(e,t),J(e,s),Y(e,o);return}let c=t[2],l=St(c,e.stores.resolvedLocation.get()),u=o[2];await e.startViewTransition(async()=>{if(e._tx===t&&await on(e,t),e._tx!==t){an(e,t),J(e,s),Y(e,o);return}let n=await e.startTransition(()=>{an(e,t),cn(e,t,s,a),e._tx===t&&(e.emit({type:`onLoad`,...l}),e._tx===t&&e.emit({type:`onBeforeRouteMount`,...l}))},s);if(e._tx!==t){Y(e,o);return}u?.length&&dn(e,t,s,u,o[3]).catch(console.error),e.batch(()=>{e.stores.resolvedLocation.set(c),e.stores.status.set(`idle`),e._tx===t&&e.emit({type:`onResolved`,...l}),n&&e._tx===t&&e.emit({type:`onRendered`,...l})}),e._tx===t&&(e._commitPromise?.resolve(),e._commitPromise=void 0)})}async function pn(e,t){let n=e._tx,r=e.stores.resolvedLocation.get(),i=r??e.stores.location.get(),a=e.latestLocation,o=e._pendingLocation,s=o?.href===a.href?o._redirects??0:0,c=e._handoff,l=c?.[0](),u=new AbortController,d=e._preflight;if(e._preflight=u,l||c?.[1](),d?.abort(),!u.signal.aborted){let t=St(a,r);e.emit({type:`onBeforeNavigate`,...t}),u.signal.aborted||e.emit({type:`onBeforeLoad`,...t})}if(u.signal.aborted){await ln(e,n);return}let f=i.href===a.href,p=u,m=e.matchRoutes(a,{_controller:u});Ut(m);let h=l?c[1](m):void 0;if(h?p=l:l?.abort(),u.signal.aborted){J(e,m),await ln(e,n);return}e._preflight=void 0;let g,_=()=>fn(e,y,f,()=>rn(e,y),t?.sync,h),v=t?.sync?new Promise(e=>g=e):Promise.resolve().then(_),y=[p,s,a,m,Date.now(),v.then(()=>ln(e,y))];if(e._tx=y,n){for(let t of e.stores.matches.get()){if(e._tx!==y)break;t.isFetching&&Wt(e,t,!1)}n[0].abort(),J(e,n[3],y[3],!0)}if(e._tx!==y){J(e,y[3]),y[3]=[],g?.(),await ln(e,y);return}e.batch(()=>{e.stores.status.set(`pending`),e.stores.location.set(a)}),(h||!e._committed.length&&m[0]?.status!==`success`&&!m.some(e=>e._notFound))&&rn(e,y),g?.(_()),await y[5]}async function mn(e,t){let n=e.buildLocation(t);for(let t=0;;t++){let r=e._committed,i=new AbortController,a,o,s;try{try{a=e.matchRoutes(n,{_controller:i}),Ut(a),o=(e._preloads??=new Map).set(i,a),s=await nn(e,n,a,[i,t,r,!0])}finally{o&&(o=o.delete(i),J(e,a)),i.abort()}if(!zt(s))return s[1];if(!o||s.length<3)return;n=s[2]}catch(e){F(e)||console.error(e);return}}}var hn=class extends j.Component{constructor(...e){super(...e),this.state={error:0},this.reset=()=>{this.setState({error:0})}}static getDerivedStateFromProps(e,t){let n=e.getResetKey();return t.error&&t.resetKey!==n?{resetKey:n,error:0}:{resetKey:n}}static getDerivedStateFromError(e){return{error:[e]}}componentDidCatch(e,t){this.props.onCatch?.(e,t)}render(){let e=this.state.error;return e?j.createElement(this.props.errorComponent??gn,{error:e[0],reset:this.reset}):this.props.children}};function gn({error:e}){let[t,n]=j.useState(!1);return P(`div`,{style:{padding:`.5rem`,maxWidth:`100%`},children:[P(`div`,{style:{display:`flex`,alignItems:`center`,gap:`.5rem`},children:[N(`strong`,{style:{fontSize:`1rem`},children:`Something went wrong!`}),N(`button`,{style:{appearance:`none`,fontSize:`.6em`,border:`1px solid currentColor`,padding:`.1rem .2rem`,fontWeight:`bold`,borderRadius:`.25rem`},onClick:()=>n(e=>!e),children:t?`Hide Error`:`Show Error`})]}),N(`div`,{style:{height:`.25rem`}}),t?N(`div`,{children:N(`pre`,{style:{fontSize:`.7em`,border:`1px solid red`,borderRadius:`.25rem`,padding:`.3rem`,color:`red`,overflow:`auto`},children:e?.message?N(`code`,{children:e.message}):null})}):null]})}var X=(e=>(e[e.None=0]=`None`,e[e.Mutable=1]=`Mutable`,e[e.Watching=2]=`Watching`,e[e.RecursedCheck=4]=`RecursedCheck`,e[e.Recursed=8]=`Recursed`,e[e.Dirty=16]=`Dirty`,e[e.Pending=32]=`Pending`,e))(X||{});function _n({update:e,notify:t,unwatched:n}){return{link:r,unlink:i,propagate:a,checkDirty:o,shallowPropagate:s};function r(e,t,n){let r=t.depsTail;if(r!==void 0&&r.dep===e)return;let i=r===void 0?t.deps:r.nextDep;if(i!==void 0&&i.dep===e){i.version=n,t.depsTail=i;return}let a=e.subsTail;if(a!==void 0&&a.version===n&&a.sub===t)return;let o=t.depsTail=e.subsTail={version:n,dep:e,sub:t,prevDep:r,nextDep:i,prevSub:a,nextSub:void 0};i!==void 0&&(i.prevDep=o),r===void 0?t.deps=o:r.nextDep=o,a===void 0?e.subs=o:a.nextSub=o}function i(e,t=e.sub){let r=e.dep,i=e.prevDep,a=e.nextDep,o=e.nextSub,s=e.prevSub;return a===void 0?t.depsTail=i:a.prevDep=i,i===void 0?t.deps=a:i.nextDep=a,o===void 0?r.subsTail=s:o.prevSub=s,s===void 0?(r.subs=o)===void 0&&n(r):s.nextSub=o,a}function a(e){let n=e.nextSub,r;top:do{let i=e.sub,a=i.flags;if(a&60?a&12?a&4?!(a&48)&&c(e,i)?(i.flags=a|40,a&=1):a=0:i.flags=a&-9|32:a=0:i.flags=a|32,a&2&&t(i),a&1){let t=i.subs;if(t!==void 0){let i=(e=t).nextSub;i!==void 0&&(r={value:n,prev:r},n=i);continue}}if((e=n)!==void 0){n=e.nextSub;continue}for(;r!==void 0;)if(e=r.value,r=r.prev,e!==void 0){n=e.nextSub;continue top}break}while(1)}function o(t,n){let r,i=0,a=!1;top:do{let o=t.dep,c=o.flags;if(n.flags&16)a=!0;else if((c&17)==17){if(e(o)){let e=o.subs;e.nextSub!==void 0&&s(e),a=!0}}else if((c&33)==33){(t.nextSub!==void 0||t.prevSub!==void 0)&&(r={value:t,prev:r}),t=o.deps,n=o,++i;continue}if(!a){let e=t.nextDep;if(e!==void 0){t=e;continue}}for(;i--;){let i=n.subs,o=i.nextSub!==void 0;if(o?(t=r.value,r=r.prev):t=i,a){if(e(n)){o&&s(i),n=t.sub;continue}a=!1}else n.flags&=-33;n=t.sub;let c=t.nextDep;if(c!==void 0){t=c;continue top}}return a}while(1)}function s(e){do{let n=e.sub,r=n.flags;(r&48)==32&&(n.flags=r|16,(r&6)==2&&t(n))}while((e=e.nextSub)!==void 0)}function c(e,t){let n=t.depsTail;for(;n!==void 0;){if(n===e)return!0;n=n.prevDep}return!1}}function vn(e,t,n){let r=typeof e==`object`,i=r?e:void 0;return{next:(r?e.next:e)?.bind(i),error:(r?e.error:t)?.bind(i),complete:(r?e.complete:n)?.bind(i)}}var yn=[],bn=0,{link:xn,unlink:Sn,propagate:Cn,checkDirty:wn,shallowPropagate:Tn}=_n({update(e){return e._update()},notify(e){yn[Dn++]=e,e.flags&=~X.Watching},unwatched(e){e.depsTail!==void 0&&(e.depsTail=void 0,e.flags=X.Mutable|X.Dirty,An(e))}}),En=0,Dn=0,Z,On=0;function kn(e){try{++On,e()}finally{--On||jn()}}function An(e){let t=e.depsTail,n=t===void 0?e.deps:t.nextDep;for(;n!==void 0;)n=Sn(n,e)}function jn(){if(!(On>0)){for(;En<Dn;){let e=yn[En];yn[En++]=void 0,e.notify()}En=0,Dn=0}}function Mn(e,t){let n=typeof e==`function`,r=e,i={_snapshot:n?void 0:e,subs:void 0,subsTail:void 0,deps:void 0,depsTail:void 0,flags:n?X.None:X.Mutable,get(){return Z!==void 0&&xn(i,Z,bn),i._snapshot},subscribe(e){let t=vn(e),n={current:!1},r=Nn(()=>{i.get(),n.current?t.next?.(i._snapshot):n.current=!0});return{unsubscribe:()=>{r.stop()}}},_update(e){let a=Z,o=t?.compare??Object.is;if(n)Z=i,++bn,i.depsTail=void 0;else if(e===void 0)return!1;n&&(i.flags=X.Mutable|X.RecursedCheck);try{let t=i._snapshot,a=typeof e==`function`?e(t):e===void 0&&n?r(t):e;return t===void 0||!o(t,a)?(i._snapshot=a,!0):!1}finally{Z=a,n&&(i.flags&=~X.RecursedCheck),An(i)}}};return n?(i.flags=X.Mutable|X.Dirty,i.get=function(){let e=i.flags;if(e&X.Dirty||e&X.Pending&&wn(i.deps,i)){if(i._update()){let e=i.subs;e!==void 0&&Tn(e)}}else e&X.Pending&&(i.flags=e&~X.Pending);return Z!==void 0&&xn(i,Z,bn),i._snapshot}):i.set=function(e){if(i._update(e)){let e=i.subs;e!==void 0&&(Cn(e),Tn(e),jn())}},i}function Nn(e){let t=()=>{let t=Z;Z=n,++bn,n.depsTail=void 0,n.flags=X.Watching|X.RecursedCheck;try{return e()}finally{Z=t,n.flags&=~X.RecursedCheck,An(n)}},n={deps:void 0,depsTail:void 0,subs:void 0,subsTail:void 0,flags:X.Watching|X.RecursedCheck,notify(){let e=this.flags;e&X.Dirty||e&X.Pending&&wn(this.deps,this)?t():this.flags=X.Watching},stop(){this.flags=X.None,this.depsTail=void 0,An(this)}};return t(),n}function Pn(e){let t=A(),n=`not-found-${E(t.stores.location,e=>e.pathname)}-${E(t.stores.status,e=>e)}`;return N(hn,{getResetKey:()=>n,onCatch:(t,n)=>{if(F(t))e.onCatch?.(t,n);else throw t},errorComponent:({error:t})=>{if(F(t))return e.fallback?.(t);throw t},children:e.children})}function Fn(){return N(`p`,{children:`Not Found`})}function Q(e){return N(Pe,{children:e.children})}function In(e,t,n){return t.options.notFoundComponent?N(t.options.notFoundComponent,{...n}):e.options.defaultNotFoundComponent?N(e.options.defaultNotFoundComponent,{...n}):N(Fn,{})}function Ln(e,t){let n=t?.options.pendingComponent??e.options.defaultPendingComponent;return n?N(n,{}):null}var Rn=(e,t)=>e[0]===t[0]&&e[1]===t[1],zn=(e,t,n)=>!t.isRoot||t.options.shellComponent||t.options.wrapInSuspense||n===!1||n===`data-only`||!e.ssr,Bn=j.memo(function({routeId:e}){let t=A();return N(Vn,{router:t,match:E(t.stores.getMatchStore(e),e=>e)})});function Vn({router:e,match:t}){let n=e.routesById[t.routeId],r=Ln(e,n),i=n.options.errorComponent??e.options.defaultErrorComponent,a=n.options.onCatch??e.options.defaultOnCatch,o=n.isRoot?n.options.notFoundComponent??e.options.notFoundRoute?.options.component:n.options.notFoundComponent,s=t.ssr===!1||t.ssr===`data-only`,c=zn(e,n,t.ssr)&&(n.options.wrapInSuspense??r??(n.options.errorComponent?.preload||s))?j.Suspense:Q,l=i?hn:Q,u=o?Pn:Q;return P(n.isRoot?n.options.shellComponent??Q:Q,{children:[N(oe.Provider,{value:t.routeId,children:N(c,{fallback:r,children:N(l,{getResetKey:()=>t,errorComponent:i,onCatch:(e,n)=>{if(F(e))throw e.routeId??=t.routeId,e;a?.(e,n)},children:N(u,{fallback:e=>{if(e.routeId??=t.routeId,e.routeId!==t.routeId)throw e;return j.createElement(o,e)},children:s?N(h,{fallback:r,children:N(Hn,{match:t})}):N(Hn,{match:t})})})})}),null]})}var Hn=j.memo(function({match:e}){let t=A(),n=e.routeId,r=t.routesById[n],i=j.useMemo(()=>{let i=(r.options.remountDeps??t.options.defaultRemountDeps)?.({routeId:n,loaderDeps:e.loaderDeps,params:e._strictParams,search:e._strictSearch});return i?JSON.stringify(i):void 0},[n,e.loaderDeps,e._strictParams,e._strictSearch,r.options.remountDeps,t.options.defaultRemountDeps]),a=j.useMemo(()=>{let e=r.options.component??t.options.defaultComponent;return e?N(e,{},i):N(Un,{})},[i,r.options.component,t.options.defaultComponent]);if(e.status===`pending`){if(t.ssr&&!zn(t,r,e.ssr))return a;if(t._tx)throw t._tx[5];return Ln(t,r)}if(e.status===`notFound`)return In(t,r,e.error);if(e.status===`error`)throw e.error;return a}),Un=j.memo(function(){let e=A(),t=j.useContext(oe),n,r,i;{let a=e.stores.getMatchStore(t);[n,r]=E(a,e=>[!!e._notFound,e.error],Rn),i=E(e.stores.ids,e=>e[e.indexOf(t)+1])}if(n)return In(e,e.routesById[t],r);if(!i)return null;let a=N(Bn,{routeId:i});return t===`__root__`?N(j.Suspense,{fallback:Ln(e),children:a}):a});function Wn(e,t){let n=e[1];e.length=0,n?.(t)}function Gn({t:e}){let t=A(),n=t._rendered??=[];return t.startTransition=(r,i)=>new Promise(a=>{Wn(n,!1),n.push(i,a),e(t),j.startTransition(r)}),i(()=>{let e=t.history.subscribe(t.load);t.updateLatestLocation();let r=t.latestLocation,i=t.buildLocation({to:r.pathname,search:!0,params:!0,hash:!0,state:!0,_includeValidateSearch:!0});if(_(r.publicHref)!==_(i.publicHref))return t.commitLocation({...i,replace:!0,ignoreBlocker:!0}),e;let a=t.stores.resolvedLocation.get();return a?.href===r.href&&a.state.__TSR_key===r.state.__TSR_key?n.push(t.stores.matches.get(),e=>{e&&t.emit({type:`onRendered`,...St(a,a)})}):t._tx||t.load({sync:!0}).catch(console.error),e},[t,t.history]),null}function Kn(){let e=A(),t=e.routesById[se],n=Ln(e,t),r=e.ssr?Q:j.Suspense,i=P(Pe,{children:[N(Gn,{t:j.useState()[1]}),N(r,{fallback:n,children:N(qn,{})})]});return e.options.InnerWrap?N(e.options.InnerWrap,{children:i}):i}function qn(){let e=A(),t=e._rendered,n=E(e.stores.matches,e=>t[0]??e),r=n[0],a=r?.routeId;i(()=>{t[0]===n&&Wn(t,!0)},[t,n]);let o=a?N(Bn,{routeId:a}):null;return N(oe.Provider,{value:a,children:e.options.disableGlobalCatchBoundary?o:N(hn,{getResetKey:()=>r,onCatch:void 0,children:o})})}var Jn=e=>({createMutableStore:Mn,createReadonlyStore:Mn,batch:kn}),Yn=e=>new Xn(e),Xn=class extends Et{constructor(e){super(e,Jn)}};function Zn({router:e,children:t,...n}){l(n)&&e.update({...e.options,...n,context:{...e.options.context,...n.context}});let r=N(de.Provider,{value:e,children:t});return e.options.Wrap?N(e.options.Wrap,{children:r}):r}function Qn({router:e,...t}){return N(Zn,{router:e,...t,children:N(Kn,{})})}var $n=Ie.div`
|
|
4
4
|
display: flex;
|
|
@@ -11,4 +11,4 @@ import{Cn as e,Dn as t,En as n,H as r,In as i,K as a,Mn as o,Mt as s,Nn as c,On
|
|
|
11
11
|
font-size: 13px;
|
|
12
12
|
color: ${({theme:e})=>e.color.inkDim};
|
|
13
13
|
max-width: 48ch;
|
|
14
|
-
`,tr=ce()({component:Un,notFoundComponent:()=>N($n,{children:P(fe,{$gap:3,style:{alignItems:`center`},children:[N(me,{children:`Not found`}),N(er,{children:`This console has no screen at that address.`}),N(pe,{as:`a`,href:`/`,$variant:`primary`,$size:`sm`,children:`Back to the rack`})]})})}),nr=`stream:console`,rr={"res:usage":{predicate:e=>e.queryKey[0]===`usage`||e.queryKey[0]===`client`&&(e.queryKey[1]===`usage`||e.queryKey[1]===`summary`)},"res:logs":{predicate:e=>e.queryKey[0]===`logs`&&e.queryKey[1]!==`body`||e.queryKey[0]===`client`&&e.queryKey[1]===`logs`||(e.queryKey[0]===`logPages`||e.queryKey[0]===`client`&&e.queryKey[1]===`logPages`)&&p(e.state.data)},"res:credentials":{queryKey:a.credentials},"res:keys":{queryKey:a.keys},"res:settings":{queryKey:a.settings},"res:models":{queryKey:a.models},"res:quota":{predicate:e=>e.queryKey[0]===`quota-history`||e.queryKey[0]===`credentials`&&e.queryKey[1]===`health`},[nr]:{queryKey:[`console`]}},ir=Object.keys(rr),ar=ir.filter(e=>e.startsWith(`res:`)),or=ir.filter(e=>e.startsWith(`stream:`));function sr(e,t){if(t===`res:*`){lr(e);return}let n=rr[t];n!==void 0&&e.invalidateQueries(n)}function cr(e){for(let t of ir)sr(e,t)}function lr(e){e.invalidateQueries()}var ur=4401,dr=500,fr=3e4,pr=new Set([...ar,...or]),mr=3,hr=6e4,gr=(e,t)=>{let n=setTimeout(e,t);return()=>clearTimeout(n)};function _r(){let{protocol:e,host:t}=window.location;return`${e===`https:`?`wss:`:`ws:`}//${t}/api/stream`}function vr(e){if(typeof e!=`string`)return null;let t;try{t=JSON.parse(e)}catch{return null}if(typeof t!=`object`||!t||Array.isArray(t))return null;let n=t,{type:r,topic:i,seq:a}=n;return typeof r!=`string`||i!==void 0&&typeof i!=`string`||a!==void 0&&typeof a!=`number`?null:{type:r,...typeof i==`string`?{topic:i}:{},...typeof a==`number`?{seq:a}:{},...`payload`in n?{payload:n.payload}:{}}}function yr(e){let t=new Set,n=new Set,r=new Map,i=new Map,a=new Map,o=e=>a.has(e)||pr.has(e),s=[],c=null,l=!1,u=!1,d=!1,f=!1,p=!1,m=0,h=null,g={status:`poll`,pushed:()=>!1};function _(){let e=p?`offline`:u&&!f?`push`:`poll`,r=e===`push`;g={status:e,pushed:e=>r&&n.has(e)};for(let e of t)e()}function v(e){c?.send(JSON.stringify(e))}function y(e,t){let n=i.get(e);if(n===void 0||n.size===0)return!1;for(let e of[...n])e(t);return!0}function b(){for(let e of ar)v({type:`subscribe`,topic:e});for(let e of or){let t=r.get(e);v(t===void 0?{type:`subscribe`,topic:e}:{type:`subscribe`,topic:e,sinceSeq:t})}for(let e of a.keys())v({type:`subscribe`,topic:e})}function x(){u=!0,m=0,n.clear(),d&&cr(e.client),d=!0,b(),_()}function S(t){let i=vr(t.data);if(i===null)return;let{topic:a}=i;if(i.type===`ack`){a!==void 0&&o(a)&&(n.add(a),y(a,{kind:`open`}),_());return}if(i.type===`error`){a!==void 0&&(n.delete(a)&&_(),y(a,{kind:`refused`}));return}if(a!==void 0){if(i.type===`gap`){i.seq!==void 0&&r.set(a,i.seq),y(a,{kind:`gap`}),sr(e.client,a);return}if(i.type===`event`){if(a===`res:*`){lr(e.client);return}if(i.seq!==void 0){let t=r.get(a);if(r.set(a,i.seq),t!==void 0&&i.seq>t+1){y(a,{kind:`gap`}),sr(e.client,a);return}}i.payload!==void 0&&y(a,{kind:`frame`,payload:i.payload})||sr(e.client,a)}}}function C(t){let r=u;u=!1,c=null,n.clear();for(let e of[...i.keys()])y(e,{kind:`closed`});if(l){if(t.code===ur){p=!0,l=!1,_(),lr(e.client);return}if(!r)f=!0;else{let t=e.now();s=[...s.filter(e=>e>t-hr),t],s.length>=mr&&(f=!0)}_(),w()}}function w(){let t=Math.min(fr,dr*2**m);m+=1,h=e.timer(()=>{h=null,l&&T()},t)}function T(){let t=new WebSocket(e.url());c=t,t.addEventListener(`open`,x),t.addEventListener(`message`,S),t.addEventListener(`close`,C)}function E(e,t){let n=i.get(e)??new Set;return i.set(e,n),n.add(t),()=>{n.delete(t),n.size===0&&i.delete(e)}}return{subscribe(e){return t.add(e),()=>{t.delete(e)}},snapshot:()=>g,hold(e,t){let r=E(e,t),i=(a.get(e)??0)+1;a.set(e,i),i===1&&u&&v({type:`subscribe`,topic:e}),n.has(e)&&t({kind:`open`});let o=!1;return()=>{if(o)return;o=!0,r();let t=(a.get(e)??1)-1;if(t>0){a.set(e,t);return}a.delete(e),n.delete(e)&&_(),u&&v({type:`unsubscribe`,topic:e})}},publish(e,t){return!u||!n.has(e)?!1:(v({type:`send`,topic:e,payload:t}),!0)},onStream:E,start(){return l=!0,T(),()=>{l=!1,h?.(),h=null;let e=c;c=null,u=!1,e?.close()}}}}var br=ke(null),xr=ke(null),Sr=ke(null),Cr={status:`poll`,pushed:()=>!1};function wr({children:e,enabled:t=!0,timer:n=gr,now:r=Date.now,url:i=_r}){let a=De(),[o]=Me(()=>yr({client:a,timer:n,now:r,url:i})),[s]=Me(()=>({subscribe:(e,t)=>o.hold(e,e=>{if(e.kind===`gap`){t({kind:`closed`});return}t(e)}),send:o.publish}));M(()=>{if(t)return o.start()},[o,t]);let c=Ne(o.subscribe,o.snapshot,o.snapshot);return N(br,{value:c,children:N(xr,{value:o.onStream,children:N(Sr,{value:s,children:e})})})}function Tr(){return Ae(br)??Cr}function Er(e,t){let n=Ae(xr),r=je(t);M(()=>{r.current=t}),M(()=>{if(n!==null)return n(e,e=>r.current(e))},[n,e])}function Dr(e,t){let n=Ae(Sr),r=je(t);M(()=>{r.current=t}),M(()=>{if(n!==null&&e!==null)return n.subscribe(e,e=>r.current(e))},[n,e])}function Or({children:e}){let t=Tr(),n=Ae(Sr);return N(be,{connection:t,...n===null?{}:{channels:n},children:e})}async function kr(e){return e.queryClient.ensureQueryData({queryKey:a.status,queryFn:()=>ge(`/api/status`),revalidateIfStale:!0})}function Ar(e){let t=e.principal;return e.authenticated!==!0||t==null?`/login`:t.kind===`client`?`/client`:t.kind===`admin`||t.kind===`viewer`?`/`:`/login`}function jr(e,t){let n=Ar(e);if(n===`/login`)throw ue({to:`/login`,search:{next:t}});if(n!==`/`)throw ue({to:n})}function Mr(e,t){let n=Ar(e);if(n===`/login`)throw ue({to:`/login`,search:{next:t}});if(n!==`/client`)throw ue({to:n})}var Nr=O(`/_app`)({beforeLoad:async({context:e,location:t})=>{jr(await kr(e),t.href),await e.queryClient.ensureQueryData(r)},pendingComponent:Pr,pendingMs:200,errorComponent:D(()=>k(()=>import(`./_app-Drf03PWk.js`),__vite__mapDeps([0,1])),`errorComponent`),component:Fr});function Pr(){return N(ve,{legend:`Console`,children:N(he,{rows:6})})}function Fr(){let e=s().data??[];return N(wr,{children:P(Or,{children:[N(xe,{$providers:e}),N(Se,{children:N(Un,{})})]})})}var Ir=O(`/client`)({beforeLoad:async({context:e,location:t})=>{Mr(await kr(e),t.href)},component:D(()=>k(()=>import(`./client-
|
|
14
|
+
`,tr=ce()({component:Un,notFoundComponent:()=>N($n,{children:P(fe,{$gap:3,style:{alignItems:`center`},children:[N(me,{children:`Not found`}),N(er,{children:`This console has no screen at that address.`}),N(pe,{as:`a`,href:`/`,$variant:`primary`,$size:`sm`,children:`Back to the rack`})]})})}),nr=`stream:console`,rr={"res:usage":{predicate:e=>e.queryKey[0]===`usage`||e.queryKey[0]===`client`&&(e.queryKey[1]===`usage`||e.queryKey[1]===`summary`)},"res:logs":{predicate:e=>e.queryKey[0]===`logs`&&e.queryKey[1]!==`body`||e.queryKey[0]===`client`&&e.queryKey[1]===`logs`||(e.queryKey[0]===`logPages`||e.queryKey[0]===`client`&&e.queryKey[1]===`logPages`)&&p(e.state.data)},"res:credentials":{queryKey:a.credentials},"res:keys":{queryKey:a.keys},"res:settings":{queryKey:a.settings},"res:models":{queryKey:a.models},"res:quota":{predicate:e=>e.queryKey[0]===`quota-history`||e.queryKey[0]===`credentials`&&e.queryKey[1]===`health`},[nr]:{queryKey:[`console`]}},ir=Object.keys(rr),ar=ir.filter(e=>e.startsWith(`res:`)),or=ir.filter(e=>e.startsWith(`stream:`));function sr(e,t){if(t===`res:*`){lr(e);return}let n=rr[t];n!==void 0&&e.invalidateQueries(n)}function cr(e){for(let t of ir)sr(e,t)}function lr(e){e.invalidateQueries()}var ur=4401,dr=500,fr=3e4,pr=new Set([...ar,...or]),mr=3,hr=6e4,gr=(e,t)=>{let n=setTimeout(e,t);return()=>clearTimeout(n)};function _r(){let{protocol:e,host:t}=window.location;return`${e===`https:`?`wss:`:`ws:`}//${t}/api/stream`}function vr(e){if(typeof e!=`string`)return null;let t;try{t=JSON.parse(e)}catch{return null}if(typeof t!=`object`||!t||Array.isArray(t))return null;let n=t,{type:r,topic:i,seq:a}=n;return typeof r!=`string`||i!==void 0&&typeof i!=`string`||a!==void 0&&typeof a!=`number`?null:{type:r,...typeof i==`string`?{topic:i}:{},...typeof a==`number`?{seq:a}:{},...`payload`in n?{payload:n.payload}:{}}}function yr(e){let t=new Set,n=new Set,r=new Map,i=new Map,a=new Map,o=e=>a.has(e)||pr.has(e),s=[],c=null,l=!1,u=!1,d=!1,f=!1,p=!1,m=0,h=null,g={status:`poll`,pushed:()=>!1};function _(){let e=p?`offline`:u&&!f?`push`:`poll`,r=e===`push`;g={status:e,pushed:e=>r&&n.has(e)};for(let e of t)e()}function v(e){c?.send(JSON.stringify(e))}function y(e,t){let n=i.get(e);if(n===void 0||n.size===0)return!1;for(let e of[...n])e(t);return!0}function b(){for(let e of ar)v({type:`subscribe`,topic:e});for(let e of or){let t=r.get(e);v(t===void 0?{type:`subscribe`,topic:e}:{type:`subscribe`,topic:e,sinceSeq:t})}for(let e of a.keys())v({type:`subscribe`,topic:e})}function x(){u=!0,m=0,n.clear(),d&&cr(e.client),d=!0,b(),_()}function S(t){let i=vr(t.data);if(i===null)return;let{topic:a}=i;if(i.type===`ack`){a!==void 0&&o(a)&&(n.add(a),y(a,{kind:`open`}),_());return}if(i.type===`error`){a!==void 0&&(n.delete(a)&&_(),y(a,{kind:`refused`}));return}if(a!==void 0){if(i.type===`gap`){i.seq!==void 0&&r.set(a,i.seq),y(a,{kind:`gap`}),sr(e.client,a);return}if(i.type===`event`){if(a===`res:*`){lr(e.client);return}if(i.seq!==void 0){let t=r.get(a);if(r.set(a,i.seq),t!==void 0&&i.seq>t+1){y(a,{kind:`gap`}),sr(e.client,a);return}}i.payload!==void 0&&y(a,{kind:`frame`,payload:i.payload})||sr(e.client,a)}}}function C(t){let r=u;u=!1,c=null,n.clear();for(let e of[...i.keys()])y(e,{kind:`closed`});if(l){if(t.code===ur){p=!0,l=!1,_(),lr(e.client);return}if(!r)f=!0;else{let t=e.now();s=[...s.filter(e=>e>t-hr),t],s.length>=mr&&(f=!0)}_(),w()}}function w(){let t=Math.min(fr,dr*2**m);m+=1,h=e.timer(()=>{h=null,l&&T()},t)}function T(){let t=new WebSocket(e.url());c=t,t.addEventListener(`open`,x),t.addEventListener(`message`,S),t.addEventListener(`close`,C)}function E(e,t){let n=i.get(e)??new Set;return i.set(e,n),n.add(t),()=>{n.delete(t),n.size===0&&i.delete(e)}}return{subscribe(e){return t.add(e),()=>{t.delete(e)}},snapshot:()=>g,hold(e,t){let r=E(e,t),i=(a.get(e)??0)+1;a.set(e,i),i===1&&u&&v({type:`subscribe`,topic:e}),n.has(e)&&t({kind:`open`});let o=!1;return()=>{if(o)return;o=!0,r();let t=(a.get(e)??1)-1;if(t>0){a.set(e,t);return}a.delete(e),n.delete(e)&&_(),u&&v({type:`unsubscribe`,topic:e})}},publish(e,t){return!u||!n.has(e)?!1:(v({type:`send`,topic:e,payload:t}),!0)},onStream:E,start(){return l=!0,T(),()=>{l=!1,h?.(),h=null;let e=c;c=null,u=!1,e?.close()}}}}var br=ke(null),xr=ke(null),Sr=ke(null),Cr={status:`poll`,pushed:()=>!1};function wr({children:e,enabled:t=!0,timer:n=gr,now:r=Date.now,url:i=_r}){let a=De(),[o]=Me(()=>yr({client:a,timer:n,now:r,url:i})),[s]=Me(()=>({subscribe:(e,t)=>o.hold(e,e=>{if(e.kind===`gap`){t({kind:`closed`});return}t(e)}),send:o.publish}));M(()=>{if(t)return o.start()},[o,t]);let c=Ne(o.subscribe,o.snapshot,o.snapshot);return N(br,{value:c,children:N(xr,{value:o.onStream,children:N(Sr,{value:s,children:e})})})}function Tr(){return Ae(br)??Cr}function Er(e,t){let n=Ae(xr),r=je(t);M(()=>{r.current=t}),M(()=>{if(n!==null)return n(e,e=>r.current(e))},[n,e])}function Dr(e,t){let n=Ae(Sr),r=je(t);M(()=>{r.current=t}),M(()=>{if(n!==null&&e!==null)return n.subscribe(e,e=>r.current(e))},[n,e])}function Or({children:e}){let t=Tr(),n=Ae(Sr);return N(be,{connection:t,...n===null?{}:{channels:n},children:e})}async function kr(e){return e.queryClient.ensureQueryData({queryKey:a.status,queryFn:()=>ge(`/api/status`),revalidateIfStale:!0})}function Ar(e){let t=e.principal;return e.authenticated!==!0||t==null?`/login`:t.kind===`client`?`/client`:t.kind===`admin`||t.kind===`viewer`?`/`:`/login`}function jr(e,t){let n=Ar(e);if(n===`/login`)throw ue({to:`/login`,search:{next:t}});if(n!==`/`)throw ue({to:n})}function Mr(e,t){let n=Ar(e);if(n===`/login`)throw ue({to:`/login`,search:{next:t}});if(n!==`/client`)throw ue({to:n})}var Nr=O(`/_app`)({beforeLoad:async({context:e,location:t})=>{jr(await kr(e),t.href),await e.queryClient.ensureQueryData(r)},pendingComponent:Pr,pendingMs:200,errorComponent:D(()=>k(()=>import(`./_app-Drf03PWk.js`),__vite__mapDeps([0,1])),`errorComponent`),component:Fr});function Pr(){return N(ve,{legend:`Console`,children:N(he,{rows:6})})}function Fr(){let e=s().data??[];return N(wr,{children:P(Or,{children:[N(xe,{$providers:e}),N(Se,{children:N(Un,{})})]})})}var Ir=O(`/client`)({beforeLoad:async({context:e,location:t})=>{Mr(await kr(e),t.href)},component:D(()=>k(()=>import(`./client-k1tkFSNH.js`),__vite__mapDeps([2,3,4,1,5,6,7,8,9,10,11,12,13,14,15,16,17])),`component`)}),Lr=O(`/login`)({validateSearch:e=>({...typeof e.next==`string`?{next:e.next}:{},...typeof e.reason==`string`?{reason:e.reason}:{}}),component:D(()=>k(()=>import(`./login-DW2Ipp21.js`),__vite__mapDeps([18,4,1,11,19])),`component`)}),Rr=O(`/_app/`)({component:D(()=>k(()=>import(`./_app.index-DigYfob3.js`),__vite__mapDeps([20,4,1,5,7,10,14,12,17])),`component`)}),zr=O(`/_app/accounts`)({component:D(()=>k(()=>import(`./_app.accounts-W1USUo2Q.js`),__vite__mapDeps([21,4,1,5,22,13,8,23,24,25,9,10,11,14,12,15,3])),`component`)}),Br=O(`/_app/console`)({component:D(()=>k(()=>import(`./_app.console-Co9d2ZiD.js`),__vite__mapDeps([26,4,1,5,11])),`component`)}),Vr=O(`/_app/database`)({component:D(()=>k(()=>import(`./_app.database-CtFJLcfE.js`),__vite__mapDeps([27,4,1,5,24,11,14,12,17,19])),`component`)}),Hr=O(`/_app/keys`)({component:D(()=>k(()=>import(`./_app.keys-B1fRMyU-.js`),__vite__mapDeps([28,4,1,5,22,13,8,23,25,9,10,11,14,12])),`component`)}),Ur=O(`/_app/logs`)({component:D(()=>k(()=>import(`./_app.logs-CFixPsUw.js`),__vite__mapDeps([29,4,1,5,6,7,8,9,10,11,12])),`component`)}),Wr=O(`/_app/models`)({component:D(()=>k(()=>import(`./_app.models-Dpl1O2RE.js`),__vite__mapDeps([30,4,1,5,23,24,25,9,10,11,14])),`component`)}),Gr=O(`/_app/settings`)({component:D(()=>k(()=>import(`./_app.settings-C3GzeJ4q.js`),__vite__mapDeps([31,4,1,5,25,9,11,14,19])),`component`)}),Kr=O(`/_app/usage`)({component:D(()=>k(()=>import(`./_app.usage-D2qlcEp4.js`),__vite__mapDeps([32,3,4,1,5,12,16,17])),`component`)}),qr=O(`/_app/plugins/$pluginId`)({component:D(()=>k(()=>import(`./_app.plugins._pluginId-BK0ADugW.js`),__vite__mapDeps([33,4,1,34,5])),`component`)}),$=Nr.update({id:`/_app`,getParentRoute:()=>tr}),Jr=Ir.update({id:`/client`,path:`/client`,getParentRoute:()=>tr}),Yr=Lr.update({id:`/login`,path:`/login`,getParentRoute:()=>tr}),Xr=Rr.update({id:`/`,path:`/`,getParentRoute:()=>$}),Zr={AppAccountsRoute:zr.update({id:`/accounts`,path:`/accounts`,getParentRoute:()=>$}),AppConsoleRoute:Br.update({id:`/console`,path:`/console`,getParentRoute:()=>$}),AppDatabaseRoute:Vr.update({id:`/database`,path:`/database`,getParentRoute:()=>$}),AppKeysRoute:Hr.update({id:`/keys`,path:`/keys`,getParentRoute:()=>$}),AppLogsRoute:Ur.update({id:`/logs`,path:`/logs`,getParentRoute:()=>$}),AppModelsRoute:Wr.update({id:`/models`,path:`/models`,getParentRoute:()=>$}),AppSettingsRoute:Gr.update({id:`/settings`,path:`/settings`,getParentRoute:()=>$}),AppUsageRoute:Kr.update({id:`/usage`,path:`/usage`,getParentRoute:()=>$}),AppIndexRoute:Xr,AppPluginsPluginIdRoute:qr.update({id:`/plugins/$pluginId`,path:`/plugins/$pluginId`,getParentRoute:()=>$})},Qr={AppRoute:$._addFileChildren(Zr),ClientRoute:Jr,LoginRoute:Yr},$r=tr._addFileChildren(Qr)._addFileTypes();function ei(e){return{isLoginRoute:()=>e().state.location.pathname===`/login`,onUnauthenticated:()=>void e().navigate({to:`/login`,search:{next:e().state.location.href}})}}function ti(e){let t=t=>{t instanceof _e&&t.isUnauthenticated&&(e.isLoginRoute()||e.onUnauthenticated())};return new Te({queryCache:new we({onError:t}),mutationCache:new Ce({onError:t}),defaultOptions:{queries:{retry:(e,t)=>t instanceof _e&&t.isUnauthenticated?!1:e<2,staleTime:5e3,refetchOnWindowFocus:!0},mutations:{retry:!1}}})}var ni,ri=ti(ei(()=>ni));ni=Yn({routeTree:$r,context:{queryClient:ri}});var ii=document.getElementById(`root`);if(ii===null)throw Error(`#root is missing from index.html`);Fe(ii).render(N(Oe,{children:N(ye,{children:N(Ee,{client:ri,children:N(Qn,{router:ni})})})}));export{Dr as a,sr as c,Or as i,Lr as n,Er as o,wr as r,nr as s,qr as t};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{Et as e,Xt as t,nn as n,qt as r,t as i}from"./Lamp-DkvXKB-B.js";import{C as a,D as o,E as s,_ as c,b as l,n as u,o as d}from"./Panel-CWmOTDAP.js";import{n as f}from"./index-
|
|
1
|
+
import{Et as e,Xt as t,nn as n,qt as r,t as i}from"./Lamp-DkvXKB-B.js";import{C as a,D as o,E as s,_ as c,b as l,n as u,o as d}from"./Panel-CWmOTDAP.js";import{n as f}from"./index-Bk9sabex.js";import{n as p,t as m}from"./Field-BYBri2NV.js";import{t as h}from"./reasons-Du1OBWAM.js";import{useState as g}from"react";import{jsx as _,jsxs as v}from"react/jsx-runtime";import y from"styled-components";var b=y.div`
|
|
2
2
|
display: flex;
|
|
3
3
|
align-items: center;
|
|
4
4
|
justify-content: center;
|
package/public/index.html
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
<link rel="icon" href="/favicon.svg" type="image/svg+xml" />
|
|
10
10
|
<title>OmniGateway — One endpoint in front of the AI accounts you already pay for.</title>
|
|
11
11
|
<script type="importmap">{"imports":{"react":"/shared/react.js","react/jsx-runtime":"/shared/jsx-runtime.js","react-dom":"/shared/react-dom.js","react-dom/client":"/shared/react-dom-client.js","styled-components":"/shared/styled-components.js","@tanstack/react-query":"/shared/react-query.js","@omnigateway/dashboard-sdk":"/shared/dashboard-sdk.js"}}</script>
|
|
12
|
-
<script type="module" crossorigin src="/assets/index-
|
|
12
|
+
<script type="module" crossorigin src="/assets/index-Bk9sabex.js"></script>
|
|
13
13
|
<link rel="modulepreload" crossorigin href="/assets/Panel-CWmOTDAP.js">
|
|
14
14
|
<link rel="modulepreload" crossorigin href="/assets/Lamp-DkvXKB-B.js">
|
|
15
15
|
<link rel="modulepreload" crossorigin href="/assets/preload-helper-BPaHpbO_.js">
|