plum-e2e 1.2.0 → 1.2.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/_scaffold/utils/browser.ts +1 -0
- package/backend/package-lock.json +2 -2
- package/backend/package.json +1 -1
- package/bin/plum.js +4 -3
- package/frontend/.svelte-kit/adapter-node/.vite/manifest.json +190 -0
- package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/Badge.DLLowvEA.css +17 -0
- package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/Button.cBruH0aD.css +17 -0
- package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_layout.D7eM-6MV.css +17 -0
- package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.BVnUajEa.css +17 -0
- package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.CGnCsn5q.css +17 -0
- package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.DBhBrHFz.css +17 -0
- package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.DOqo0UR4.css +17 -0
- package/frontend/.svelte-kit/adapter-node/chunks/Badge.js +30 -0
- package/frontend/.svelte-kit/adapter-node/chunks/Button.js +32 -0
- package/frontend/.svelte-kit/adapter-node/chunks/attributes.js +34 -0
- package/frontend/.svelte-kit/adapter-node/chunks/client.js +59 -0
- package/frontend/.svelte-kit/adapter-node/chunks/equality.js +31 -0
- package/frontend/.svelte-kit/adapter-node/chunks/escaping.js +36 -0
- package/frontend/.svelte-kit/adapter-node/chunks/exports.js +247 -0
- package/frontend/.svelte-kit/adapter-node/chunks/index.js +1135 -0
- package/frontend/.svelte-kit/adapter-node/chunks/internal.js +695 -0
- package/frontend/.svelte-kit/adapter-node/chunks/reports.js +57 -0
- package/frontend/.svelte-kit/adapter-node/entries/fallbacks/error.svelte.js +44 -0
- package/frontend/.svelte-kit/adapter-node/entries/pages/_layout.svelte.js +181 -0
- package/frontend/.svelte-kit/adapter-node/entries/pages/_page.svelte.js +164 -0
- package/frontend/.svelte-kit/adapter-node/entries/pages/reports/_page.svelte.js +141 -0
- package/frontend/.svelte-kit/adapter-node/entries/pages/reports/_slug_/_page.svelte.js +42 -0
- package/frontend/.svelte-kit/adapter-node/entries/pages/scheduled-tests/_page.svelte.js +179 -0
- package/frontend/.svelte-kit/adapter-node/index.js +3144 -0
- package/frontend/.svelte-kit/adapter-node/internal.js +30 -0
- package/frontend/.svelte-kit/adapter-node/manifest-full.js +77 -0
- package/frontend/.svelte-kit/adapter-node/manifest.js +81 -0
- package/frontend/.svelte-kit/adapter-node/nodes/0.js +25 -0
- package/frontend/.svelte-kit/adapter-node/nodes/1.js +25 -0
- package/frontend/.svelte-kit/adapter-node/nodes/2.js +25 -0
- package/frontend/.svelte-kit/adapter-node/nodes/3.js +25 -0
- package/frontend/.svelte-kit/adapter-node/nodes/4.js +25 -0
- package/frontend/.svelte-kit/adapter-node/nodes/5.js +25 -0
- package/frontend/.svelte-kit/ambient.d.ts +240 -0
- package/frontend/.svelte-kit/generated/client/app.js +51 -0
- package/frontend/.svelte-kit/generated/client/matchers.js +18 -0
- package/frontend/.svelte-kit/generated/client/nodes/0.js +18 -0
- package/frontend/.svelte-kit/generated/client/nodes/1.js +18 -0
- package/frontend/.svelte-kit/generated/client/nodes/2.js +18 -0
- package/frontend/.svelte-kit/generated/client/nodes/3.js +18 -0
- package/frontend/.svelte-kit/generated/client/nodes/4.js +18 -0
- package/frontend/.svelte-kit/generated/client/nodes/5.js +18 -0
- package/frontend/.svelte-kit/generated/client-optimized/app.js +51 -0
- package/frontend/.svelte-kit/generated/client-optimized/matchers.js +18 -0
- package/frontend/.svelte-kit/generated/client-optimized/nodes/0.js +18 -0
- package/frontend/.svelte-kit/generated/client-optimized/nodes/1.js +18 -0
- package/frontend/.svelte-kit/generated/client-optimized/nodes/2.js +18 -0
- package/frontend/.svelte-kit/generated/client-optimized/nodes/3.js +18 -0
- package/frontend/.svelte-kit/generated/client-optimized/nodes/4.js +18 -0
- package/frontend/.svelte-kit/generated/client-optimized/nodes/5.js +18 -0
- package/frontend/.svelte-kit/generated/root.js +20 -0
- package/frontend/.svelte-kit/generated/root.svelte +83 -0
- package/frontend/.svelte-kit/generated/server/internal.js +65 -0
- package/frontend/.svelte-kit/non-ambient.d.ts +42 -0
- package/frontend/.svelte-kit/output/client/.vite/manifest.json +289 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/0.CnXRuPt4.css +17 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/2.CGnCsn5q.css +17 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/3.BVnUajEa.css +17 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/4.DBhBrHFz.css +17 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/5.D93VAB-w.css +17 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/Badge.DLLowvEA.css +17 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/Button.cBruH0aD.css +17 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/_layout.D7eM-6MV.css +17 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.BVnUajEa.css +17 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.CGnCsn5q.css +17 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.DBhBrHFz.css +17 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.DOqo0UR4.css +17 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/B0bn91RF.js +18 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/B1kE5jmt.js +23 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/BKz6FZdB.js +18 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/Be4iUAB0.js +18 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/BpaMqo9O.js +18 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/Bt3-Z7H1.js +18 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/CHV2KnPr.js +18 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/CJ8q7g9Y.js +18 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/Cit9MuSg.js +20 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/CwBTqcbj.js +18 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/DBk3zeq4.js +18 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/DFJLQFic.js +18 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/DTUE7kkY.js +18 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/IYPwzKs_.js +20 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/oc0we5Us.js +18 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/rVEKg0Ak.js +18 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/entry/app.C2MbX06K.js +19 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/entry/start.GiBry-lw.js +18 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/nodes/0.BsCYK-Tn.js +21 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/nodes/1.N4gjrCnX.js +18 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/nodes/2.D9yQNzK8.js +18 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/nodes/3.CBC5WvNb.js +18 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/nodes/4.BU6UZHSE.js +19 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/nodes/5.Dzzfrntl.js +18 -0
- package/frontend/.svelte-kit/output/client/_app/version.json +1 -0
- package/frontend/.svelte-kit/output/client/favicon.png +0 -0
- package/frontend/.svelte-kit/output/server/.vite/manifest.json +190 -0
- package/frontend/.svelte-kit/output/server/_app/immutable/assets/Badge.DLLowvEA.css +17 -0
- package/frontend/.svelte-kit/output/server/_app/immutable/assets/Button.cBruH0aD.css +17 -0
- package/frontend/.svelte-kit/output/server/_app/immutable/assets/_layout.D7eM-6MV.css +17 -0
- package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.BVnUajEa.css +17 -0
- package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.CGnCsn5q.css +17 -0
- package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.DBhBrHFz.css +17 -0
- package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.DOqo0UR4.css +17 -0
- package/frontend/.svelte-kit/output/server/chunks/Badge.js +30 -0
- package/frontend/.svelte-kit/output/server/chunks/Button.js +32 -0
- package/frontend/.svelte-kit/output/server/chunks/attributes.js +34 -0
- package/frontend/.svelte-kit/output/server/chunks/client.js +59 -0
- package/frontend/.svelte-kit/output/server/chunks/equality.js +31 -0
- package/frontend/.svelte-kit/output/server/chunks/escaping.js +36 -0
- package/frontend/.svelte-kit/output/server/chunks/exports.js +247 -0
- package/frontend/.svelte-kit/output/server/chunks/index.js +1135 -0
- package/frontend/.svelte-kit/output/server/chunks/internal.js +695 -0
- package/frontend/.svelte-kit/output/server/chunks/reports.js +57 -0
- package/frontend/.svelte-kit/output/server/entries/fallbacks/error.svelte.js +44 -0
- package/frontend/.svelte-kit/output/server/entries/pages/_layout.svelte.js +181 -0
- package/frontend/.svelte-kit/output/server/entries/pages/_page.svelte.js +164 -0
- package/frontend/.svelte-kit/output/server/entries/pages/reports/_page.svelte.js +141 -0
- package/frontend/.svelte-kit/output/server/entries/pages/reports/_slug_/_page.svelte.js +42 -0
- package/frontend/.svelte-kit/output/server/entries/pages/scheduled-tests/_page.svelte.js +179 -0
- package/frontend/.svelte-kit/output/server/index.js +3144 -0
- package/frontend/.svelte-kit/output/server/internal.js +30 -0
- package/frontend/.svelte-kit/output/server/manifest-full.js +77 -0
- package/frontend/.svelte-kit/output/server/manifest.js +77 -0
- package/frontend/.svelte-kit/output/server/nodes/0.js +25 -0
- package/frontend/.svelte-kit/output/server/nodes/1.js +25 -0
- package/frontend/.svelte-kit/output/server/nodes/2.js +25 -0
- package/frontend/.svelte-kit/output/server/nodes/3.js +25 -0
- package/frontend/.svelte-kit/output/server/nodes/4.js +25 -0
- package/frontend/.svelte-kit/output/server/nodes/5.js +25 -0
- package/frontend/.svelte-kit/tsconfig.json +49 -0
- package/frontend/build/client/_app/immutable/assets/0.CnXRuPt4.css +17 -0
- package/frontend/build/client/_app/immutable/assets/0.CnXRuPt4.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/0.CnXRuPt4.css.gz +0 -0
- package/frontend/build/client/_app/immutable/assets/2.CGnCsn5q.css +17 -0
- package/frontend/build/client/_app/immutable/assets/2.CGnCsn5q.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/2.CGnCsn5q.css.gz +0 -0
- package/frontend/build/client/_app/immutable/assets/3.BVnUajEa.css +17 -0
- package/frontend/build/client/_app/immutable/assets/3.BVnUajEa.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/3.BVnUajEa.css.gz +0 -0
- package/frontend/build/client/_app/immutable/assets/4.DBhBrHFz.css +17 -0
- package/frontend/build/client/_app/immutable/assets/4.DBhBrHFz.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/4.DBhBrHFz.css.gz +0 -0
- package/frontend/build/client/_app/immutable/assets/5.D93VAB-w.css +17 -0
- package/frontend/build/client/_app/immutable/assets/5.D93VAB-w.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/5.D93VAB-w.css.gz +0 -0
- package/frontend/build/client/_app/immutable/assets/Badge.DLLowvEA.css +17 -0
- package/frontend/build/client/_app/immutable/assets/Badge.DLLowvEA.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/Badge.DLLowvEA.css.gz +0 -0
- package/frontend/build/client/_app/immutable/assets/Button.cBruH0aD.css +17 -0
- package/frontend/build/client/_app/immutable/assets/Button.cBruH0aD.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/Button.cBruH0aD.css.gz +0 -0
- package/frontend/build/client/_app/immutable/assets/_layout.D7eM-6MV.css +17 -0
- package/frontend/build/client/_app/immutable/assets/_layout.D7eM-6MV.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/_layout.D7eM-6MV.css.gz +0 -0
- package/frontend/build/client/_app/immutable/assets/_page.BVnUajEa.css +17 -0
- package/frontend/build/client/_app/immutable/assets/_page.BVnUajEa.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/_page.BVnUajEa.css.gz +0 -0
- package/frontend/build/client/_app/immutable/assets/_page.CGnCsn5q.css +17 -0
- package/frontend/build/client/_app/immutable/assets/_page.CGnCsn5q.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/_page.CGnCsn5q.css.gz +0 -0
- package/frontend/build/client/_app/immutable/assets/_page.DBhBrHFz.css +17 -0
- package/frontend/build/client/_app/immutable/assets/_page.DBhBrHFz.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/_page.DBhBrHFz.css.gz +0 -0
- package/frontend/build/client/_app/immutable/assets/_page.DOqo0UR4.css +17 -0
- package/frontend/build/client/_app/immutable/assets/_page.DOqo0UR4.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/_page.DOqo0UR4.css.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/B0bn91RF.js +18 -0
- package/frontend/build/client/_app/immutable/chunks/B0bn91RF.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/B0bn91RF.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/B1kE5jmt.js +23 -0
- package/frontend/build/client/_app/immutable/chunks/B1kE5jmt.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/B1kE5jmt.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/BKz6FZdB.js +18 -0
- package/frontend/build/client/_app/immutable/chunks/BKz6FZdB.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/BKz6FZdB.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/Be4iUAB0.js +18 -0
- package/frontend/build/client/_app/immutable/chunks/Be4iUAB0.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/Be4iUAB0.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/BpaMqo9O.js +18 -0
- package/frontend/build/client/_app/immutable/chunks/BpaMqo9O.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/BpaMqo9O.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/Bt3-Z7H1.js +18 -0
- package/frontend/build/client/_app/immutable/chunks/Bt3-Z7H1.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/Bt3-Z7H1.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/CHV2KnPr.js +18 -0
- package/frontend/build/client/_app/immutable/chunks/CHV2KnPr.js.br +18 -0
- package/frontend/build/client/_app/immutable/chunks/CHV2KnPr.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/CJ8q7g9Y.js +18 -0
- package/{resources/comments-format.text → frontend/build/client/_app/immutable/chunks/CJ8q7g9Y.js.br} +0 -0
- package/frontend/build/client/_app/immutable/chunks/CJ8q7g9Y.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/Cit9MuSg.js +20 -0
- package/frontend/build/client/_app/immutable/chunks/Cit9MuSg.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/Cit9MuSg.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/CwBTqcbj.js +18 -0
- package/frontend/build/client/_app/immutable/chunks/CwBTqcbj.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/CwBTqcbj.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/DBk3zeq4.js +18 -0
- package/frontend/build/client/_app/immutable/chunks/DBk3zeq4.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/DBk3zeq4.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/DFJLQFic.js +18 -0
- package/frontend/build/client/_app/immutable/chunks/DFJLQFic.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/DFJLQFic.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/DTUE7kkY.js +18 -0
- package/frontend/build/client/_app/immutable/chunks/DTUE7kkY.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/DTUE7kkY.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/IYPwzKs_.js +20 -0
- package/frontend/build/client/_app/immutable/chunks/IYPwzKs_.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/IYPwzKs_.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/oc0we5Us.js +18 -0
- package/frontend/build/client/_app/immutable/chunks/oc0we5Us.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/oc0we5Us.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/rVEKg0Ak.js +18 -0
- package/frontend/build/client/_app/immutable/chunks/rVEKg0Ak.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/rVEKg0Ak.js.gz +0 -0
- package/frontend/build/client/_app/immutable/entry/app.C2MbX06K.js +19 -0
- package/frontend/build/client/_app/immutable/entry/app.C2MbX06K.js.br +0 -0
- package/frontend/build/client/_app/immutable/entry/app.C2MbX06K.js.gz +0 -0
- package/frontend/build/client/_app/immutable/entry/start.GiBry-lw.js +18 -0
- package/frontend/build/client/_app/immutable/entry/start.GiBry-lw.js.br +18 -0
- package/frontend/build/client/_app/immutable/entry/start.GiBry-lw.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/0.BsCYK-Tn.js +21 -0
- package/frontend/build/client/_app/immutable/nodes/0.BsCYK-Tn.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/0.BsCYK-Tn.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/1.N4gjrCnX.js +18 -0
- package/frontend/build/client/_app/immutable/nodes/1.N4gjrCnX.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/1.N4gjrCnX.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/2.D9yQNzK8.js +18 -0
- package/frontend/build/client/_app/immutable/nodes/2.D9yQNzK8.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/2.D9yQNzK8.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/3.CBC5WvNb.js +18 -0
- package/frontend/build/client/_app/immutable/nodes/3.CBC5WvNb.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/3.CBC5WvNb.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/4.BU6UZHSE.js +19 -0
- package/frontend/build/client/_app/immutable/nodes/4.BU6UZHSE.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/4.BU6UZHSE.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/5.Dzzfrntl.js +18 -0
- package/frontend/build/client/_app/immutable/nodes/5.Dzzfrntl.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/5.Dzzfrntl.js.gz +0 -0
- package/frontend/build/client/_app/version.json +1 -0
- package/frontend/build/client/_app/version.json.br +0 -0
- package/frontend/build/client/_app/version.json.gz +0 -0
- package/frontend/build/client/favicon.png +0 -0
- package/frontend/build/env.js +111 -0
- package/frontend/build/handler.js +1511 -0
- package/frontend/build/index.js +362 -0
- package/frontend/build/server/chunks/0-BFfqmlsS.js +26 -0
- package/frontend/build/server/chunks/0-BFfqmlsS.js.map +17 -0
- package/frontend/build/server/chunks/1-hso3H4Ax.js +26 -0
- package/frontend/build/server/chunks/1-hso3H4Ax.js.map +17 -0
- package/frontend/build/server/chunks/2-BSZWXCWp.js +26 -0
- package/frontend/build/server/chunks/2-BSZWXCWp.js.map +17 -0
- package/frontend/build/server/chunks/3-BYumY9dv.js +26 -0
- package/frontend/build/server/chunks/3-BYumY9dv.js.map +17 -0
- package/frontend/build/server/chunks/4-2UUrCVtM.js +26 -0
- package/frontend/build/server/chunks/4-2UUrCVtM.js.map +17 -0
- package/frontend/build/server/chunks/5-C2_y_fwT.js +26 -0
- package/frontend/build/server/chunks/5-C2_y_fwT.js.map +17 -0
- package/frontend/build/server/chunks/Badge-CC4U7C0c.js +30 -0
- package/frontend/build/server/chunks/Badge-CC4U7C0c.js.map +17 -0
- package/frontend/build/server/chunks/Button-BLkPicwS.js +33 -0
- package/frontend/build/server/chunks/Button-BLkPicwS.js.map +17 -0
- package/frontend/build/server/chunks/_layout.svelte-Bfxcj9C6.js +183 -0
- package/frontend/build/server/chunks/_layout.svelte-Bfxcj9C6.js.map +17 -0
- package/frontend/build/server/chunks/_page.svelte-DEK6UvaI.js +45 -0
- package/frontend/build/server/chunks/_page.svelte-DEK6UvaI.js.map +17 -0
- package/frontend/build/server/chunks/_page.svelte-DScVdHOq.js +142 -0
- package/frontend/build/server/chunks/_page.svelte-DScVdHOq.js.map +17 -0
- package/frontend/build/server/chunks/_page.svelte-Ns7w2sZt.js +180 -0
- package/frontend/build/server/chunks/_page.svelte-Ns7w2sZt.js.map +17 -0
- package/frontend/build/server/chunks/_page.svelte-s6ZIOitT.js +165 -0
- package/frontend/build/server/chunks/_page.svelte-s6ZIOitT.js.map +17 -0
- package/frontend/build/server/chunks/attributes-BeaNKpgU.js +34 -0
- package/frontend/build/server/chunks/attributes-BeaNKpgU.js.map +17 -0
- package/frontend/build/server/chunks/client-C9IaEwNo.js +52 -0
- package/frontend/build/server/chunks/client-C9IaEwNo.js.map +17 -0
- package/frontend/build/server/chunks/error.svelte-HKBv5sQT.js +45 -0
- package/frontend/build/server/chunks/error.svelte-HKBv5sQT.js.map +17 -0
- package/frontend/build/server/chunks/escaping-CqgfEcN3.js +36 -0
- package/frontend/build/server/chunks/escaping-CqgfEcN3.js.map +17 -0
- package/frontend/build/server/chunks/exports-OxlCJ8yE.js +192 -0
- package/frontend/build/server/chunks/exports-OxlCJ8yE.js.map +17 -0
- package/frontend/build/server/chunks/index-CjHlq1kt.js +1076 -0
- package/frontend/build/server/chunks/index-CjHlq1kt.js.map +17 -0
- package/frontend/build/server/chunks/reports-D3ZeYSmi.js +56 -0
- package/frontend/build/server/chunks/reports-D3ZeYSmi.js.map +17 -0
- package/frontend/build/server/index.js +5015 -0
- package/frontend/build/server/index.js.map +17 -0
- package/frontend/build/server/manifest.js +84 -0
- package/frontend/build/server/manifest.js.map +17 -0
- package/frontend/build/shims.js +49 -0
- package/frontend/package-lock.json +2 -2
- package/frontend/package.json +1 -1
- package/package.json +1 -1
- package/.claude/settings.local.json +0 -29
- package/.husky/pre-commit +0 -2
- package/.prettierignore +0 -21
- package/.prettierrc +0 -15
- package/.vscode/settings.json +0 -10
- package/license-config.json +0 -37
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/*
|
|
2
|
+
This file is part of Plum.
|
|
3
|
+
|
|
4
|
+
Plum is free software: you can redistribute it and/or modify
|
|
5
|
+
it under the terms of the GNU General Public License as published by
|
|
6
|
+
the Free Software Foundation, either version 3 of the License, or
|
|
7
|
+
(at your option) any later version.
|
|
8
|
+
|
|
9
|
+
Plum is distributed in the hope that it will be useful,
|
|
10
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
11
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
12
|
+
GNU General Public License for more details.
|
|
13
|
+
|
|
14
|
+
You should have received a copy of the GNU General Public License
|
|
15
|
+
along with Plum. If not, see https://www.gnu.org/licenses/.
|
|
16
|
+
*/
|
|
17
|
+
*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.visible{visibility:visible}.collapse{visibility:collapse}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.block{display:block}.flex{display:flex}.table{display:table}.contents{display:contents}.hidden{display:none}.flex-shrink{flex-shrink:1}.border-collapse{border-collapse:collapse}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.flex-wrap{flex-wrap:wrap}.border{border-width:1px}.uppercase{text-transform:uppercase}.outline{outline-style:solid}.blur{--tw-blur: blur(8px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-filter{backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}:root{--bg: #fdfcfb;--bg-subtle: #f7f6f4;--bg-elevated: #ffffff;--border: #e9e5df;--text: #18160f;--text-muted: #9c9185;--accent: #5c1b87;--accent-soft: #f3eaff;--pass: #16a34a;--pass-soft: #dcfce7;--fail: #dc2626;--fail-soft: #fee2e2;--warn: #d97706;--warn-soft: #fef3c7;--terminal-bg: #0d0c08;--terminal-text: #d6d0c8;--font-display: "Playfair Display", Georgia, serif;--font-body: "DM Sans", system-ui, -apple-system, sans-serif;--ease-out: cubic-bezier(.16, 1, .3, 1);--duration-fast: .14s;--duration-base: .24s;--duration-slow: .4s;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 16px}[data-theme=dark]{--bg: #101009;--bg-subtle: #1a1910;--bg-elevated: #201f14;--border: #2e2c1e;--text: #f0ede6;--text-muted: #706a5e;--accent: #d0a5f5;--accent-soft: #1b0d30;--pass: #22c55e;--pass-soft: #0d2118;--fail: #f87171;--fail-soft: #2d1010;--warn: #fbbf24;--warn-soft: #2a1f06;--terminal-bg: #080807;--terminal-text: #cbc5bd}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{font-family:var(--font-body);font-weight:300;font-size:1rem;line-height:1.65;background-color:var(--bg);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.65' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='200' height='200' filter='url(%23n)' opacity='0.07'/%3E%3C/svg%3E");background-size:200px 200px;color:var(--text);transition:background-color var(--duration-base) var(--ease-out),color var(--duration-base) var(--ease-out);-webkit-font-smoothing:antialiased}h1{font-family:var(--font-display);font-weight:400;line-height:1.1;letter-spacing:-.015em;color:var(--text)}h2,h3{font-family:var(--font-display);font-weight:400;line-height:1.2;color:var(--text)}a{color:inherit;text-decoration:none}button{font-family:var(--font-body)}.field{display:flex;flex-direction:column;gap:.375rem}.field-label{display:flex;justify-content:space-between;font-size:.8125rem;font-weight:400;color:var(--text-muted)}.field-hint{font-size:.75rem;color:var(--text-muted)}.field-input{width:100%;padding:.6rem .875rem;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg-subtle);color:var(--text);font-family:var(--font-body);font-size:.875rem;font-weight:300;outline:none;transition:border-color var(--duration-fast),box-shadow var(--duration-fast);-webkit-appearance:none;-moz-appearance:none;appearance:none}.field-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.field-input:disabled{opacity:.5;cursor:not-allowed}.field-input::-moz-placeholder{color:var(--text-muted)}.field-input::placeholder{color:var(--text-muted)}.data-table{width:100%;border-collapse:collapse;font-size:.875rem}.data-table th{text-align:left;padding:.5rem 1rem;font-family:var(--font-body);font-weight:500;font-size:.7rem;letter-spacing:.07em;text-transform:uppercase;color:var(--text-muted);border-bottom:1px solid var(--border)}.data-table td{padding:.875rem 1rem;border-bottom:1px solid var(--border);color:var(--text);vertical-align:middle}.data-table tbody tr:last-child td{border-bottom:none}.card{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-lg);padding:1.5rem;transition:background var(--duration-base) var(--ease-out),border-color var(--duration-base) var(--ease-out)}.card-title{font-family:var(--font-display);font-size:1.25rem;font-weight:400;color:var(--text);margin-bottom:.25rem}.card-subtitle{font-size:.8125rem;color:var(--text-muted);margin-bottom:1.25rem}.alert{display:flex;align-items:center;gap:.625rem;padding:.75rem 1rem;border-radius:var(--radius-md);font-size:.875rem;font-weight:400}.alert-success{background:var(--pass-soft);color:var(--pass)}.alert-error{background:var(--fail-soft);color:var(--fail)}@keyframes fadeUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.nav.svelte-6bgush{position:sticky;top:0;z-index:40;background:var(--bg);border-bottom:1px solid var(--border);transition:background var(--duration-base) var(--ease-out),border-color var(--duration-base) var(--ease-out)}.inner.svelte-6bgush{max-width:1200px;margin:0 auto;padding:0 1.5rem;height:56px;display:flex;align-items:center;gap:2rem}.brand.svelte-6bgush{font-size:1.2rem;letter-spacing:-.02em;flex-shrink:0;text-decoration:none}.brand-serif.svelte-6bgush{font-family:var(--font-display);font-weight:400;color:var(--accent)}.brand-sans.svelte-6bgush{font-family:var(--font-body);font-weight:400;color:var(--text)}.links.svelte-6bgush{display:flex;gap:.125rem;flex:1}.link.svelte-6bgush{font-size:.875rem;font-weight:400;color:var(--text-muted);text-decoration:none;padding:.35rem .75rem;border-radius:var(--radius-sm);transition:color var(--duration-fast),background var(--duration-fast)}.link.svelte-6bgush:hover{color:var(--text);background:var(--bg-subtle)}.link.active.svelte-6bgush{color:var(--accent);background:var(--accent-soft)}.actions.svelte-6bgush{display:flex;align-items:center;gap:.5rem;margin-left:auto}.theme-btn.svelte-6bgush{display:flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:var(--radius-sm);border:1px solid var(--border);background:transparent;color:var(--text-muted);cursor:pointer;transition:background var(--duration-fast),color var(--duration-fast),border-color var(--duration-fast)}.theme-btn.svelte-6bgush:hover{background:var(--bg-subtle);color:var(--text);border-color:var(--text-muted)}.hamburger.svelte-6bgush{display:none;flex-direction:column;justify-content:center;gap:4px;width:34px;height:34px;background:none;border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;padding:0 8px}.hamburger.svelte-6bgush span:where(.svelte-6bgush){display:block;width:100%;height:1.5px;background:var(--text-muted);border-radius:2px;transform-origin:center;transition:transform var(--duration-base) var(--ease-out),opacity var(--duration-fast)}.hamburger.svelte-6bgush span.rotated:where(.svelte-6bgush){transform:translateY(5.5px) rotate(45deg)}.hamburger.svelte-6bgush span.hidden:where(.svelte-6bgush){opacity:0}.hamburger.svelte-6bgush span.rotated-reverse:where(.svelte-6bgush){transform:translateY(-5.5px) rotate(-45deg)}.mobile-menu.svelte-6bgush{border-top:1px solid var(--border);padding:.75rem 1.5rem 1rem;display:flex;flex-direction:column;gap:.125rem}.mobile-link.svelte-6bgush{color:var(--text-muted);text-decoration:none;font-size:.9375rem;font-weight:400;padding:.5rem .75rem;border-radius:var(--radius-sm);transition:background var(--duration-fast),color var(--duration-fast)}.mobile-link.svelte-6bgush:hover,.mobile-link.active.svelte-6bgush{background:var(--bg-subtle);color:var(--text)}.mobile-link.active.svelte-6bgush{color:var(--accent);background:var(--accent-soft)}@media (max-width: 640px){.links.svelte-6bgush{display:none}.hamburger.svelte-6bgush{display:flex}}.shell.svelte-28zx1m{max-width:1200px;margin:0 auto;padding:2.5rem 1.5rem 5rem}.terminal-wrap.svelte-olniy1{border-radius:var(--radius-md);overflow:hidden;border:1px solid rgba(255,255,255,.06)}.terminal-bar.svelte-olniy1{display:flex;align-items:center;gap:6px;padding:.6rem .875rem;background:#0000004d}.dot.svelte-olniy1{display:block;width:10px;height:10px;border-radius:50%}.red.svelte-olniy1{background:#ff5f57}.yellow.svelte-olniy1{background:#febc2e}.green.svelte-olniy1{background:#28c840}.terminal.svelte-olniy1{font-family:JetBrains Mono,Fira Code,Cascadia Code,Courier New,monospace;font-size:.78rem;line-height:1.75;background:var(--terminal-bg);color:var(--terminal-text);padding:1rem;min-height:220px;max-height:280px;overflow-y:auto;white-space:pre-wrap;word-break:break-word;margin:0}.terminal.svelte-olniy1::-webkit-scrollbar{width:4px}.terminal.svelte-olniy1::-webkit-scrollbar-track{background:transparent}.terminal.svelte-olniy1::-webkit-scrollbar-thumb{background:#ffffff1a;border-radius:2px}.panel.svelte-ynu3lh{position:fixed;bottom:0;left:0;right:0;z-index:200;background:var(--bg-elevated);border-top:1px solid var(--border);box-shadow:0 -4px 24px #0000000f;transition:box-shadow var(--duration-base) var(--ease-out)}.panel.expanded.svelte-ynu3lh{box-shadow:0 -8px 40px #0000001a}.bar.svelte-ynu3lh{display:flex;align-items:center;gap:.75rem;padding:0 1.5rem;height:48px;cursor:default}.bar-left.svelte-ynu3lh{display:flex;align-items:center;gap:.5rem;flex:1;min-width:0}.status-dot.svelte-ynu3lh{flex-shrink:0;width:8px;height:8px;border-radius:50%;transition:background var(--duration-base)}.status-dot.pulse.svelte-ynu3lh{animation:svelte-ynu3lh-statusPulse 1.6s ease-in-out infinite}@keyframes svelte-ynu3lh-statusPulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(.7)}}.status-label.svelte-ynu3lh{font-size:.7rem;font-weight:500;letter-spacing:.07em;text-transform:uppercase;color:var(--text-muted);flex-shrink:0}.run-id.svelte-ynu3lh{font-size:.75rem;color:var(--text-muted);font-family:JetBrains Mono,monospace;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bar-dots.svelte-ynu3lh{display:flex;align-items:center;gap:4px;flex-shrink:0}.dot.svelte-ynu3lh{width:7px;height:7px;border-radius:50%;background:var(--border);transition:background var(--duration-base),transform var(--duration-fast)}.dot.running.svelte-ynu3lh{background:var(--pass);animation:svelte-ynu3lh-dotBeat 1.4s ease-in-out infinite}.dot.pass.svelte-ynu3lh{background:var(--pass)}.dot.fail.svelte-ynu3lh{background:var(--fail)}@keyframes svelte-ynu3lh-dotBeat{0%,to{opacity:1;transform:scale(1)}50%{opacity:.35;transform:scale(.65)}}.expand-btn.svelte-ynu3lh{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:var(--radius-sm);border:none;background:transparent;color:var(--text-muted);cursor:pointer;flex-shrink:0;transition:background var(--duration-fast),color var(--duration-fast)}.expand-btn.svelte-ynu3lh:hover{background:var(--bg-subtle);color:var(--text)}.expand-btn.svelte-ynu3lh svg:where(.svelte-ynu3lh){transition:transform var(--duration-base) var(--ease-out)}.expand-btn.svelte-ynu3lh svg.rotated:where(.svelte-ynu3lh){transform:rotate(180deg)}.body.svelte-ynu3lh{padding:.875rem 1.5rem 1.125rem;border-top:1px solid var(--border);display:flex;flex-direction:column;gap:.75rem}.controls.svelte-ynu3lh{display:flex;align-items:center;gap:.625rem}.run-input.svelte-ynu3lh{flex:1}.workers-control.svelte-ynu3lh{display:flex;gap:2px;background:var(--bg-subtle);border:1px solid var(--border);border-radius:var(--radius-sm);padding:2px;flex-shrink:0}.worker-btn.svelte-ynu3lh{font-family:var(--font-body);font-size:.75rem;font-weight:400;min-width:2rem;padding:.2rem .5rem;border:none;border-radius:4px;background:transparent;color:var(--text-muted);cursor:pointer;transition:background var(--duration-fast),color var(--duration-fast)}.worker-btn.svelte-ynu3lh:hover:not(.active){background:var(--bg-elevated);color:var(--text)}.worker-btn.active.svelte-ynu3lh{background:var(--bg-elevated);color:var(--accent);font-weight:500;box-shadow:0 1px 3px #00000014}.report-row.svelte-ynu3lh{display:flex}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/*
|
|
2
|
+
This file is part of Plum.
|
|
3
|
+
|
|
4
|
+
Plum is free software: you can redistribute it and/or modify
|
|
5
|
+
it under the terms of the GNU General Public License as published by
|
|
6
|
+
the Free Software Foundation, either version 3 of the License, or
|
|
7
|
+
(at your option) any later version.
|
|
8
|
+
|
|
9
|
+
Plum is distributed in the hope that it will be useful,
|
|
10
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
11
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
12
|
+
GNU General Public License for more details.
|
|
13
|
+
|
|
14
|
+
You should have received a copy of the GNU General Public License
|
|
15
|
+
along with Plum. If not, see https://www.gnu.org/licenses/.
|
|
16
|
+
*/
|
|
17
|
+
.pagination.svelte-tsubiy{display:flex;align-items:center;justify-content:center;gap:.25rem}button.svelte-tsubiy{min-width:2rem;height:2rem;padding:0 .25rem;border-radius:var(--radius-sm);border:1px solid var(--border);background:transparent;color:var(--text-muted);font-family:var(--font-body);font-size:.8125rem;cursor:pointer;transition:background var(--duration-fast),color var(--duration-fast),border-color var(--duration-fast)}button.svelte-tsubiy:disabled{opacity:.3;cursor:not-allowed}button.active.svelte-tsubiy{background:var(--accent);color:#fff;border-color:var(--accent)}button.svelte-tsubiy:hover:not(:disabled):not(.active){background:var(--bg-subtle);color:var(--text)}.page-header.svelte-wxbf05{margin-bottom:2rem;padding-bottom:1.5rem;border-bottom:1px solid var(--border)}.header-top.svelte-wxbf05{display:flex;align-items:flex-end;justify-content:space-between;gap:1rem;margin-bottom:1.25rem}h1.svelte-wxbf05{font-size:2.5rem;margin-bottom:.25rem}.subtitle.svelte-wxbf05{color:var(--text-muted);font-size:.875rem}.rate-display.svelte-wxbf05{display:flex;flex-direction:column;align-items:flex-end;gap:.1rem}.rate-number.svelte-wxbf05{font-family:var(--font-display);font-size:2.75rem;line-height:1;font-weight:400}.rate-number.pass.svelte-wxbf05{color:var(--pass)}.rate-number.warn.svelte-wxbf05{color:var(--warn)}.rate-number.fail.svelte-wxbf05{color:var(--fail)}.rate-label.svelte-wxbf05{font-size:.75rem;color:var(--text-muted);letter-spacing:.05em;text-transform:uppercase}.stats-bar.svelte-wxbf05{margin-bottom:1rem}.pass-bar-track.svelte-wxbf05{height:3px;background:var(--fail-soft);border-radius:100px;overflow:hidden;margin-bottom:.5rem}.pass-bar-fill.svelte-wxbf05{height:100%;background:var(--pass);border-radius:100px;transition:width .9s var(--ease-out) .1s}.bar-legend.svelte-wxbf05{display:flex;gap:1rem}.legend-pass.svelte-wxbf05{font-size:.75rem;color:var(--pass);font-weight:500}.legend-fail.svelte-wxbf05{font-size:.75rem;color:var(--fail);font-weight:500}.trend-row.svelte-wxbf05{display:flex;align-items:center;gap:.75rem}.trend-label.svelte-wxbf05{font-size:.7rem;font-weight:500;letter-spacing:.07em;text-transform:uppercase;color:var(--text-muted);flex-shrink:0}.trend-dots.svelte-wxbf05{display:flex;align-items:center;gap:5px}.trend-dot.svelte-wxbf05{width:9px;height:9px;border-radius:50%;transition:transform var(--duration-fast);animation:fadeUp .3s var(--ease-out) both}.trend-dot.svelte-wxbf05:hover{transform:scale(1.4)}.trend-dot.pass.svelte-wxbf05{background:var(--pass)}.trend-dot.fail.svelte-wxbf05{background:var(--fail)}.trend-hint.svelte-wxbf05{font-size:.68rem;color:var(--text-muted);opacity:.6}.report-list.svelte-wxbf05{display:flex;flex-direction:column;gap:.5rem}.report-item.svelte-wxbf05{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.875rem 1.25rem;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg-elevated);text-decoration:none;color:inherit;border-left-width:3px;transition:background var(--duration-fast),transform var(--duration-fast) var(--ease-out),box-shadow var(--duration-fast);animation:fadeUp .32s var(--ease-out) both}.report-item.svelte-wxbf05:hover{background:var(--bg-subtle);transform:translate(2px);box-shadow:0 2px 12px #0000000a}.report-item.is-pass.svelte-wxbf05{border-left-color:var(--pass)}.report-item.is-fail.svelte-wxbf05{border-left-color:var(--fail)}.item-left.svelte-wxbf05{display:flex;align-items:center;gap:.875rem;min-width:0}.status-mark.svelte-wxbf05{font-size:.875rem;font-weight:600;flex-shrink:0;width:20px;text-align:center}.status-mark.pass.svelte-wxbf05{color:var(--pass)}.status-mark.fail.svelte-wxbf05{color:var(--fail)}.item-meta.svelte-wxbf05{display:flex;align-items:center;gap:.625rem;min-width:0}.item-tags.svelte-wxbf05{font-family:JetBrains Mono,monospace;font-size:.8rem;color:var(--text);white-space:nowrap}.item-badges.svelte-wxbf05{flex-shrink:0}.item-right.svelte-wxbf05{display:flex;align-items:center;gap:.75rem;flex-shrink:0}.item-date.svelte-wxbf05{font-size:.8rem;color:var(--text-muted);white-space:nowrap}.item-arrow.svelte-wxbf05{color:var(--text-muted);transition:transform var(--duration-fast) var(--ease-out),color var(--duration-fast)}.report-item.svelte-wxbf05:hover .item-arrow:where(.svelte-wxbf05){transform:translate(3px);color:var(--text)}.pagination-wrap.svelte-wxbf05{margin-top:1.25rem}.empty.svelte-wxbf05{color:var(--text-muted);font-size:.9375rem;padding:3rem 0;text-align:center}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/*
|
|
2
|
+
This file is part of Plum.
|
|
3
|
+
|
|
4
|
+
Plum is free software: you can redistribute it and/or modify
|
|
5
|
+
it under the terms of the GNU General Public License as published by
|
|
6
|
+
the Free Software Foundation, either version 3 of the License, or
|
|
7
|
+
(at your option) any later version.
|
|
8
|
+
|
|
9
|
+
Plum is distributed in the hope that it will be useful,
|
|
10
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
11
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
12
|
+
GNU General Public License for more details.
|
|
13
|
+
|
|
14
|
+
You should have received a copy of the GNU General Public License
|
|
15
|
+
along with Plum. If not, see https://www.gnu.org/licenses/.
|
|
16
|
+
*/
|
|
17
|
+
.page-header.svelte-10529e9{margin-bottom:1.75rem;padding-bottom:1.5rem;border-bottom:1px solid var(--border)}.header-top.svelte-10529e9{display:flex;align-items:flex-end;justify-content:space-between;gap:1rem;margin-bottom:1.25rem}h1.svelte-10529e9{font-size:2.5rem;margin-bottom:.25rem}.subtitle.svelte-10529e9{color:var(--text-muted);font-size:.875rem}.search-row.svelte-10529e9{display:flex;gap:.75rem}.search-wrap.svelte-10529e9{position:relative;flex:1;max-width:480px}.search-icon.svelte-10529e9{position:absolute;left:.75rem;top:50%;transform:translateY(-50%);color:var(--text-muted);pointer-events:none}.search-input.svelte-10529e9{width:100%;padding:.55rem .875rem .55rem 2.25rem;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg-subtle);color:var(--text);font-family:var(--font-body);font-size:.875rem;font-weight:300;outline:none;transition:border-color var(--duration-fast),box-shadow var(--duration-fast)}.search-input.svelte-10529e9:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);background:var(--bg-elevated)}.search-input.svelte-10529e9::-moz-placeholder{color:var(--text-muted)}.search-input.svelte-10529e9::placeholder{color:var(--text-muted)}.search-clear.svelte-10529e9{position:absolute;right:.625rem;top:50%;transform:translateY(-50%);display:flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:50%;border:none;background:var(--border);color:var(--text-muted);cursor:pointer;transition:background var(--duration-fast),color var(--duration-fast)}.search-clear.svelte-10529e9:hover{background:var(--text-muted);color:var(--bg)}.suites.svelte-10529e9{display:flex;flex-direction:column;gap:1rem}.suite.svelte-10529e9{border:1px solid var(--border);border-radius:var(--radius-lg);overflow:visible;background:var(--bg-elevated);animation:fadeUp .35s var(--ease-out) both}.suite-header.svelte-10529e9{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.875rem 1.25rem;background:var(--bg-subtle);border-bottom:1px solid var(--border);border-radius:var(--radius-lg) var(--radius-lg) 0 0}.suite-meta.svelte-10529e9{display:flex;align-items:center;gap:.625rem;flex:1;min-width:0}.suite-badges.svelte-10529e9{display:flex;gap:.25rem;flex-shrink:0}.suite-name.svelte-10529e9{font-size:.9rem;font-weight:400;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.suite-count.svelte-10529e9{font-size:.75rem;color:var(--text-muted);flex-shrink:0}.run-btn.svelte-10529e9{display:inline-flex;align-items:center;gap:.35rem;font-family:var(--font-body);font-size:.75rem;font-weight:400;padding:.3rem .75rem;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-elevated);color:var(--text-muted);cursor:pointer;white-space:nowrap;flex-shrink:0;transition:background var(--duration-fast),color var(--duration-fast),border-color var(--duration-fast)}.run-btn.svelte-10529e9:hover{background:var(--accent-soft);color:var(--accent);border-color:var(--accent)}.tests.svelte-10529e9{display:flex;flex-direction:column}.test-row.svelte-10529e9{border-bottom:1px solid var(--border);animation:fadeUp .3s var(--ease-out) both}.test-row.svelte-10529e9:last-child{border-bottom:none}.test-main.svelte-10529e9{display:flex;align-items:center;gap:.625rem;padding:.75rem 1.25rem}.run-icon-btn.svelte-10529e9{display:flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:50%;border:1px solid var(--border);background:transparent;color:var(--text-muted);cursor:pointer;flex-shrink:0;transition:background var(--duration-fast),color var(--duration-fast),border-color var(--duration-fast)}.run-icon-btn.svelte-10529e9:hover{background:var(--accent);color:#fff;border-color:var(--accent)}.test-ids.svelte-10529e9{display:flex;gap:.25rem;flex-shrink:0}.id-pill.svelte-10529e9{position:relative;font-size:.68rem;font-weight:500;letter-spacing:.04em;color:var(--accent);background:var(--accent-soft);border:none;border-radius:100px;padding:.15rem .55rem;cursor:pointer;font-family:JetBrains Mono,monospace;transition:background var(--duration-fast),color var(--duration-fast),filter var(--duration-fast)}.id-pill.svelte-10529e9:hover{filter:brightness(.92)}.id-pill.copied.svelte-10529e9{color:var(--pass);background:var(--pass-soft)}.id-pill.copied.svelte-10529e9:after{content:"Copied";position:absolute;left:50%;bottom:calc(100% + 6px);z-index:50;transform:translate(-50%);padding:.16rem .42rem;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-elevated);color:var(--pass);box-shadow:0 4px 14px #00000014;font-family:var(--font-body);font-size:.65rem;font-weight:500;letter-spacing:0;pointer-events:none;animation:svelte-10529e9-copiedPop 1.4s var(--ease-out) both}.test-name.svelte-10529e9{flex:1;font-size:.875rem;color:var(--text);min-width:0}.outline-badge.svelte-10529e9{display:inline-block;font-size:.62rem;font-weight:500;letter-spacing:.06em;text-transform:uppercase;background:var(--warn-soft);color:var(--warn);padding:.1rem .4rem;border-radius:100px;margin-left:.4rem;vertical-align:middle}.steps-toggle.svelte-10529e9{display:inline-flex;align-items:center;gap:.2rem;font-family:var(--font-body);font-size:.72rem;font-weight:400;color:var(--text-muted);background:transparent;border:1px solid var(--border);border-radius:var(--radius-sm);padding:.2rem .5rem;cursor:pointer;flex-shrink:0;transition:background var(--duration-fast),color var(--duration-fast)}.steps-toggle.svelte-10529e9:hover{background:var(--bg-subtle);color:var(--text)}.steps-toggle.svelte-10529e9 svg:where(.svelte-10529e9){transition:transform var(--duration-fast) var(--ease-out)}.steps-toggle.svelte-10529e9 svg.rotated:where(.svelte-10529e9){transform:rotate(90deg)}.steps.svelte-10529e9{padding:.75rem 1.25rem .875rem 3.75rem;background:var(--bg-subtle);border-top:1px solid var(--border)}.step-list.svelte-10529e9{list-style:none;display:flex;flex-direction:column;gap:.3rem}.step.svelte-10529e9{font-size:.8125rem;color:var(--text-muted);font-family:JetBrains Mono,monospace;line-height:1.5;padding-left:1rem;position:relative}.step.svelte-10529e9:before{content:"›";position:absolute;left:0;color:var(--accent);font-family:var(--font-body)}.examples.svelte-10529e9{margin-top:.75rem;padding-top:.75rem;border-top:1px dashed var(--border)}.examples-label.svelte-10529e9{display:block;font-size:.68rem;font-weight:500;letter-spacing:.07em;text-transform:uppercase;color:var(--text-muted);margin-bottom:.5rem}.examples-table-wrap.svelte-10529e9{overflow-x:auto}.examples-table.svelte-10529e9{border-collapse:collapse;font-size:.78rem;font-family:JetBrains Mono,monospace;width:auto}.examples-table.svelte-10529e9 th:where(.svelte-10529e9){text-align:left;padding:.3rem .75rem;font-size:.7rem;letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted);border-bottom:1px solid var(--border);font-family:var(--font-body);font-weight:500}.examples-table.svelte-10529e9 td:where(.svelte-10529e9){padding:.3rem .75rem;color:var(--text-muted);border-bottom:1px solid var(--border)}.examples-table.svelte-10529e9 tbody:where(.svelte-10529e9) tr:where(.svelte-10529e9):last-child td:where(.svelte-10529e9){border-bottom:none}.empty.svelte-10529e9{color:var(--text-muted);font-size:.9375rem;padding:3rem 0;text-align:center}@keyframes svelte-10529e9-copiedPop{0%{opacity:0;transform:translate(-50%,4px) scale(.96)}12%,78%{opacity:1;transform:translate(-50%) scale(1)}to{opacity:0;transform:translate(-50%,-2px) scale(.98)}}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/*
|
|
2
|
+
This file is part of Plum.
|
|
3
|
+
|
|
4
|
+
Plum is free software: you can redistribute it and/or modify
|
|
5
|
+
it under the terms of the GNU General Public License as published by
|
|
6
|
+
the Free Software Foundation, either version 3 of the License, or
|
|
7
|
+
(at your option) any later version.
|
|
8
|
+
|
|
9
|
+
Plum is distributed in the hope that it will be useful,
|
|
10
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
11
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
12
|
+
GNU General Public License for more details.
|
|
13
|
+
|
|
14
|
+
You should have received a copy of the GNU General Public License
|
|
15
|
+
along with Plum. If not, see https://www.gnu.org/licenses/.
|
|
16
|
+
*/
|
|
17
|
+
.back-row.svelte-pys2u{margin-bottom:1.5rem}.back-link.svelte-pys2u{display:inline-flex;align-items:center;gap:.35rem;font-size:.8125rem;color:var(--text-muted);text-decoration:none;transition:color var(--duration-fast)}.back-link.svelte-pys2u:hover{color:var(--text)}.report-header.svelte-pys2u{border-radius:var(--radius-lg);border:1px solid var(--border);border-left-width:4px;padding:1.5rem;margin-bottom:2rem;background:var(--bg-elevated);animation:fadeUp .35s var(--ease-out) both}.report-header.pass.svelte-pys2u{border-left-color:var(--pass)}.report-header.fail.svelte-pys2u{border-left-color:var(--fail)}.header-main.svelte-pys2u{display:flex;align-items:flex-start;justify-content:space-between;gap:1.5rem;flex-wrap:wrap}.header-status.svelte-pys2u{display:flex;align-items:center;gap:1rem}.status-icon.svelte-pys2u{font-size:2rem;line-height:1;font-weight:600}.report-header.pass.svelte-pys2u .status-icon:where(.svelte-pys2u){color:var(--pass)}.report-header.fail.svelte-pys2u .status-icon:where(.svelte-pys2u){color:var(--fail)}h1.svelte-pys2u{font-size:2rem;margin-bottom:.2rem}.header-meta.svelte-pys2u{font-size:.8125rem;color:var(--text-muted);display:flex;align-items:center;gap:.5rem}.mono.svelte-pys2u{font-family:JetBrains Mono,monospace;font-size:.78rem}.header-stats.svelte-pys2u{display:flex;gap:1.5rem;align-items:flex-start;flex-shrink:0}.stat.svelte-pys2u{display:flex;flex-direction:column;align-items:center;gap:.1rem}.stat-num.svelte-pys2u{font-family:var(--font-display);font-size:1.75rem;line-height:1;font-weight:400;color:var(--text)}.stat-label.svelte-pys2u{font-size:.68rem;color:var(--text-muted);letter-spacing:.06em;text-transform:uppercase}.pass-color.svelte-pys2u{color:var(--pass)}.fail-color.svelte-pys2u{color:var(--fail)}.muted-color.svelte-pys2u{color:var(--text-muted)}.feature.svelte-pys2u{margin-bottom:1.5rem;animation:fadeUp .35s var(--ease-out) both}.feature-header.svelte-pys2u{display:flex;align-items:center;gap:.75rem;margin-bottom:.75rem}.feature-name.svelte-pys2u{font-size:1.1rem;font-family:var(--font-display);font-weight:400}.feature-file.svelte-pys2u{font-family:JetBrains Mono,monospace;font-size:.72rem;color:var(--text-muted);margin-left:auto}.scenarios.svelte-pys2u{display:flex;flex-direction:column;gap:.375rem}.scenario.svelte-pys2u{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg-elevated);overflow:hidden;animation:fadeUp .3s var(--ease-out) both}.scenario-header.svelte-pys2u{display:flex;align-items:center;gap:.75rem;padding:.75rem 1rem;width:100%;background:transparent;border:none;cursor:pointer;text-align:left;font-family:var(--font-body);transition:background var(--duration-fast)}.scenario-header.svelte-pys2u:hover{background:var(--bg-subtle)}.scenario-status-dot.svelte-pys2u{width:8px;height:8px;border-radius:50%;flex-shrink:0}.scenario-status-dot.pass.svelte-pys2u{background:var(--pass)}.scenario-status-dot.fail.svelte-pys2u{background:var(--fail)}.scenario-status-dot.skip.svelte-pys2u{background:var(--text-muted)}.scenario-name.svelte-pys2u{flex:1;font-size:.875rem;color:var(--text);font-weight:400;text-align:left;display:inline-flex;align-items:center;gap:.4rem;min-width:0}.scenario-count.svelte-pys2u{font-size:.65rem;font-weight:500;letter-spacing:.04em;text-transform:uppercase;color:var(--text-muted);background:var(--bg-subtle);border:1px solid var(--border);border-radius:100px;padding:.05rem .4rem;white-space:nowrap}.scenario-tags.svelte-pys2u{display:flex;gap:.25rem;flex-shrink:0}.tag-chip.svelte-pys2u{font-size:.65rem;font-family:JetBrains Mono,monospace;background:var(--accent-soft);color:var(--accent);padding:.1rem .4rem;border-radius:100px}.scenario-duration.svelte-pys2u{font-size:.75rem;color:var(--text-muted);font-family:JetBrains Mono,monospace;flex-shrink:0}.chevron.svelte-pys2u{color:var(--text-muted);flex-shrink:0;transition:transform var(--duration-fast) var(--ease-out)}.chevron.rotated.svelte-pys2u{transform:rotate(90deg)}.steps.svelte-pys2u{border-top:1px solid var(--border);background:var(--bg-subtle);padding:.5rem 0}.example-header.svelte-pys2u{display:flex;align-items:center;gap:.5rem;padding:.625rem 1rem .25rem 1.25rem;color:var(--text-muted);font-size:.72rem;font-weight:500;letter-spacing:.05em;text-transform:uppercase}.example-header.svelte-pys2u:not(:first-child){margin-top:.375rem;border-top:1px dashed var(--border)}.example-header.svelte-pys2u .scenario-duration:where(.svelte-pys2u){margin-left:auto}.step.svelte-pys2u{padding:.375rem 1rem .375rem 1.25rem}.step-fail.svelte-pys2u{background:color-mix(in srgb,var(--fail-soft) 40%,transparent)}.step-skip.svelte-pys2u{opacity:.5}.step-row.svelte-pys2u{display:flex;align-items:baseline;gap:.5rem}.step-status-icon.svelte-pys2u{font-size:.75rem;font-weight:600;width:14px;flex-shrink:0;color:var(--text-muted)}.step-fail.svelte-pys2u .step-status-icon:where(.svelte-pys2u){color:var(--fail)}.step.svelte-pys2u:not(.step-fail):not(.step-skip) .step-status-icon:where(.svelte-pys2u){color:var(--pass)}.kw.svelte-pys2u{font-size:.72rem;font-weight:500;letter-spacing:.04em;flex-shrink:0;padding:.05rem .4rem;border-radius:3px;font-family:JetBrains Mono,monospace}.kw-given.svelte-pys2u{background:var(--accent-soft);color:var(--accent)}.kw-when.svelte-pys2u{background:var(--warn-soft);color:var(--warn)}.kw-then.svelte-pys2u{background:var(--pass-soft);color:var(--pass)}.kw-and.svelte-pys2u{background:var(--bg-elevated);color:var(--text-muted);border:1px solid var(--border)}.step-name.svelte-pys2u{flex:1;font-size:.8125rem;color:var(--text);font-family:JetBrains Mono,monospace}.step-duration.svelte-pys2u{font-size:.7rem;color:var(--text-muted);font-family:JetBrains Mono,monospace;flex-shrink:0}.step-error.svelte-pys2u{margin:.375rem 0 .25rem 1.75rem;padding:.625rem .875rem;background:var(--fail-soft);color:var(--fail);border-radius:var(--radius-sm);font-family:JetBrains Mono,monospace;font-size:.75rem;line-height:1.6;white-space:pre-wrap;word-break:break-word;border-left:2px solid var(--fail)}.screenshot-wrap.svelte-pys2u{margin:.5rem 0 .25rem 1.75rem}.screenshot-toggle.svelte-pys2u{font-size:.75rem;color:var(--text-muted);cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.screenshot.svelte-pys2u{margin-top:.5rem;max-width:100%;border-radius:var(--radius-sm);border:1px solid var(--border)}.loading-state.svelte-pys2u{display:flex;justify-content:center;padding:4rem 0}.loading-dots.svelte-pys2u{display:flex;gap:6px;align-items:center}.loading-dots.svelte-pys2u span:where(.svelte-pys2u){width:8px;height:8px;border-radius:50%;background:var(--accent);animation:svelte-pys2u-dotBeat 1.2s ease-in-out infinite}.loading-dots.svelte-pys2u span:where(.svelte-pys2u):nth-child(2){animation-delay:.2s}.loading-dots.svelte-pys2u span:where(.svelte-pys2u):nth-child(3){animation-delay:.4s}@keyframes svelte-pys2u-dotBeat{0%,to{opacity:1;transform:scale(1)}50%{opacity:.3;transform:scale(.6)}}.error-state.svelte-pys2u{padding:3rem 0;color:var(--fail);text-align:center;font-size:.9375rem}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/*
|
|
2
|
+
This file is part of Plum.
|
|
3
|
+
|
|
4
|
+
Plum is free software: you can redistribute it and/or modify
|
|
5
|
+
it under the terms of the GNU General Public License as published by
|
|
6
|
+
the Free Software Foundation, either version 3 of the License, or
|
|
7
|
+
(at your option) any later version.
|
|
8
|
+
|
|
9
|
+
Plum is distributed in the hope that it will be useful,
|
|
10
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
11
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
12
|
+
GNU General Public License for more details.
|
|
13
|
+
|
|
14
|
+
You should have received a copy of the GNU General Public License
|
|
15
|
+
along with Plum. If not, see https://www.gnu.org/licenses/.
|
|
16
|
+
*/
|
|
17
|
+
.backdrop.svelte-aus6t7{position:fixed;inset:0;background:#00000073;display:flex;align-items:center;justify-content:center;z-index:50;padding:1rem;backdrop-filter:blur(2px)}.panel.svelte-aus6t7{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-lg);padding:1.75rem;width:100%;max-width:480px;box-shadow:0 4px 6px #0000000a,0 24px 64px #00000024}.header.svelte-aus6t7{display:flex;align-items:center;justify-content:space-between;margin-bottom:1.5rem}.title.svelte-aus6t7{font-family:var(--font-display);font-size:1.2rem;font-weight:400;color:var(--text)}.close-btn.svelte-aus6t7{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:var(--radius-sm);border:none;background:transparent;color:var(--text-muted);cursor:pointer;transition:background var(--duration-fast),color var(--duration-fast)}.close-btn.svelte-aus6t7:hover{background:var(--bg-subtle);color:var(--text)}.body.svelte-aus6t7{display:flex;flex-direction:column;gap:1rem}.page-header.svelte-1ugkbyh{margin-bottom:2rem;padding-bottom:1.5rem;border-bottom:1px solid var(--border)}.header-row.svelte-1ugkbyh{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem}.page-header.svelte-1ugkbyh h1:where(.svelte-1ugkbyh){font-size:2.5rem;margin-bottom:.375rem}.subtitle.svelte-1ugkbyh{color:var(--text-muted);font-size:.9375rem}.job-row.svelte-1ugkbyh{animation:fadeUp .32s var(--ease-out) both}.toast.svelte-1ugkbyh{margin-bottom:1.25rem;border-radius:var(--radius-md)}.table-wrap.svelte-1ugkbyh{overflow-x:auto}.job-name.svelte-1ugkbyh{font-weight:400;font-size:.875rem}.tag-text.svelte-1ugkbyh{font-family:JetBrains Mono,monospace;font-size:.78rem;color:var(--text-muted)}.actions-cell.svelte-1ugkbyh{display:flex;gap:.375rem}.empty.svelte-1ugkbyh{padding:3rem 1.5rem;color:var(--text-muted);font-size:.9375rem;text-align:center}.modal-form.svelte-1ugkbyh{display:flex;flex-direction:column;gap:1rem}.form-error.svelte-1ugkbyh{font-size:.8125rem;color:var(--fail)}.confirm-text.svelte-1ugkbyh{font-size:.9375rem;color:var(--text-muted);line-height:1.6}.confirm-text.svelte-1ugkbyh strong:where(.svelte-1ugkbyh){color:var(--text);font-weight:500}.confirm-actions.svelte-1ugkbyh{display:flex;gap:.625rem;padding-top:.25rem}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* This file is part of Plum.
|
|
3
|
+
*
|
|
4
|
+
* Plum is free software: you can redistribute it and/or modify
|
|
5
|
+
* it under the terms of the GNU General Public License as published by
|
|
6
|
+
* the Free Software Foundation, either version 3 of the License, or
|
|
7
|
+
* (at your option) any later version.
|
|
8
|
+
*
|
|
9
|
+
* Plum is distributed in the hope that it will be useful,
|
|
10
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
11
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
12
|
+
* GNU General Public License for more details.
|
|
13
|
+
*
|
|
14
|
+
* You should have received a copy of the GNU General Public License
|
|
15
|
+
* along with Plum. If not, see https://www.gnu.org/licenses/.
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
import { _ as fallback, Z as slot, $ as bind_props, W as stringify } from "./index.js";
|
|
19
|
+
/* empty css */
|
|
20
|
+
import { a as attr } from "./attributes.js";
|
|
21
|
+
function Badge($$payload, $$props) {
|
|
22
|
+
let variant = fallback($$props["variant"], "neutral");
|
|
23
|
+
$$payload.out += `<span${attr("class", `badge ${stringify(variant)} svelte-imjoo5`)}><!---->`;
|
|
24
|
+
slot($$payload, $$props, "default", {});
|
|
25
|
+
$$payload.out += `<!----></span>`;
|
|
26
|
+
bind_props($$props, { variant });
|
|
27
|
+
}
|
|
28
|
+
export {
|
|
29
|
+
Badge as B
|
|
30
|
+
};
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* This file is part of Plum.
|
|
3
|
+
*
|
|
4
|
+
* Plum is free software: you can redistribute it and/or modify
|
|
5
|
+
* it under the terms of the GNU General Public License as published by
|
|
6
|
+
* the Free Software Foundation, either version 3 of the License, or
|
|
7
|
+
* (at your option) any later version.
|
|
8
|
+
*
|
|
9
|
+
* Plum is distributed in the hope that it will be useful,
|
|
10
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
11
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
12
|
+
* GNU General Public License for more details.
|
|
13
|
+
*
|
|
14
|
+
* You should have received a copy of the GNU General Public License
|
|
15
|
+
* along with Plum. If not, see https://www.gnu.org/licenses/.
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
import { _ as fallback, Z as slot, $ as bind_props, W as stringify } from "./index.js";
|
|
19
|
+
import { a as attr } from "./attributes.js";
|
|
20
|
+
function Button($$payload, $$props) {
|
|
21
|
+
let variant = fallback($$props["variant"], "primary");
|
|
22
|
+
let size = fallback($$props["size"], "md");
|
|
23
|
+
let type = fallback($$props["type"], "button");
|
|
24
|
+
let disabled = fallback($$props["disabled"], false);
|
|
25
|
+
$$payload.out += `<button${attr("type", type)}${attr("disabled", disabled, true)}${attr("class", `btn ${stringify(variant)} ${stringify(size)} svelte-1mw9qtj`)}><!---->`;
|
|
26
|
+
slot($$payload, $$props, "default", {});
|
|
27
|
+
$$payload.out += `<!----></button>`;
|
|
28
|
+
bind_props($$props, { variant, size, type, disabled });
|
|
29
|
+
}
|
|
30
|
+
export {
|
|
31
|
+
Button as B
|
|
32
|
+
};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* This file is part of Plum.
|
|
3
|
+
*
|
|
4
|
+
* Plum is free software: you can redistribute it and/or modify
|
|
5
|
+
* it under the terms of the GNU General Public License as published by
|
|
6
|
+
* the Free Software Foundation, either version 3 of the License, or
|
|
7
|
+
* (at your option) any later version.
|
|
8
|
+
*
|
|
9
|
+
* Plum is distributed in the hope that it will be useful,
|
|
10
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
11
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
12
|
+
* GNU General Public License for more details.
|
|
13
|
+
*
|
|
14
|
+
* You should have received a copy of the GNU General Public License
|
|
15
|
+
* along with Plum. If not, see https://www.gnu.org/licenses/.
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
import { e as escape_html } from "./escaping.js";
|
|
19
|
+
import "clsx";
|
|
20
|
+
const replacements = {
|
|
21
|
+
translate: /* @__PURE__ */ new Map([
|
|
22
|
+
[true, "yes"],
|
|
23
|
+
[false, "no"]
|
|
24
|
+
])
|
|
25
|
+
};
|
|
26
|
+
function attr(name, value, is_boolean = false) {
|
|
27
|
+
if (value == null || !value && is_boolean || value === "" && name === "class") return "";
|
|
28
|
+
const normalized = name in replacements && replacements[name].get(value) || value;
|
|
29
|
+
const assignment = is_boolean ? "" : `="${escape_html(normalized, true)}"`;
|
|
30
|
+
return ` ${name}${assignment}`;
|
|
31
|
+
}
|
|
32
|
+
export {
|
|
33
|
+
attr as a
|
|
34
|
+
};
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* This file is part of Plum.
|
|
3
|
+
*
|
|
4
|
+
* Plum is free software: you can redistribute it and/or modify
|
|
5
|
+
* it under the terms of the GNU General Public License as published by
|
|
6
|
+
* the Free Software Foundation, either version 3 of the License, or
|
|
7
|
+
* (at your option) any later version.
|
|
8
|
+
*
|
|
9
|
+
* Plum is distributed in the hope that it will be useful,
|
|
10
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
11
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
12
|
+
* GNU General Public License for more details.
|
|
13
|
+
*
|
|
14
|
+
* You should have received a copy of the GNU General Public License
|
|
15
|
+
* along with Plum. If not, see https://www.gnu.org/licenses/.
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
import "clsx";
|
|
19
|
+
import { w as writable } from "./exports.js";
|
|
20
|
+
import { a1 as noop } from "./index.js";
|
|
21
|
+
const SNAPSHOT_KEY = "sveltekit:snapshot";
|
|
22
|
+
const SCROLL_KEY = "sveltekit:scroll";
|
|
23
|
+
function create_updated_store() {
|
|
24
|
+
const { set, subscribe } = writable(false);
|
|
25
|
+
{
|
|
26
|
+
return {
|
|
27
|
+
subscribe,
|
|
28
|
+
// eslint-disable-next-line @typescript-eslint/require-await
|
|
29
|
+
check: async () => false
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
const is_legacy = noop.toString().includes("$$") || /function \w+\(\) \{\}/.test(noop.toString());
|
|
34
|
+
if (is_legacy) {
|
|
35
|
+
({
|
|
36
|
+
data: {},
|
|
37
|
+
form: null,
|
|
38
|
+
error: null,
|
|
39
|
+
params: {},
|
|
40
|
+
route: { id: null },
|
|
41
|
+
state: {},
|
|
42
|
+
status: -1,
|
|
43
|
+
url: new URL("https://example.com")
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
function get(key, parse = JSON.parse) {
|
|
47
|
+
try {
|
|
48
|
+
return parse(sessionStorage[key]);
|
|
49
|
+
} catch {
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
get(SCROLL_KEY) ?? {};
|
|
53
|
+
get(SNAPSHOT_KEY) ?? {};
|
|
54
|
+
const stores = {
|
|
55
|
+
updated: /* @__PURE__ */ create_updated_store()
|
|
56
|
+
};
|
|
57
|
+
export {
|
|
58
|
+
stores as s
|
|
59
|
+
};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* This file is part of Plum.
|
|
3
|
+
*
|
|
4
|
+
* Plum is free software: you can redistribute it and/or modify
|
|
5
|
+
* it under the terms of the GNU General Public License as published by
|
|
6
|
+
* the Free Software Foundation, either version 3 of the License, or
|
|
7
|
+
* (at your option) any later version.
|
|
8
|
+
*
|
|
9
|
+
* Plum is distributed in the hope that it will be useful,
|
|
10
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
11
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
12
|
+
* GNU General Public License for more details.
|
|
13
|
+
*
|
|
14
|
+
* You should have received a copy of the GNU General Public License
|
|
15
|
+
* along with Plum. If not, see https://www.gnu.org/licenses/.
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
function equals(value) {
|
|
19
|
+
return value === this.v;
|
|
20
|
+
}
|
|
21
|
+
function safe_not_equal(a, b) {
|
|
22
|
+
return a != a ? b == b : a !== b || a !== null && typeof a === "object" || typeof a === "function";
|
|
23
|
+
}
|
|
24
|
+
function safe_equals(value) {
|
|
25
|
+
return !safe_not_equal(value, this.v);
|
|
26
|
+
}
|
|
27
|
+
export {
|
|
28
|
+
safe_not_equal as a,
|
|
29
|
+
equals as e,
|
|
30
|
+
safe_equals as s
|
|
31
|
+
};
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* This file is part of Plum.
|
|
3
|
+
*
|
|
4
|
+
* Plum is free software: you can redistribute it and/or modify
|
|
5
|
+
* it under the terms of the GNU General Public License as published by
|
|
6
|
+
* the Free Software Foundation, either version 3 of the License, or
|
|
7
|
+
* (at your option) any later version.
|
|
8
|
+
*
|
|
9
|
+
* Plum is distributed in the hope that it will be useful,
|
|
10
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
11
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
12
|
+
* GNU General Public License for more details.
|
|
13
|
+
*
|
|
14
|
+
* You should have received a copy of the GNU General Public License
|
|
15
|
+
* along with Plum. If not, see https://www.gnu.org/licenses/.
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
const ATTR_REGEX = /[&"<]/g;
|
|
19
|
+
const CONTENT_REGEX = /[&<]/g;
|
|
20
|
+
function escape_html(value, is_attr) {
|
|
21
|
+
const str = String(value ?? "");
|
|
22
|
+
const pattern = is_attr ? ATTR_REGEX : CONTENT_REGEX;
|
|
23
|
+
pattern.lastIndex = 0;
|
|
24
|
+
let escaped = "";
|
|
25
|
+
let last = 0;
|
|
26
|
+
while (pattern.test(str)) {
|
|
27
|
+
const i = pattern.lastIndex - 1;
|
|
28
|
+
const ch = str[i];
|
|
29
|
+
escaped += str.substring(last, i) + (ch === "&" ? "&" : ch === '"' ? """ : "<");
|
|
30
|
+
last = i + 1;
|
|
31
|
+
}
|
|
32
|
+
return escaped + str.substring(last);
|
|
33
|
+
}
|
|
34
|
+
export {
|
|
35
|
+
escape_html as e
|
|
36
|
+
};
|
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* This file is part of Plum.
|
|
3
|
+
*
|
|
4
|
+
* Plum is free software: you can redistribute it and/or modify
|
|
5
|
+
* it under the terms of the GNU General Public License as published by
|
|
6
|
+
* the Free Software Foundation, either version 3 of the License, or
|
|
7
|
+
* (at your option) any later version.
|
|
8
|
+
*
|
|
9
|
+
* Plum is distributed in the hope that it will be useful,
|
|
10
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
11
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
12
|
+
* GNU General Public License for more details.
|
|
13
|
+
*
|
|
14
|
+
* You should have received a copy of the GNU General Public License
|
|
15
|
+
* along with Plum. If not, see https://www.gnu.org/licenses/.
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
import { a1 as noop } from "./index.js";
|
|
19
|
+
import { a as safe_not_equal } from "./equality.js";
|
|
20
|
+
import "clsx";
|
|
21
|
+
const subscriber_queue = [];
|
|
22
|
+
function readable(value, start) {
|
|
23
|
+
return {
|
|
24
|
+
subscribe: writable(value, start).subscribe
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
function writable(value, start = noop) {
|
|
28
|
+
let stop = null;
|
|
29
|
+
const subscribers = /* @__PURE__ */ new Set();
|
|
30
|
+
function set(new_value) {
|
|
31
|
+
if (safe_not_equal(value, new_value)) {
|
|
32
|
+
value = new_value;
|
|
33
|
+
if (stop) {
|
|
34
|
+
const run_queue = !subscriber_queue.length;
|
|
35
|
+
for (const subscriber of subscribers) {
|
|
36
|
+
subscriber[1]();
|
|
37
|
+
subscriber_queue.push(subscriber, value);
|
|
38
|
+
}
|
|
39
|
+
if (run_queue) {
|
|
40
|
+
for (let i = 0; i < subscriber_queue.length; i += 2) {
|
|
41
|
+
subscriber_queue[i][0](subscriber_queue[i + 1]);
|
|
42
|
+
}
|
|
43
|
+
subscriber_queue.length = 0;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
function update(fn) {
|
|
49
|
+
set(fn(
|
|
50
|
+
/** @type {T} */
|
|
51
|
+
value
|
|
52
|
+
));
|
|
53
|
+
}
|
|
54
|
+
function subscribe(run, invalidate = noop) {
|
|
55
|
+
const subscriber = [run, invalidate];
|
|
56
|
+
subscribers.add(subscriber);
|
|
57
|
+
if (subscribers.size === 1) {
|
|
58
|
+
stop = start(set, update) || noop;
|
|
59
|
+
}
|
|
60
|
+
run(
|
|
61
|
+
/** @type {T} */
|
|
62
|
+
value
|
|
63
|
+
);
|
|
64
|
+
return () => {
|
|
65
|
+
subscribers.delete(subscriber);
|
|
66
|
+
if (subscribers.size === 0 && stop) {
|
|
67
|
+
stop();
|
|
68
|
+
stop = null;
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
return { set, update, subscribe };
|
|
73
|
+
}
|
|
74
|
+
const internal = new URL("sveltekit-internal://");
|
|
75
|
+
function resolve(base, path) {
|
|
76
|
+
if (path[0] === "/" && path[1] === "/") return path;
|
|
77
|
+
let url = new URL(base, internal);
|
|
78
|
+
url = new URL(path, url);
|
|
79
|
+
return url.protocol === internal.protocol ? url.pathname + url.search + url.hash : url.href;
|
|
80
|
+
}
|
|
81
|
+
function normalize_path(path, trailing_slash) {
|
|
82
|
+
if (path === "/" || trailing_slash === "ignore") return path;
|
|
83
|
+
if (trailing_slash === "never") {
|
|
84
|
+
return path.endsWith("/") ? path.slice(0, -1) : path;
|
|
85
|
+
} else if (trailing_slash === "always" && !path.endsWith("/")) {
|
|
86
|
+
return path + "/";
|
|
87
|
+
}
|
|
88
|
+
return path;
|
|
89
|
+
}
|
|
90
|
+
function decode_pathname(pathname) {
|
|
91
|
+
return pathname.split("%25").map(decodeURI).join("%25");
|
|
92
|
+
}
|
|
93
|
+
function decode_params(params) {
|
|
94
|
+
for (const key in params) {
|
|
95
|
+
params[key] = decodeURIComponent(params[key]);
|
|
96
|
+
}
|
|
97
|
+
return params;
|
|
98
|
+
}
|
|
99
|
+
function make_trackable(url, callback, search_params_callback, allow_hash = false) {
|
|
100
|
+
const tracked = new URL(url);
|
|
101
|
+
Object.defineProperty(tracked, "searchParams", {
|
|
102
|
+
value: new Proxy(tracked.searchParams, {
|
|
103
|
+
get(obj, key) {
|
|
104
|
+
if (key === "get" || key === "getAll" || key === "has") {
|
|
105
|
+
return (param) => {
|
|
106
|
+
search_params_callback(param);
|
|
107
|
+
return obj[key](param);
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
callback();
|
|
111
|
+
const value = Reflect.get(obj, key);
|
|
112
|
+
return typeof value === "function" ? value.bind(obj) : value;
|
|
113
|
+
}
|
|
114
|
+
}),
|
|
115
|
+
enumerable: true,
|
|
116
|
+
configurable: true
|
|
117
|
+
});
|
|
118
|
+
const tracked_url_properties = ["href", "pathname", "search", "toString", "toJSON"];
|
|
119
|
+
if (allow_hash) tracked_url_properties.push("hash");
|
|
120
|
+
for (const property of tracked_url_properties) {
|
|
121
|
+
Object.defineProperty(tracked, property, {
|
|
122
|
+
get() {
|
|
123
|
+
callback();
|
|
124
|
+
return url[property];
|
|
125
|
+
},
|
|
126
|
+
enumerable: true,
|
|
127
|
+
configurable: true
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
{
|
|
131
|
+
tracked[Symbol.for("nodejs.util.inspect.custom")] = (depth, opts, inspect) => {
|
|
132
|
+
return inspect(url, opts);
|
|
133
|
+
};
|
|
134
|
+
tracked.searchParams[Symbol.for("nodejs.util.inspect.custom")] = (depth, opts, inspect) => {
|
|
135
|
+
return inspect(url.searchParams, opts);
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
if (!allow_hash) {
|
|
139
|
+
disable_hash(tracked);
|
|
140
|
+
}
|
|
141
|
+
return tracked;
|
|
142
|
+
}
|
|
143
|
+
function disable_hash(url) {
|
|
144
|
+
allow_nodejs_console_log(url);
|
|
145
|
+
Object.defineProperty(url, "hash", {
|
|
146
|
+
get() {
|
|
147
|
+
throw new Error(
|
|
148
|
+
"Cannot access event.url.hash. Consider using `page.url.hash` inside a component instead"
|
|
149
|
+
);
|
|
150
|
+
}
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
function disable_search(url) {
|
|
154
|
+
allow_nodejs_console_log(url);
|
|
155
|
+
for (const property of ["search", "searchParams"]) {
|
|
156
|
+
Object.defineProperty(url, property, {
|
|
157
|
+
get() {
|
|
158
|
+
throw new Error(`Cannot access url.${property} on a page with prerendering enabled`);
|
|
159
|
+
}
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
function allow_nodejs_console_log(url) {
|
|
164
|
+
{
|
|
165
|
+
url[Symbol.for("nodejs.util.inspect.custom")] = (depth, opts, inspect) => {
|
|
166
|
+
return inspect(new URL(url), opts);
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
function validator(expected) {
|
|
171
|
+
function validate(module, file) {
|
|
172
|
+
if (!module) return;
|
|
173
|
+
for (const key in module) {
|
|
174
|
+
if (key[0] === "_" || expected.has(key)) continue;
|
|
175
|
+
const values = [...expected.values()];
|
|
176
|
+
const hint = hint_for_supported_files(key, file?.slice(file.lastIndexOf("."))) ?? `valid exports are ${values.join(", ")}, or anything with a '_' prefix`;
|
|
177
|
+
throw new Error(`Invalid export '${key}'${file ? ` in ${file}` : ""} (${hint})`);
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
return validate;
|
|
181
|
+
}
|
|
182
|
+
function hint_for_supported_files(key, ext = ".js") {
|
|
183
|
+
const supported_files = [];
|
|
184
|
+
if (valid_layout_exports.has(key)) {
|
|
185
|
+
supported_files.push(`+layout${ext}`);
|
|
186
|
+
}
|
|
187
|
+
if (valid_page_exports.has(key)) {
|
|
188
|
+
supported_files.push(`+page${ext}`);
|
|
189
|
+
}
|
|
190
|
+
if (valid_layout_server_exports.has(key)) {
|
|
191
|
+
supported_files.push(`+layout.server${ext}`);
|
|
192
|
+
}
|
|
193
|
+
if (valid_page_server_exports.has(key)) {
|
|
194
|
+
supported_files.push(`+page.server${ext}`);
|
|
195
|
+
}
|
|
196
|
+
if (valid_server_exports.has(key)) {
|
|
197
|
+
supported_files.push(`+server${ext}`);
|
|
198
|
+
}
|
|
199
|
+
if (supported_files.length > 0) {
|
|
200
|
+
return `'${key}' is a valid export in ${supported_files.slice(0, -1).join(", ")}${supported_files.length > 1 ? " or " : ""}${supported_files.at(-1)}`;
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
const valid_layout_exports = /* @__PURE__ */ new Set([
|
|
204
|
+
"load",
|
|
205
|
+
"prerender",
|
|
206
|
+
"csr",
|
|
207
|
+
"ssr",
|
|
208
|
+
"trailingSlash",
|
|
209
|
+
"config"
|
|
210
|
+
]);
|
|
211
|
+
const valid_page_exports = /* @__PURE__ */ new Set([...valid_layout_exports, "entries"]);
|
|
212
|
+
const valid_layout_server_exports = /* @__PURE__ */ new Set([...valid_layout_exports]);
|
|
213
|
+
const valid_page_server_exports = /* @__PURE__ */ new Set([...valid_layout_server_exports, "actions", "entries"]);
|
|
214
|
+
const valid_server_exports = /* @__PURE__ */ new Set([
|
|
215
|
+
"GET",
|
|
216
|
+
"POST",
|
|
217
|
+
"PATCH",
|
|
218
|
+
"PUT",
|
|
219
|
+
"DELETE",
|
|
220
|
+
"OPTIONS",
|
|
221
|
+
"HEAD",
|
|
222
|
+
"fallback",
|
|
223
|
+
"prerender",
|
|
224
|
+
"trailingSlash",
|
|
225
|
+
"config",
|
|
226
|
+
"entries"
|
|
227
|
+
]);
|
|
228
|
+
const validate_layout_exports = validator(valid_layout_exports);
|
|
229
|
+
const validate_page_exports = validator(valid_page_exports);
|
|
230
|
+
const validate_layout_server_exports = validator(valid_layout_server_exports);
|
|
231
|
+
const validate_page_server_exports = validator(valid_page_server_exports);
|
|
232
|
+
const validate_server_exports = validator(valid_server_exports);
|
|
233
|
+
export {
|
|
234
|
+
decode_params as a,
|
|
235
|
+
resolve as b,
|
|
236
|
+
decode_pathname as c,
|
|
237
|
+
disable_search as d,
|
|
238
|
+
validate_layout_exports as e,
|
|
239
|
+
validate_page_server_exports as f,
|
|
240
|
+
validate_page_exports as g,
|
|
241
|
+
validate_server_exports as h,
|
|
242
|
+
make_trackable as m,
|
|
243
|
+
normalize_path as n,
|
|
244
|
+
readable as r,
|
|
245
|
+
validate_layout_server_exports as v,
|
|
246
|
+
writable as w
|
|
247
|
+
};
|