plum-e2e 2.7.1 → 2.8.1
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/backend/middleware/jwtAuth.js +2 -2
- package/backend/middleware/runnerOrAdmin.js +26 -0
- package/backend/routes/runners.routes.js +11 -6
- package/backend/scripts/manage-runners.mjs +20 -5
- package/backend/services/runnerService.js +11 -0
- package/frontend/.svelte-kit/adapter-node/chunks/internal.js +1 -1
- package/frontend/.svelte-kit/adapter-node/manifest-full.js +1 -1
- package/frontend/.svelte-kit/adapter-node/manifest.js +1 -1
- package/frontend/.svelte-kit/adapter-node/nodes/0.js +1 -1
- package/frontend/.svelte-kit/adapter-node/nodes/1.js +1 -1
- package/frontend/.svelte-kit/adapter-node/nodes/11.js +1 -1
- package/frontend/.svelte-kit/adapter-node/nodes/12.js +1 -1
- package/frontend/.svelte-kit/adapter-node/nodes/3.js +1 -1
- package/frontend/.svelte-kit/adapter-node/nodes/5.js +1 -1
- package/frontend/.svelte-kit/adapter-node/nodes/6.js +1 -1
- package/frontend/.svelte-kit/adapter-node/nodes/8.js +1 -1
- package/frontend/.svelte-kit/adapter-node/nodes/9.js +1 -1
- package/frontend/.svelte-kit/generated/server/internal.js +1 -1
- package/frontend/.svelte-kit/output/client/.vite/manifest.json +37 -37
- package/frontend/{build/client/_app/immutable/chunks/nURnIknV.js → .svelte-kit/output/client/_app/immutable/chunks/DEKAA-Fm.js} +1 -1
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/{DMyTUV-Y.js → Dhf4xQKo.js} +1 -1
- package/frontend/{build/client/_app/immutable/entry/app.BkBD0hgA.js → .svelte-kit/output/client/_app/immutable/entry/app.B0GH5ONo.js} +2 -2
- package/frontend/.svelte-kit/output/client/_app/immutable/entry/start.Bn25CW9X.js +1 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/nodes/{0.ChjDHxSJ.js → 0.-imXt0f5.js} +1 -1
- package/frontend/.svelte-kit/output/client/_app/immutable/nodes/{1.DBSWa36f.js → 1.Dom3CKWF.js} +1 -1
- package/frontend/.svelte-kit/output/client/_app/immutable/nodes/{11.O4cjXCg4.js → 11.DMlayLCK.js} +1 -1
- package/frontend/{build/client/_app/immutable/nodes/12.BWQdeRdX.js → .svelte-kit/output/client/_app/immutable/nodes/12.Bu89A1eX.js} +1 -1
- package/frontend/.svelte-kit/output/client/_app/immutable/nodes/{3._S1vrLVF.js → 3.B86rlHXU.js} +1 -1
- package/frontend/{build/client/_app/immutable/nodes/5.BiFBiWcW.js → .svelte-kit/output/client/_app/immutable/nodes/5.CqTXvadV.js} +1 -1
- package/frontend/.svelte-kit/output/client/_app/immutable/nodes/{6.BNS-W0R_.js → 6.BJZ62MCd.js} +1 -1
- package/frontend/.svelte-kit/output/client/_app/immutable/nodes/{8.BEUdazrw.js → 8.B4fj2Xyu.js} +1 -1
- package/frontend/.svelte-kit/output/client/_app/immutable/nodes/{9.CrLHYPEJ.js → 9.C57_2xq6.js} +1 -1
- package/frontend/.svelte-kit/output/client/_app/version.json +1 -1
- package/frontend/.svelte-kit/output/server/chunks/internal.js +1 -1
- package/frontend/.svelte-kit/output/server/manifest-full.js +1 -1
- package/frontend/.svelte-kit/output/server/manifest.js +1 -1
- package/frontend/.svelte-kit/output/server/nodes/0.js +1 -1
- package/frontend/.svelte-kit/output/server/nodes/1.js +1 -1
- package/frontend/.svelte-kit/output/server/nodes/11.js +1 -1
- package/frontend/.svelte-kit/output/server/nodes/12.js +1 -1
- package/frontend/.svelte-kit/output/server/nodes/3.js +1 -1
- package/frontend/.svelte-kit/output/server/nodes/5.js +1 -1
- package/frontend/.svelte-kit/output/server/nodes/6.js +1 -1
- package/frontend/.svelte-kit/output/server/nodes/8.js +1 -1
- package/frontend/.svelte-kit/output/server/nodes/9.js +1 -1
- package/frontend/{.svelte-kit/output/client/_app/immutable/chunks/nURnIknV.js → build/client/_app/immutable/chunks/DEKAA-Fm.js} +1 -1
- package/frontend/build/client/_app/immutable/chunks/DEKAA-Fm.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/DEKAA-Fm.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/{DMyTUV-Y.js → Dhf4xQKo.js} +1 -1
- package/frontend/build/client/_app/immutable/chunks/Dhf4xQKo.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/Dhf4xQKo.js.gz +0 -0
- package/frontend/{.svelte-kit/output/client/_app/immutable/entry/app.BkBD0hgA.js → build/client/_app/immutable/entry/app.B0GH5ONo.js} +2 -2
- package/frontend/build/client/_app/immutable/entry/app.B0GH5ONo.js.br +0 -0
- package/frontend/build/client/_app/immutable/entry/app.B0GH5ONo.js.gz +0 -0
- package/frontend/build/client/_app/immutable/entry/start.Bn25CW9X.js +1 -0
- package/frontend/build/client/_app/immutable/entry/start.Bn25CW9X.js.br +0 -0
- package/frontend/build/client/_app/immutable/entry/start.Bn25CW9X.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/{0.ChjDHxSJ.js → 0.-imXt0f5.js} +1 -1
- package/frontend/build/client/_app/immutable/nodes/0.-imXt0f5.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/0.-imXt0f5.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/{1.DBSWa36f.js → 1.Dom3CKWF.js} +1 -1
- package/frontend/build/client/_app/immutable/nodes/1.Dom3CKWF.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/1.Dom3CKWF.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/{11.O4cjXCg4.js → 11.DMlayLCK.js} +1 -1
- package/frontend/build/client/_app/immutable/nodes/11.DMlayLCK.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/11.DMlayLCK.js.gz +0 -0
- package/frontend/{.svelte-kit/output/client/_app/immutable/nodes/12.BWQdeRdX.js → build/client/_app/immutable/nodes/12.Bu89A1eX.js} +1 -1
- package/frontend/build/client/_app/immutable/nodes/12.Bu89A1eX.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/12.Bu89A1eX.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/{3._S1vrLVF.js → 3.B86rlHXU.js} +1 -1
- package/frontend/build/client/_app/immutable/nodes/3.B86rlHXU.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/3.B86rlHXU.js.gz +0 -0
- package/frontend/{.svelte-kit/output/client/_app/immutable/nodes/5.BiFBiWcW.js → build/client/_app/immutable/nodes/5.CqTXvadV.js} +1 -1
- package/frontend/build/client/_app/immutable/nodes/5.CqTXvadV.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/5.CqTXvadV.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/{6.BNS-W0R_.js → 6.BJZ62MCd.js} +1 -1
- package/frontend/build/client/_app/immutable/nodes/6.BJZ62MCd.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/6.BJZ62MCd.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/{8.BEUdazrw.js → 8.B4fj2Xyu.js} +1 -1
- package/frontend/build/client/_app/immutable/nodes/8.B4fj2Xyu.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/8.B4fj2Xyu.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/{9.CrLHYPEJ.js → 9.C57_2xq6.js} +1 -1
- package/frontend/build/client/_app/immutable/nodes/9.C57_2xq6.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/9.C57_2xq6.js.gz +0 -0
- package/frontend/build/client/_app/version.json +1 -1
- package/frontend/build/client/_app/version.json.br +0 -0
- package/frontend/build/client/_app/version.json.gz +0 -0
- package/frontend/build/server/chunks/{0-Cn_2hzqk.js → 0-DG1Uv07a.js} +2 -2
- package/frontend/build/server/chunks/{0-Cn_2hzqk.js.map → 0-DG1Uv07a.js.map} +1 -1
- package/frontend/build/server/chunks/{1-BrRGJFSB.js → 1-iB0ogJU_.js} +2 -2
- package/frontend/build/server/chunks/{1-BrRGJFSB.js.map → 1-iB0ogJU_.js.map} +1 -1
- package/frontend/build/server/chunks/{11-BLPbHJqB.js → 11-Df9vGZ_v.js} +2 -2
- package/frontend/build/server/chunks/{11-BLPbHJqB.js.map → 11-Df9vGZ_v.js.map} +1 -1
- package/frontend/build/server/chunks/{12-S1ujUrHy.js → 12-DqvjCln4.js} +2 -2
- package/frontend/build/server/chunks/{12-S1ujUrHy.js.map → 12-DqvjCln4.js.map} +1 -1
- package/frontend/build/server/chunks/{3-BHkXVoNI.js → 3-BYKCZi4U.js} +2 -2
- package/frontend/build/server/chunks/{3-BHkXVoNI.js.map → 3-BYKCZi4U.js.map} +1 -1
- package/frontend/build/server/chunks/{5-F1ZsXMt2.js → 5-B6Jc1foX.js} +2 -2
- package/frontend/build/server/chunks/{5-F1ZsXMt2.js.map → 5-B6Jc1foX.js.map} +1 -1
- package/frontend/build/server/chunks/{6-FlZLnYJ6.js → 6-dXZKtN86.js} +2 -2
- package/frontend/build/server/chunks/{6-FlZLnYJ6.js.map → 6-dXZKtN86.js.map} +1 -1
- package/frontend/build/server/chunks/{8-DXReUGxi.js → 8-D-Bp7HzS.js} +2 -2
- package/frontend/build/server/chunks/{8-DXReUGxi.js.map → 8-D-Bp7HzS.js.map} +1 -1
- package/frontend/build/server/chunks/{9-Cy_mGmt4.js → 9-BynjuGUO.js} +2 -2
- package/frontend/build/server/chunks/{9-Cy_mGmt4.js.map → 9-BynjuGUO.js.map} +1 -1
- package/frontend/build/server/index.js +1 -1
- package/frontend/build/server/index.js.map +1 -1
- package/frontend/build/server/manifest.js +10 -10
- package/frontend/build/server/manifest.js.map +1 -1
- package/package.json +1 -1
- package/frontend/.svelte-kit/output/client/_app/immutable/entry/start.BxeX1Uxs.js +0 -1
- package/frontend/build/client/_app/immutable/chunks/DMyTUV-Y.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/DMyTUV-Y.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/nURnIknV.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/nURnIknV.js.gz +0 -0
- package/frontend/build/client/_app/immutable/entry/app.BkBD0hgA.js.br +0 -0
- package/frontend/build/client/_app/immutable/entry/app.BkBD0hgA.js.gz +0 -0
- package/frontend/build/client/_app/immutable/entry/start.BxeX1Uxs.js +0 -1
- package/frontend/build/client/_app/immutable/entry/start.BxeX1Uxs.js.br +0 -2
- package/frontend/build/client/_app/immutable/entry/start.BxeX1Uxs.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/0.ChjDHxSJ.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/0.ChjDHxSJ.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/1.DBSWa36f.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/1.DBSWa36f.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/11.O4cjXCg4.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/11.O4cjXCg4.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/12.BWQdeRdX.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/12.BWQdeRdX.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/3._S1vrLVF.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/3._S1vrLVF.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/5.BiFBiWcW.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/5.BiFBiWcW.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/6.BNS-W0R_.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/6.BNS-W0R_.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/8.BEUdazrw.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/8.BEUdazrw.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/9.CrLHYPEJ.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/9.CrLHYPEJ.js.gz +0 -0
|
@@ -16,11 +16,11 @@ function jwtAuth(req, res, next) {
|
|
|
16
16
|
prisma.user
|
|
17
17
|
.findFirst({ where: { role: 'admin' }, select: { id: true } })
|
|
18
18
|
.then((admin) => {
|
|
19
|
-
req.user = { userId: admin?.id ?? null };
|
|
19
|
+
req.user = { userId: admin?.id ?? null, role: 'admin' };
|
|
20
20
|
next();
|
|
21
21
|
})
|
|
22
22
|
.catch(() => {
|
|
23
|
-
req.user = { userId: null };
|
|
23
|
+
req.user = { userId: null, role: 'admin' };
|
|
24
24
|
next();
|
|
25
25
|
});
|
|
26
26
|
return;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* This file is part of Plum.
|
|
3
|
+
* Licensed under the MIT License. See LICENSE file in the project root for details.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
const { jwtAuth } = require('./jwtAuth');
|
|
7
|
+
const { requireAdmin } = require('./requireAdmin');
|
|
8
|
+
const runnerService = require('../services/runnerService');
|
|
9
|
+
const { AUTH_SCHEME } = require('../lib/authHeader');
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Accepts either a logged-in admin (web Settings UI) or any currently-registered
|
|
13
|
+
* runner's own token (manage-runners.mjs and node self-registration have no
|
|
14
|
+
* browser session/JWT to present, but every runner already has a token
|
|
15
|
+
* generated at registration — reuse it instead of a second credential).
|
|
16
|
+
*/
|
|
17
|
+
async function runnerOrAdmin(req, res, next) {
|
|
18
|
+
const auth = req.headers.authorization;
|
|
19
|
+
if (auth && auth.startsWith(`${AUTH_SCHEME.BEARER} `)) {
|
|
20
|
+
const token = auth.slice(AUTH_SCHEME.BEARER.length + 1);
|
|
21
|
+
if (await runnerService.isValidToken(token)) return next();
|
|
22
|
+
}
|
|
23
|
+
jwtAuth(req, res, () => requireAdmin(req, res, next));
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
module.exports = { runnerOrAdmin };
|
|
@@ -8,8 +8,13 @@ const router = express.Router();
|
|
|
8
8
|
const runnerService = require('../services/runnerService');
|
|
9
9
|
const { jwtAuth } = require('../middleware/jwtAuth');
|
|
10
10
|
const { requireAdmin } = require('../middleware/requireAdmin');
|
|
11
|
+
const { runnerOrAdmin } = require('../middleware/runnerOrAdmin');
|
|
11
12
|
|
|
12
|
-
|
|
13
|
+
// List/create are hit by headless CLI tools (manage-runners.mjs, node
|
|
14
|
+
// self-registration) with no session to present — same as before the
|
|
15
|
+
// runner-management routes were locked down. The response never includes
|
|
16
|
+
// runner tokens (toPublicRunner strips them), so listing isn't a secret leak.
|
|
17
|
+
router.get('/', async (req, res) => {
|
|
13
18
|
try {
|
|
14
19
|
const runners = await runnerService.getAll();
|
|
15
20
|
res.json({ runners });
|
|
@@ -30,7 +35,7 @@ router.post('/probe', jwtAuth, requireAdmin, async (req, res) => {
|
|
|
30
35
|
}
|
|
31
36
|
});
|
|
32
37
|
|
|
33
|
-
router.post('/',
|
|
38
|
+
router.post('/', async (req, res) => {
|
|
34
39
|
try {
|
|
35
40
|
const { name, url, token, browser } = req.body;
|
|
36
41
|
if (!name || !url || !token)
|
|
@@ -52,7 +57,7 @@ router.put('/:id', jwtAuth, requireAdmin, async (req, res) => {
|
|
|
52
57
|
}
|
|
53
58
|
});
|
|
54
59
|
|
|
55
|
-
router.delete('/:id',
|
|
60
|
+
router.delete('/:id', runnerOrAdmin, async (req, res) => {
|
|
56
61
|
try {
|
|
57
62
|
await runnerService.stop(req.params.id);
|
|
58
63
|
await runnerService.remove(req.params.id);
|
|
@@ -62,7 +67,7 @@ router.delete('/:id', jwtAuth, requireAdmin, async (req, res) => {
|
|
|
62
67
|
}
|
|
63
68
|
});
|
|
64
69
|
|
|
65
|
-
router.post('/:id/ping',
|
|
70
|
+
router.post('/:id/ping', runnerOrAdmin, async (req, res) => {
|
|
66
71
|
try {
|
|
67
72
|
const result = await runnerService.ping(req.params.id);
|
|
68
73
|
res.json(result);
|
|
@@ -71,7 +76,7 @@ router.post('/:id/ping', jwtAuth, requireAdmin, async (req, res) => {
|
|
|
71
76
|
}
|
|
72
77
|
});
|
|
73
78
|
|
|
74
|
-
router.post('/:id/stop',
|
|
79
|
+
router.post('/:id/stop', runnerOrAdmin, async (req, res) => {
|
|
75
80
|
try {
|
|
76
81
|
const result = await runnerService.stop(req.params.id);
|
|
77
82
|
res.json(result);
|
|
@@ -80,7 +85,7 @@ router.post('/:id/stop', jwtAuth, requireAdmin, async (req, res) => {
|
|
|
80
85
|
}
|
|
81
86
|
});
|
|
82
87
|
|
|
83
|
-
router.post('/:id/restart',
|
|
88
|
+
router.post('/:id/restart', runnerOrAdmin, async (req, res) => {
|
|
84
89
|
try {
|
|
85
90
|
const result = await runnerService.restart(req.params.id);
|
|
86
91
|
res.json(result);
|
|
@@ -31,12 +31,21 @@ const {
|
|
|
31
31
|
findPidOnPort,
|
|
32
32
|
killPort
|
|
33
33
|
} = runnerProcess;
|
|
34
|
-
const { generateToken, registerWithPrimary, detectLanIp } = nodeRegister;
|
|
34
|
+
const { generateToken, registerWithPrimary, detectLanIp, loadNodeConfig } = nodeRegister;
|
|
35
35
|
|
|
36
36
|
const API_URL = process.env.PLUM_API_URL || 'http://localhost:3001';
|
|
37
37
|
|
|
38
38
|
const cancelled = (v) => clack.isCancel(v);
|
|
39
39
|
|
|
40
|
+
// The mutating /runners routes accept a registered runner's own token in place
|
|
41
|
+
// of an admin session — this manager has no browser/JWT to present, but a node
|
|
42
|
+
// already gets a token at registration time (see backend/middleware/jwtAuth.js
|
|
43
|
+
// / runnerOrAdmin.js), so reuse that instead of a separate credential.
|
|
44
|
+
const localToken = loadNodeConfig(process.cwd()).token;
|
|
45
|
+
function authHeaders() {
|
|
46
|
+
return localToken ? { Authorization: `Bearer ${localToken}` } : {};
|
|
47
|
+
}
|
|
48
|
+
|
|
40
49
|
/**
|
|
41
50
|
* When the primary runs in Docker it cannot reach `localhost` on the host —
|
|
42
51
|
* only substitute when the user explicitly enters localhost/127.0.0.1.
|
|
@@ -53,7 +62,7 @@ function resolveNodeUrl(url) {
|
|
|
53
62
|
}
|
|
54
63
|
|
|
55
64
|
async function fetchRunners() {
|
|
56
|
-
const res = await fetch(`${API_URL}/runners
|
|
65
|
+
const res = await fetch(`${API_URL}/runners`, { headers: authHeaders() });
|
|
57
66
|
if (!res.ok) throw new Error(`HTTP ${res.status}`);
|
|
58
67
|
const body = await res.json();
|
|
59
68
|
return body.runners ?? [];
|
|
@@ -61,7 +70,10 @@ async function fetchRunners() {
|
|
|
61
70
|
|
|
62
71
|
async function pingRunner(id) {
|
|
63
72
|
try {
|
|
64
|
-
const res = await fetch(`${API_URL}/runners/${id}/ping`, {
|
|
73
|
+
const res = await fetch(`${API_URL}/runners/${id}/ping`, {
|
|
74
|
+
method: 'POST',
|
|
75
|
+
headers: authHeaders()
|
|
76
|
+
});
|
|
65
77
|
const body = await res.json().catch(() => ({}));
|
|
66
78
|
return body.ok === true;
|
|
67
79
|
} catch {
|
|
@@ -70,7 +82,7 @@ async function pingRunner(id) {
|
|
|
70
82
|
}
|
|
71
83
|
|
|
72
84
|
async function deleteRunner(id) {
|
|
73
|
-
const res = await fetch(`${API_URL}/runners/${id}`, { method: 'DELETE' });
|
|
85
|
+
const res = await fetch(`${API_URL}/runners/${id}`, { method: 'DELETE', headers: authHeaders() });
|
|
74
86
|
if (!res.ok) {
|
|
75
87
|
const body = await res.json().catch(() => ({}));
|
|
76
88
|
throw new Error(body.error || `HTTP ${res.status}`);
|
|
@@ -83,7 +95,10 @@ async function deleteRunner(id) {
|
|
|
83
95
|
* reachable runner, not just ones whose process this manager owns by PID.
|
|
84
96
|
*/
|
|
85
97
|
async function controlRunner(id, action) {
|
|
86
|
-
const res = await fetch(`${API_URL}/runners/${id}/${action}`, {
|
|
98
|
+
const res = await fetch(`${API_URL}/runners/${id}/${action}`, {
|
|
99
|
+
method: 'POST',
|
|
100
|
+
headers: authHeaders()
|
|
101
|
+
});
|
|
87
102
|
const body = await res.json().catch(() => ({}));
|
|
88
103
|
if (!res.ok || body.ok === false) throw new Error(body.error || `HTTP ${res.status}`);
|
|
89
104
|
}
|
|
@@ -75,6 +75,16 @@ const update = async (id, { name, url, token, browser }) => {
|
|
|
75
75
|
// outbound requests to the runner node (ping/stop/restart/dispatch below).
|
|
76
76
|
const getById = (id) => prisma.runner.findUnique({ where: { id } });
|
|
77
77
|
|
|
78
|
+
// A runner's own token (generated once at registration) doubles as its
|
|
79
|
+
// credential for calling back into the primary's control routes — no separate
|
|
80
|
+
// secret to configure. Any currently-registered token is accepted, not just
|
|
81
|
+
// the target runner's own, since one CLI session manages the whole fleet.
|
|
82
|
+
async function isValidToken(token) {
|
|
83
|
+
if (!token) return false;
|
|
84
|
+
const runner = await prisma.runner.findFirst({ where: { token }, select: { id: true } });
|
|
85
|
+
return Boolean(runner);
|
|
86
|
+
}
|
|
87
|
+
|
|
78
88
|
// ---------------------------------------------------------------------------
|
|
79
89
|
// Connectivity
|
|
80
90
|
// ---------------------------------------------------------------------------
|
|
@@ -275,6 +285,7 @@ module.exports = {
|
|
|
275
285
|
remove,
|
|
276
286
|
update,
|
|
277
287
|
getById,
|
|
288
|
+
isValidToken,
|
|
278
289
|
probe,
|
|
279
290
|
ping,
|
|
280
291
|
stop,
|
|
@@ -636,7 +636,7 @@ const options = {
|
|
|
636
636
|
<div class="error">
|
|
637
637
|
<span class="status">` + status + '</span>\n <div class="message">\n <h1>' + message + "</h1>\n </div>\n </div>\n </body>\n</html>\n"
|
|
638
638
|
},
|
|
639
|
-
version_hash: "
|
|
639
|
+
version_hash: "1m6qzpt"
|
|
640
640
|
};
|
|
641
641
|
async function get_hooks() {
|
|
642
642
|
let handle;
|
|
@@ -10,7 +10,7 @@ return {
|
|
|
10
10
|
assets: new Set(["favicon-32x32.png","favicon.ico"]),
|
|
11
11
|
mimeTypes: {".png":"image/png"},
|
|
12
12
|
_: {
|
|
13
|
-
client: {start:"_app/immutable/entry/start.
|
|
13
|
+
client: {start:"_app/immutable/entry/start.Bn25CW9X.js",app:"_app/immutable/entry/app.B0GH5ONo.js",imports:["_app/immutable/entry/start.Bn25CW9X.js","_app/immutable/chunks/Dhf4xQKo.js","_app/immutable/chunks/BAACMRH5.js","_app/immutable/entry/app.B0GH5ONo.js","_app/immutable/chunks/BAACMRH5.js","_app/immutable/chunks/CMBQQ9RZ.js","_app/immutable/chunks/CgnwuKKO.js","_app/immutable/chunks/C8OURRSs.js","_app/immutable/chunks/2zMvi6fR.js"],stylesheets:[],fonts:[],uses_env_dynamic_public:false},
|
|
14
14
|
nodes: [
|
|
15
15
|
__memo(() => import('./nodes/0.js')),
|
|
16
16
|
__memo(() => import('./nodes/1.js')),
|
|
@@ -10,7 +10,7 @@ return {
|
|
|
10
10
|
assets: new Set(["favicon-32x32.png","favicon.ico"]),
|
|
11
11
|
mimeTypes: {".png":"image/png"},
|
|
12
12
|
_: {
|
|
13
|
-
client: {start:"_app/immutable/entry/start.
|
|
13
|
+
client: {start:"_app/immutable/entry/start.Bn25CW9X.js",app:"_app/immutable/entry/app.B0GH5ONo.js",imports:["_app/immutable/entry/start.Bn25CW9X.js","_app/immutable/chunks/Dhf4xQKo.js","_app/immutable/chunks/BAACMRH5.js","_app/immutable/entry/app.B0GH5ONo.js","_app/immutable/chunks/BAACMRH5.js","_app/immutable/chunks/CMBQQ9RZ.js","_app/immutable/chunks/CgnwuKKO.js","_app/immutable/chunks/C8OURRSs.js","_app/immutable/chunks/2zMvi6fR.js"],stylesheets:[],fonts:[],uses_env_dynamic_public:false},
|
|
14
14
|
nodes: [
|
|
15
15
|
__memo(() => import('./nodes/0.js')),
|
|
16
16
|
__memo(() => import('./nodes/1.js')),
|
|
@@ -5,6 +5,6 @@ let component_cache;
|
|
|
5
5
|
export const component = async () => component_cache ??= (await import('../entries/pages/_layout.svelte.js')).default;
|
|
6
6
|
export { universal };
|
|
7
7
|
export const universal_id = "src/routes/+layout.js";
|
|
8
|
-
export const imports = ["_app/immutable/nodes/0.
|
|
8
|
+
export const imports = ["_app/immutable/nodes/0.-imXt0f5.js","_app/immutable/chunks/CMBQQ9RZ.js","_app/immutable/chunks/BAACMRH5.js","_app/immutable/chunks/CKDtmZUQ.js","_app/immutable/chunks/CgnwuKKO.js","_app/immutable/chunks/TOCyHP97.js","_app/immutable/chunks/Dhf4xQKo.js","_app/immutable/chunks/DEKAA-Fm.js","_app/immutable/chunks/CUC98kMZ.js","_app/immutable/chunks/C1Vid6wz.js","_app/immutable/chunks/3InFPLvE.js","_app/immutable/chunks/DHM6H-es.js","_app/immutable/chunks/DbgD7JLa.js","_app/immutable/chunks/BUwxRmHf.js","_app/immutable/chunks/DSLBMEpr.js","_app/immutable/chunks/DMZwI8Cj.js","_app/immutable/chunks/C8OURRSs.js","_app/immutable/chunks/CMEtqUfQ.js","_app/immutable/chunks/CuqnZUex.js","_app/immutable/chunks/BmZ9upwL.js"];
|
|
9
9
|
export const stylesheets = ["_app/immutable/assets/0.BhSG-jZH.css","_app/immutable/assets/ConfirmModal.Dd3uP-Sk.css","_app/immutable/assets/Modal.BZpm0HP8.css","_app/immutable/assets/Badge.D1SV0Gv7.css"];
|
|
10
10
|
export const fonts = [];
|
|
@@ -3,6 +3,6 @@
|
|
|
3
3
|
export const index = 1;
|
|
4
4
|
let component_cache;
|
|
5
5
|
export const component = async () => component_cache ??= (await import('../entries/fallbacks/error.svelte.js')).default;
|
|
6
|
-
export const imports = ["_app/immutable/nodes/1.
|
|
6
|
+
export const imports = ["_app/immutable/nodes/1.Dom3CKWF.js","_app/immutable/chunks/CMBQQ9RZ.js","_app/immutable/chunks/BAACMRH5.js","_app/immutable/chunks/CKDtmZUQ.js","_app/immutable/chunks/Dhf4xQKo.js"];
|
|
7
7
|
export const stylesheets = [];
|
|
8
8
|
export const fonts = [];
|
|
@@ -3,6 +3,6 @@
|
|
|
3
3
|
export const index = 11;
|
|
4
4
|
let component_cache;
|
|
5
5
|
export const component = async () => component_cache ??= (await import('../entries/pages/test-repository/runs/_id_/_page.svelte.js')).default;
|
|
6
|
-
export const imports = ["_app/immutable/nodes/11.
|
|
6
|
+
export const imports = ["_app/immutable/nodes/11.DMlayLCK.js","_app/immutable/chunks/CMBQQ9RZ.js","_app/immutable/chunks/BAACMRH5.js","_app/immutable/chunks/CKDtmZUQ.js","_app/immutable/chunks/CgnwuKKO.js","_app/immutable/chunks/TOCyHP97.js","_app/immutable/chunks/CUC98kMZ.js","_app/immutable/chunks/t-La0hgu.js","_app/immutable/chunks/CzlPaHY9.js","_app/immutable/chunks/C8OURRSs.js","_app/immutable/chunks/CNdcuGR0.js","_app/immutable/chunks/DEKAA-Fm.js","_app/immutable/chunks/Dhf4xQKo.js","_app/immutable/chunks/BUwxRmHf.js","_app/immutable/chunks/C1Vid6wz.js","_app/immutable/chunks/DHM6H-es.js","_app/immutable/chunks/CMEtqUfQ.js","_app/immutable/chunks/BKuh57WU.js","_app/immutable/chunks/BAMUGSh7.js"];
|
|
7
7
|
export const stylesheets = ["_app/immutable/assets/11.BWAH0Beh.css","_app/immutable/assets/Button.FOWXxvc7.css","_app/immutable/assets/Modal.BZpm0HP8.css","_app/immutable/assets/EmptyState.DUDM4P19.css"];
|
|
8
8
|
export const fonts = [];
|
|
@@ -3,6 +3,6 @@
|
|
|
3
3
|
export const index = 12;
|
|
4
4
|
let component_cache;
|
|
5
5
|
export const component = async () => component_cache ??= (await import('../entries/pages/test-repository/suites/_id_/_page.svelte.js')).default;
|
|
6
|
-
export const imports = ["_app/immutable/nodes/12.
|
|
6
|
+
export const imports = ["_app/immutable/nodes/12.Bu89A1eX.js","_app/immutable/chunks/CMBQQ9RZ.js","_app/immutable/chunks/BAACMRH5.js","_app/immutable/chunks/CKDtmZUQ.js","_app/immutable/chunks/CgnwuKKO.js","_app/immutable/chunks/TOCyHP97.js","_app/immutable/chunks/CUC98kMZ.js","_app/immutable/chunks/t-La0hgu.js","_app/immutable/chunks/CzlPaHY9.js","_app/immutable/chunks/C8OURRSs.js","_app/immutable/chunks/CNdcuGR0.js","_app/immutable/chunks/Bfc47y5P.js","_app/immutable/chunks/DEKAA-Fm.js","_app/immutable/chunks/Dhf4xQKo.js","_app/immutable/chunks/BUwxRmHf.js","_app/immutable/chunks/C1Vid6wz.js","_app/immutable/chunks/BKuh57WU.js","_app/immutable/chunks/DMZwI8Cj.js","_app/immutable/chunks/CMEtqUfQ.js","_app/immutable/chunks/w0D4Uzlq.js","_app/immutable/chunks/BAMUGSh7.js"];
|
|
7
7
|
export const stylesheets = ["_app/immutable/assets/12.Bj_a_5lv.css","_app/immutable/assets/Button.FOWXxvc7.css","_app/immutable/assets/EmptyState.DUDM4P19.css","_app/immutable/assets/ConfirmModal.Dd3uP-Sk.css","_app/immutable/assets/Modal.BZpm0HP8.css","_app/immutable/assets/Pagination.DZmi2Po-.css"];
|
|
8
8
|
export const fonts = [];
|
|
@@ -3,6 +3,6 @@
|
|
|
3
3
|
export const index = 3;
|
|
4
4
|
let component_cache;
|
|
5
5
|
export const component = async () => component_cache ??= (await import('../entries/pages/login/_page.svelte.js')).default;
|
|
6
|
-
export const imports = ["_app/immutable/nodes/3.
|
|
6
|
+
export const imports = ["_app/immutable/nodes/3.B86rlHXU.js","_app/immutable/chunks/CMBQQ9RZ.js","_app/immutable/chunks/BAACMRH5.js","_app/immutable/chunks/CKDtmZUQ.js","_app/immutable/chunks/CgnwuKKO.js","_app/immutable/chunks/CUC98kMZ.js","_app/immutable/chunks/t-La0hgu.js","_app/immutable/chunks/Dhf4xQKo.js","_app/immutable/chunks/C1Vid6wz.js","_app/immutable/chunks/BmZ9upwL.js","_app/immutable/chunks/DCgHuuvs.js","_app/immutable/chunks/Dlnxgs49.js"];
|
|
7
7
|
export const stylesheets = ["_app/immutable/assets/3.BR3wgXcZ.css"];
|
|
8
8
|
export const fonts = [];
|
|
@@ -3,6 +3,6 @@
|
|
|
3
3
|
export const index = 5;
|
|
4
4
|
let component_cache;
|
|
5
5
|
export const component = async () => component_cache ??= (await import('../entries/pages/reports/_id_/_page.svelte.js')).default;
|
|
6
|
-
export const imports = ["_app/immutable/nodes/5.
|
|
6
|
+
export const imports = ["_app/immutable/nodes/5.CqTXvadV.js","_app/immutable/chunks/CMBQQ9RZ.js","_app/immutable/chunks/BAACMRH5.js","_app/immutable/chunks/CKDtmZUQ.js","_app/immutable/chunks/CgnwuKKO.js","_app/immutable/chunks/TOCyHP97.js","_app/immutable/chunks/CUC98kMZ.js","_app/immutable/chunks/Bfc47y5P.js","_app/immutable/chunks/CNdcuGR0.js","_app/immutable/chunks/DEKAA-Fm.js","_app/immutable/chunks/Dhf4xQKo.js","_app/immutable/chunks/DbgD7JLa.js","_app/immutable/chunks/DSLBMEpr.js","_app/immutable/chunks/Co3xKhEp.js","_app/immutable/chunks/CuqnZUex.js","_app/immutable/chunks/C8OURRSs.js","_app/immutable/chunks/CGeZlCaI.js"];
|
|
7
7
|
export const stylesheets = ["_app/immutable/assets/5.DFV9OgAu.css","_app/immutable/assets/Badge.D1SV0Gv7.css","_app/immutable/assets/BackLink.CvWWuO3h.css"];
|
|
8
8
|
export const fonts = [];
|
|
@@ -3,6 +3,6 @@
|
|
|
3
3
|
export const index = 6;
|
|
4
4
|
let component_cache;
|
|
5
5
|
export const component = async () => component_cache ??= (await import('../entries/pages/reports/live/_page.svelte.js')).default;
|
|
6
|
-
export const imports = ["_app/immutable/nodes/6.
|
|
6
|
+
export const imports = ["_app/immutable/nodes/6.BJZ62MCd.js","_app/immutable/chunks/CMBQQ9RZ.js","_app/immutable/chunks/BAACMRH5.js","_app/immutable/chunks/CKDtmZUQ.js","_app/immutable/chunks/CgnwuKKO.js","_app/immutable/chunks/TOCyHP97.js","_app/immutable/chunks/CUC98kMZ.js","_app/immutable/chunks/2zMvi6fR.js","_app/immutable/chunks/Dhf4xQKo.js","_app/immutable/chunks/DEKAA-Fm.js","_app/immutable/chunks/DHM6H-es.js","_app/immutable/chunks/C1Vid6wz.js","_app/immutable/chunks/DbgD7JLa.js","_app/immutable/chunks/Co3xKhEp.js","_app/immutable/chunks/DSLBMEpr.js","_app/immutable/chunks/CGeZlCaI.js","_app/immutable/chunks/C8OURRSs.js","_app/immutable/chunks/CuqnZUex.js"];
|
|
7
7
|
export const stylesheets = ["_app/immutable/assets/6.CFnbmY-D.css","_app/immutable/assets/BackLink.CvWWuO3h.css","_app/immutable/assets/Badge.D1SV0Gv7.css"];
|
|
8
8
|
export const fonts = [];
|
|
@@ -3,6 +3,6 @@
|
|
|
3
3
|
export const index = 8;
|
|
4
4
|
let component_cache;
|
|
5
5
|
export const component = async () => component_cache ??= (await import('../entries/pages/settings/_page.svelte.js')).default;
|
|
6
|
-
export const imports = ["_app/immutable/nodes/8.
|
|
6
|
+
export const imports = ["_app/immutable/nodes/8.B4fj2Xyu.js","_app/immutable/chunks/CMBQQ9RZ.js","_app/immutable/chunks/BAACMRH5.js","_app/immutable/chunks/CKDtmZUQ.js","_app/immutable/chunks/CgnwuKKO.js","_app/immutable/chunks/TOCyHP97.js","_app/immutable/chunks/CUC98kMZ.js","_app/immutable/chunks/t-La0hgu.js","_app/immutable/chunks/CzlPaHY9.js","_app/immutable/chunks/C8OURRSs.js","_app/immutable/chunks/CNdcuGR0.js","_app/immutable/chunks/2zMvi6fR.js","_app/immutable/chunks/Dhf4xQKo.js","_app/immutable/chunks/3InFPLvE.js","_app/immutable/chunks/C1Vid6wz.js","_app/immutable/chunks/BUwxRmHf.js","_app/immutable/chunks/BmZ9upwL.js","_app/immutable/chunks/DHM6H-es.js","_app/immutable/chunks/DCgHuuvs.js","_app/immutable/chunks/DMZwI8Cj.js","_app/immutable/chunks/CMEtqUfQ.js","_app/immutable/chunks/CuqnZUex.js"];
|
|
7
7
|
export const stylesheets = ["_app/immutable/assets/8.BwgOqeMo.css","_app/immutable/assets/Button.FOWXxvc7.css","_app/immutable/assets/ConfirmModal.Dd3uP-Sk.css","_app/immutable/assets/Modal.BZpm0HP8.css","_app/immutable/assets/Badge.D1SV0Gv7.css"];
|
|
8
8
|
export const fonts = [];
|
|
@@ -3,6 +3,6 @@
|
|
|
3
3
|
export const index = 9;
|
|
4
4
|
let component_cache;
|
|
5
5
|
export const component = async () => component_cache ??= (await import('../entries/pages/setup/_page.svelte.js')).default;
|
|
6
|
-
export const imports = ["_app/immutable/nodes/9.
|
|
6
|
+
export const imports = ["_app/immutable/nodes/9.C57_2xq6.js","_app/immutable/chunks/CMBQQ9RZ.js","_app/immutable/chunks/BAACMRH5.js","_app/immutable/chunks/CKDtmZUQ.js","_app/immutable/chunks/CgnwuKKO.js","_app/immutable/chunks/CUC98kMZ.js","_app/immutable/chunks/t-La0hgu.js","_app/immutable/chunks/Dhf4xQKo.js","_app/immutable/chunks/BmZ9upwL.js","_app/immutable/chunks/C1Vid6wz.js","_app/immutable/chunks/DCgHuuvs.js","_app/immutable/chunks/Dlnxgs49.js"];
|
|
7
7
|
export const stylesheets = ["_app/immutable/assets/9._h2o67kg.css"];
|
|
8
8
|
export const fonts = [];
|
|
@@ -21,7 +21,7 @@ export const options = {
|
|
|
21
21
|
app: ({ head, body, assets, nonce, env }) => "<!--\nThis file is part of Plum.\nLicensed under the MIT License. See LICENSE file in the project root for details.\n-->\n<!doctype html>\n<html lang=\"en\" data-theme=\"light\">\n\t<head>\n\t\t<meta charset=\"utf-8\" />\n\t\t<link rel=\"icon\" href=\"" + assets + "/favicon.ico\" />\n\t\t<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n\t\t<link rel=\"preconnect\" href=\"https://fonts.googleapis.com\" />\n\t\t<link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin />\n\t\t<link\n\t\t\thref=\"https://fonts.googleapis.com/css2?family=Playfair+Display:wght@400;500&family=DM+Sans:wght@300;400;500&display=swap\"\n\t\t\trel=\"stylesheet\"\n\t\t/>\n\t\t<!-- Prevent theme flash before Svelte hydrates -->\n\t\t<script>\n\t\t\ttry {\n\t\t\t\tconst t = localStorage.getItem('plum-theme');\n\t\t\t\tif (t) document.documentElement.setAttribute('data-theme', t);\n\t\t\t} catch (e) {}\n\t\t</script>\n\t\t" + head + "\n\t</head>\n\t<body data-sveltekit-preload-data=\"hover\">\n\t\t<div style=\"display: contents\">" + body + "</div>\n\t</body>\n</html>\n",
|
|
22
22
|
error: ({ status, message }) => "<!doctype html>\n<html lang=\"en\">\n\t<head>\n\t\t<meta charset=\"utf-8\" />\n\t\t<title>" + message + "</title>\n\n\t\t<style>\n\t\t\tbody {\n\t\t\t\t--bg: white;\n\t\t\t\t--fg: #222;\n\t\t\t\t--divider: #ccc;\n\t\t\t\tbackground: var(--bg);\n\t\t\t\tcolor: var(--fg);\n\t\t\t\tfont-family:\n\t\t\t\t\tsystem-ui,\n\t\t\t\t\t-apple-system,\n\t\t\t\t\tBlinkMacSystemFont,\n\t\t\t\t\t'Segoe UI',\n\t\t\t\t\tRoboto,\n\t\t\t\t\tOxygen,\n\t\t\t\t\tUbuntu,\n\t\t\t\t\tCantarell,\n\t\t\t\t\t'Open Sans',\n\t\t\t\t\t'Helvetica Neue',\n\t\t\t\t\tsans-serif;\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t\tjustify-content: center;\n\t\t\t\theight: 100vh;\n\t\t\t\tmargin: 0;\n\t\t\t}\n\n\t\t\t.error {\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t\tmax-width: 32rem;\n\t\t\t\tmargin: 0 1rem;\n\t\t\t}\n\n\t\t\t.status {\n\t\t\t\tfont-weight: 200;\n\t\t\t\tfont-size: 3rem;\n\t\t\t\tline-height: 1;\n\t\t\t\tposition: relative;\n\t\t\t\ttop: -0.05rem;\n\t\t\t}\n\n\t\t\t.message {\n\t\t\t\tborder-left: 1px solid var(--divider);\n\t\t\t\tpadding: 0 0 0 1rem;\n\t\t\t\tmargin: 0 0 0 1rem;\n\t\t\t\tmin-height: 2.5rem;\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t}\n\n\t\t\t.message h1 {\n\t\t\t\tfont-weight: 400;\n\t\t\t\tfont-size: 1em;\n\t\t\t\tmargin: 0;\n\t\t\t}\n\n\t\t\t@media (prefers-color-scheme: dark) {\n\t\t\t\tbody {\n\t\t\t\t\t--bg: #222;\n\t\t\t\t\t--fg: #ddd;\n\t\t\t\t\t--divider: #666;\n\t\t\t\t}\n\t\t\t}\n\t\t</style>\n\t</head>\n\t<body>\n\t\t<div class=\"error\">\n\t\t\t<span class=\"status\">" + status + "</span>\n\t\t\t<div class=\"message\">\n\t\t\t\t<h1>" + message + "</h1>\n\t\t\t</div>\n\t\t</div>\n\t</body>\n</html>\n"
|
|
23
23
|
},
|
|
24
|
-
version_hash: "
|
|
24
|
+
version_hash: "1m6qzpt"
|
|
25
25
|
};
|
|
26
26
|
|
|
27
27
|
export async function get_hooks() {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
".svelte-kit/generated/client-optimized/app.js": {
|
|
3
|
-
"file": "_app/immutable/entry/app.
|
|
3
|
+
"file": "_app/immutable/entry/app.B0GH5ONo.js",
|
|
4
4
|
"name": "entry/app",
|
|
5
5
|
"src": ".svelte-kit/generated/client-optimized/app.js",
|
|
6
6
|
"isEntry": true,
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
]
|
|
29
29
|
},
|
|
30
30
|
".svelte-kit/generated/client-optimized/nodes/0.js": {
|
|
31
|
-
"file": "_app/immutable/nodes/0.
|
|
31
|
+
"file": "_app/immutable/nodes/0.-imXt0f5.js",
|
|
32
32
|
"name": "nodes/0",
|
|
33
33
|
"src": ".svelte-kit/generated/client-optimized/nodes/0.js",
|
|
34
34
|
"isEntry": true,
|
|
@@ -39,8 +39,8 @@
|
|
|
39
39
|
"_BAACMRH5.js",
|
|
40
40
|
"_CgnwuKKO.js",
|
|
41
41
|
"_TOCyHP97.js",
|
|
42
|
-
"
|
|
43
|
-
"
|
|
42
|
+
"_Dhf4xQKo.js",
|
|
43
|
+
"_DEKAA-Fm.js",
|
|
44
44
|
"_CUC98kMZ.js",
|
|
45
45
|
"_C1Vid6wz.js",
|
|
46
46
|
"_3InFPLvE.js",
|
|
@@ -57,7 +57,7 @@
|
|
|
57
57
|
]
|
|
58
58
|
},
|
|
59
59
|
".svelte-kit/generated/client-optimized/nodes/1.js": {
|
|
60
|
-
"file": "_app/immutable/nodes/1.
|
|
60
|
+
"file": "_app/immutable/nodes/1.Dom3CKWF.js",
|
|
61
61
|
"name": "nodes/1",
|
|
62
62
|
"src": ".svelte-kit/generated/client-optimized/nodes/1.js",
|
|
63
63
|
"isEntry": true,
|
|
@@ -66,7 +66,7 @@
|
|
|
66
66
|
"_CMBQQ9RZ.js",
|
|
67
67
|
"_CKDtmZUQ.js",
|
|
68
68
|
"_BAACMRH5.js",
|
|
69
|
-
"
|
|
69
|
+
"_Dhf4xQKo.js"
|
|
70
70
|
]
|
|
71
71
|
},
|
|
72
72
|
".svelte-kit/generated/client-optimized/nodes/10.js": {
|
|
@@ -97,7 +97,7 @@
|
|
|
97
97
|
]
|
|
98
98
|
},
|
|
99
99
|
".svelte-kit/generated/client-optimized/nodes/11.js": {
|
|
100
|
-
"file": "_app/immutable/nodes/11.
|
|
100
|
+
"file": "_app/immutable/nodes/11.DMlayLCK.js",
|
|
101
101
|
"name": "nodes/11",
|
|
102
102
|
"src": ".svelte-kit/generated/client-optimized/nodes/11.js",
|
|
103
103
|
"isEntry": true,
|
|
@@ -111,7 +111,7 @@
|
|
|
111
111
|
"_CUC98kMZ.js",
|
|
112
112
|
"_t-La0hgu.js",
|
|
113
113
|
"_CzlPaHY9.js",
|
|
114
|
-
"
|
|
114
|
+
"_DEKAA-Fm.js",
|
|
115
115
|
"_BUwxRmHf.js",
|
|
116
116
|
"_DHM6H-es.js",
|
|
117
117
|
"_C1Vid6wz.js",
|
|
@@ -125,7 +125,7 @@
|
|
|
125
125
|
]
|
|
126
126
|
},
|
|
127
127
|
".svelte-kit/generated/client-optimized/nodes/12.js": {
|
|
128
|
-
"file": "_app/immutable/nodes/12.
|
|
128
|
+
"file": "_app/immutable/nodes/12.Bu89A1eX.js",
|
|
129
129
|
"name": "nodes/12",
|
|
130
130
|
"src": ".svelte-kit/generated/client-optimized/nodes/12.js",
|
|
131
131
|
"isEntry": true,
|
|
@@ -141,7 +141,7 @@
|
|
|
141
141
|
"_CzlPaHY9.js",
|
|
142
142
|
"_Bfc47y5P.js",
|
|
143
143
|
"_CNdcuGR0.js",
|
|
144
|
-
"
|
|
144
|
+
"_DEKAA-Fm.js",
|
|
145
145
|
"_BUwxRmHf.js",
|
|
146
146
|
"_BKuh57WU.js",
|
|
147
147
|
"_DMZwI8Cj.js",
|
|
@@ -176,7 +176,7 @@
|
|
|
176
176
|
]
|
|
177
177
|
},
|
|
178
178
|
".svelte-kit/generated/client-optimized/nodes/3.js": {
|
|
179
|
-
"file": "_app/immutable/nodes/3.
|
|
179
|
+
"file": "_app/immutable/nodes/3.B86rlHXU.js",
|
|
180
180
|
"name": "nodes/3",
|
|
181
181
|
"src": ".svelte-kit/generated/client-optimized/nodes/3.js",
|
|
182
182
|
"isEntry": true,
|
|
@@ -188,7 +188,7 @@
|
|
|
188
188
|
"_CgnwuKKO.js",
|
|
189
189
|
"_CUC98kMZ.js",
|
|
190
190
|
"_t-La0hgu.js",
|
|
191
|
-
"
|
|
191
|
+
"_Dhf4xQKo.js",
|
|
192
192
|
"_C1Vid6wz.js",
|
|
193
193
|
"_BmZ9upwL.js",
|
|
194
194
|
"_DCgHuuvs.js",
|
|
@@ -225,7 +225,7 @@
|
|
|
225
225
|
]
|
|
226
226
|
},
|
|
227
227
|
".svelte-kit/generated/client-optimized/nodes/5.js": {
|
|
228
|
-
"file": "_app/immutable/nodes/5.
|
|
228
|
+
"file": "_app/immutable/nodes/5.CqTXvadV.js",
|
|
229
229
|
"name": "nodes/5",
|
|
230
230
|
"src": ".svelte-kit/generated/client-optimized/nodes/5.js",
|
|
231
231
|
"isEntry": true,
|
|
@@ -239,7 +239,7 @@
|
|
|
239
239
|
"_CUC98kMZ.js",
|
|
240
240
|
"_Bfc47y5P.js",
|
|
241
241
|
"_CNdcuGR0.js",
|
|
242
|
-
"
|
|
242
|
+
"_DEKAA-Fm.js",
|
|
243
243
|
"_DbgD7JLa.js",
|
|
244
244
|
"_DSLBMEpr.js",
|
|
245
245
|
"_Co3xKhEp.js",
|
|
@@ -252,7 +252,7 @@
|
|
|
252
252
|
]
|
|
253
253
|
},
|
|
254
254
|
".svelte-kit/generated/client-optimized/nodes/6.js": {
|
|
255
|
-
"file": "_app/immutable/nodes/6.
|
|
255
|
+
"file": "_app/immutable/nodes/6.BJZ62MCd.js",
|
|
256
256
|
"name": "nodes/6",
|
|
257
257
|
"src": ".svelte-kit/generated/client-optimized/nodes/6.js",
|
|
258
258
|
"isEntry": true,
|
|
@@ -265,8 +265,8 @@
|
|
|
265
265
|
"_TOCyHP97.js",
|
|
266
266
|
"_CUC98kMZ.js",
|
|
267
267
|
"_2zMvi6fR.js",
|
|
268
|
-
"
|
|
269
|
-
"
|
|
268
|
+
"_Dhf4xQKo.js",
|
|
269
|
+
"_DEKAA-Fm.js",
|
|
270
270
|
"_DHM6H-es.js",
|
|
271
271
|
"_DbgD7JLa.js",
|
|
272
272
|
"_Co3xKhEp.js",
|
|
@@ -307,7 +307,7 @@
|
|
|
307
307
|
]
|
|
308
308
|
},
|
|
309
309
|
".svelte-kit/generated/client-optimized/nodes/8.js": {
|
|
310
|
-
"file": "_app/immutable/nodes/8.
|
|
310
|
+
"file": "_app/immutable/nodes/8.B4fj2Xyu.js",
|
|
311
311
|
"name": "nodes/8",
|
|
312
312
|
"src": ".svelte-kit/generated/client-optimized/nodes/8.js",
|
|
313
313
|
"isEntry": true,
|
|
@@ -322,7 +322,7 @@
|
|
|
322
322
|
"_t-La0hgu.js",
|
|
323
323
|
"_CzlPaHY9.js",
|
|
324
324
|
"_2zMvi6fR.js",
|
|
325
|
-
"
|
|
325
|
+
"_Dhf4xQKo.js",
|
|
326
326
|
"_3InFPLvE.js",
|
|
327
327
|
"_BUwxRmHf.js",
|
|
328
328
|
"_BmZ9upwL.js",
|
|
@@ -337,7 +337,7 @@
|
|
|
337
337
|
]
|
|
338
338
|
},
|
|
339
339
|
".svelte-kit/generated/client-optimized/nodes/9.js": {
|
|
340
|
-
"file": "_app/immutable/nodes/9.
|
|
340
|
+
"file": "_app/immutable/nodes/9.C57_2xq6.js",
|
|
341
341
|
"name": "nodes/9",
|
|
342
342
|
"src": ".svelte-kit/generated/client-optimized/nodes/9.js",
|
|
343
343
|
"isEntry": true,
|
|
@@ -349,7 +349,7 @@
|
|
|
349
349
|
"_CgnwuKKO.js",
|
|
350
350
|
"_CUC98kMZ.js",
|
|
351
351
|
"_t-La0hgu.js",
|
|
352
|
-
"
|
|
352
|
+
"_Dhf4xQKo.js",
|
|
353
353
|
"_BmZ9upwL.js",
|
|
354
354
|
"_C1Vid6wz.js",
|
|
355
355
|
"_DCgHuuvs.js",
|
|
@@ -562,6 +562,13 @@
|
|
|
562
562
|
"_BAACMRH5.js"
|
|
563
563
|
]
|
|
564
564
|
},
|
|
565
|
+
"_DEKAA-Fm.js": {
|
|
566
|
+
"file": "_app/immutable/chunks/DEKAA-Fm.js",
|
|
567
|
+
"name": "stores",
|
|
568
|
+
"imports": [
|
|
569
|
+
"_Dhf4xQKo.js"
|
|
570
|
+
]
|
|
571
|
+
},
|
|
565
572
|
"_DHM6H-es.js": {
|
|
566
573
|
"file": "_app/immutable/chunks/DHM6H-es.js",
|
|
567
574
|
"name": "runner",
|
|
@@ -587,13 +594,6 @@
|
|
|
587
594
|
"_app/immutable/assets/ConfirmModal.Dd3uP-Sk.css"
|
|
588
595
|
]
|
|
589
596
|
},
|
|
590
|
-
"_DMyTUV-Y.js": {
|
|
591
|
-
"file": "_app/immutable/chunks/DMyTUV-Y.js",
|
|
592
|
-
"name": "entry",
|
|
593
|
-
"imports": [
|
|
594
|
-
"_BAACMRH5.js"
|
|
595
|
-
]
|
|
596
|
-
},
|
|
597
597
|
"_DSLBMEpr.js": {
|
|
598
598
|
"file": "_app/immutable/chunks/DSLBMEpr.js",
|
|
599
599
|
"name": "format",
|
|
@@ -608,6 +608,13 @@
|
|
|
608
608
|
"_CUC98kMZ.js"
|
|
609
609
|
]
|
|
610
610
|
},
|
|
611
|
+
"_Dhf4xQKo.js": {
|
|
612
|
+
"file": "_app/immutable/chunks/Dhf4xQKo.js",
|
|
613
|
+
"name": "entry",
|
|
614
|
+
"imports": [
|
|
615
|
+
"_BAACMRH5.js"
|
|
616
|
+
]
|
|
617
|
+
},
|
|
611
618
|
"_Dlnxgs49.js": {
|
|
612
619
|
"file": "_app/immutable/chunks/Dlnxgs49.js",
|
|
613
620
|
"name": "auth"
|
|
@@ -632,13 +639,6 @@
|
|
|
632
639
|
"_CMBQQ9RZ.js"
|
|
633
640
|
]
|
|
634
641
|
},
|
|
635
|
-
"_nURnIknV.js": {
|
|
636
|
-
"file": "_app/immutable/chunks/nURnIknV.js",
|
|
637
|
-
"name": "stores",
|
|
638
|
-
"imports": [
|
|
639
|
-
"_DMyTUV-Y.js"
|
|
640
|
-
]
|
|
641
|
-
},
|
|
642
642
|
"_t-La0hgu.js": {
|
|
643
643
|
"file": "_app/immutable/chunks/t-La0hgu.js",
|
|
644
644
|
"name": "input",
|
|
@@ -663,12 +663,12 @@
|
|
|
663
663
|
]
|
|
664
664
|
},
|
|
665
665
|
"node_modules/@sveltejs/kit/src/runtime/client/entry.js": {
|
|
666
|
-
"file": "_app/immutable/entry/start.
|
|
666
|
+
"file": "_app/immutable/entry/start.Bn25CW9X.js",
|
|
667
667
|
"name": "entry/start",
|
|
668
668
|
"src": "node_modules/@sveltejs/kit/src/runtime/client/entry.js",
|
|
669
669
|
"isEntry": true,
|
|
670
670
|
"imports": [
|
|
671
|
-
"
|
|
671
|
+
"_Dhf4xQKo.js"
|
|
672
672
|
]
|
|
673
673
|
}
|
|
674
674
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{s as e}from"./
|
|
1
|
+
import{s as e}from"./Dhf4xQKo.js";const r=()=>{const s=e;return{page:{subscribe:s.page.subscribe},navigating:{subscribe:s.navigating.subscribe},updated:s.updated}},b={subscribe(s){return r().page.subscribe(s)}};export{b as p};
|