landsraad 2026.5.26 → 2026.5.28
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 +23 -0
- package/bin/find-port.js +28 -0
- package/bin/find-port.test.js +49 -0
- package/bin/landsraad.js +122 -8
- package/bin/registry.js +76 -0
- package/bin/registry.test.js +66 -0
- package/build/client/_app/immutable/chunks/CqU5oOV9.js +3 -0
- package/build/client/_app/immutable/chunks/CqU5oOV9.js.br +0 -0
- package/build/client/_app/immutable/chunks/CqU5oOV9.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{DLiKHADc.js → DkJk5jU5.js} +1 -1
- package/build/client/_app/immutable/chunks/DkJk5jU5.js.br +0 -0
- package/build/client/_app/immutable/chunks/DkJk5jU5.js.gz +0 -0
- package/build/client/_app/immutable/entry/{app.DD1kOLGl.js → app.DBKJuPQb.js} +2 -2
- package/build/client/_app/immutable/entry/app.DBKJuPQb.js.br +0 -0
- package/build/client/_app/immutable/entry/app.DBKJuPQb.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.CK7DOEZH.js +1 -0
- package/build/client/_app/immutable/entry/start.CK7DOEZH.js.br +2 -0
- package/build/client/_app/immutable/entry/start.CK7DOEZH.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{0.-4MXudcf.js → 0.DHjtMrwQ.js} +1 -1
- package/build/client/_app/immutable/nodes/0.DHjtMrwQ.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.DHjtMrwQ.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{1.DKU6HyZp.js → 1.XwAIuiOy.js} +1 -1
- package/build/client/_app/immutable/nodes/1.XwAIuiOy.js.br +0 -0
- package/build/client/_app/immutable/nodes/1.XwAIuiOy.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{11.CizuD2hY.js → 11.C83nzbY0.js} +1 -1
- package/build/client/_app/immutable/nodes/{11.CizuD2hY.js.br → 11.C83nzbY0.js.br} +0 -0
- package/build/client/_app/immutable/nodes/11.C83nzbY0.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{2.5Usi-8ap.js → 2.UYgVyDLc.js} +1 -1
- package/build/client/_app/immutable/nodes/2.UYgVyDLc.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.UYgVyDLc.js.gz +0 -0
- package/build/client/_app/version.json +1 -1
- package/build/client/_app/version.json.br +0 -0
- package/build/client/_app/version.json.gz +0 -0
- package/build/server/chunks/{0-B9lYLtCD.js → 0-Dk-1k1n1.js} +2 -2
- package/build/server/chunks/{0-B9lYLtCD.js.map → 0-Dk-1k1n1.js.map} +1 -1
- package/build/server/chunks/{1-8z_uS4rW.js → 1-D9Hut4X5.js} +2 -2
- package/build/server/chunks/{1-8z_uS4rW.js.map → 1-D9Hut4X5.js.map} +1 -1
- package/build/server/chunks/{10-DT7WpNv8.js → 10-CppTJVjZ.js} +2 -2
- package/build/server/chunks/{10-DT7WpNv8.js.map → 10-CppTJVjZ.js.map} +1 -1
- package/build/server/chunks/{11-i3JHJO3Z.js → 11-HPLKRqq9.js} +3 -3
- package/build/server/chunks/{11-i3JHJO3Z.js.map → 11-HPLKRqq9.js.map} +1 -1
- package/build/server/chunks/{14--OzrnWBR.js → 14-APg11cvD.js} +2 -2
- package/build/server/chunks/{14--OzrnWBR.js.map → 14-APg11cvD.js.map} +1 -1
- package/build/server/chunks/{2-BH6qfkrk.js → 2-BiIRrIqN.js} +4 -4
- package/build/server/chunks/{2-BH6qfkrk.js.map → 2-BiIRrIqN.js.map} +1 -1
- package/build/server/chunks/_server.ts-DDbq6YGY.js +63 -0
- package/build/server/chunks/_server.ts-DDbq6YGY.js.map +1 -0
- package/build/server/chunks/_server.ts-zVWWvZM1.js +91 -0
- package/build/server/chunks/_server.ts-zVWWvZM1.js.map +1 -0
- package/build/server/chunks/{hooks.server-DfVAoLKI.js → hooks.server-B1oGWSfD.js} +3 -3
- package/build/server/chunks/{hooks.server-DfVAoLKI.js.map → hooks.server-B1oGWSfD.js.map} +1 -1
- package/build/server/chunks/{runner-C4cFunmr.js → runner-afLcDiAR.js} +7 -1
- package/build/server/chunks/runner-afLcDiAR.js.map +1 -0
- package/build/server/chunks/{scheduler-DmqFWmAr.js → scheduler-C2r1k-rP.js} +2 -2
- package/build/server/chunks/{scheduler-DmqFWmAr.js.map → scheduler-C2r1k-rP.js.map} +1 -1
- package/build/server/index.js +2 -2
- package/build/server/index.js.map +1 -1
- package/build/server/manifest.js +21 -7
- package/build/server/manifest.js.map +1 -1
- package/package.json +1 -1
- package/build/client/_app/immutable/chunks/BqM_MgRt.js +0 -3
- package/build/client/_app/immutable/chunks/BqM_MgRt.js.br +0 -0
- package/build/client/_app/immutable/chunks/BqM_MgRt.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DLiKHADc.js.br +0 -0
- package/build/client/_app/immutable/chunks/DLiKHADc.js.gz +0 -0
- package/build/client/_app/immutable/entry/app.DD1kOLGl.js.br +0 -0
- package/build/client/_app/immutable/entry/app.DD1kOLGl.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.BTyyW4cV.js +0 -1
- package/build/client/_app/immutable/entry/start.BTyyW4cV.js.br +0 -2
- package/build/client/_app/immutable/entry/start.BTyyW4cV.js.gz +0 -0
- package/build/client/_app/immutable/nodes/0.-4MXudcf.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.-4MXudcf.js.gz +0 -0
- package/build/client/_app/immutable/nodes/1.DKU6HyZp.js.br +0 -0
- package/build/client/_app/immutable/nodes/1.DKU6HyZp.js.gz +0 -0
- package/build/client/_app/immutable/nodes/11.CizuD2hY.js.gz +0 -0
- package/build/client/_app/immutable/nodes/2.5Usi-8ap.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.5Usi-8ap.js.gz +0 -0
- package/build/server/chunks/runner-C4cFunmr.js.map +0 -1
package/README.md
CHANGED
|
@@ -54,6 +54,29 @@ Honors `LANDSRAAD_COUNCIL_ROOT` (so `LANDSRAAD_COUNCIL_ROOT=./dogfood npm run re
|
|
|
54
54
|
| Env var | Default | Purpose |
|
|
55
55
|
|---|---|---|
|
|
56
56
|
| `LANDSRAAD_COUNCIL_ROOT` | `process.cwd()` | The directory Landsraad treats as the council root. |
|
|
57
|
+
| `PORT` | `10191` | Starting port the production server (`npx landsraad`) listens on. If the port is already in use it scans up to 100 ports forward and binds the next free one — running multiple councils in parallel just works. |
|
|
58
|
+
| `LANDSRAAD_INSTANCES_FILE` | `~/.landsraad/instances.json` | Cross-instance registry. Each running `npx landsraad` writes its `{ pid, port, cwd, startedAt }` here on listen and removes it on shutdown; dead entries are pruned lazily on read. |
|
|
59
|
+
|
|
60
|
+
When you run `npx landsraad`, the server opens your default browser to the council URL once it's listening. Set `PORT` to override the starting port.
|
|
61
|
+
|
|
62
|
+
## Running instance registry
|
|
63
|
+
|
|
64
|
+
`GET /api/instances` returns the live set of running Landsraad processes on this machine:
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
curl http://localhost:10191/api/instances
|
|
68
|
+
# { "instances": [ { "pid": 12345, "port": 10191, "cwd": "...", "startedAt": "2026-..." }, ... ] }
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
The registry is shared via the file at `LANDSRAAD_INSTANCES_FILE`, so each instance sees the others. Crashed processes are pruned by PID liveness on every read.
|
|
72
|
+
|
|
73
|
+
## API discovery
|
|
74
|
+
|
|
75
|
+
`GET /api/openapi.json` returns an OpenAPI 3.1 document describing the JSON `/api/*` surface — handy for tooling, codegen, or quick discovery:
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
curl http://localhost:10191/api/openapi.json | jq .paths
|
|
79
|
+
```
|
|
57
80
|
|
|
58
81
|
## Tests
|
|
59
82
|
|
package/bin/find-port.js
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { createServer } from 'node:net';
|
|
2
|
+
|
|
3
|
+
function probePort(port) {
|
|
4
|
+
return new Promise((resolve) => {
|
|
5
|
+
const srv = createServer();
|
|
6
|
+
srv.once('error', () => resolve(false));
|
|
7
|
+
srv.once('listening', () => {
|
|
8
|
+
srv.close(() => resolve(true));
|
|
9
|
+
});
|
|
10
|
+
try {
|
|
11
|
+
srv.listen(port, '0.0.0.0');
|
|
12
|
+
} catch {
|
|
13
|
+
resolve(false);
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export async function findFreePort(start, max = 100) {
|
|
19
|
+
const begin = Number(start);
|
|
20
|
+
if (!Number.isInteger(begin) || begin < 1 || begin > 65535) {
|
|
21
|
+
throw new RangeError(`invalid start port: ${start}`);
|
|
22
|
+
}
|
|
23
|
+
const limit = Math.min(begin + max, 65536);
|
|
24
|
+
for (let p = begin; p < limit; p++) {
|
|
25
|
+
if (await probePort(p)) return p;
|
|
26
|
+
}
|
|
27
|
+
throw new Error(`No free port in [${begin}, ${limit})`);
|
|
28
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { describe, it, expect, afterEach } from 'vitest';
|
|
2
|
+
import { createServer } from 'node:net';
|
|
3
|
+
import { findFreePort } from './find-port.js';
|
|
4
|
+
|
|
5
|
+
const openServers = [];
|
|
6
|
+
|
|
7
|
+
function occupy(port) {
|
|
8
|
+
return new Promise((resolve, reject) => {
|
|
9
|
+
const srv = createServer();
|
|
10
|
+
srv.once('error', reject);
|
|
11
|
+
srv.listen(port, '0.0.0.0', () => {
|
|
12
|
+
openServers.push(srv);
|
|
13
|
+
resolve(srv);
|
|
14
|
+
});
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
function closeAll() {
|
|
19
|
+
return Promise.all(
|
|
20
|
+
openServers.splice(0).map(
|
|
21
|
+
(srv) => new Promise((resolve) => srv.close(() => resolve()))
|
|
22
|
+
)
|
|
23
|
+
);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
afterEach(closeAll);
|
|
27
|
+
|
|
28
|
+
describe('findFreePort', () => {
|
|
29
|
+
it('returns start when start is free', async () => {
|
|
30
|
+
const start = 47100 + Math.floor(Math.random() * 200);
|
|
31
|
+
const port = await findFreePort(start);
|
|
32
|
+
expect(port).toBe(start);
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
it('increments past a taken port to the next free one', async () => {
|
|
36
|
+
const start = 47400 + Math.floor(Math.random() * 200);
|
|
37
|
+
await occupy(start);
|
|
38
|
+
const port = await findFreePort(start);
|
|
39
|
+
expect(port).toBeGreaterThan(start);
|
|
40
|
+
// ensure result is actually bindable
|
|
41
|
+
await occupy(port);
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
it('throws when no free port within max range', async () => {
|
|
45
|
+
const start = 47700 + Math.floor(Math.random() * 200);
|
|
46
|
+
await occupy(start);
|
|
47
|
+
await expect(findFreePort(start, 1)).rejects.toThrow(/no free port/i);
|
|
48
|
+
});
|
|
49
|
+
});
|
package/bin/landsraad.js
CHANGED
|
@@ -8,13 +8,42 @@ import { fileURLToPath } from 'node:url';
|
|
|
8
8
|
import { dirname, resolve } from 'node:path';
|
|
9
9
|
import { existsSync } from 'node:fs';
|
|
10
10
|
import { spawn } from 'node:child_process';
|
|
11
|
+
import { platform } from 'node:os';
|
|
12
|
+
import { findFreePort } from './find-port.js';
|
|
13
|
+
import { writeInstance, removeInstance } from './registry.js';
|
|
11
14
|
|
|
12
15
|
const here = dirname(fileURLToPath(import.meta.url));
|
|
13
16
|
const repoRoot = resolve(here, '..');
|
|
14
17
|
|
|
18
|
+
const DEFAULT_PORT = 10191;
|
|
19
|
+
const PORT_SCAN_RANGE = 100;
|
|
20
|
+
|
|
15
21
|
const [, , sub, ...rest] = process.argv;
|
|
16
22
|
|
|
17
|
-
function
|
|
23
|
+
function openInBrowser(url) {
|
|
24
|
+
const plat = platform();
|
|
25
|
+
let cmd;
|
|
26
|
+
let args;
|
|
27
|
+
if (plat === 'win32') {
|
|
28
|
+
cmd = 'cmd';
|
|
29
|
+
args = ['/c', 'start', '""', url];
|
|
30
|
+
} else if (plat === 'darwin') {
|
|
31
|
+
cmd = 'open';
|
|
32
|
+
args = [url];
|
|
33
|
+
} else {
|
|
34
|
+
cmd = 'xdg-open';
|
|
35
|
+
args = [url];
|
|
36
|
+
}
|
|
37
|
+
try {
|
|
38
|
+
const child = spawn(cmd, args, { stdio: 'ignore', detached: true });
|
|
39
|
+
child.on('error', () => {});
|
|
40
|
+
child.unref();
|
|
41
|
+
} catch {
|
|
42
|
+
// ignore — auto-open is best-effort
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
async function runBundled(relPath, { autoOpen = false } = {}) {
|
|
18
47
|
const entry = resolve(repoRoot, relPath);
|
|
19
48
|
if (!existsSync(entry)) {
|
|
20
49
|
console.error(
|
|
@@ -25,20 +54,105 @@ function runBundled(relPath) {
|
|
|
25
54
|
);
|
|
26
55
|
process.exit(1);
|
|
27
56
|
}
|
|
57
|
+
|
|
58
|
+
const env = { ...process.env, LANDSRAAD_PKG_ROOT: repoRoot };
|
|
59
|
+
if (autoOpen) {
|
|
60
|
+
const requested = Number.parseInt(env.PORT ?? '', 10);
|
|
61
|
+
const start = Number.isInteger(requested) && requested > 0 ? requested : DEFAULT_PORT;
|
|
62
|
+
try {
|
|
63
|
+
const chosen = await findFreePort(start, PORT_SCAN_RANGE);
|
|
64
|
+
if (chosen !== start) {
|
|
65
|
+
console.error(`Port ${start} in use, using ${chosen} instead.`);
|
|
66
|
+
}
|
|
67
|
+
env.PORT = String(chosen);
|
|
68
|
+
} catch (err) {
|
|
69
|
+
console.error(err.message);
|
|
70
|
+
process.exit(1);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
const stdio = autoOpen ? ['inherit', 'pipe', 'inherit'] : 'inherit';
|
|
75
|
+
|
|
28
76
|
const child = spawn(process.execPath, [entry, ...rest], {
|
|
29
|
-
stdio
|
|
30
|
-
env
|
|
77
|
+
stdio,
|
|
78
|
+
env,
|
|
31
79
|
cwd: process.cwd()
|
|
32
80
|
});
|
|
33
|
-
|
|
81
|
+
|
|
82
|
+
let registered = false;
|
|
83
|
+
const cleanup = async () => {
|
|
84
|
+
if (!registered) return;
|
|
85
|
+
registered = false;
|
|
86
|
+
try {
|
|
87
|
+
await removeInstance(child.pid);
|
|
88
|
+
} catch {
|
|
89
|
+
// best-effort
|
|
90
|
+
}
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
if (autoOpen) {
|
|
94
|
+
const onSignal = () => {
|
|
95
|
+
try {
|
|
96
|
+
child.kill();
|
|
97
|
+
} catch {
|
|
98
|
+
// ignore
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
process.once('SIGINT', onSignal);
|
|
102
|
+
process.once('SIGTERM', onSignal);
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
if (autoOpen && child.stdout) {
|
|
106
|
+
let opened = false;
|
|
107
|
+
child.stdout.on('data', (chunk) => {
|
|
108
|
+
process.stdout.write(chunk);
|
|
109
|
+
const text = chunk.toString();
|
|
110
|
+
if (!registered) {
|
|
111
|
+
const listenMatch = text.match(/Listening on\s+(https?:\/\/\S+)/i);
|
|
112
|
+
if (listenMatch) {
|
|
113
|
+
registered = true;
|
|
114
|
+
const portNum = Number.parseInt(env.PORT ?? '', 10);
|
|
115
|
+
writeInstance({
|
|
116
|
+
pid: child.pid,
|
|
117
|
+
port: Number.isInteger(portNum) ? portNum : null,
|
|
118
|
+
cwd: process.cwd(),
|
|
119
|
+
startedAt: new Date().toISOString()
|
|
120
|
+
}).catch(() => {
|
|
121
|
+
// best-effort registry write
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
if (opened) return;
|
|
126
|
+
const match = text.match(/Listening on\s+(https?:\/\/\S+)/i);
|
|
127
|
+
if (match) {
|
|
128
|
+
opened = true;
|
|
129
|
+
const raw = match[1];
|
|
130
|
+
const url = raw.replace(/^https?:\/\/(0\.0\.0\.0|\[::\]|\[::0\])/i, (m) =>
|
|
131
|
+
m.replace(/(0\.0\.0\.0|\[::\]|\[::0\])/i, 'localhost')
|
|
132
|
+
);
|
|
133
|
+
openInBrowser(url);
|
|
134
|
+
}
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
child.on('exit', async (code) => {
|
|
139
|
+
await cleanup();
|
|
140
|
+
process.exit(code ?? 0);
|
|
141
|
+
});
|
|
34
142
|
}
|
|
35
143
|
|
|
144
|
+
let task;
|
|
36
145
|
if (sub === 'init') {
|
|
37
|
-
runBundled('build/cli/template-install.mjs');
|
|
146
|
+
task = runBundled('build/cli/template-install.mjs');
|
|
38
147
|
} else if (sub === 'export') {
|
|
39
|
-
runBundled('build/cli/template-export.mjs');
|
|
148
|
+
task = runBundled('build/cli/template-export.mjs');
|
|
40
149
|
} else if (sub === 'reset') {
|
|
41
|
-
runBundled('build/cli/reset.mjs');
|
|
150
|
+
task = runBundled('build/cli/reset.mjs');
|
|
42
151
|
} else {
|
|
43
|
-
runBundled('build/index.js');
|
|
152
|
+
task = runBundled('build/index.js', { autoOpen: true });
|
|
44
153
|
}
|
|
154
|
+
|
|
155
|
+
task.catch((err) => {
|
|
156
|
+
console.error(err);
|
|
157
|
+
process.exit(1);
|
|
158
|
+
});
|
package/bin/registry.js
ADDED
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { readFile, writeFile, mkdir, rename, unlink } from 'node:fs/promises';
|
|
2
|
+
import { existsSync } from 'node:fs';
|
|
3
|
+
import { homedir } from 'node:os';
|
|
4
|
+
import { dirname, join } from 'node:path';
|
|
5
|
+
|
|
6
|
+
export function instancesFile() {
|
|
7
|
+
if (process.env.LANDSRAAD_INSTANCES_FILE) return process.env.LANDSRAAD_INSTANCES_FILE;
|
|
8
|
+
return join(homedir(), '.landsraad', 'instances.json');
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
function isAlive(pid) {
|
|
12
|
+
try {
|
|
13
|
+
process.kill(pid, 0);
|
|
14
|
+
return true;
|
|
15
|
+
} catch (err) {
|
|
16
|
+
// EPERM means the process exists but is owned by another user — still alive.
|
|
17
|
+
return err && err.code === 'EPERM';
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
async function readRaw() {
|
|
22
|
+
const file = instancesFile();
|
|
23
|
+
if (!existsSync(file)) return [];
|
|
24
|
+
try {
|
|
25
|
+
const text = await readFile(file, 'utf8');
|
|
26
|
+
if (!text.trim()) return [];
|
|
27
|
+
const parsed = JSON.parse(text);
|
|
28
|
+
return Array.isArray(parsed) ? parsed : [];
|
|
29
|
+
} catch {
|
|
30
|
+
return [];
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
async function writeRaw(entries) {
|
|
35
|
+
const file = instancesFile();
|
|
36
|
+
await mkdir(dirname(file), { recursive: true });
|
|
37
|
+
const tmp = `${file}.${process.pid}.tmp`;
|
|
38
|
+
await writeFile(tmp, JSON.stringify(entries, null, 2) + '\n', 'utf8');
|
|
39
|
+
await rename(tmp, file);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export async function readInstances() {
|
|
43
|
+
const entries = await readRaw();
|
|
44
|
+
const live = entries.filter((e) => e && typeof e.pid === 'number' && isAlive(e.pid));
|
|
45
|
+
if (live.length !== entries.length) {
|
|
46
|
+
try {
|
|
47
|
+
await writeRaw(live);
|
|
48
|
+
} catch {
|
|
49
|
+
// best-effort prune
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return live;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
export async function writeInstance(entry) {
|
|
56
|
+
const entries = await readRaw();
|
|
57
|
+
const next = entries.filter((e) => e && e.pid !== entry.pid);
|
|
58
|
+
next.push(entry);
|
|
59
|
+
await writeRaw(next);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
export async function removeInstance(pid) {
|
|
63
|
+
const entries = await readRaw();
|
|
64
|
+
const next = entries.filter((e) => e && e.pid !== pid);
|
|
65
|
+
if (next.length === entries.length) return;
|
|
66
|
+
if (next.length === 0) {
|
|
67
|
+
const file = instancesFile();
|
|
68
|
+
try {
|
|
69
|
+
await unlink(file);
|
|
70
|
+
return;
|
|
71
|
+
} catch {
|
|
72
|
+
// fallthrough to writeRaw
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
await writeRaw(next);
|
|
76
|
+
}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { describe, it, expect, beforeEach, afterEach } from 'vitest';
|
|
2
|
+
import { mkdtempSync, rmSync } from 'node:fs';
|
|
3
|
+
import { tmpdir } from 'node:os';
|
|
4
|
+
import { join } from 'node:path';
|
|
5
|
+
import { readInstances, writeInstance, removeInstance } from './registry.js';
|
|
6
|
+
|
|
7
|
+
let dir;
|
|
8
|
+
let file;
|
|
9
|
+
let prevEnv;
|
|
10
|
+
|
|
11
|
+
beforeEach(() => {
|
|
12
|
+
dir = mkdtempSync(join(tmpdir(), 'landsraad-reg-'));
|
|
13
|
+
file = join(dir, 'instances.json');
|
|
14
|
+
prevEnv = process.env.LANDSRAAD_INSTANCES_FILE;
|
|
15
|
+
process.env.LANDSRAAD_INSTANCES_FILE = file;
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
afterEach(() => {
|
|
19
|
+
if (prevEnv === undefined) delete process.env.LANDSRAAD_INSTANCES_FILE;
|
|
20
|
+
else process.env.LANDSRAAD_INSTANCES_FILE = prevEnv;
|
|
21
|
+
rmSync(dir, { recursive: true, force: true });
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
describe('registry', () => {
|
|
25
|
+
it('returns [] when file does not exist', async () => {
|
|
26
|
+
expect(await readInstances()).toEqual([]);
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
it('writes and reads an entry', async () => {
|
|
30
|
+
await writeInstance({ pid: process.pid, port: 10191, cwd: '/tmp/a', startedAt: '2026-05-27T00:00:00Z' });
|
|
31
|
+
const list = await readInstances();
|
|
32
|
+
expect(list).toHaveLength(1);
|
|
33
|
+
expect(list[0]).toMatchObject({ pid: process.pid, port: 10191, cwd: '/tmp/a' });
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
it('upserts on duplicate pid (replaces entry)', async () => {
|
|
37
|
+
await writeInstance({ pid: process.pid, port: 10191, cwd: '/tmp/a', startedAt: '2026-05-27T00:00:00Z' });
|
|
38
|
+
await writeInstance({ pid: process.pid, port: 10192, cwd: '/tmp/b', startedAt: '2026-05-27T00:00:01Z' });
|
|
39
|
+
const list = await readInstances();
|
|
40
|
+
expect(list).toHaveLength(1);
|
|
41
|
+
expect(list[0].port).toBe(10192);
|
|
42
|
+
expect(list[0].cwd).toBe('/tmp/b');
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
it('removes an entry by pid', async () => {
|
|
46
|
+
await writeInstance({ pid: process.pid, port: 10191, cwd: '/tmp/a', startedAt: '2026-05-27T00:00:00Z' });
|
|
47
|
+
await removeInstance(process.pid);
|
|
48
|
+
expect(await readInstances()).toEqual([]);
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
it('prunes entries whose pid is no longer alive', async () => {
|
|
52
|
+
// Pick an unlikely-to-exist pid by scanning high range.
|
|
53
|
+
let deadPid = 999999;
|
|
54
|
+
for (; deadPid > 100000; deadPid--) {
|
|
55
|
+
try {
|
|
56
|
+
process.kill(deadPid, 0);
|
|
57
|
+
} catch {
|
|
58
|
+
break;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
await writeInstance({ pid: process.pid, port: 10191, cwd: '/tmp/a', startedAt: '2026-05-27T00:00:00Z' });
|
|
62
|
+
await writeInstance({ pid: deadPid, port: 10192, cwd: '/tmp/b', startedAt: '2026-05-27T00:00:00Z' });
|
|
63
|
+
const list = await readInstances();
|
|
64
|
+
expect(list.map((e) => e.pid)).toEqual([process.pid]);
|
|
65
|
+
});
|
|
66
|
+
});
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
var ut=e=>{throw TypeError(e)};var Wt=(e,t,n)=>t.has(e)||ut("Cannot "+n);var E=(e,t,n)=>(Wt(e,t,"read from private field"),n?n.call(e):t.get(e)),N=(e,t,n)=>t.has(e)?ut("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,n);import{ay as Be,aL as Jt,aY as O,a9 as x,aN as $,b1 as Ae,aT as Xt}from"./yaqX87Fw.js";import{a as dt}from"./BglvqQGi.js";const H=[];function Xe(e,t=Be){let n=null;const a=new Set;function r(s){if(Jt(e,s)&&(e=s,n)){const i=!H.length;for(const l of a)l[1](),H.push(l,e);if(i){for(let l=0;l<H.length;l+=2)H[l][0](H[l+1]);H.length=0}}}function c(s){r(s(e))}function o(s,i=Be){const l=[s,i];return a.add(l),a.size===1&&(n=t(r,c)||Be),s(e),()=>{a.delete(l),a.size===0&&n&&(n(),n=null)}}return{set:r,update:c,subscribe:o}}class Oe{constructor(t,n){this.status=t,typeof n=="string"?this.body={message:n}:n?this.body=n:this.body={message:`Error: ${t}`}}toString(){return JSON.stringify(this.body)}}class Ze{constructor(t,n){try{new Headers({location:n})}catch{throw new Error(`Invalid redirect location ${JSON.stringify(n)}: this string contains characters that cannot be used in HTTP headers`)}this.status=t,this.location=n}}class Qe extends Error{constructor(t,n,a){super(a),this.status=t,this.text=n}}new URL("sveltekit-internal://");function Zt(e,t){return e==="/"||t==="ignore"?e:t==="never"?e.endsWith("/")?e.slice(0,-1):e:t==="always"&&!e.endsWith("/")?e+"/":e}function Qt(e){return e.split("%25").map(decodeURI).join("%25")}function en(e){for(const t in e)e[t]=decodeURIComponent(e[t]);return e}function Me({href:e}){return e.split("#")[0]}function D(){}function tn(...e){let t=5381;for(const n of e)if(typeof n=="string"){let a=n.length;for(;a;)t=t*33^n.charCodeAt(--a)}else if(ArrayBuffer.isView(n)){const a=new Uint8Array(n.buffer,n.byteOffset,n.byteLength);let r=a.length;for(;r;)t=t*33^a[--r]}else throw new TypeError("value must be a string or TypedArray");return(t>>>0).toString(36)}new TextEncoder;function nn(e){const t=atob(e),n=new Uint8Array(t.length);for(let a=0;a<t.length;a++)n[a]=t.charCodeAt(a);return n}const rn=window.fetch;window.fetch=(e,t)=>((e instanceof Request?e.method:(t==null?void 0:t.method)||"GET")!=="GET"&&ne.delete(et(e)),rn(e,t));const ne=new Map;function an(e,t){const n=et(e,t),a=document.querySelector(n);if(a!=null&&a.textContent){a.remove();let{body:r,...c}=JSON.parse(a.textContent);const o=a.getAttribute("data-ttl");return o&&ne.set(n,{body:r,init:c,ttl:1e3*Number(o)}),a.getAttribute("data-b64")!==null&&(r=nn(r)),Promise.resolve(new Response(r,c))}return window.fetch(e,t)}function on(e,t,n){if(ne.size>0){const a=et(e,n),r=ne.get(a);if(r){if(performance.now()<r.ttl&&["default","force-cache","only-if-cached",void 0].includes(n==null?void 0:n.cache))return new Response(r.body,r.init);ne.delete(a)}}return window.fetch(t,n)}function et(e,t){let a=`script[data-sveltekit-fetched][data-url=${JSON.stringify(e instanceof Request?e.url:e)}]`;if(t!=null&&t.headers||t!=null&&t.body){const r=[];t.headers&&r.push([...new Headers(t.headers)].join(",")),t.body&&(typeof t.body=="string"||ArrayBuffer.isView(t.body))&&r.push(t.body),a+=`[data-hash="${tn(...r)}"]`}return a}const sn=/^(\[)?(\.\.\.)?(\w+)(?:=(\w+))?(\])?$/;function cn(e){const t=[];return{pattern:e==="/"?/^\/$/:new RegExp(`^${fn(e).map(a=>{const r=/^\[\.\.\.(\w+)(?:=(\w+))?\]$/.exec(a);if(r)return t.push({name:r[1],matcher:r[2],optional:!1,rest:!0,chained:!0}),"(?:/([^]*))?";const c=/^\[\[(\w+)(?:=(\w+))?\]\]$/.exec(a);if(c)return t.push({name:c[1],matcher:c[2],optional:!0,rest:!1,chained:!0}),"(?:/([^/]+))?";if(!a)return;const o=a.split(/\[(.+?)\](?!\])/);return"/"+o.map((i,l)=>{if(l%2){if(i.startsWith("x+"))return qe(String.fromCharCode(parseInt(i.slice(2),16)));if(i.startsWith("u+"))return qe(String.fromCharCode(...i.slice(2).split("-").map(g=>parseInt(g,16))));const d=sn.exec(i),[,u,p,h,f]=d;return t.push({name:h,matcher:f,optional:!!u,rest:!!p,chained:p?l===1&&o[0]==="":!1}),p?"([^]*?)":u?"([^/]*)?":"([^/]+?)"}return qe(i)}).join("")}).join("")}/?$`),params:t}}function ln(e){return e!==""&&!/^\([^)]+\)$/.test(e)}function fn(e){return e.slice(1).split("/").filter(ln)}function un(e,t,n){const a={},r=e.slice(1),c=r.filter(s=>s!==void 0);let o=0;for(let s=0;s<t.length;s+=1){const i=t[s];let l=r[s-o];if(i.chained&&i.rest&&o&&(l=r.slice(s-o,s+1).filter(d=>d).join("/"),o=0),l===void 0)if(i.rest)l="";else continue;if(!i.matcher||n[i.matcher](l)){a[i.name]=l;const d=t[s+1],u=r[s+1];d&&!d.rest&&d.optional&&u&&i.chained&&(o=0),!d&&!u&&Object.keys(a).length===c.length&&(o=0);continue}if(i.optional&&i.chained){o++;continue}return}if(!o)return a}function qe(e){return e.normalize().replace(/[[\]]/g,"\\$&").replace(/%/g,"%25").replace(/\//g,"%2[Ff]").replace(/\?/g,"%3[Ff]").replace(/#/g,"%23").replace(/[.*+?^${}()|\\]/g,"\\$&")}function dn({nodes:e,server_loads:t,dictionary:n,matchers:a}){const r=new Set(t);return Object.entries(n).map(([s,[i,l,d]])=>{const{pattern:u,params:p}=cn(s),h={id:s,exec:f=>{const g=u.exec(f);if(g)return un(g,p,a)},errors:[1,...d||[]].map(f=>e[f]),layouts:[0,...l||[]].map(o),leaf:c(i)};return h.errors.length=h.layouts.length=Math.max(h.errors.length,h.layouts.length),h});function c(s){const i=s<0;return i&&(s=~s),[i,e[s]]}function o(s){return s===void 0?s:[r.has(s),e[s]]}}function It(e,t=JSON.parse){try{return t(sessionStorage[e])}catch{}}function ht(e,t,n=JSON.stringify){const a=n(t);try{sessionStorage[e]=a}catch{}}var bt;const P=((bt=globalThis.__sveltekit_5aa5pz)==null?void 0:bt.base)??"";var kt;const hn=((kt=globalThis.__sveltekit_5aa5pz)==null?void 0:kt.assets)??P??"",pn="1779931213616",Tt="sveltekit:snapshot",Ut="sveltekit:scroll",Lt="sveltekit:states",gn="sveltekit:pageurl",J="sveltekit:history",oe="sveltekit:navigation",z={tap:1,hover:2,viewport:3,eager:4,off:-1,false:-1},xe=location.origin;function Pt(e){if(e instanceof URL)return e;let t=document.baseURI;if(!t){const n=document.getElementsByTagName("base");t=n.length?n[0].href:document.URL}return new URL(e,t)}function Y(){return{x:pageXOffset,y:pageYOffset}}function K(e,t){return e.getAttribute(`data-sveltekit-${t}`)}const pt={...z,"":z.hover};function Nt(e){let t=e.assignedSlot??e.parentNode;return(t==null?void 0:t.nodeType)===11&&(t=t.host),t}function jt(e,t){for(;e&&e!==t;){if(e.nodeName.toUpperCase()==="A"&&e.hasAttribute("href"))return e;e=Nt(e)}}function Ye(e,t,n){let a;try{if(a=new URL(e instanceof SVGAElement?e.href.baseVal:e.href,document.baseURI),n&&a.hash.match(/^#[^/]/)){const s=location.hash.split("#")[1]||"/";a.hash=`#${s}${a.hash}`}}catch{}const r=e instanceof SVGAElement?e.target.baseVal:e.target,c=!a||!!r||$e(a,t,n)||(e.getAttribute("rel")||"").split(/\s+/).includes("external"),o=(a==null?void 0:a.origin)===xe&&e.hasAttribute("download");return{url:a,external:c,target:r,download:o}}function Ee(e){let t=null,n=null,a=null,r=null,c=null,o=null,s=e;for(;s&&s!==document.documentElement;)a===null&&(a=K(s,"preload-code")),r===null&&(r=K(s,"preload-data")),t===null&&(t=K(s,"keepfocus")),n===null&&(n=K(s,"noscroll")),c===null&&(c=K(s,"reload")),o===null&&(o=K(s,"replacestate")),s=Nt(s);function i(l){switch(l){case"":case"true":return!0;case"off":case"false":return!1;default:return}}return{preload_code:pt[a??"off"],preload_data:pt[r??"off"],keepfocus:i(t),noscroll:i(n),reload:i(c),replace_state:i(o)}}function gt(e){const t=Xe(e);let n=!0;function a(){n=!0,t.update(o=>o)}function r(o){n=!1,t.set(o)}function c(o){let s;return t.subscribe(i=>{(s===void 0||n&&i!==s)&&o(s=i)})}return{notify:a,set:r,subscribe:c}}const Ot={v:D};function mn(){const{set:e,subscribe:t}=Xe(!1);let n;async function a(){clearTimeout(n);try{const r=await fetch(`${hn}/_app/version.json`,{headers:{pragma:"no-cache","cache-control":"no-cache"}});if(!r.ok)return!1;const o=(await r.json()).version!==pn;return o&&(e(!0),Ot.v(),clearTimeout(n)),o}catch{return!1}}return{subscribe:t,check:a}}function $e(e,t,n){return e.origin!==xe||!e.pathname.startsWith(t)?!0:n?e.pathname!==location.pathname:!1}function cr(e){}const _n=-1,wn=-2,yn=-3,vn=-4,bn=-5,kn=-6,An=-7,xt=2**32-1,Ge=xt-1;function En(e){return!(!Number.isInteger(e)||e<0||e>Ge)}function Sn(e){return!(!Number.isInteger(e)||e<0||e>xt)}function Rn(e){return Uint8Array.fromBase64(e).buffer}function In(e){return Uint8Array.from(Buffer.from(e,"base64")).buffer}function Tn(e){const t=atob(e),n=t.length,a=new Uint8Array(n);for(let r=0;r<n;r++)a[r]=t.charCodeAt(r);return a.buffer}const Un=typeof Uint8Array.fromBase64=="function";var At;const Ln=typeof process=="object"&&((At=process.versions)==null?void 0:At.node)!==void 0,Pn=Un?Rn:Ln?In:Tn;function Nn(e,t){if(typeof e=="number")return c(e,!0);if(!Array.isArray(e)||e.length===0)throw new Error("Invalid input");const n=e,a=Array(n.length);let r=null;function c(o,s=!1){if(o===_n)return;if(o===yn)return NaN;if(o===vn)return 1/0;if(o===bn)return-1/0;if(o===kn)return-0;if(s||typeof o!="number")throw new Error("Invalid input");if(o in a)return a[o];const i=n[o];if(!i||typeof i!="object")a[o]=i;else if(Array.isArray(i))if(typeof i[0]=="string"){const l=i[0],d=t&&Object.hasOwn(t,l)?t[l]:void 0;if(d){let u=i[1];if(typeof u!="number"&&(u=n.push(i[1])-1),r??(r=new Set),r.has(u))throw new Error("Invalid circular reference");return r.add(u),a[o]=d(c(u)),r.delete(u),a[o]}switch(l){case"Date":a[o]=new Date(i[1]);break;case"Set":const u=new Set;a[o]=u;for(let f=1;f<i.length;f+=1)u.add(c(i[f]));break;case"Map":const p=new Map;a[o]=p;for(let f=1;f<i.length;f+=2)p.set(c(i[f]),c(i[f+1]));break;case"RegExp":a[o]=new RegExp(i[1],i[2]);break;case"Object":{const f=i[1];if(typeof n[f]=="object"&&n[f][0]!=="BigInt")throw new Error("Invalid input");a[o]=Object(c(f));break}case"BigInt":a[o]=BigInt(i[1]);break;case"null":const h=Object.create(null);a[o]=h;for(let f=1;f<i.length;f+=2){if(i[f]==="__proto__")throw new Error("Cannot parse an object with a `__proto__` property");h[i[f]]=c(i[f+1])}break;case"Int8Array":case"Uint8Array":case"Uint8ClampedArray":case"Int16Array":case"Uint16Array":case"Float16Array":case"Int32Array":case"Uint32Array":case"Float32Array":case"Float64Array":case"BigInt64Array":case"BigUint64Array":case"DataView":{if(n[i[1]][0]!=="ArrayBuffer")throw new Error("Invalid data");const f=globalThis[l],g=c(i[1]);a[o]=i[2]!==void 0?new f(g,i[2],i[3]):new f(g);break}case"ArrayBuffer":{const f=i[1];if(typeof f!="string")throw new Error("Invalid ArrayBuffer encoding");const g=Pn(f);a[o]=g;break}case"Temporal.Duration":case"Temporal.Instant":case"Temporal.PlainDate":case"Temporal.PlainTime":case"Temporal.PlainDateTime":case"Temporal.PlainMonthDay":case"Temporal.PlainYearMonth":case"Temporal.ZonedDateTime":{const f=l.slice(9);a[o]=Temporal[f].from(i[1]);break}case"URL":{const f=new URL(i[1]);a[o]=f;break}case"URLSearchParams":{const f=new URLSearchParams(i[1]);a[o]=f;break}default:throw new Error(`Unknown type ${l}`)}}else if(i[0]===An){const l=i[1];if(!Sn(l))throw new Error("Invalid input");const d=[];a[o]=d,d[Ge]=void 0,delete d[Ge];for(let u=2;u<i.length;u+=2){const p=i[u];if(!En(p)||p>=l)throw new Error("Invalid input");d[p]=c(i[u+1])}d.length=l}else{const l=new Array(i.length);a[o]=l;for(let d=0;d<i.length;d+=1){const u=i[d];u!==wn&&(l[d]=c(u))}}else{const l={};a[o]=l;for(const d of Object.keys(i)){if(d==="__proto__")throw new Error("Cannot parse an object with a `__proto__` property");const u=i[d];l[d]=c(u)}}return a[o]}return c(0)}const $t=new Set(["load","prerender","csr","ssr","trailingSlash","config"]);[...$t];const jn=new Set([...$t]);[...jn];function On(e){return e.filter(t=>t!=null)}const xn="x-sveltekit-invalidated",$n="x-sveltekit-trailing-slash";function W(e,t){return e+"/"+t}function Se(e){return e instanceof Oe||e instanceof Qe?e.status:500}function Cn(e){return e instanceof Qe?e.text:"Internal Error"}let U,se,Fe;const Dn=dt.toString().includes("$$")||/function \w+\(\) \{\}/.test(dt.toString()),mt="a:";var fe,ue,de,he,pe,ge,me,_e,Et,we,St,ye,Rt;Dn?(U={data:{},form:null,error:null,params:{},route:{id:null},state:{},status:-1,url:new URL(mt)},se={current:null},Fe={current:!1}):(U=new(Et=class{constructor(){N(this,fe,O({}));N(this,ue,O(null));N(this,de,O(null));N(this,he,O({}));N(this,pe,O({id:null}));N(this,ge,O({}));N(this,me,O(-1));N(this,_e,O(new URL(mt)))}get data(){return x(E(this,fe))}set data(t){$(E(this,fe),t)}get form(){return x(E(this,ue))}set form(t){$(E(this,ue),t)}get error(){return x(E(this,de))}set error(t){$(E(this,de),t)}get params(){return x(E(this,he))}set params(t){$(E(this,he),t)}get route(){return x(E(this,pe))}set route(t){$(E(this,pe),t)}get state(){return x(E(this,ge))}set state(t){$(E(this,ge),t)}get status(){return x(E(this,me))}set status(t){$(E(this,me),t)}get url(){return x(E(this,_e))}set url(t){$(E(this,_e),t)}},fe=new WeakMap,ue=new WeakMap,de=new WeakMap,he=new WeakMap,pe=new WeakMap,ge=new WeakMap,me=new WeakMap,_e=new WeakMap,Et),se=new(St=class{constructor(){N(this,we,O(null))}get current(){return x(E(this,we))}set current(t){$(E(this,we),t)}},we=new WeakMap,St),Fe=new(Rt=class{constructor(){N(this,ye,O(!1))}get current(){return x(E(this,ye))}set current(t){$(E(this,ye),t)}},ye=new WeakMap,Rt),Ot.v=()=>Fe.current=!0);function tt(e){Object.assign(U,e)}const Bn="/__data.json",Mn=".html__data.json";function qn(e){return e.endsWith(".html")?e.replace(/\.html$/,Mn):e.replace(/\/$/,"")+Bn}async function*Fn(e){let t=!1,n="";const a=new TextDecoder;for(;;){let r=n.indexOf(`
|
|
2
|
+
`);for(;r!==-1;){const o=n.slice(0,r).trim();n=n.slice(r+1),o&&(yield JSON.parse(o)),r=n.indexOf(`
|
|
3
|
+
`)}if(t){const o=n.trim();o&&(yield JSON.parse(o));return}const c=await e.read();t=c.done,c.value&&(n+=a.decode(c.value,{stream:!0})),t&&(n+=a.decode())}}const Vn=new Set(["icon","shortcut icon","apple-touch-icon"]);let ee=null;const V=It(Ut)??{},ie=It(Tt)??{},F={url:gt({}),page:gt({}),navigating:Xe(null),updated:mn()};function nt(e){V[e]=Y()}function zn(e,t){let n=e+1;for(;V[n];)delete V[n],n+=1;for(n=t+1;ie[n];)delete ie[n],n+=1}function Q(e,t=!1){return t?location.replace(e.href):location.href=e.href,new Promise(D)}async function Ct(){if("serviceWorker"in navigator){const e=await navigator.serviceWorker.getRegistration(P||"/");e&&await e.update()}}let rt,He,Re,M,Ke,R;const Ie=[],Te=[];let b=null;function ce(){var e;(e=b==null?void 0:b.fork)==null||e.then(t=>t==null?void 0:t.discard()),b=null}const ke=new Map,Dt=new Set,Yn=new Set,re=new Set;let w={branch:[],error:null,url:null,nav:null},at=!1,Ue=!1,_t=!0,le=!1,te=!1,Bt=!1,ve=!1,ot,I,L,C;const ae=new Set;let Ve;const Le=new Map,Pe=new Map;async function dr(e,t,n){var c,o,s,i;globalThis.__sveltekit_5aa5pz&&(globalThis.__sveltekit_5aa5pz.query,globalThis.__sveltekit_5aa5pz.prerender),document.URL!==location.href&&(location.href=location.href),R=e,await((o=(c=e.hooks).init)==null?void 0:o.call(c)),rt=dn(e),M=document.documentElement,Ke=t,He=e.nodes[0],Re=e.nodes[1],He(),Re(),I=(s=history.state)==null?void 0:s[J],L=(i=history.state)==null?void 0:i[oe],I||(I=L=Date.now(),history.replaceState({...history.state,[J]:I,[oe]:L},""));const a=V[I];function r(){a&&(history.scrollRestoration="manual",scrollTo(a.x,a.y))}n?(r(),await nr(Ke,n)):(await X({type:"enter",url:Pt(R.hash?ar(new URL(location.href)):location.href),replace_state:!0}),r()),tr()}async function Gn(e=!0,t=!0){if(await(Ve||(Ve=Promise.resolve())),!Ve)return;Ve=null;const n=C={},a=await be(w.url,!0);ce();const r=new Map;if(ve){for(const o of Le.values())for(const{resource:s}of o.values())s.refresh();for(const[o,s]of Pe)for(const[i,{resource:l}]of s){const d=W(o,i),u=l.reconnect();u.catch(D),r.set(d,u)}}if(e){const o=U.state,s=a&&await ct(a);if(!s||n!==C)return;if(s.type==="redirect")return Ft(new URL(s.location,w.url).href,{replaceState:!0},1,n);t||(s.props.page.state=o),tt(s.props.page),w={...s.state,nav:w.nav},We(),ot.$set(s.props)}else We();const c=[];for(const o of Le.values())for(const{resource:s}of o.values())c.push(s);for(const[o,s]of Pe)for(const i of s.keys()){const l=W(o,i),d=r.get(l);d&&c.push(d)}await Promise.all(c).catch(D)}function We(){Ie.length=0,ve=!1}function Mt(e){Te.some(t=>t==null?void 0:t.snapshot)&&(ie[e]=Te.map(t=>{var n;return(n=t==null?void 0:t.snapshot)==null?void 0:n.capture()}))}function qt(e){var t;(t=ie[e])==null||t.forEach((n,a)=>{var r,c;(c=(r=Te[a])==null?void 0:r.snapshot)==null||c.restore(n)})}function wt(){nt(I),ht(Ut,V),Mt(L),ht(Tt,ie)}async function Ft(e,t,n,a){let r,c;t.invalidateAll&&ce(),await X({type:"goto",url:Pt(e),keepfocus:t.keepFocus,noscroll:t.noScroll,replace_state:t.replaceState,state:t.state,redirect_count:n,nav_token:a,accept:()=>{if(t.invalidateAll){ve=!0,r=new Set;for(const[o,s]of Le)for(const i of s.keys())r.add(W(o,i));c=new Set;for(const[o,s]of Pe)for(const i of s.keys())c.add(W(o,i))}t.invalidate&&t.invalidate.forEach(er)}}),t.invalidateAll&&Ae().then(Ae).then(()=>{for(const[o,s]of Le)for(const[i,{resource:l}]of s)r!=null&&r.has(W(o,i))&&l.refresh();for(const[o,s]of Pe)for(const[i,{resource:l}]of s)c!=null&&c.has(W(o,i))&&l.reconnect()})}async function Hn(e){if(e.id!==(b==null?void 0:b.id)){ce();const t={};ae.add(t),b={id:e.id,token:t,promise:ct({...e,preload:t}).then(n=>(ae.delete(t),n.type==="loaded"&&n.state.error&&ce(),n)),fork:null}}return b.promise}async function ze(e){var n;const t=(n=await be(e,!1))==null?void 0:n.route;t&&await Promise.all([...t.layouts,t.leaf].filter(Boolean).map(a=>a[1]()))}async function Vt(e,t,n){var c;const a={params:w.params,route:{id:((c=w.route)==null?void 0:c.id)??null},url:new URL(location.href)};w={...e.state,nav:a};const r=document.querySelector("style[data-sveltekit]");if(r&&r.remove(),tt(e.props.page),ot=new R.root({target:t,props:{...e.props,stores:F,components:Te},hydrate:n,sync:!1,transformError:void 0}),await Promise.resolve(),qt(L),n){const o={from:null,to:{...a,scroll:V[I]??Y()},willUnload:!1,type:"enter",complete:Promise.resolve()};re.forEach(s=>s(o))}Ue=!0}async function Ne({url:e,params:t,branch:n,errors:a,status:r,error:c,route:o,form:s}){let i="never";if(P&&(e.pathname===P||e.pathname===P+"/"))i="always";else for(const f of n)(f==null?void 0:f.slash)!==void 0&&(i=f.slash);e.pathname=Zt(e.pathname,i),e.search=e.search;const l={type:"loaded",state:{url:e,params:t,branch:n,error:c,route:o},props:{constructors:On(n).map(f=>f.node.component),page:ft(U)}};s!==void 0&&(l.props.form=s);let d={},u=!U,p=0;for(let f=0;f<Math.max(n.length,w.branch.length);f+=1){const g=n[f],S=w.branch[f];(g==null?void 0:g.data)!==(S==null?void 0:S.data)&&(u=!0),g&&(d={...d,...g.data},u&&(l.props[`data_${p}`]=d),p+=1)}return(!w.url||e.href!==w.url.href||w.error!==c||s!==void 0&&s!==U.form||u)&&(l.props.page={error:c,params:t,route:{id:(o==null?void 0:o.id)??null},state:{},status:r,url:new URL(e),form:s??null,data:u?d:U.data}),l}async function st({loader:e,parent:t,url:n,params:a,route:r,server_data_node:c}){var l,d;let o=null;const s={dependencies:new Set,params:new Set,parent:!1,route:!1,url:!1,search_params:new Set},i=await e();return{node:i,loader:e,server:c,universal:(l=i.universal)!=null&&l.load?{type:"data",data:o,uses:s}:null,data:o??(c==null?void 0:c.data)??null,slash:((d=i.universal)==null?void 0:d.trailingSlash)??(c==null?void 0:c.slash)}}function Kn(e,t,n){let a=e instanceof Request?e.url:e;const r=new URL(a,n);r.origin===n.origin&&(a=r.href.slice(n.origin.length));const c=Ue?on(a,r.href,t):an(a,t);return{resolved:r,promise:c}}function yt(e,t,n,a,r,c){if(ve)return!0;if(!r)return!1;if(r.parent&&e||r.route&&t||r.url&&n)return!0;for(const o of r.search_params)if(a.has(o))return!0;for(const o of r.params)if(c[o]!==w.params[o])return!0;for(const o of r.dependencies)if(Ie.some(s=>s(new URL(o))))return!0;return!1}function it(e,t){return(e==null?void 0:e.type)==="data"?e:(e==null?void 0:e.type)==="skip"?t??null:null}function Wn(e,t){if(!e)return new Set(t.searchParams.keys());const n=new Set([...e.searchParams.keys(),...t.searchParams.keys()]);for(const a of n){const r=e.searchParams.getAll(a),c=t.searchParams.getAll(a);r.every(o=>c.includes(o))&&c.every(o=>r.includes(o))&&n.delete(a)}return n}function vt({error:e,url:t,route:n,params:a}){return{type:"loaded",state:{error:e,url:t,route:n,params:a,branch:[]},props:{page:ft(U),constructors:[]}}}async function ct({id:e,invalidating:t,url:n,params:a,route:r,preload:c}){if((b==null?void 0:b.id)===e)return ae.delete(b.token),b.promise;const{errors:o,layouts:s,leaf:i}=r,l=[...s,i];o.forEach(m=>m==null?void 0:m().catch(D)),l.forEach(m=>m==null?void 0:m[1]().catch(D));let d=null;const u=w.url?e!==je(w.url):!1,p=w.route?r.id!==w.route.id:!1,h=Wn(w.url,n);let f=!1;{const m=l.map((y,v)=>{var A;const k=w.branch[v],j=!!(y!=null&&y[0])&&((k==null?void 0:k.loader)!==y[1]||yt(f,p,u,h,(A=k.server)==null?void 0:A.uses,a));return j&&(f=!0),j});if(m.some(Boolean)){try{d=await Gt(n,m)}catch(y){const v=await Z(y,{url:n,params:a,route:{id:e}});return ae.has(c)?vt({error:v,url:n,params:a,route:r}):Ce({status:Se(y),error:v,url:n,route:r})}if(d.type==="redirect")return d}}const g=d==null?void 0:d.nodes;let S=!1;const _=l.map(async(m,y)=>{var A;if(!m)return;const v=w.branch[y],k=g==null?void 0:g[y];if((!k||k.type==="skip")&&m[1]===(v==null?void 0:v.loader)&&!yt(S,p,u,h,(A=v.universal)==null?void 0:A.uses,a))return v;if(S=!0,(k==null?void 0:k.type)==="error")throw k;return st({loader:m[1],url:n,params:a,route:r,parent:async()=>{var G;const q={};for(let B=0;B<y;B+=1)Object.assign(q,(G=await _[B])==null?void 0:G.data);return q},server_data_node:it(k===void 0&&m[0]?{type:"skip"}:k??null,m[0]?v==null?void 0:v.server:void 0)})});for(const m of _)m.catch(D);const T=[];for(let m=0;m<l.length;m+=1)if(l[m])try{T.push(await _[m])}catch(y){if(y instanceof Ze)return{type:"redirect",location:y.location};if(ae.has(c))return vt({error:await Z(y,{params:a,url:n,route:{id:r.id}}),url:n,params:a,route:r});let v=Se(y),k;if(g!=null&&g.includes(y))v=y.status??v,k=y.error;else if(y instanceof Oe)k=y.body;else{if(await F.updated.check())return await Ct(),await Q(n);k=await Z(y,{params:a,url:n,route:{id:r.id}})}const j=await Jn(m,T,o);return j?Ne({url:n,params:a,branch:T.slice(0,j.idx).concat(j.node),errors:o,status:v,error:k,route:r}):await Yt(n,{id:r.id},k,v)}else T.push(void 0);return Ne({url:n,params:a,branch:T,errors:o,status:200,error:null,route:r,form:t?void 0:null})}async function Jn(e,t,n){for(;e--;)if(n[e]){let a=e;for(;!t[a];)a-=1;try{return{idx:a+1,node:{node:await n[e](),loader:n[e],data:{},server:null,universal:null}}}catch{continue}}}async function Ce({status:e,error:t,url:n,route:a}){const r={};let c=null;if(R.server_loads[0]===0)try{const s=await Gt(n,[!0]);if(s.type!=="data"||s.nodes[0]&&s.nodes[0].type!=="data")throw 0;c=s.nodes[0]??null}catch{(n.origin!==xe||n.pathname!==location.pathname||at)&&await Q(n)}try{const o=await st({loader:He,url:n,params:r,route:a,parent:()=>Promise.resolve({}),server_data_node:it(c)}),s={node:await Re(),loader:Re,universal:null,server:null,data:null};return Ne({url:n,params:r,branch:[o,s],status:e,error:t,errors:[],route:null})}catch(o){if(o instanceof Ze)return Ft(new URL(o.location,location.href),{},0);throw o}}async function Xn(e){const t=e.href;if(ke.has(t))return ke.get(t);let n;try{const a=(async()=>{let r=await R.hooks.reroute({url:new URL(e),fetch:async(c,o)=>Kn(c,o,e).promise})??e;if(typeof r=="string"){const c=new URL(e);R.hash?c.hash=r:c.pathname=r,r=c}return r})();ke.set(t,a),n=await a}catch{ke.delete(t);return}return n}async function be(e,t){if(e&&!$e(e,P,R.hash)){const n=await Xn(e);if(!n)return;const a=Zn(n);for(const r of rt){const c=r.exec(a);if(c)return{id:je(e),invalidating:t,route:r,params:en(c),url:e}}}}function Zn(e){return Qt(R.hash?e.hash.replace(/^#/,"").replace(/[?#].+/,""):e.pathname.slice(P.length))||"/"}function je(e){return(R.hash?e.hash.replace(/^#/,""):e.pathname)+e.search}function zt({url:e,type:t,intent:n,delta:a,event:r,scroll:c}){let o=!1;const s=lt(w,n,e,t,c??null);a!==void 0&&(s.navigation.delta=a),r!==void 0&&(s.navigation.event=r);const i={...s.navigation,cancel:()=>{o=!0,s.reject(new Error("navigation cancelled"))}};return le||Dt.forEach(l=>l(i)),o?null:s}async function X({type:e,url:t,popped:n,keepfocus:a,noscroll:r,replace_state:c,state:o={},redirect_count:s=0,nav_token:i={},accept:l=D,block:d=D,event:u}){var j;const p=C;C=i;const h=await be(t,!1),f=e==="enter"?lt(w,h,t,e):zt({url:t,type:e,delta:n==null?void 0:n.delta,intent:h,scroll:n==null?void 0:n.scroll,event:u});if(!f){d(),C===i&&(C=p);return}const g=I,S=L;l(),le=!0,Ue&&f.navigation.type!=="enter"&&F.navigating.set(se.current=f.navigation);let _=h&&await ct(h);if(!_){if($e(t,P,R.hash))return await Q(t,c);_=await Yt(t,{id:null},await Z(new Qe(404,"Not Found",`Not found: ${t.pathname}`),{url:t,params:{},route:{id:null}}),404,c)}if(t=(h==null?void 0:h.url)||t,C!==i)return f.reject(new Error("navigation aborted")),!1;if(_.type==="redirect"){if(s<20){await X({type:e,url:new URL(_.location,t),popped:n,keepfocus:a,noscroll:r,replace_state:c,state:o,redirect_count:s+1,nav_token:i}),f.fulfil(void 0);return}_=await Ce({status:500,error:await Z(new Error("Redirect loop"),{url:t,params:{},route:{id:null}}),url:t,route:{id:null}})}else _.props.page.status>=400&&await F.updated.check()&&(await Ct(),await Q(t,c));if(We(),nt(g),Mt(S),_.props.page.url.pathname!==t.pathname&&(t.pathname=_.props.page.url.pathname),o=n?n.state:o,!n){const A=c?0:1,q={[J]:I+=A,[oe]:L+=A,[Lt]:o};(c?history.replaceState:history.pushState).call(history,q,"",t),c||zn(I,L)}const T=h&&(b==null?void 0:b.id)===h.id?b.fork:null;b!=null&&b.fork&&!T&&ce(),b=null,_.props.page.state=o;let m;if(Ue){const A=(await Promise.all(Array.from(Yn,B=>B(f.navigation)))).filter(B=>typeof B=="function");if(A.length>0){let B=function(){A.forEach(De=>{re.delete(De)})};A.push(B),A.forEach(De=>{re.add(De)})}const q=f.navigation.to;w={..._.state,nav:{params:q.params,route:q.route,url:q.url}},_.props.page&&(_.props.page.url=t);const G=T&&await T;G?m=G.commit():(ee=null,ot.$set(_.props),ee&&Object.assign(_.props.page,ee),tt(_.props.page),m=(j=Xt)==null?void 0:j()),Bt=!0}else await Vt(_,Ke,!1);const{activeElement:y}=document;if(await m,await Ae(),await Ae(),C!==i)return f.reject(new Error("navigation aborted")),!1;_.props.page&&ee&&Object.assign(_.props.page,ee);let v=null;if(_t){const A=n?n.scroll:r?Y():null;A?scrollTo(A.x,A.y):(v=t.hash&&document.getElementById(Kt(t)))?v.scrollIntoView():scrollTo(0,0)}const k=document.activeElement!==y&&document.activeElement!==document.body;!a&&!k&&rr(t,!v),_t=!0,le=!1,e==="popstate"&&qt(L),f.fulfil(void 0),f.navigation.to&&(f.navigation.to.scroll=Y()),re.forEach(A=>A(f.navigation)),F.navigating.set(se.current=null)}async function Yt(e,t,n,a,r){return e.origin===xe&&e.pathname===location.pathname&&!at?await Ce({status:a,error:n,url:e,route:t}):await Q(e,r)}function Qn(){let e,t={element:void 0,href:void 0},n;M.addEventListener("mousemove",s=>{const i=s.target;clearTimeout(e),e=setTimeout(()=>{c(i,z.hover)},20)});function a(s){s.defaultPrevented||c(s.composedPath()[0],z.tap)}M.addEventListener("mousedown",a),M.addEventListener("touchstart",a,{passive:!0});const r=new IntersectionObserver(s=>{for(const i of s)i.isIntersecting&&(ze(new URL(i.target.href)),r.unobserve(i.target))},{threshold:0});async function c(s,i){const l=jt(s,M),d=l===t.element&&(l==null?void 0:l.href)===t.href&&i>=n;if(!l||d)return;const{url:u,external:p,download:h}=Ye(l,P,R.hash);if(p||h)return;const f=Ee(l),g=u&&je(w.url)===je(u);if(!(f.reload||g))if(i<=f.preload_data){t={element:l,href:l.href},n=z.tap;const S=await be(u,!1);if(!S)return;Hn(S)}else i<=f.preload_code&&(t={element:l,href:l.href},n=i,ze(u))}function o(){r.disconnect();for(const s of M.querySelectorAll("a")){const{url:i,external:l,download:d}=Ye(s,P,R.hash);if(l||d)continue;const u=Ee(s);u.reload||(u.preload_code===z.viewport&&r.observe(s),u.preload_code===z.eager&&ze(i))}}re.add(o),o()}function Z(e,t){if(e instanceof Oe)return e.body;const n=Se(e),a=Cn(e);return R.hooks.handleError({error:e,event:t,status:n,message:a})??{message:a}}function er(e){if(typeof e=="function")Ie.push(e);else{const{href:t}=new URL(e,location.href);Ie.push(n=>n.href===t)}}function hr(){return ve=!0,Gn()}function tr(){var t;history.scrollRestoration="manual",addEventListener("beforeunload",n=>{let a=!1;if(wt(),!le){const r=lt(w,void 0,null,"leave"),c={...r.navigation,cancel:()=>{a=!0,r.reject(new Error("navigation cancelled"))}};Dt.forEach(o=>o(c))}a?(n.preventDefault(),n.returnValue=""):history.scrollRestoration="auto"}),addEventListener("visibilitychange",()=>{document.visibilityState==="hidden"&&wt()}),(t=navigator.connection)!=null&&t.saveData||Qn(),M.addEventListener("click",async n=>{if(n.button||n.which!==1||n.metaKey||n.ctrlKey||n.shiftKey||n.altKey||n.defaultPrevented)return;const a=jt(n.composedPath()[0],M);if(!a)return;const{url:r,external:c,target:o,download:s}=Ye(a,P,R.hash);if(!r)return;if(o==="_parent"||o==="_top"){if(window.parent!==window)return}else if(o&&o!=="_self")return;const i=Ee(a);if(!(a instanceof SVGAElement)&&r.protocol!==location.protocol&&!(r.protocol==="https:"||r.protocol==="http:")||s)return;const[d,u]=(R.hash?r.hash.replace(/^#/,""):r.href).split("#"),p=d===Me(location);if(c||i.reload&&(!p||!u)){zt({url:r,type:"link",event:n})?le=!0:n.preventDefault();return}if(u!==void 0&&p){const[,h]=w.url.href.split("#");if(h===u){if(n.preventDefault(),u===""||u==="top"&&a.ownerDocument.getElementById("top")===null)scrollTo({top:0});else{const f=a.ownerDocument.getElementById(decodeURIComponent(u));f&&(f.scrollIntoView(),f.focus())}return}if(te=!0,nt(I),e(r),!i.replace_state)return;te=!1}n.preventDefault(),await new Promise(h=>{requestAnimationFrame(()=>{setTimeout(h,0)}),setTimeout(h,100)}),await X({type:"link",url:r,keepfocus:i.keepfocus,noscroll:i.noscroll,replace_state:i.replace_state??r.href===location.href,event:n})}),M.addEventListener("submit",n=>{if(n.defaultPrevented)return;const a=HTMLFormElement.prototype.cloneNode.call(n.target),r=n.submitter;if(((r==null?void 0:r.formTarget)||a.target)==="_blank"||((r==null?void 0:r.formMethod)||a.method)!=="get")return;const s=new URL((r==null?void 0:r.hasAttribute("formaction"))&&(r==null?void 0:r.formAction)||a.action);if($e(s,P,!1))return;const i=n.target,l=Ee(i);if(l.reload)return;n.preventDefault(),n.stopPropagation();const d=new FormData(i,r);s.search=new URLSearchParams(d).toString(),X({type:"form",url:s,keepfocus:l.keepfocus,noscroll:l.noscroll,replace_state:l.replace_state??s.href===location.href,event:n})}),addEventListener("popstate",async n=>{var a;if(!Je){if((a=n.state)!=null&&a[J]){const r=n.state[J];if(C={},r===I)return;const c=V[r],o=n.state[Lt]??{},s=new URL(n.state[gn]??location.href),i=n.state[oe],l=w.url?Me(location)===Me(w.url):!1;if(i===L&&(Bt||l)){o!==U.state&&(U.state=o),e(s),V[I]=Y(),c&&scrollTo(c.x,c.y),I=r;return}const u=r-I;await X({type:"popstate",url:s,popped:{state:o,scroll:c,delta:u},accept:()=>{I=r,L=i},block:()=>{history.go(-u)},nav_token:C,event:n})}else if(!te){const r=new URL(location.href);e(r),R.hash&&location.reload()}}}),addEventListener("hashchange",()=>{te&&(te=!1,history.replaceState({...history.state,[J]:++I,[oe]:L},"",location.href))});for(const n of document.querySelectorAll("link"))Vn.has(n.rel)&&(n.href=n.href);addEventListener("pageshow",n=>{n.persisted&&F.navigating.set(se.current=null)});function e(n){w.url=U.url=n,F.page.set(ft(U)),F.page.notify()}}async function nr(e,{status:t=200,error:n,node_ids:a,params:r,route:c,server_route:o,data:s,form:i}){at=!0;const l=new URL(location.href);let d;({params:r={},route:c={id:null}}=await be(l,!1)||{}),d=rt.find(({id:h})=>h===c.id);let u,p=!0;try{const h=a.map(async(g,S)=>{const _=s[S];return _!=null&&_.uses&&(_.uses=Ht(_.uses)),st({loader:R.nodes[g],url:l,params:r,route:c,parent:async()=>{const T={};for(let m=0;m<S;m+=1)Object.assign(T,(await h[m]).data);return T},server_data_node:it(_)})}),f=await Promise.all(h);if(d){const g=d.layouts;for(let S=0;S<g.length;S++)g[S]||f.splice(S,0,void 0)}u=await Ne({url:l,params:r,branch:f,status:t,error:n,errors:d==null?void 0:d.errors,form:i,route:d??null})}catch(h){if(h instanceof Ze){await Q(new URL(h.location,location.href));return}u=await Ce({status:Se(h),error:await Z(h,{url:l,params:r,route:c}),url:l,route:c}),e.textContent="",p=!1}finally{}u.props.page&&(u.props.page.state={}),await Vt(u,e,p)}async function Gt(e,t){var c;const n=new URL(e);n.pathname=qn(e.pathname),e.pathname.endsWith("/")&&n.searchParams.append($n,"1"),n.searchParams.append(xn,t.map(o=>o?"1":"0").join(""));const a=window.fetch,r=await a(n.href,{});if(!r.ok){let o;throw(c=r.headers.get("content-type"))!=null&&c.includes("application/json")?o=await r.json():r.status===404?o="Not Found":r.status===500&&(o="Internal Error"),new Oe(r.status,o)}return new Promise(async o=>{var d;const s=new Map,i=r.body.getReader();function l(u){return Nn(u,{...R.decoders,Promise:p=>new Promise((h,f)=>{s.set(p,{fulfil:h,reject:f})})})}for await(const u of Fn(i)){if(u.type==="redirect")return o(u);if(u.type==="data")(d=u.nodes)==null||d.forEach(p=>{(p==null?void 0:p.type)==="data"&&(p.uses=Ht(p.uses),p.data=l(p.data))}),o(u);else if(u.type==="chunk"){const{id:p,data:h,error:f}=u,g=s.get(p);s.delete(p),f?g.reject(l(f)):g.fulfil(l(h))}}})}function Ht(e){return{dependencies:new Set((e==null?void 0:e.dependencies)??[]),params:new Set((e==null?void 0:e.params)??[]),parent:!!(e!=null&&e.parent),route:!!(e!=null&&e.route),url:!!(e!=null&&e.url),search_params:new Set((e==null?void 0:e.search_params)??[])}}let Je=!1;function rr(e,t=!0){const n=document.querySelector("[autofocus]");if(n)n.focus();else{const a=Kt(e);if(a&&document.getElementById(a)){const{x:c,y:o}=Y();setTimeout(()=>{const s=history.state;Je=!0,location.replace(new URL(`#${a}`,location.href)),history.replaceState(s,"",e),t&&scrollTo(c,o),Je=!1})}else{const c=document.body,o=c.getAttribute("tabindex");c.tabIndex=-1,c.focus({preventScroll:!0,focusVisible:!1}),o!==null?c.setAttribute("tabindex",o):c.removeAttribute("tabindex")}const r=getSelection();if(r&&r.type!=="None"){const c=[];for(let o=0;o<r.rangeCount;o+=1)c.push(r.getRangeAt(o));setTimeout(()=>{if(r.rangeCount===c.length){for(let o=0;o<r.rangeCount;o+=1){const s=c[o],i=r.getRangeAt(o);if(s.commonAncestorContainer!==i.commonAncestorContainer||s.startContainer!==i.startContainer||s.endContainer!==i.endContainer||s.startOffset!==i.startOffset||s.endOffset!==i.endOffset)return}r.removeAllRanges()}})}}}function lt(e,t,n,a,r=null){var l,d;let c,o;const s=new Promise((u,p)=>{c=u,o=p});return s.catch(D),{navigation:{from:{params:e.params,route:{id:((l=e.route)==null?void 0:l.id)??null},url:e.url,scroll:Y()},to:n&&{params:(t==null?void 0:t.params)??null,route:{id:((d=t==null?void 0:t.route)==null?void 0:d.id)??null},url:n,scroll:r},willUnload:!t,type:a,complete:s},fulfil:c,reject:o}}function ft(e){return{data:e.data,error:e.error,form:e.form,params:e.params,route:e.route,state:e.state,status:e.status,url:e.url}}function ar(e){const t=new URL(e);return t.hash=decodeURIComponent(e.hash),t}function Kt(e){let t;if(R.hash){const[,,n]=e.hash.split("#",3);t=n??""}else t=e.hash.slice(1);return decodeURIComponent(t)}export{F as a,hr as i,cr as l,U as p,dr as s};
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as e,p as t}from"./
|
|
1
|
+
import{a as e,p as t}from"./CqU5oOV9.js";const r={get data(){return t.data},get error(){return t.error},get status(){return t.status}};e.updated.check;const s=r;export{s as p};
|
|
Binary file
|
|
Binary file
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["../nodes/0
|
|
2
|
-
var M=e=>{throw TypeError(e)};var W=(e,t,a)=>t.has(e)||M("Cannot "+a);var v=(e,t,a)=>(W(e,t,"read from private field"),a?a.call(e):t.get(e)),j=(e,t,a)=>t.has(e)?M("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,a),k=(e,t,a,i)=>(W(e,t,"write to private field"),i?i.call(e,a):t.set(e,a),a);import{ai as z,ag as nt,O as it,k as ot,aF as ut,aW as ct,aR as _t,aS as H,m as lt,ah as dt,W as ft,a5 as mt,aI as vt,b2 as K,G as Q,d as ht,S as X,aa as Et,aB as gt,v as Pt,a9 as g,aC as Rt,aN as S,ar as yt,D as Ot,P as bt,t as At,a1 as J,a2 as Tt,u as pt,L as $,a8 as It,a0 as Lt,aw as Dt,aD as St,b5 as wt,b4 as Vt,b1 as xt,a7 as V,aV as jt,aA as kt,aY as B,U as Bt,aJ as Ct,b0 as Yt,b3 as C}from"../chunks/yaqX87Fw.js";import{h as Nt,m as Ut,u as qt,s as Ft}from"../chunks/zdFKJgRC.js";import{a as I,c as Y,f as tt,t as Gt}from"../chunks/wvvdFLnT.js";import{a as Mt}from"../chunks/BglvqQGi.js";import{B as Wt,i as N}from"../chunks/DGzmird2.js";let x=!1;function zt(e){var t=x;try{return x=!1,[e(),x]}finally{x=t}}function U(e,t,a){var i;z&&(i=dt,nt());var l=new Wt(e);it(()=>{var u=t()??null;if(z){var s=ut(i),r=s===lt,n=u!==null;if(r!==n){var h=ct();_t(h),l.anchor=h,H(!1),l.ensure(u,u&&(o=>a(o,u))),H(!0);return}}l.ensure(u,u&&(o=>a(o,u)))},ot)}function q(e,t){return e===t||(e==null?void 0:e[X])===t}function F(e={},t,a,i){var l=ft.r,u=Q;return mt(()=>{var s,r;return vt(()=>{s=r,r=[],K(()=>{q(a(...r),e)||(t(e,...r),s&&q(a(...s),e)&&t(null,...s))})}),()=>{let n=u;for(;n!==l&&n.parent!==null&&n.parent.f&ht;)n=n.parent;const h=()=>{r&&q(a(...r),e)&&t(null,...r)},o=n.teardown;n.teardown=()=>{h(),o==null||o()}}}),e}function G(e,t,a,i){var A;var l=!0,u=(a&bt)!==0,s=(a&pt)!==0,r=i,n=!0,h=void 0,o=()=>s&&l?(h??(h=J(i)),g(h)):(n&&(n=!1,r=s?K(i):i),r);let f;if(u){var O=X in e||$ in e;f=((A=Et(e,t))==null?void 0:A.set)??(O&&t in e?_=>e[t]=_:void 0)}var p,E=!1;u?[p,E]=zt(()=>e[t]):p=e[t],p===void 0&&i!==void 0&&(p=o(),f&&(gt(),f(p)));var c;if(c=()=>{var _=e[t];return _===void 0?o():(n=!0,_)},(a&Pt)===0)return c;if(f){var m=e.$$legacy;return(function(_,L){return arguments.length>0?((!L||m||E)&&f(L?c():_),_):c()})}var R=!1,y=((a&At)!==0?J:Tt)(()=>(R=!1,c()));u&&g(y);var b=Q;return(function(_,L){if(arguments.length>0){const D=L?g(y):u?Rt(_):_;return S(y,D),R=!0,r!==void 0&&(r=D),_}return yt&&R||(b.f&Ot)!==0?y.v:g(y)})}function Ht(e){return class extends Jt{constructor(t){super({component:e,...t})}}}var T,P;class Jt{constructor(t){j(this,T);j(this,P);var u;var a=new Map,i=(s,r)=>{var n=Dt(r,!1,!1);return a.set(s,n),n};const l=new Proxy({...t.props||{},$$events:{}},{get(s,r){return g(a.get(r)??i(r,Reflect.get(s,r)))},has(s,r){return r===$?!0:(g(a.get(r)??i(r,Reflect.get(s,r))),Reflect.has(s,r))},set(s,r,n){return S(a.get(r)??i(r,n),n),Reflect.set(s,r,n)}});k(this,P,(t.hydrate?Nt:Ut)(t.component,{target:t.target,anchor:t.anchor,props:l,context:t.context,intro:t.intro??!1,recover:t.recover,transformError:t.transformError})),(!((u=t==null?void 0:t.props)!=null&&u.$$host)||t.sync===!1)&&It(),k(this,T,l.$$events);for(const s of Object.keys(v(this,P)))s==="$set"||s==="$destroy"||s==="$on"||Lt(this,s,{get(){return v(this,P)[s]},set(r){v(this,P)[s]=r},enumerable:!0});v(this,P).$set=s=>{Object.assign(l,s)},v(this,P).$destroy=()=>{qt(v(this,P))}}$set(t){v(this,P).$set(t)}$on(t,a){v(this,T)[t]=v(this,T)[t]||[];const i=(...l)=>a.call(this,...l);return v(this,T)[t].push(i),()=>{v(this,T)[t]=v(this,T)[t].filter(l=>l!==i)}}$destroy(){v(this,P).$destroy()}}T=new WeakMap,P=new WeakMap;const Zt="modulepreload",Kt=function(e,t){return new URL(e,t).href},Z={},d=function(t,a,i){let l=Promise.resolve();if(a&&a.length>0){let s=function(o){return Promise.all(o.map(f=>Promise.resolve(f).then(O=>({status:"fulfilled",value:O}),O=>({status:"rejected",reason:O}))))};const r=document.getElementsByTagName("link"),n=document.querySelector("meta[property=csp-nonce]"),h=(n==null?void 0:n.nonce)||(n==null?void 0:n.getAttribute("nonce"));l=s(a.map(o=>{if(o=Kt(o,i),o in Z)return;Z[o]=!0;const f=o.endsWith(".css"),O=f?'[rel="stylesheet"]':"";if(!!i)for(let c=r.length-1;c>=0;c--){const m=r[c];if(m.href===o&&(!f||m.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${o}"]${O}`))return;const E=document.createElement("link");if(E.rel=f?"stylesheet":Zt,f||(E.as="script"),E.crossOrigin="",E.href=o,h&&E.setAttribute("nonce",h),document.head.appendChild(E),f)return new Promise((c,m)=>{E.addEventListener("load",c),E.addEventListener("error",()=>m(new Error(`Unable to preload CSS for ${o}`)))})}))}function u(s){const r=new Event("vite:preloadError",{cancelable:!0});if(r.payload=s,window.dispatchEvent(r),!r.defaultPrevented)throw s}return l.then(s=>{for(const r of s||[])r.status==="rejected"&&u(r.reason);return t().catch(u)})},oe={};var Qt=tt('<div id="svelte-announcer" aria-live="assertive" aria-atomic="true" style="position: absolute; left: 0; top: 0; clip: rect(0 0 0 0); clip-path: inset(50%); overflow: hidden; white-space: nowrap; width: 1px; height: 1px"><!></div>'),Xt=tt("<!> <!>",1);function $t(e,t){St(t,!0);let a=G(t,"components",23,()=>[]),i=G(t,"data_0",3,null),l=G(t,"data_1",3,null);wt(()=>t.stores.page.set(t.page)),Vt(()=>{t.stores,t.page,t.constructors,a(),t.form,i(),l(),t.stores.page.notify()});let u=B(!1),s=B(!1),r=B(null);Mt(()=>{const c=t.stores.page.subscribe(()=>{g(u)&&(S(s,!0),xt().then(()=>{S(r,document.title||"untitled page",!0)}))});return S(u,!0),c});const n=C(()=>t.constructors[1]);var h=Xt(),o=V(h);{var f=c=>{const m=C(()=>t.constructors[0]);var R=Y(),y=V(R);U(y,()=>g(m),(b,A)=>{F(A(b,{get data(){return i()},get form(){return t.form},get params(){return t.page.params},children:(_,L)=>{var D=Y(),rt=V(D);U(rt,()=>g(n),(at,st)=>{F(st(at,{get data(){return l()},get form(){return t.form},get params(){return t.page.params}}),w=>a()[1]=w,()=>{var w;return(w=a())==null?void 0:w[1]})}),I(_,D)},$$slots:{default:!0}}),_=>a()[0]=_,()=>{var _;return(_=a())==null?void 0:_[0]})}),I(c,R)},O=c=>{const m=C(()=>t.constructors[0]);var R=Y(),y=V(R);U(y,()=>g(m),(b,A)=>{F(A(b,{get data(){return i()},get form(){return t.form},get params(){return t.page.params}}),_=>a()[0]=_,()=>{var _;return(_=a())==null?void 0:_[0]})}),I(c,R)};N(o,c=>{t.constructors[1]?c(f):c(O,-1)})}var p=jt(o,2);{var E=c=>{var m=Qt(),R=Bt(m);{var y=b=>{var A=Gt();Yt(()=>Ft(A,g(r))),I(b,A)};N(R,b=>{g(s)&&b(y)})}Ct(m),I(c,m)};N(p,c=>{g(u)&&c(E)})}I(e,h),kt()}const ue=Ht($t),ce=[()=>d(()=>import("../nodes/0
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["../nodes/0.DHjtMrwQ.js","../chunks/wvvdFLnT.js","../chunks/yaqX87Fw.js","../chunks/DGzmird2.js","../chunks/DkJk5jU5.js","../chunks/CqU5oOV9.js","../chunks/BglvqQGi.js","../assets/0.BlqHNd_B.css","../nodes/1.XwAIuiOy.js","../chunks/zdFKJgRC.js","../nodes/2.UYgVyDLc.js","../chunks/D7pOdP8I.js","../chunks/BavbyzgH.js","../chunks/C3zIEYdk.js","../assets/2.CDxHKbKa.css","../nodes/3.DFDtXp6C.js","../assets/3.OcS_I60O.css","../nodes/4.DJAy74Px.js","../assets/4.B9ztAlv-.css","../nodes/5.CJN6AHgj.js","../assets/5.CZob5szZ.css","../nodes/6.D6IcAQT7.js","../assets/6.qyJ9c1uU.css","../nodes/7.BJffokPJ.js","../assets/7.BfGagFxK.css","../nodes/8.Byub22k2.js","../assets/8.BBVLQNjr.css","../nodes/9.BP7rmSX3.js","../assets/9.CLcabd5k.css","../nodes/10.DDzwm5Zf.js","../assets/10.C-cTEaaR.css","../nodes/11.C83nzbY0.js","../assets/11.CYDBDbYB.css","../nodes/12.D3uWPfiO.js","../assets/12.CW2rt2jI.css","../nodes/13.BadIDsIu.js","../assets/13.oy_PmgjY.css","../nodes/14.DU5SJ1GO.js","../assets/14.CkeHwvPR.css","../nodes/15.gE3rytuJ.js","../assets/15.DS-eLpBX.css","../nodes/16.dSNotAma.js","../chunks/-uS6u7cX.js","../assets/16.D70XPx7a.css","../nodes/17.DclXwVi8.js","../assets/17.gA-iQJmt.css","../nodes/18.Qgi-sZ9x.js","../assets/18.DKVkb48P.css"])))=>i.map(i=>d[i]);
|
|
2
|
+
var M=e=>{throw TypeError(e)};var W=(e,t,a)=>t.has(e)||M("Cannot "+a);var v=(e,t,a)=>(W(e,t,"read from private field"),a?a.call(e):t.get(e)),j=(e,t,a)=>t.has(e)?M("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,a),k=(e,t,a,i)=>(W(e,t,"write to private field"),i?i.call(e,a):t.set(e,a),a);import{ai as z,ag as nt,O as it,k as ot,aF as ut,aW as ct,aR as _t,aS as H,m as lt,ah as dt,W as ft,a5 as mt,aI as vt,b2 as K,G as Q,d as ht,S as X,aa as Et,aB as gt,v as Pt,a9 as g,aC as Rt,aN as S,ar as yt,D as Ot,P as bt,t as At,a1 as J,a2 as Tt,u as pt,L as $,a8 as It,a0 as Lt,aw as Dt,aD as St,b5 as wt,b4 as Vt,b1 as xt,a7 as V,aV as jt,aA as kt,aY as B,U as Bt,aJ as Ct,b0 as Yt,b3 as C}from"../chunks/yaqX87Fw.js";import{h as Nt,m as Ut,u as qt,s as Ft}from"../chunks/zdFKJgRC.js";import{a as I,c as Y,f as tt,t as Gt}from"../chunks/wvvdFLnT.js";import{a as Mt}from"../chunks/BglvqQGi.js";import{B as Wt,i as N}from"../chunks/DGzmird2.js";let x=!1;function zt(e){var t=x;try{return x=!1,[e(),x]}finally{x=t}}function U(e,t,a){var i;z&&(i=dt,nt());var l=new Wt(e);it(()=>{var u=t()??null;if(z){var s=ut(i),r=s===lt,n=u!==null;if(r!==n){var h=ct();_t(h),l.anchor=h,H(!1),l.ensure(u,u&&(o=>a(o,u))),H(!0);return}}l.ensure(u,u&&(o=>a(o,u)))},ot)}function q(e,t){return e===t||(e==null?void 0:e[X])===t}function F(e={},t,a,i){var l=ft.r,u=Q;return mt(()=>{var s,r;return vt(()=>{s=r,r=[],K(()=>{q(a(...r),e)||(t(e,...r),s&&q(a(...s),e)&&t(null,...s))})}),()=>{let n=u;for(;n!==l&&n.parent!==null&&n.parent.f&ht;)n=n.parent;const h=()=>{r&&q(a(...r),e)&&t(null,...r)},o=n.teardown;n.teardown=()=>{h(),o==null||o()}}}),e}function G(e,t,a,i){var A;var l=!0,u=(a&bt)!==0,s=(a&pt)!==0,r=i,n=!0,h=void 0,o=()=>s&&l?(h??(h=J(i)),g(h)):(n&&(n=!1,r=s?K(i):i),r);let f;if(u){var O=X in e||$ in e;f=((A=Et(e,t))==null?void 0:A.set)??(O&&t in e?_=>e[t]=_:void 0)}var p,E=!1;u?[p,E]=zt(()=>e[t]):p=e[t],p===void 0&&i!==void 0&&(p=o(),f&&(gt(),f(p)));var c;if(c=()=>{var _=e[t];return _===void 0?o():(n=!0,_)},(a&Pt)===0)return c;if(f){var m=e.$$legacy;return(function(_,L){return arguments.length>0?((!L||m||E)&&f(L?c():_),_):c()})}var R=!1,y=((a&At)!==0?J:Tt)(()=>(R=!1,c()));u&&g(y);var b=Q;return(function(_,L){if(arguments.length>0){const D=L?g(y):u?Rt(_):_;return S(y,D),R=!0,r!==void 0&&(r=D),_}return yt&&R||(b.f&Ot)!==0?y.v:g(y)})}function Ht(e){return class extends Jt{constructor(t){super({component:e,...t})}}}var T,P;class Jt{constructor(t){j(this,T);j(this,P);var u;var a=new Map,i=(s,r)=>{var n=Dt(r,!1,!1);return a.set(s,n),n};const l=new Proxy({...t.props||{},$$events:{}},{get(s,r){return g(a.get(r)??i(r,Reflect.get(s,r)))},has(s,r){return r===$?!0:(g(a.get(r)??i(r,Reflect.get(s,r))),Reflect.has(s,r))},set(s,r,n){return S(a.get(r)??i(r,n),n),Reflect.set(s,r,n)}});k(this,P,(t.hydrate?Nt:Ut)(t.component,{target:t.target,anchor:t.anchor,props:l,context:t.context,intro:t.intro??!1,recover:t.recover,transformError:t.transformError})),(!((u=t==null?void 0:t.props)!=null&&u.$$host)||t.sync===!1)&&It(),k(this,T,l.$$events);for(const s of Object.keys(v(this,P)))s==="$set"||s==="$destroy"||s==="$on"||Lt(this,s,{get(){return v(this,P)[s]},set(r){v(this,P)[s]=r},enumerable:!0});v(this,P).$set=s=>{Object.assign(l,s)},v(this,P).$destroy=()=>{qt(v(this,P))}}$set(t){v(this,P).$set(t)}$on(t,a){v(this,T)[t]=v(this,T)[t]||[];const i=(...l)=>a.call(this,...l);return v(this,T)[t].push(i),()=>{v(this,T)[t]=v(this,T)[t].filter(l=>l!==i)}}$destroy(){v(this,P).$destroy()}}T=new WeakMap,P=new WeakMap;const Zt="modulepreload",Kt=function(e,t){return new URL(e,t).href},Z={},d=function(t,a,i){let l=Promise.resolve();if(a&&a.length>0){let s=function(o){return Promise.all(o.map(f=>Promise.resolve(f).then(O=>({status:"fulfilled",value:O}),O=>({status:"rejected",reason:O}))))};const r=document.getElementsByTagName("link"),n=document.querySelector("meta[property=csp-nonce]"),h=(n==null?void 0:n.nonce)||(n==null?void 0:n.getAttribute("nonce"));l=s(a.map(o=>{if(o=Kt(o,i),o in Z)return;Z[o]=!0;const f=o.endsWith(".css"),O=f?'[rel="stylesheet"]':"";if(!!i)for(let c=r.length-1;c>=0;c--){const m=r[c];if(m.href===o&&(!f||m.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${o}"]${O}`))return;const E=document.createElement("link");if(E.rel=f?"stylesheet":Zt,f||(E.as="script"),E.crossOrigin="",E.href=o,h&&E.setAttribute("nonce",h),document.head.appendChild(E),f)return new Promise((c,m)=>{E.addEventListener("load",c),E.addEventListener("error",()=>m(new Error(`Unable to preload CSS for ${o}`)))})}))}function u(s){const r=new Event("vite:preloadError",{cancelable:!0});if(r.payload=s,window.dispatchEvent(r),!r.defaultPrevented)throw s}return l.then(s=>{for(const r of s||[])r.status==="rejected"&&u(r.reason);return t().catch(u)})},oe={};var Qt=tt('<div id="svelte-announcer" aria-live="assertive" aria-atomic="true" style="position: absolute; left: 0; top: 0; clip: rect(0 0 0 0); clip-path: inset(50%); overflow: hidden; white-space: nowrap; width: 1px; height: 1px"><!></div>'),Xt=tt("<!> <!>",1);function $t(e,t){St(t,!0);let a=G(t,"components",23,()=>[]),i=G(t,"data_0",3,null),l=G(t,"data_1",3,null);wt(()=>t.stores.page.set(t.page)),Vt(()=>{t.stores,t.page,t.constructors,a(),t.form,i(),l(),t.stores.page.notify()});let u=B(!1),s=B(!1),r=B(null);Mt(()=>{const c=t.stores.page.subscribe(()=>{g(u)&&(S(s,!0),xt().then(()=>{S(r,document.title||"untitled page",!0)}))});return S(u,!0),c});const n=C(()=>t.constructors[1]);var h=Xt(),o=V(h);{var f=c=>{const m=C(()=>t.constructors[0]);var R=Y(),y=V(R);U(y,()=>g(m),(b,A)=>{F(A(b,{get data(){return i()},get form(){return t.form},get params(){return t.page.params},children:(_,L)=>{var D=Y(),rt=V(D);U(rt,()=>g(n),(at,st)=>{F(st(at,{get data(){return l()},get form(){return t.form},get params(){return t.page.params}}),w=>a()[1]=w,()=>{var w;return(w=a())==null?void 0:w[1]})}),I(_,D)},$$slots:{default:!0}}),_=>a()[0]=_,()=>{var _;return(_=a())==null?void 0:_[0]})}),I(c,R)},O=c=>{const m=C(()=>t.constructors[0]);var R=Y(),y=V(R);U(y,()=>g(m),(b,A)=>{F(A(b,{get data(){return i()},get form(){return t.form},get params(){return t.page.params}}),_=>a()[0]=_,()=>{var _;return(_=a())==null?void 0:_[0]})}),I(c,R)};N(o,c=>{t.constructors[1]?c(f):c(O,-1)})}var p=jt(o,2);{var E=c=>{var m=Qt(),R=Bt(m);{var y=b=>{var A=Gt();Yt(()=>Ft(A,g(r))),I(b,A)};N(R,b=>{g(s)&&b(y)})}Ct(m),I(c,m)};N(p,c=>{g(u)&&c(E)})}I(e,h),kt()}const ue=Ht($t),ce=[()=>d(()=>import("../nodes/0.DHjtMrwQ.js"),__vite__mapDeps([0,1,2,3,4,5,6,7]),import.meta.url),()=>d(()=>import("../nodes/1.XwAIuiOy.js"),__vite__mapDeps([8,1,2,9,4,5,6]),import.meta.url),()=>d(()=>import("../nodes/2.UYgVyDLc.js"),__vite__mapDeps([10,1,2,6,9,3,11,12,13,5,14]),import.meta.url),()=>d(()=>import("../nodes/3.DFDtXp6C.js"),__vite__mapDeps([15,1,2,9,3,11,12,16]),import.meta.url),()=>d(()=>import("../nodes/4.DJAy74Px.js"),__vite__mapDeps([17,1,2,9,3,11,12,18]),import.meta.url),()=>d(()=>import("../nodes/5.CJN6AHgj.js"),__vite__mapDeps([19,1,2,9,3,11,12,20]),import.meta.url),()=>d(()=>import("../nodes/6.D6IcAQT7.js"),__vite__mapDeps([21,1,2,9,3,12,22]),import.meta.url),()=>d(()=>import("../nodes/7.BJffokPJ.js"),__vite__mapDeps([23,1,2,9,3,12,24]),import.meta.url),()=>d(()=>import("../nodes/8.Byub22k2.js"),__vite__mapDeps([25,1,2,9,3,11,12,26]),import.meta.url),()=>d(()=>import("../nodes/9.BP7rmSX3.js"),__vite__mapDeps([27,1,2,9,3,11,12,28]),import.meta.url),()=>d(()=>import("../nodes/10.DDzwm5Zf.js"),__vite__mapDeps([29,1,2,9,3,11,12,30]),import.meta.url),()=>d(()=>import("../nodes/11.C83nzbY0.js"),__vite__mapDeps([31,1,2,6,9,3,11,12,13,5,32]),import.meta.url),()=>d(()=>import("../nodes/12.D3uWPfiO.js"),__vite__mapDeps([33,1,2,9,3,12,34]),import.meta.url),()=>d(()=>import("../nodes/13.BadIDsIu.js"),__vite__mapDeps([35,1,2,9,3,12,36]),import.meta.url),()=>d(()=>import("../nodes/14.DU5SJ1GO.js"),__vite__mapDeps([37,1,2,9,3,11,12,13,38]),import.meta.url),()=>d(()=>import("../nodes/15.gE3rytuJ.js"),__vite__mapDeps([39,1,2,9,3,11,12,13,40]),import.meta.url),()=>d(()=>import("../nodes/16.dSNotAma.js"),__vite__mapDeps([41,1,2,9,3,11,12,42,43]),import.meta.url),()=>d(()=>import("../nodes/17.DclXwVi8.js"),__vite__mapDeps([44,1,2,9,3,11,12,45]),import.meta.url),()=>d(()=>import("../nodes/18.Qgi-sZ9x.js"),__vite__mapDeps([46,1,2,9,3,11,12,42,47]),import.meta.url)],_e=[],le={"/":[-3],"/councillors/new":[-4],"/councillors/[c_slug]":[-5],"/councillors/[c_slug]/edit":[-6],"/councillors/[c_slug]/memory/[note]":[-7],"/edit":[-8],"/export":[-9],"/import":[-10],"/jobs/new":[-11],"/jobs/[jid]":[-12],"/memory/new":[-13],"/memory/[note]":[-14],"/proposals":[-15],"/schedules":[-16],"/schedules/new":[-17],"/schedules/[id]":[-18],"/schedules/[id]/edit":[-19]},et={handleError:(({error:e})=>{console.error(e)}),reroute:(()=>{}),transport:{}},te=Object.fromEntries(Object.entries(et.transport).map(([e,t])=>[e,t.decode])),de=Object.fromEntries(Object.entries(et.transport).map(([e,t])=>[e,t.encode])),fe=!1,me=(e,t)=>te[e](t);export{me as decode,te as decoders,le as dictionary,de as encoders,fe as hash,et as hooks,oe as matchers,ce as nodes,ue as root,_e as server_loads};
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{l as o,s as r}from"../chunks/CqU5oOV9.js";export{o as load_css,r as start};
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as f,f as v}from"../chunks/wvvdFLnT.js";import{O as d,k as u,aD as y,a7 as q,aA as _,aV as i,U as c,aJ as p,ay as b}from"../chunks/yaqX87Fw.js";import{B as g,i as k}from"../chunks/DGzmird2.js";import{p as E}from"../chunks/
|
|
1
|
+
import{a as f,f as v}from"../chunks/wvvdFLnT.js";import{O as d,k as u,aD as y,a7 as q,aA as _,aV as i,U as c,aJ as p,ay as b}from"../chunks/yaqX87Fw.js";import{B as g,i as k}from"../chunks/DGzmird2.js";import{p as E}from"../chunks/DkJk5jU5.js";function x(t,e,...r){var a=new g(t);d(()=>{const s=e()??null;a.ensure(s,s&&(h=>s(h,...r)))},u)}var A=v('<nav class="links svelte-12qhfyh"><a href="/schedules" class="svelte-12qhfyh">Schedules</a> <a href="/import" class="svelte-12qhfyh">Install template</a> <a href="/export" class="svelte-12qhfyh">Export…</a></nav>'),T=v('<header class="svelte-12qhfyh"><a href="/" class="brand svelte-12qhfyh">Landsraad</a> <!></header> <main class="svelte-12qhfyh"><!></main>',1);function R(t,e){y(e,!0);var r=T(),a=q(r),s=i(c(a),2);{var h=l=>{var n=A();f(l,n)};k(s,l=>{var n;(n=E.data)!=null&&n.hasCouncil&&l(h)})}p(a);var o=i(a,2),m=c(o);x(m,()=>e.children??b),p(o),f(t,r),_()}export{R as component};
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as u,f as v}from"../chunks/wvvdFLnT.js";import{aD as c,a7 as l,b0 as _,aA as g,U as e,aJ as o,aV as x}from"../chunks/yaqX87Fw.js";import{s as p}from"../chunks/zdFKJgRC.js";import{p as m}from"../chunks/
|
|
1
|
+
import{a as u,f as v}from"../chunks/wvvdFLnT.js";import{aD as c,a7 as l,b0 as _,aA as g,U as e,aJ as o,aV as x}from"../chunks/yaqX87Fw.js";import{s as p}from"../chunks/zdFKJgRC.js";import{p as m}from"../chunks/DkJk5jU5.js";var d=v("<h1> </h1> <p> </p>",1);function J(f,i){c(i,!0);var r=d(),a=l(r),h=e(a,!0);o(a);var t=x(a,2),n=e(t,!0);o(t),_(()=>{var s;p(h,m.status),p(n,(s=m.error)==null?void 0:s.message)}),u(f,r),g()}export{J as component};
|
|
Binary file
|
|
Binary file
|