plum-e2e 1.2.0 → 1.2.2
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 +2 -7
- 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,21 @@
|
|
|
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 H,a as v,t as x,s as K,n as et,b as Me,c as kt}from"../chunks/DFJLQFic.js";import{i as Le}from"../chunks/DTUE7kkY.js";import{w as Et,l as Pe,D as S,y as qe,B as p,v as _,C as u,A as c,m as U,z as V,aW as Rt,aM as xt,o as Tt,n as J,t as At,F as He,u as Ke,G as Ot,x as We}from"../chunks/B0bn91RF.js";import{s as tt}from"../chunks/rVEKg0Ak.js";import{i as ne}from"../chunks/CwBTqcbj.js";import{e as de,i as ye,s as F,t as A,r as Ct}from"../chunks/Bt3-Z7H1.js";import{t as xe,s as st,b as St}from"../chunks/B1kE5jmt.js";import{s as nt,a as re,p as Bt,c as Nt}from"../chunks/Be4iUAB0.js";import{p as Lt}from"../chunks/CJ8q7g9Y.js";import{b as Pt}from"../chunks/BKz6FZdB.js";import{s as qt,a as be,p as ze,r as we,t as Ye}from"../chunks/IYPwzKs_.js";import{b as $t,r as Dt}from"../chunks/BpaMqo9O.js";import{b as It}from"../chunks/CHV2KnPr.js";import{B as Je}from"../chunks/DBk3zeq4.js";const rt="plum-theme",Ut=localStorage.getItem(rt)??"light",Te=Et(Ut);Te.subscribe(n=>{localStorage.setItem(rt,n),document.documentElement.setAttribute("data-theme",n)});var Ft=x('<a class="link svelte-6bgush"> </a>'),Vt=et('<svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path></svg>'),Mt=et('<svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="5"></circle><line x1="12" y1="1" x2="12" y2="3"></line><line x1="12" y1="21" x2="12" y2="23"></line><line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line><line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line><line x1="1" y1="12" x2="3" y2="12"></line><line x1="21" y1="12" x2="23" y2="12"></line><line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line><line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line></svg>'),Ht=x('<a class="mobile-link svelte-6bgush"> </a>'),Kt=x('<div class="mobile-menu svelte-6bgush"></div>'),Wt=x('<nav class="nav svelte-6bgush"><div class="inner svelte-6bgush"><a href="/" class="brand svelte-6bgush"><span class="brand-serif svelte-6bgush">Pl</span><span class="brand-sans svelte-6bgush">um</span></a> <div class="links svelte-6bgush"></div> <div class="actions svelte-6bgush"><button class="theme-btn svelte-6bgush" aria-label="Toggle theme"><!></button> <button class="hamburger svelte-6bgush"><span class="svelte-6bgush"></span> <span class="svelte-6bgush"></span> <span class="svelte-6bgush"></span></button></div></div> <!></nav>');function zt(n,e){Pe(e,!1);const[t,s]=nt(),r=()=>re(Lt,"$page",t),i=()=>re(Te,"$theme",t);let o=V(!1);const a=[{href:"/",label:"Run Tests"},{href:"/reports",label:"Reports"},{href:"/scheduled-tests",label:"Scheduled"}];function h(){Te.update(b=>b==="light"?"dark":"light")}function g(){U(o,!1)}Le();var m=Wt(),w=p(m),C=p(w),Q=_(C,2);de(Q,5,()=>a,ye,(b,k)=>{var D=Ft(),f=p(D,!0);u(D),S(()=>{F(D,"href",c(k).href),A(D,"active",r().url.pathname===c(k).href),K(f,c(k).label)}),v(b,D)}),u(Q);var ie=_(Q,2),q=p(ie),j=p(q);{var G=b=>{var k=Vt();v(b,k)},Z=b=>{var k=Mt();v(b,k)};ne(j,b=>{i()==="light"?b(G):b(Z,!1)})}u(q);var $=_(q,2),oe=p($),ae=_(oe,2),_e=_(ae,2);u($),u(ie),u(w);var W=_(w,2);{var z=b=>{var k=Kt();de(k,5,()=>a,ye,(D,f)=>{var d=Ht(),E=p(d,!0);u(d),S(()=>{F(d,"href",c(f).href),A(d,"active",r().url.pathname===c(f).href),K(E,c(f).label)}),H("click",d,g),v(D,d)}),u(k),xe(3,k,()=>st,()=>({duration:200})),v(b,k)};ne(W,b=>{c(o)&&b(z)})}u(m),S(()=>{F($,"aria-label",c(o)?"Close menu":"Open menu"),F($,"aria-expanded",c(o)),A(oe,"rotated",c(o)),A(ae,"hidden",c(o)),A(_e,"rotated-reverse",c(o))}),H("click",C,g),H("click",q,h),H("click",$,()=>U(o,!c(o))),v(n,m),qe(),s()}var Yt=x('<main class="shell svelte-28zx1m"><!></main>');function Jt(n,e){var t=Yt(),s=p(t);tt(s,e,"default",{}),u(t),v(n,t)}const P=Object.create(null);P.open="0";P.close="1";P.ping="2";P.pong="3";P.message="4";P.upgrade="5";P.noop="6";const le=Object.create(null);Object.keys(P).forEach(n=>{le[P[n]]=n});const Ae={type:"error",data:"parser error"},it=typeof Blob=="function"||typeof Blob<"u"&&Object.prototype.toString.call(Blob)==="[object BlobConstructor]",ot=typeof ArrayBuffer=="function",at=n=>typeof ArrayBuffer.isView=="function"?ArrayBuffer.isView(n):n&&n.buffer instanceof ArrayBuffer,$e=({type:n,data:e},t,s)=>it&&e instanceof Blob?t?s(e):Xe(e,s):ot&&(e instanceof ArrayBuffer||at(e))?t?s(e):Xe(new Blob([e]),s):s(P[n]+(e||"")),Xe=(n,e)=>{const t=new FileReader;return t.onload=function(){const s=t.result.split(",")[1];e("b"+(s||""))},t.readAsDataURL(n)};function Qe(n){return n instanceof Uint8Array?n:n instanceof ArrayBuffer?new Uint8Array(n):new Uint8Array(n.buffer,n.byteOffset,n.byteLength)}let ke;function Xt(n,e){if(it&&n.data instanceof Blob)return n.data.arrayBuffer().then(Qe).then(e);if(ot&&(n.data instanceof ArrayBuffer||at(n.data)))return e(Qe(n.data));$e(n,!1,t=>{ke||(ke=new TextEncoder),e(ke.encode(t))})}const je="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",se=typeof Uint8Array>"u"?[]:new Uint8Array(256);for(let n=0;n<je.length;n++)se[je.charCodeAt(n)]=n;const Qt=n=>{let e=n.length*.75,t=n.length,s,r=0,i,o,a,h;n[n.length-1]==="="&&(e--,n[n.length-2]==="="&&e--);const g=new ArrayBuffer(e),m=new Uint8Array(g);for(s=0;s<t;s+=4)i=se[n.charCodeAt(s)],o=se[n.charCodeAt(s+1)],a=se[n.charCodeAt(s+2)],h=se[n.charCodeAt(s+3)],m[r++]=i<<2|o>>4,m[r++]=(o&15)<<4|a>>2,m[r++]=(a&3)<<6|h&63;return g},jt=typeof ArrayBuffer=="function",De=(n,e)=>{if(typeof n!="string")return{type:"message",data:ct(n,e)};const t=n.charAt(0);return t==="b"?{type:"message",data:Gt(n.substring(1),e)}:le[t]?n.length>1?{type:le[t],data:n.substring(1)}:{type:le[t]}:Ae},Gt=(n,e)=>{if(jt){const t=Qt(n);return ct(t,e)}else return{base64:!0,data:n}},ct=(n,e)=>{switch(e){case"blob":return n instanceof Blob?n:new Blob([n]);case"arraybuffer":default:return n instanceof ArrayBuffer?n:n.buffer}},ht="",Zt=(n,e)=>{const t=n.length,s=new Array(t);let r=0;n.forEach((i,o)=>{$e(i,!1,a=>{s[o]=a,++r===t&&e(s.join(ht))})})},es=(n,e)=>{const t=n.split(ht),s=[];for(let r=0;r<t.length;r++){const i=De(t[r],e);if(s.push(i),i.type==="error")break}return s};function ts(){return new TransformStream({transform(n,e){Xt(n,t=>{const s=t.length;let r;if(s<126)r=new Uint8Array(1),new DataView(r.buffer).setUint8(0,s);else if(s<65536){r=new Uint8Array(3);const i=new DataView(r.buffer);i.setUint8(0,126),i.setUint16(1,s)}else{r=new Uint8Array(9);const i=new DataView(r.buffer);i.setUint8(0,127),i.setBigUint64(1,BigInt(s))}n.data&&typeof n.data!="string"&&(r[0]|=128),e.enqueue(r),e.enqueue(t)})}})}let Ee;function ce(n){return n.reduce((e,t)=>e+t.length,0)}function he(n,e){if(n[0].length===e)return n.shift();const t=new Uint8Array(e);let s=0;for(let r=0;r<e;r++)t[r]=n[0][s++],s===n[0].length&&(n.shift(),s=0);return n.length&&s<n[0].length&&(n[0]=n[0].slice(s)),t}function ss(n,e){Ee||(Ee=new TextDecoder);const t=[];let s=0,r=-1,i=!1;return new TransformStream({transform(o,a){for(t.push(o);;){if(s===0){if(ce(t)<1)break;const h=he(t,1);i=(h[0]&128)===128,r=h[0]&127,r<126?s=3:r===126?s=1:s=2}else if(s===1){if(ce(t)<2)break;const h=he(t,2);r=new DataView(h.buffer,h.byteOffset,h.length).getUint16(0),s=3}else if(s===2){if(ce(t)<8)break;const h=he(t,8),g=new DataView(h.buffer,h.byteOffset,h.length),m=g.getUint32(0);if(m>Math.pow(2,21)-1){a.enqueue(Ae);break}r=m*Math.pow(2,32)+g.getUint32(4),s=3}else{if(ce(t)<r)break;const h=he(t,r);a.enqueue(De(i?h:Ee.decode(h),e)),s=0}if(r===0||r>n){a.enqueue(Ae);break}}}})}const lt=4;function y(n){if(n)return ns(n)}function ns(n){for(var e in y.prototype)n[e]=y.prototype[e];return n}y.prototype.on=y.prototype.addEventListener=function(n,e){return this._callbacks=this._callbacks||{},(this._callbacks["$"+n]=this._callbacks["$"+n]||[]).push(e),this};y.prototype.once=function(n,e){function t(){this.off(n,t),e.apply(this,arguments)}return t.fn=e,this.on(n,t),this};y.prototype.off=y.prototype.removeListener=y.prototype.removeAllListeners=y.prototype.removeEventListener=function(n,e){if(this._callbacks=this._callbacks||{},arguments.length==0)return this._callbacks={},this;var t=this._callbacks["$"+n];if(!t)return this;if(arguments.length==1)return delete this._callbacks["$"+n],this;for(var s,r=0;r<t.length;r++)if(s=t[r],s===e||s.fn===e){t.splice(r,1);break}return t.length===0&&delete this._callbacks["$"+n],this};y.prototype.emit=function(n){this._callbacks=this._callbacks||{};for(var e=new Array(arguments.length-1),t=this._callbacks["$"+n],s=1;s<arguments.length;s++)e[s-1]=arguments[s];if(t){t=t.slice(0);for(var s=0,r=t.length;s<r;++s)t[s].apply(this,e)}return this};y.prototype.emitReserved=y.prototype.emit;y.prototype.listeners=function(n){return this._callbacks=this._callbacks||{},this._callbacks["$"+n]||[]};y.prototype.hasListeners=function(n){return!!this.listeners(n).length};const me=typeof Promise=="function"&&typeof Promise.resolve=="function"?e=>Promise.resolve().then(e):(e,t)=>t(e,0),O=typeof self<"u"?self:typeof window<"u"?window:Function("return this")(),rs="arraybuffer";function ut(n,...e){return e.reduce((t,s)=>(n.hasOwnProperty(s)&&(t[s]=n[s]),t),{})}const is=O.setTimeout,os=O.clearTimeout;function ge(n,e){e.useNativeTimers?(n.setTimeoutFn=is.bind(O),n.clearTimeoutFn=os.bind(O)):(n.setTimeoutFn=O.setTimeout.bind(O),n.clearTimeoutFn=O.clearTimeout.bind(O))}const as=1.33;function cs(n){return typeof n=="string"?hs(n):Math.ceil((n.byteLength||n.size)*as)}function hs(n){let e=0,t=0;for(let s=0,r=n.length;s<r;s++)e=n.charCodeAt(s),e<128?t+=1:e<2048?t+=2:e<55296||e>=57344?t+=3:(s++,t+=4);return t}function ft(){return Date.now().toString(36).substring(3)+Math.random().toString(36).substring(2,5)}function ls(n){let e="";for(let t in n)n.hasOwnProperty(t)&&(e.length&&(e+="&"),e+=encodeURIComponent(t)+"="+encodeURIComponent(n[t]));return e}function us(n){let e={},t=n.split("&");for(let s=0,r=t.length;s<r;s++){let i=t[s].split("=");e[decodeURIComponent(i[0])]=decodeURIComponent(i[1])}return e}class fs extends Error{constructor(e,t,s){super(e),this.description=t,this.context=s,this.type="TransportError"}}class Ie extends y{constructor(e){super(),this.writable=!1,ge(this,e),this.opts=e,this.query=e.query,this.socket=e.socket,this.supportsBinary=!e.forceBase64}onError(e,t,s){return super.emitReserved("error",new fs(e,t,s)),this}open(){return this.readyState="opening",this.doOpen(),this}close(){return(this.readyState==="opening"||this.readyState==="open")&&(this.doClose(),this.onClose()),this}send(e){this.readyState==="open"&&this.write(e)}onOpen(){this.readyState="open",this.writable=!0,super.emitReserved("open")}onData(e){const t=De(e,this.socket.binaryType);this.onPacket(t)}onPacket(e){super.emitReserved("packet",e)}onClose(e){this.readyState="closed",super.emitReserved("close",e)}pause(e){}createUri(e,t={}){return e+"://"+this._hostname()+this._port()+this.opts.path+this._query(t)}_hostname(){const e=this.opts.hostname;return e.indexOf(":")===-1?e:"["+e+"]"}_port(){return this.opts.port&&(this.opts.secure&&+(this.opts.port!==443)||!this.opts.secure&&Number(this.opts.port)!==80)?":"+this.opts.port:""}_query(e){const t=ls(e);return t.length?"?"+t:""}}class ps extends Ie{constructor(){super(...arguments),this._polling=!1}get name(){return"polling"}doOpen(){this._poll()}pause(e){this.readyState="pausing";const t=()=>{this.readyState="paused",e()};if(this._polling||!this.writable){let s=0;this._polling&&(s++,this.once("pollComplete",function(){--s||t()})),this.writable||(s++,this.once("drain",function(){--s||t()}))}else t()}_poll(){this._polling=!0,this.doPoll(),this.emitReserved("poll")}onData(e){const t=s=>{if(this.readyState==="opening"&&s.type==="open"&&this.onOpen(),s.type==="close")return this.onClose({description:"transport closed by the server"}),!1;this.onPacket(s)};es(e,this.socket.binaryType).forEach(t),this.readyState!=="closed"&&(this._polling=!1,this.emitReserved("pollComplete"),this.readyState==="open"&&this._poll())}doClose(){const e=()=>{this.write([{type:"close"}])};this.readyState==="open"?e():this.once("open",e)}write(e){this.writable=!1,Zt(e,t=>{this.doWrite(t,()=>{this.writable=!0,this.emitReserved("drain")})})}uri(){const e=this.opts.secure?"https":"http",t=this.query||{};return this.opts.timestampRequests!==!1&&(t[this.opts.timestampParam]=ft()),!this.supportsBinary&&!t.sid&&(t.b64=1),this.createUri(e,t)}}let pt=!1;try{pt=typeof XMLHttpRequest<"u"&&"withCredentials"in new XMLHttpRequest}catch{}const ds=pt;function ys(){}class ms extends ps{constructor(e){if(super(e),typeof location<"u"){const t=location.protocol==="https:";let s=location.port;s||(s=t?"443":"80"),this.xd=typeof location<"u"&&e.hostname!==location.hostname||s!==e.port}}doWrite(e,t){const s=this.request({method:"POST",data:e});s.on("success",t),s.on("error",(r,i)=>{this.onError("xhr post error",r,i)})}doPoll(){const e=this.request();e.on("data",this.onData.bind(this)),e.on("error",(t,s)=>{this.onError("xhr poll error",t,s)}),this.pollXhr=e}}class L extends y{constructor(e,t,s){super(),this.createRequest=e,ge(this,s),this._opts=s,this._method=s.method||"GET",this._uri=t,this._data=s.data!==void 0?s.data:null,this._create()}_create(){var e;const t=ut(this._opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");t.xdomain=!!this._opts.xd;const s=this._xhr=this.createRequest(t);try{s.open(this._method,this._uri,!0);try{if(this._opts.extraHeaders){s.setDisableHeaderCheck&&s.setDisableHeaderCheck(!0);for(let r in this._opts.extraHeaders)this._opts.extraHeaders.hasOwnProperty(r)&&s.setRequestHeader(r,this._opts.extraHeaders[r])}}catch{}if(this._method==="POST")try{s.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch{}try{s.setRequestHeader("Accept","*/*")}catch{}(e=this._opts.cookieJar)===null||e===void 0||e.addCookies(s),"withCredentials"in s&&(s.withCredentials=this._opts.withCredentials),this._opts.requestTimeout&&(s.timeout=this._opts.requestTimeout),s.onreadystatechange=()=>{var r;s.readyState===3&&((r=this._opts.cookieJar)===null||r===void 0||r.parseCookies(s.getResponseHeader("set-cookie"))),s.readyState===4&&(s.status===200||s.status===1223?this._onLoad():this.setTimeoutFn(()=>{this._onError(typeof s.status=="number"?s.status:0)},0))},s.send(this._data)}catch(r){this.setTimeoutFn(()=>{this._onError(r)},0);return}typeof document<"u"&&(this._index=L.requestsCount++,L.requests[this._index]=this)}_onError(e){this.emitReserved("error",e,this._xhr),this._cleanup(!0)}_cleanup(e){if(!(typeof this._xhr>"u"||this._xhr===null)){if(this._xhr.onreadystatechange=ys,e)try{this._xhr.abort()}catch{}typeof document<"u"&&delete L.requests[this._index],this._xhr=null}}_onLoad(){const e=this._xhr.responseText;e!==null&&(this.emitReserved("data",e),this.emitReserved("success"),this._cleanup())}abort(){this._cleanup()}}L.requestsCount=0;L.requests={};if(typeof document<"u"){if(typeof attachEvent=="function")attachEvent("onunload",Ge);else if(typeof addEventListener=="function"){const n="onpagehide"in O?"pagehide":"unload";addEventListener(n,Ge,!1)}}function Ge(){for(let n in L.requests)L.requests.hasOwnProperty(n)&&L.requests[n].abort()}const gs=function(){const n=dt({xdomain:!1});return n&&n.responseType!==null}();class _s extends ms{constructor(e){super(e);const t=e&&e.forceBase64;this.supportsBinary=gs&&!t}request(e={}){return Object.assign(e,{xd:this.xd},this.opts),new L(dt,this.uri(),e)}}function dt(n){const e=n.xdomain;try{if(typeof XMLHttpRequest<"u"&&(!e||ds))return new XMLHttpRequest}catch{}if(!e)try{return new O[["Active"].concat("Object").join("X")]("Microsoft.XMLHTTP")}catch{}}const yt=typeof navigator<"u"&&typeof navigator.product=="string"&&navigator.product.toLowerCase()==="reactnative";class vs extends Ie{get name(){return"websocket"}doOpen(){const e=this.uri(),t=this.opts.protocols,s=yt?{}:ut(this.opts,"agent","perMessageDeflate","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","localAddress","protocolVersion","origin","maxPayload","family","checkServerIdentity");this.opts.extraHeaders&&(s.headers=this.opts.extraHeaders);try{this.ws=this.createSocket(e,t,s)}catch(r){return this.emitReserved("error",r)}this.ws.binaryType=this.socket.binaryType,this.addEventListeners()}addEventListeners(){this.ws.onopen=()=>{this.opts.autoUnref&&this.ws._socket.unref(),this.onOpen()},this.ws.onclose=e=>this.onClose({description:"websocket connection closed",context:e}),this.ws.onmessage=e=>this.onData(e.data),this.ws.onerror=e=>this.onError("websocket error",e)}write(e){this.writable=!1;for(let t=0;t<e.length;t++){const s=e[t],r=t===e.length-1;$e(s,this.supportsBinary,i=>{try{this.doWrite(s,i)}catch{}r&&me(()=>{this.writable=!0,this.emitReserved("drain")},this.setTimeoutFn)})}}doClose(){typeof this.ws<"u"&&(this.ws.onerror=()=>{},this.ws.close(),this.ws=null)}uri(){const e=this.opts.secure?"wss":"ws",t=this.query||{};return this.opts.timestampRequests&&(t[this.opts.timestampParam]=ft()),this.supportsBinary||(t.b64=1),this.createUri(e,t)}}const Re=O.WebSocket||O.MozWebSocket;class bs extends vs{createSocket(e,t,s){return yt?new Re(e,t,s):t?new Re(e,t):new Re(e)}doWrite(e,t){this.ws.send(t)}}class ws extends Ie{get name(){return"webtransport"}doOpen(){try{this._transport=new WebTransport(this.createUri("https"),this.opts.transportOptions[this.name])}catch(e){return this.emitReserved("error",e)}this._transport.closed.then(()=>{this.onClose()}).catch(e=>{this.onError("webtransport error",e)}),this._transport.ready.then(()=>{this._transport.createBidirectionalStream().then(e=>{const t=ss(Number.MAX_SAFE_INTEGER,this.socket.binaryType),s=e.readable.pipeThrough(t).getReader(),r=ts();r.readable.pipeTo(e.writable),this._writer=r.writable.getWriter();const i=()=>{s.read().then(({done:a,value:h})=>{a||(this.onPacket(h),i())}).catch(a=>{})};i();const o={type:"open"};this.query.sid&&(o.data=`{"sid":"${this.query.sid}"}`),this._writer.write(o).then(()=>this.onOpen())})})}write(e){this.writable=!1;for(let t=0;t<e.length;t++){const s=e[t],r=t===e.length-1;this._writer.write(s).then(()=>{r&&me(()=>{this.writable=!0,this.emitReserved("drain")},this.setTimeoutFn)})}}doClose(){var e;(e=this._transport)===null||e===void 0||e.close()}}const ks={websocket:bs,webtransport:ws,polling:_s},Es=/^(?:(?![^:@\/?#]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@\/?#]*)(?::([^:@\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,Rs=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"];function Oe(n){if(n.length>8e3)throw"URI too long";const e=n,t=n.indexOf("["),s=n.indexOf("]");t!=-1&&s!=-1&&(n=n.substring(0,t)+n.substring(t,s).replace(/:/g,";")+n.substring(s,n.length));let r=Es.exec(n||""),i={},o=14;for(;o--;)i[Rs[o]]=r[o]||"";return t!=-1&&s!=-1&&(i.source=e,i.host=i.host.substring(1,i.host.length-1).replace(/;/g,":"),i.authority=i.authority.replace("[","").replace("]","").replace(/;/g,":"),i.ipv6uri=!0),i.pathNames=xs(i,i.path),i.queryKey=Ts(i,i.query),i}function xs(n,e){const t=/\/{2,9}/g,s=e.replace(t,"/").split("/");return(e.slice(0,1)=="/"||e.length===0)&&s.splice(0,1),e.slice(-1)=="/"&&s.splice(s.length-1,1),s}function Ts(n,e){const t={};return e.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,function(s,r,i){r&&(t[r]=i)}),t}const Ce=typeof addEventListener=="function"&&typeof removeEventListener=="function",ue=[];Ce&&addEventListener("offline",()=>{ue.forEach(n=>n())},!1);class M extends y{constructor(e,t){if(super(),this.binaryType=rs,this.writeBuffer=[],this._prevBufferLen=0,this._pingInterval=-1,this._pingTimeout=-1,this._maxPayload=-1,this._pingTimeoutTime=1/0,e&&typeof e=="object"&&(t=e,e=null),e){const s=Oe(e);t.hostname=s.host,t.secure=s.protocol==="https"||s.protocol==="wss",t.port=s.port,s.query&&(t.query=s.query)}else t.host&&(t.hostname=Oe(t.host).host);ge(this,t),this.secure=t.secure!=null?t.secure:typeof location<"u"&&location.protocol==="https:",t.hostname&&!t.port&&(t.port=this.secure?"443":"80"),this.hostname=t.hostname||(typeof location<"u"?location.hostname:"localhost"),this.port=t.port||(typeof location<"u"&&location.port?location.port:this.secure?"443":"80"),this.transports=[],this._transportsByName={},t.transports.forEach(s=>{const r=s.prototype.name;this.transports.push(r),this._transportsByName[r]=s}),this.opts=Object.assign({path:"/engine.io",agent:!1,withCredentials:!1,upgrade:!0,timestampParam:"t",rememberUpgrade:!1,addTrailingSlash:!0,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{},closeOnBeforeunload:!1},t),this.opts.path=this.opts.path.replace(/\/$/,"")+(this.opts.addTrailingSlash?"/":""),typeof this.opts.query=="string"&&(this.opts.query=us(this.opts.query)),Ce&&(this.opts.closeOnBeforeunload&&(this._beforeunloadEventListener=()=>{this.transport&&(this.transport.removeAllListeners(),this.transport.close())},addEventListener("beforeunload",this._beforeunloadEventListener,!1)),this.hostname!=="localhost"&&(this._offlineEventListener=()=>{this._onClose("transport close",{description:"network connection lost"})},ue.push(this._offlineEventListener))),this.opts.withCredentials&&(this._cookieJar=void 0),this._open()}createTransport(e){const t=Object.assign({},this.opts.query);t.EIO=lt,t.transport=e,this.id&&(t.sid=this.id);const s=Object.assign({},this.opts,{query:t,socket:this,hostname:this.hostname,secure:this.secure,port:this.port},this.opts.transportOptions[e]);return new this._transportsByName[e](s)}_open(){if(this.transports.length===0){this.setTimeoutFn(()=>{this.emitReserved("error","No transports available")},0);return}const e=this.opts.rememberUpgrade&&M.priorWebsocketSuccess&&this.transports.indexOf("websocket")!==-1?"websocket":this.transports[0];this.readyState="opening";const t=this.createTransport(e);t.open(),this.setTransport(t)}setTransport(e){this.transport&&this.transport.removeAllListeners(),this.transport=e,e.on("drain",this._onDrain.bind(this)).on("packet",this._onPacket.bind(this)).on("error",this._onError.bind(this)).on("close",t=>this._onClose("transport close",t))}onOpen(){this.readyState="open",M.priorWebsocketSuccess=this.transport.name==="websocket",this.emitReserved("open"),this.flush()}_onPacket(e){if(this.readyState==="opening"||this.readyState==="open"||this.readyState==="closing")switch(this.emitReserved("packet",e),this.emitReserved("heartbeat"),e.type){case"open":this.onHandshake(JSON.parse(e.data));break;case"ping":this._sendPacket("pong"),this.emitReserved("ping"),this.emitReserved("pong"),this._resetPingTimeout();break;case"error":const t=new Error("server error");t.code=e.data,this._onError(t);break;case"message":this.emitReserved("data",e.data),this.emitReserved("message",e.data);break}}onHandshake(e){this.emitReserved("handshake",e),this.id=e.sid,this.transport.query.sid=e.sid,this._pingInterval=e.pingInterval,this._pingTimeout=e.pingTimeout,this._maxPayload=e.maxPayload,this.onOpen(),this.readyState!=="closed"&&this._resetPingTimeout()}_resetPingTimeout(){this.clearTimeoutFn(this._pingTimeoutTimer);const e=this._pingInterval+this._pingTimeout;this._pingTimeoutTime=Date.now()+e,this._pingTimeoutTimer=this.setTimeoutFn(()=>{this._onClose("ping timeout")},e),this.opts.autoUnref&&this._pingTimeoutTimer.unref()}_onDrain(){this.writeBuffer.splice(0,this._prevBufferLen),this._prevBufferLen=0,this.writeBuffer.length===0?this.emitReserved("drain"):this.flush()}flush(){if(this.readyState!=="closed"&&this.transport.writable&&!this.upgrading&&this.writeBuffer.length){const e=this._getWritablePackets();this.transport.send(e),this._prevBufferLen=e.length,this.emitReserved("flush")}}_getWritablePackets(){if(!(this._maxPayload&&this.transport.name==="polling"&&this.writeBuffer.length>1))return this.writeBuffer;let t=1;for(let s=0;s<this.writeBuffer.length;s++){const r=this.writeBuffer[s].data;if(r&&(t+=cs(r)),s>0&&t>this._maxPayload)return this.writeBuffer.slice(0,s);t+=2}return this.writeBuffer}_hasPingExpired(){if(!this._pingTimeoutTime)return!0;const e=Date.now()>this._pingTimeoutTime;return e&&(this._pingTimeoutTime=0,me(()=>{this._onClose("ping timeout")},this.setTimeoutFn)),e}write(e,t,s){return this._sendPacket("message",e,t,s),this}send(e,t,s){return this._sendPacket("message",e,t,s),this}_sendPacket(e,t,s,r){if(typeof t=="function"&&(r=t,t=void 0),typeof s=="function"&&(r=s,s=null),this.readyState==="closing"||this.readyState==="closed")return;s=s||{},s.compress=s.compress!==!1;const i={type:e,data:t,options:s};this.emitReserved("packetCreate",i),this.writeBuffer.push(i),r&&this.once("flush",r),this.flush()}close(){const e=()=>{this._onClose("forced close"),this.transport.close()},t=()=>{this.off("upgrade",t),this.off("upgradeError",t),e()},s=()=>{this.once("upgrade",t),this.once("upgradeError",t)};return(this.readyState==="opening"||this.readyState==="open")&&(this.readyState="closing",this.writeBuffer.length?this.once("drain",()=>{this.upgrading?s():e()}):this.upgrading?s():e()),this}_onError(e){if(M.priorWebsocketSuccess=!1,this.opts.tryAllTransports&&this.transports.length>1&&this.readyState==="opening")return this.transports.shift(),this._open();this.emitReserved("error",e),this._onClose("transport error",e)}_onClose(e,t){if(this.readyState==="opening"||this.readyState==="open"||this.readyState==="closing"){if(this.clearTimeoutFn(this._pingTimeoutTimer),this.transport.removeAllListeners("close"),this.transport.close(),this.transport.removeAllListeners(),Ce&&(this._beforeunloadEventListener&&removeEventListener("beforeunload",this._beforeunloadEventListener,!1),this._offlineEventListener)){const s=ue.indexOf(this._offlineEventListener);s!==-1&&ue.splice(s,1)}this.readyState="closed",this.id=null,this.emitReserved("close",e,t),this.writeBuffer=[],this._prevBufferLen=0}}}M.protocol=lt;class As extends M{constructor(){super(...arguments),this._upgrades=[]}onOpen(){if(super.onOpen(),this.readyState==="open"&&this.opts.upgrade)for(let e=0;e<this._upgrades.length;e++)this._probe(this._upgrades[e])}_probe(e){let t=this.createTransport(e),s=!1;M.priorWebsocketSuccess=!1;const r=()=>{s||(t.send([{type:"ping",data:"probe"}]),t.once("packet",w=>{if(!s)if(w.type==="pong"&&w.data==="probe"){if(this.upgrading=!0,this.emitReserved("upgrading",t),!t)return;M.priorWebsocketSuccess=t.name==="websocket",this.transport.pause(()=>{s||this.readyState!=="closed"&&(m(),this.setTransport(t),t.send([{type:"upgrade"}]),this.emitReserved("upgrade",t),t=null,this.upgrading=!1,this.flush())})}else{const C=new Error("probe error");C.transport=t.name,this.emitReserved("upgradeError",C)}}))};function i(){s||(s=!0,m(),t.close(),t=null)}const o=w=>{const C=new Error("probe error: "+w);C.transport=t.name,i(),this.emitReserved("upgradeError",C)};function a(){o("transport closed")}function h(){o("socket closed")}function g(w){t&&w.name!==t.name&&i()}const m=()=>{t.removeListener("open",r),t.removeListener("error",o),t.removeListener("close",a),this.off("close",h),this.off("upgrading",g)};t.once("open",r),t.once("error",o),t.once("close",a),this.once("close",h),this.once("upgrading",g),this._upgrades.indexOf("webtransport")!==-1&&e!=="webtransport"?this.setTimeoutFn(()=>{s||t.open()},200):t.open()}onHandshake(e){this._upgrades=this._filterUpgrades(e.upgrades),super.onHandshake(e)}_filterUpgrades(e){const t=[];for(let s=0;s<e.length;s++)~this.transports.indexOf(e[s])&&t.push(e[s]);return t}}let Os=class extends As{constructor(e,t={}){const s=typeof e=="object"?e:t;(!s.transports||s.transports&&typeof s.transports[0]=="string")&&(s.transports=(s.transports||["polling","websocket","webtransport"]).map(r=>ks[r]).filter(r=>!!r)),super(e,s)}};function Cs(n,e="",t){let s=n;t=t||typeof location<"u"&&location,n==null&&(n=t.protocol+"//"+t.host),typeof n=="string"&&(n.charAt(0)==="/"&&(n.charAt(1)==="/"?n=t.protocol+n:n=t.host+n),/^(https?|wss?):\/\//.test(n)||(typeof t<"u"?n=t.protocol+"//"+n:n="https://"+n),s=Oe(n)),s.port||(/^(http|ws)$/.test(s.protocol)?s.port="80":/^(http|ws)s$/.test(s.protocol)&&(s.port="443")),s.path=s.path||"/";const i=s.host.indexOf(":")!==-1?"["+s.host+"]":s.host;return s.id=s.protocol+"://"+i+":"+s.port+e,s.href=s.protocol+"://"+i+(t&&t.port===s.port?"":":"+s.port),s}const Ss=typeof ArrayBuffer=="function",Bs=n=>typeof ArrayBuffer.isView=="function"?ArrayBuffer.isView(n):n.buffer instanceof ArrayBuffer,mt=Object.prototype.toString,Ns=typeof Blob=="function"||typeof Blob<"u"&&mt.call(Blob)==="[object BlobConstructor]",Ls=typeof File=="function"||typeof File<"u"&&mt.call(File)==="[object FileConstructor]";function Ue(n){return Ss&&(n instanceof ArrayBuffer||Bs(n))||Ns&&n instanceof Blob||Ls&&n instanceof File}function fe(n,e){if(!n||typeof n!="object")return!1;if(Array.isArray(n)){for(let t=0,s=n.length;t<s;t++)if(fe(n[t]))return!0;return!1}if(Ue(n))return!0;if(n.toJSON&&typeof n.toJSON=="function"&&arguments.length===1)return fe(n.toJSON(),!0);for(const t in n)if(Object.prototype.hasOwnProperty.call(n,t)&&fe(n[t]))return!0;return!1}function Ps(n){const e=[],t=n.data,s=n;return s.data=Se(t,e),s.attachments=e.length,{packet:s,buffers:e}}function Se(n,e){if(!n)return n;if(Ue(n)){const t={_placeholder:!0,num:e.length};return e.push(n),t}else if(Array.isArray(n)){const t=new Array(n.length);for(let s=0;s<n.length;s++)t[s]=Se(n[s],e);return t}else if(typeof n=="object"&&!(n instanceof Date)){const t={};for(const s in n)Object.prototype.hasOwnProperty.call(n,s)&&(t[s]=Se(n[s],e));return t}return n}function qs(n,e){return n.data=Be(n.data,e),delete n.attachments,n}function Be(n,e){if(!n)return n;if(n&&n._placeholder===!0){if(typeof n.num=="number"&&n.num>=0&&n.num<e.length)return e[n.num];throw new Error("illegal attachments")}else if(Array.isArray(n))for(let t=0;t<n.length;t++)n[t]=Be(n[t],e);else if(typeof n=="object")for(const t in n)Object.prototype.hasOwnProperty.call(n,t)&&(n[t]=Be(n[t],e));return n}const $s=["connect","connect_error","disconnect","disconnecting","newListener","removeListener"];var l;(function(n){n[n.CONNECT=0]="CONNECT",n[n.DISCONNECT=1]="DISCONNECT",n[n.EVENT=2]="EVENT",n[n.ACK=3]="ACK",n[n.CONNECT_ERROR=4]="CONNECT_ERROR",n[n.BINARY_EVENT=5]="BINARY_EVENT",n[n.BINARY_ACK=6]="BINARY_ACK"})(l||(l={}));class Ds{constructor(e){this.replacer=e}encode(e){return(e.type===l.EVENT||e.type===l.ACK)&&fe(e)?this.encodeAsBinary({type:e.type===l.EVENT?l.BINARY_EVENT:l.BINARY_ACK,nsp:e.nsp,data:e.data,id:e.id}):[this.encodeAsString(e)]}encodeAsString(e){let t=""+e.type;return(e.type===l.BINARY_EVENT||e.type===l.BINARY_ACK)&&(t+=e.attachments+"-"),e.nsp&&e.nsp!=="/"&&(t+=e.nsp+","),e.id!=null&&(t+=e.id),e.data!=null&&(t+=JSON.stringify(e.data,this.replacer)),t}encodeAsBinary(e){const t=Ps(e),s=this.encodeAsString(t.packet),r=t.buffers;return r.unshift(s),r}}function Ze(n){return Object.prototype.toString.call(n)==="[object Object]"}class Fe extends y{constructor(e){super(),this.reviver=e}add(e){let t;if(typeof e=="string"){if(this.reconstructor)throw new Error("got plaintext data when reconstructing a packet");t=this.decodeString(e);const s=t.type===l.BINARY_EVENT;s||t.type===l.BINARY_ACK?(t.type=s?l.EVENT:l.ACK,this.reconstructor=new Is(t),t.attachments===0&&super.emitReserved("decoded",t)):super.emitReserved("decoded",t)}else if(Ue(e)||e.base64)if(this.reconstructor)t=this.reconstructor.takeBinaryData(e),t&&(this.reconstructor=null,super.emitReserved("decoded",t));else throw new Error("got binary data when not reconstructing a packet");else throw new Error("Unknown type: "+e)}decodeString(e){let t=0;const s={type:Number(e.charAt(0))};if(l[s.type]===void 0)throw new Error("unknown packet type "+s.type);if(s.type===l.BINARY_EVENT||s.type===l.BINARY_ACK){const i=t+1;for(;e.charAt(++t)!=="-"&&t!=e.length;);const o=e.substring(i,t);if(o!=Number(o)||e.charAt(t)!=="-")throw new Error("Illegal attachments");s.attachments=Number(o)}if(e.charAt(t+1)==="/"){const i=t+1;for(;++t&&!(e.charAt(t)===","||t===e.length););s.nsp=e.substring(i,t)}else s.nsp="/";const r=e.charAt(t+1);if(r!==""&&Number(r)==r){const i=t+1;for(;++t;){const o=e.charAt(t);if(o==null||Number(o)!=o){--t;break}if(t===e.length)break}s.id=Number(e.substring(i,t+1))}if(e.charAt(++t)){const i=this.tryParse(e.substr(t));if(Fe.isPayloadValid(s.type,i))s.data=i;else throw new Error("invalid payload")}return s}tryParse(e){try{return JSON.parse(e,this.reviver)}catch{return!1}}static isPayloadValid(e,t){switch(e){case l.CONNECT:return Ze(t);case l.DISCONNECT:return t===void 0;case l.CONNECT_ERROR:return typeof t=="string"||Ze(t);case l.EVENT:case l.BINARY_EVENT:return Array.isArray(t)&&(typeof t[0]=="number"||typeof t[0]=="string"&&$s.indexOf(t[0])===-1);case l.ACK:case l.BINARY_ACK:return Array.isArray(t)}}destroy(){this.reconstructor&&(this.reconstructor.finishedReconstruction(),this.reconstructor=null)}}class Is{constructor(e){this.packet=e,this.buffers=[],this.reconPack=e}takeBinaryData(e){if(this.buffers.push(e),this.buffers.length===this.reconPack.attachments){const t=qs(this.reconPack,this.buffers);return this.finishedReconstruction(),t}return null}finishedReconstruction(){this.reconPack=null,this.buffers=[]}}const Us=Object.freeze(Object.defineProperty({__proto__:null,Decoder:Fe,Encoder:Ds,get PacketType(){return l}},Symbol.toStringTag,{value:"Module"}));function B(n,e,t){return n.on(e,t),function(){n.off(e,t)}}const Fs=Object.freeze({connect:1,connect_error:1,disconnect:1,disconnecting:1,newListener:1,removeListener:1});class gt extends y{constructor(e,t,s){super(),this.connected=!1,this.recovered=!1,this.receiveBuffer=[],this.sendBuffer=[],this._queue=[],this._queueSeq=0,this.ids=0,this.acks={},this.flags={},this.io=e,this.nsp=t,s&&s.auth&&(this.auth=s.auth),this._opts=Object.assign({},s),this.io._autoConnect&&this.open()}get disconnected(){return!this.connected}subEvents(){if(this.subs)return;const e=this.io;this.subs=[B(e,"open",this.onopen.bind(this)),B(e,"packet",this.onpacket.bind(this)),B(e,"error",this.onerror.bind(this)),B(e,"close",this.onclose.bind(this))]}get active(){return!!this.subs}connect(){return this.connected?this:(this.subEvents(),this.io._reconnecting||this.io.open(),this.io._readyState==="open"&&this.onopen(),this)}open(){return this.connect()}send(...e){return e.unshift("message"),this.emit.apply(this,e),this}emit(e,...t){var s,r,i;if(Fs.hasOwnProperty(e))throw new Error('"'+e.toString()+'" is a reserved event name');if(t.unshift(e),this._opts.retries&&!this.flags.fromQueue&&!this.flags.volatile)return this._addToQueue(t),this;const o={type:l.EVENT,data:t};if(o.options={},o.options.compress=this.flags.compress!==!1,typeof t[t.length-1]=="function"){const m=this.ids++,w=t.pop();this._registerAckCallback(m,w),o.id=m}const a=(r=(s=this.io.engine)===null||s===void 0?void 0:s.transport)===null||r===void 0?void 0:r.writable,h=this.connected&&!(!((i=this.io.engine)===null||i===void 0)&&i._hasPingExpired());return this.flags.volatile&&!a||(h?(this.notifyOutgoingListeners(o),this.packet(o)):this.sendBuffer.push(o)),this.flags={},this}_registerAckCallback(e,t){var s;const r=(s=this.flags.timeout)!==null&&s!==void 0?s:this._opts.ackTimeout;if(r===void 0){this.acks[e]=t;return}const i=this.io.setTimeoutFn(()=>{delete this.acks[e];for(let a=0;a<this.sendBuffer.length;a++)this.sendBuffer[a].id===e&&this.sendBuffer.splice(a,1);t.call(this,new Error("operation has timed out"))},r),o=(...a)=>{this.io.clearTimeoutFn(i),t.apply(this,a)};o.withError=!0,this.acks[e]=o}emitWithAck(e,...t){return new Promise((s,r)=>{const i=(o,a)=>o?r(o):s(a);i.withError=!0,t.push(i),this.emit(e,...t)})}_addToQueue(e){let t;typeof e[e.length-1]=="function"&&(t=e.pop());const s={id:this._queueSeq++,tryCount:0,pending:!1,args:e,flags:Object.assign({fromQueue:!0},this.flags)};e.push((r,...i)=>s!==this._queue[0]?void 0:(r!==null?s.tryCount>this._opts.retries&&(this._queue.shift(),t&&t(r)):(this._queue.shift(),t&&t(null,...i)),s.pending=!1,this._drainQueue())),this._queue.push(s),this._drainQueue()}_drainQueue(e=!1){if(!this.connected||this._queue.length===0)return;const t=this._queue[0];t.pending&&!e||(t.pending=!0,t.tryCount++,this.flags=t.flags,this.emit.apply(this,t.args))}packet(e){e.nsp=this.nsp,this.io._packet(e)}onopen(){typeof this.auth=="function"?this.auth(e=>{this._sendConnectPacket(e)}):this._sendConnectPacket(this.auth)}_sendConnectPacket(e){this.packet({type:l.CONNECT,data:this._pid?Object.assign({pid:this._pid,offset:this._lastOffset},e):e})}onerror(e){this.connected||this.emitReserved("connect_error",e)}onclose(e,t){this.connected=!1,delete this.id,this.emitReserved("disconnect",e,t),this._clearAcks()}_clearAcks(){Object.keys(this.acks).forEach(e=>{if(!this.sendBuffer.some(s=>String(s.id)===e)){const s=this.acks[e];delete this.acks[e],s.withError&&s.call(this,new Error("socket has been disconnected"))}})}onpacket(e){if(e.nsp===this.nsp)switch(e.type){case l.CONNECT:e.data&&e.data.sid?this.onconnect(e.data.sid,e.data.pid):this.emitReserved("connect_error",new Error("It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)"));break;case l.EVENT:case l.BINARY_EVENT:this.onevent(e);break;case l.ACK:case l.BINARY_ACK:this.onack(e);break;case l.DISCONNECT:this.ondisconnect();break;case l.CONNECT_ERROR:this.destroy();const s=new Error(e.data.message);s.data=e.data.data,this.emitReserved("connect_error",s);break}}onevent(e){const t=e.data||[];e.id!=null&&t.push(this.ack(e.id)),this.connected?this.emitEvent(t):this.receiveBuffer.push(Object.freeze(t))}emitEvent(e){if(this._anyListeners&&this._anyListeners.length){const t=this._anyListeners.slice();for(const s of t)s.apply(this,e)}super.emit.apply(this,e),this._pid&&e.length&&typeof e[e.length-1]=="string"&&(this._lastOffset=e[e.length-1])}ack(e){const t=this;let s=!1;return function(...r){s||(s=!0,t.packet({type:l.ACK,id:e,data:r}))}}onack(e){const t=this.acks[e.id];typeof t=="function"&&(delete this.acks[e.id],t.withError&&e.data.unshift(null),t.apply(this,e.data))}onconnect(e,t){this.id=e,this.recovered=t&&this._pid===t,this._pid=t,this.connected=!0,this.emitBuffered(),this.emitReserved("connect"),this._drainQueue(!0)}emitBuffered(){this.receiveBuffer.forEach(e=>this.emitEvent(e)),this.receiveBuffer=[],this.sendBuffer.forEach(e=>{this.notifyOutgoingListeners(e),this.packet(e)}),this.sendBuffer=[]}ondisconnect(){this.destroy(),this.onclose("io server disconnect")}destroy(){this.subs&&(this.subs.forEach(e=>e()),this.subs=void 0),this.io._destroy(this)}disconnect(){return this.connected&&this.packet({type:l.DISCONNECT}),this.destroy(),this.connected&&this.onclose("io client disconnect"),this}close(){return this.disconnect()}compress(e){return this.flags.compress=e,this}get volatile(){return this.flags.volatile=!0,this}timeout(e){return this.flags.timeout=e,this}onAny(e){return this._anyListeners=this._anyListeners||[],this._anyListeners.push(e),this}prependAny(e){return this._anyListeners=this._anyListeners||[],this._anyListeners.unshift(e),this}offAny(e){if(!this._anyListeners)return this;if(e){const t=this._anyListeners;for(let s=0;s<t.length;s++)if(e===t[s])return t.splice(s,1),this}else this._anyListeners=[];return this}listenersAny(){return this._anyListeners||[]}onAnyOutgoing(e){return this._anyOutgoingListeners=this._anyOutgoingListeners||[],this._anyOutgoingListeners.push(e),this}prependAnyOutgoing(e){return this._anyOutgoingListeners=this._anyOutgoingListeners||[],this._anyOutgoingListeners.unshift(e),this}offAnyOutgoing(e){if(!this._anyOutgoingListeners)return this;if(e){const t=this._anyOutgoingListeners;for(let s=0;s<t.length;s++)if(e===t[s])return t.splice(s,1),this}else this._anyOutgoingListeners=[];return this}listenersAnyOutgoing(){return this._anyOutgoingListeners||[]}notifyOutgoingListeners(e){if(this._anyOutgoingListeners&&this._anyOutgoingListeners.length){const t=this._anyOutgoingListeners.slice();for(const s of t)s.apply(this,e.data)}}}function X(n){n=n||{},this.ms=n.min||100,this.max=n.max||1e4,this.factor=n.factor||2,this.jitter=n.jitter>0&&n.jitter<=1?n.jitter:0,this.attempts=0}X.prototype.duration=function(){var n=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var e=Math.random(),t=Math.floor(e*this.jitter*n);n=Math.floor(e*10)&1?n+t:n-t}return Math.min(n,this.max)|0};X.prototype.reset=function(){this.attempts=0};X.prototype.setMin=function(n){this.ms=n};X.prototype.setMax=function(n){this.max=n};X.prototype.setJitter=function(n){this.jitter=n};class Ne extends y{constructor(e,t){var s;super(),this.nsps={},this.subs=[],e&&typeof e=="object"&&(t=e,e=void 0),t=t||{},t.path=t.path||"/socket.io",this.opts=t,ge(this,t),this.reconnection(t.reconnection!==!1),this.reconnectionAttempts(t.reconnectionAttempts||1/0),this.reconnectionDelay(t.reconnectionDelay||1e3),this.reconnectionDelayMax(t.reconnectionDelayMax||5e3),this.randomizationFactor((s=t.randomizationFactor)!==null&&s!==void 0?s:.5),this.backoff=new X({min:this.reconnectionDelay(),max:this.reconnectionDelayMax(),jitter:this.randomizationFactor()}),this.timeout(t.timeout==null?2e4:t.timeout),this._readyState="closed",this.uri=e;const r=t.parser||Us;this.encoder=new r.Encoder,this.decoder=new r.Decoder,this._autoConnect=t.autoConnect!==!1,this._autoConnect&&this.open()}reconnection(e){return arguments.length?(this._reconnection=!!e,e||(this.skipReconnect=!0),this):this._reconnection}reconnectionAttempts(e){return e===void 0?this._reconnectionAttempts:(this._reconnectionAttempts=e,this)}reconnectionDelay(e){var t;return e===void 0?this._reconnectionDelay:(this._reconnectionDelay=e,(t=this.backoff)===null||t===void 0||t.setMin(e),this)}randomizationFactor(e){var t;return e===void 0?this._randomizationFactor:(this._randomizationFactor=e,(t=this.backoff)===null||t===void 0||t.setJitter(e),this)}reconnectionDelayMax(e){var t;return e===void 0?this._reconnectionDelayMax:(this._reconnectionDelayMax=e,(t=this.backoff)===null||t===void 0||t.setMax(e),this)}timeout(e){return arguments.length?(this._timeout=e,this):this._timeout}maybeReconnectOnOpen(){!this._reconnecting&&this._reconnection&&this.backoff.attempts===0&&this.reconnect()}open(e){if(~this._readyState.indexOf("open"))return this;this.engine=new Os(this.uri,this.opts);const t=this.engine,s=this;this._readyState="opening",this.skipReconnect=!1;const r=B(t,"open",function(){s.onopen(),e&&e()}),i=a=>{this.cleanup(),this._readyState="closed",this.emitReserved("error",a),e?e(a):this.maybeReconnectOnOpen()},o=B(t,"error",i);if(this._timeout!==!1){const a=this._timeout,h=this.setTimeoutFn(()=>{r(),i(new Error("timeout")),t.close()},a);this.opts.autoUnref&&h.unref(),this.subs.push(()=>{this.clearTimeoutFn(h)})}return this.subs.push(r),this.subs.push(o),this}connect(e){return this.open(e)}onopen(){this.cleanup(),this._readyState="open",this.emitReserved("open");const e=this.engine;this.subs.push(B(e,"ping",this.onping.bind(this)),B(e,"data",this.ondata.bind(this)),B(e,"error",this.onerror.bind(this)),B(e,"close",this.onclose.bind(this)),B(this.decoder,"decoded",this.ondecoded.bind(this)))}onping(){this.emitReserved("ping")}ondata(e){try{this.decoder.add(e)}catch(t){this.onclose("parse error",t)}}ondecoded(e){me(()=>{this.emitReserved("packet",e)},this.setTimeoutFn)}onerror(e){this.emitReserved("error",e)}socket(e,t){let s=this.nsps[e];return s?this._autoConnect&&!s.active&&s.connect():(s=new gt(this,e,t),this.nsps[e]=s),s}_destroy(e){const t=Object.keys(this.nsps);for(const s of t)if(this.nsps[s].active)return;this._close()}_packet(e){const t=this.encoder.encode(e);for(let s=0;s<t.length;s++)this.engine.write(t[s],e.options)}cleanup(){this.subs.forEach(e=>e()),this.subs.length=0,this.decoder.destroy()}_close(){this.skipReconnect=!0,this._reconnecting=!1,this.onclose("forced close")}disconnect(){return this._close()}onclose(e,t){var s;this.cleanup(),(s=this.engine)===null||s===void 0||s.close(),this.backoff.reset(),this._readyState="closed",this.emitReserved("close",e,t),this._reconnection&&!this.skipReconnect&&this.reconnect()}reconnect(){if(this._reconnecting||this.skipReconnect)return this;const e=this;if(this.backoff.attempts>=this._reconnectionAttempts)this.backoff.reset(),this.emitReserved("reconnect_failed"),this._reconnecting=!1;else{const t=this.backoff.duration();this._reconnecting=!0;const s=this.setTimeoutFn(()=>{e.skipReconnect||(this.emitReserved("reconnect_attempt",e.backoff.attempts),!e.skipReconnect&&e.open(r=>{r?(e._reconnecting=!1,e.reconnect(),this.emitReserved("reconnect_error",r)):e.onreconnect()}))},t);this.opts.autoUnref&&s.unref(),this.subs.push(()=>{this.clearTimeoutFn(s)})}}onreconnect(){const e=this.backoff.attempts;this._reconnecting=!1,this.backoff.reset(),this.emitReserved("reconnect",e)}}const te={};function pe(n,e){typeof n=="object"&&(e=n,n=void 0),e=e||{};const t=Cs(n,e.path||"/socket.io"),s=t.source,r=t.id,i=t.path,o=te[r]&&i in te[r].nsps,a=e.forceNew||e["force new connection"]||e.multiplex===!1||o;let h;return a?h=new Ne(s,e):(te[r]||(te[r]=new Ne(s,e)),h=te[r]),t.query&&!e.query&&(e.query=t.queryKey),h.socket(t.path,e)}Object.assign(pe,{Manager:Ne,Socket:gt,io:pe,connect:pe});var Vs=x('<div class="terminal-wrap svelte-olniy1"><div class="terminal-bar svelte-olniy1"><span class="dot red svelte-olniy1"></span> <span class="dot yellow svelte-olniy1"></span> <span class="dot green svelte-olniy1"></span></div> <pre class="terminal svelte-olniy1"> </pre></div>');function Ms(n,e){Pe(e,!1);let t=Bt(e,"output",8,""),s=V();Rt(()=>{c(s)&&xt(s,c(s).scrollTop=c(s).scrollHeight)}),Le();var r=Vs(),i=_(p(r),2),o=p(i,!0);u(i),It(i,a=>U(s,a),()=>c(s)),u(r),S(()=>K(o,t())),v(n,r),qe()}var Hs=x('<span class="run-id svelte-ynu3lh"> </span>'),Ks=x('<span class="dot svelte-ynu3lh"></span>'),Ws=x('<button class="worker-btn svelte-ynu3lh"> </button>'),zs=x('<div class="report-row svelte-ynu3lh"><a target="_blank" rel="noopener noreferrer" class="svelte-ynu3lh"><!></a></div>'),Ys=x('<div class="body svelte-ynu3lh"><div class="controls svelte-ynu3lh"><input type="text" class="field-input run-input svelte-ynu3lh" placeholder="@test-1 or @suite-login or blank for all"> <div class="workers-control svelte-ynu3lh"></div> <!></div> <!> <!></div>'),Js=x('<div class="panel svelte-ynu3lh"><div class="bar svelte-ynu3lh"><div class="bar-left svelte-ynu3lh"><span class="status-dot svelte-ynu3lh"></span> <span class="status-label svelte-ynu3lh"> </span> <!></div> <div class="bar-dots svelte-ynu3lh"></div> <button class="expand-btn svelte-ynu3lh"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="svelte-ynu3lh"><polyline points="18 15 12 9 6 15" class="svelte-ynu3lh"></polyline></svg></button></div> <!></div>');function Xs(n,e){Pe(e,!1);const[t,s]=nt(),r=()=>re(be,"$runnerState",t),i=()=>re(we,"$runnerConfig",t),o=()=>re(ze,"$panelExpanded",t),a=V(),h=V(),g=V(),m=V(),w=V(),C=V(),Q=[1,2,4,8];Tt(()=>{const f=pe("http://localhost:3001");return qt.set(f),f.on("log",d=>{be.update(E=>({...E,output:E.output+d+`
|
|
19
|
+
`}))}),f.on("done",async d=>{const E=await $t().catch(()=>null),R=d===0;be.update(Y=>({...Y,output:Y.output+(R?`✓ All tests passed
|
|
20
|
+
`:`✗ Some tests failed
|
|
21
|
+
`),running:!1,testCompleted:!0,latestReport:E,status:R?"pass":"fail"}))}),()=>f.disconnect()});function ie(f){f.key==="Enter"&&!c(a).running&&Ye()}J(()=>r(),()=>{U(a,r())}),J(()=>i(),()=>{U(h,i())}),J(()=>c(h),()=>{U(g,Math.min(c(h).workers,4))}),J(()=>c(g),()=>{U(m,Array.from({length:c(g)}))}),J(()=>c(a),()=>{U(w,c(a).status==="pass"?"var(--pass)":c(a).status==="fail"?"var(--fail)":c(a).status==="running"?"var(--accent)":"var(--border)")}),J(()=>c(a),()=>{U(C,c(a).status==="running"?"running":c(a).status==="pass"?"passed":c(a).status==="fail"?"failed":"ready")}),At(),Le();var q=Js(),j=p(q),G=p(j),Z=p(G),$=_(Z,2),oe=p($,!0);u($);var ae=_($,2);{var _e=f=>{var d=Hs(),E=p(d,!0);u(d),S(()=>K(E,c(a).lastRunId||"(all)")),v(f,d)};ne(ae,f=>{c(a).lastRunId&&f(_e)})}u(G);var W=_(G,2);de(W,5,()=>c(m),ye,(f,d,E)=>{var R=Ks();F(R,"style",`animation-delay: ${E*180}ms`),S(()=>{A(R,"running",c(a).running),A(R,"pass",c(a).status==="pass"),A(R,"fail",c(a).status==="fail")}),v(f,R)}),u(W);var z=_(W,2),b=p(z);u(z),u(j);var k=_(j,2);{var D=f=>{var d=Ys(),E=p(d),R=p(E);Ct(R);var Y=_(R,2);de(Y,5,()=>Q,ye,(I,N)=>{var T=Ws(),ve=p(T,!0);u(T),S(()=>{A(T,"active",c(h).workers===c(N)),K(ve,c(N)===1?"Off":c(N))}),H("click",T,()=>we.update(ee=>({...ee,workers:c(N)}))),v(I,T)}),u(Y);var _t=_(Y,2);Je(_t,{get disabled(){return c(a).running},$$events:{click:()=>Ye()},children:(I,N)=>{He();var T=Me();S(()=>K(T,c(a).running?"Running…":"Run")),v(I,T)},$$slots:{default:!0}}),u(E);var Ve=_(E,2);Ms(Ve,{get output(){return c(a).output}});var vt=_(Ve,2);{var bt=I=>{var N=zs(),T=p(N),ve=p(T);Je(ve,{variant:"outline",size:"sm",children:(ee,js)=>{He();var wt=Me("View Report →");v(ee,wt)},$$slots:{default:!0}}),u(T),u(N),S(ee=>F(T,"href",ee),[()=>Dt(c(a).latestReport)],Ot),xe(3,N,()=>St,()=>({y:6,duration:200})),v(I,N)};ne(vt,I=>{c(a).testCompleted&&c(a).latestReport&&I(bt)})}u(d),S(()=>R.disabled=c(a).running),Pt(R,()=>i().testID,I=>Nt(we,Ke(i).testID=I,Ke(i))),H("keydown",R,ie),xe(3,d,()=>st,()=>({duration:220})),v(f,d)};ne(k,f=>{o()&&f(D)})}u(q),S(()=>{A(q,"expanded",o()),F(Z,"style",`background: ${c(w)??""}`),A(Z,"pulse",c(a).running),K(oe,c(C)),F(W,"title",`${c(h).workers??""} worker${(c(h).workers!==1?"s":"")??""}`),F(z,"aria-label",o()?"Collapse panel":"Expand panel"),A(b,"rotated",o())}),H("click",z,()=>ze.update(f=>!f)),v(n,q),qe(),s()}var Qs=x("<!> <!> <!>",1);function dn(n,e){var t=Qs(),s=We(t);zt(s,{});var r=_(s,2);Jt(r,{children:(o,a)=>{var h=kt(),g=We(h);tt(g,e,"default",{}),v(o,h)},$$slots:{default:!0}});var i=_(r,2);Xs(i,{}),v(n,t)}export{dn as component};
|
|
@@ -0,0 +1,18 @@
|
|
|
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{a as g,t as h,s}from"../chunks/DFJLQFic.js";import{i as l}from"../chunks/DTUE7kkY.js";import{l as v,x as d,D as x,y as _,B as o,C as p,v as $}from"../chunks/B0bn91RF.js";import{s as k,p as i}from"../chunks/Cit9MuSg.js";const b={get error(){return i.error},get status(){return i.status}};k.updated.check;const m=b;var y=h("<h1> </h1> <p> </p>",1);function j(n,c){v(c,!1),l();var r=y(),t=d(r),f=o(t,!0);p(t);var e=$(t,2),u=o(e,!0);p(e),x(()=>{var a;s(f,m.status),s(u,(a=m.error)==null?void 0:a.message)}),g(n,r),_()}export{j as component};
|
|
@@ -0,0 +1,18 @@
|
|
|
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{a as i,t as n,b as Se,s as p,e as N}from"../chunks/DFJLQFic.js";import{i as We}from"../chunks/DTUE7kkY.js";import{l as Xe,o as Ye,m as h,Q as Ze,n as J,t as et,x as tt,A as e,y as st,z as y,v,B as r,C as s,D as u,G as K}from"../chunks/B0bn91RF.js";import{i as T}from"../chunks/CwBTqcbj.js";import{r as at,e as x,s as g,i as w,t as de}from"../chunks/Bt3-Z7H1.js";import{t as rt,s as lt}from"../chunks/B1kE5jmt.js";import{b as ot}from"../chunks/BKz6FZdB.js";import{r as it,t as vt}from"../chunks/IYPwzKs_.js";const nt="http://localhost:3001";async function ct(){const P=await fetch(`${nt}/tests`),{suites:U}=await P.json();return U.suites??[]}var dt=n('<button class="search-clear svelte-10529e9" aria-label="Clear search"><svg width="12" height="12" viewBox="0 0 14 14" fill="none" class="svelte-10529e9"><path d="M1 1l12 12M13 1L1 13" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" class="svelte-10529e9"></path></svg></button>'),pt=n('<p class="empty svelte-10529e9"> </p>'),ut=n('<button class="id-pill svelte-10529e9"> </button>'),_t=n('<button class="id-pill svelte-10529e9"> </button>'),ht=n('<span class="outline-badge svelte-10529e9">outline</span>'),ft=n('<button class="steps-toggle svelte-10529e9"><svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" class="svelte-10529e9"><polyline points="9 18 15 12 9 6" class="svelte-10529e9"></polyline></svg> </button>'),mt=n('<li class="step svelte-10529e9"> </li>'),gt=n('<th class="svelte-10529e9"> </th>'),bt=n('<td class="svelte-10529e9"> </td>'),yt=n('<tr class="svelte-10529e9"></tr>'),xt=n('<div class="examples svelte-10529e9"><span class="examples-label svelte-10529e9">Examples</span> <div class="examples-table-wrap svelte-10529e9"><table class="examples-table svelte-10529e9"><thead class="svelte-10529e9"><tr class="svelte-10529e9"></tr></thead><tbody class="svelte-10529e9"></tbody></table></div></div>'),wt=n('<div class="steps svelte-10529e9"><ol class="step-list svelte-10529e9"></ol> <!></div>'),kt=n('<div class="test-row svelte-10529e9"><div class="test-main svelte-10529e9"><button class="run-icon-btn svelte-10529e9"><svg width="10" height="10" viewBox="0 0 24 24" fill="currentColor" stroke="none" class="svelte-10529e9"><polygon points="5,3 19,12 5,21" class="svelte-10529e9"></polygon></svg></button> <div class="test-ids svelte-10529e9"></div> <span class="test-name svelte-10529e9"> <!></span> <!></div> <!></div>'),Ct=n('<div class="suite svelte-10529e9"><div class="suite-header svelte-10529e9"><div class="suite-meta svelte-10529e9"><div class="suite-badges svelte-10529e9"></div> <span class="suite-name svelte-10529e9"> </span> <span class="suite-count svelte-10529e9"> </span></div> <button class="run-btn suite-run svelte-10529e9" title="Run suite"><svg width="11" height="11" viewBox="0 0 24 24" fill="currentColor" stroke="none" class="svelte-10529e9"><polygon points="5,3 19,12 5,21" class="svelte-10529e9"></polygon></svg> Run suite</button></div> <div class="tests svelte-10529e9"></div></div>'),$t=n('<div class="suites svelte-10529e9"></div>'),It=n('<div class="page-header svelte-10529e9"><div class="header-top svelte-10529e9"><div class="svelte-10529e9"><h1 class="svelte-10529e9">Tests</h1> <p class="subtitle svelte-10529e9"><!></p></div></div> <div class="search-row svelte-10529e9"><div class="search-wrap svelte-10529e9"><svg class="search-icon svelte-10529e9" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="11" cy="11" r="8" class="svelte-10529e9"></circle><line x1="21" y1="21" x2="16.65" y2="16.65" class="svelte-10529e9"></line></svg> <input type="text" class="search-input svelte-10529e9" placeholder="Search suites or tests…"> <!></div></div></div> <!>',1);function Dt(P,U){Xe(U,!1);const b=y(),D=y(),z=y(),pe=y();let k=y([]),C=y(""),A=y(new Set),_=y(new Set);const j=new Map;Ye(async()=>{try{h(k,await ct())}catch(t){console.error("Failed to fetch suites",t)}});function ue(t){return Array.isArray(t.suiteId)?t.suiteId:[t.suiteId]}function _e(t){return Array.isArray(t.id)?t.id:[t.id]}function Te(t){return Array.isArray(t.id)?t.id[0]:t.id}function Ae(t){e(A).has(t)?e(A).delete(t):e(A).add(t),h(A,e(A))}function he(t){it.update(a=>({...a,testID:t})),vt(t)}function Be(t){const a=ue(t)[0];he(a)}async function fe(t){await navigator.clipboard.writeText(t),e(_).add(t),h(_,e(_)),j.has(t)&&clearTimeout(j.get(t)),j.set(t,setTimeout(()=>{e(_).delete(t),h(_,e(_)),j.delete(t)},1400))}Ze(()=>{for(const t of j.values())clearTimeout(t)}),J(()=>e(C),()=>{h(b,e(C).trim().toLowerCase())}),J(()=>(e(k),e(b)),()=>{h(D,e(k).map(t=>{if(!e(b))return t;const a=t.suiteName.toLowerCase().includes(e(b)),B=t.tests.filter(f=>f.testCase.toLowerCase().includes(e(b))||_e(f).some(F=>F.toLowerCase().includes(e(b))));return!a&&B.length===0?null:{...t,tests:a?t.tests:B}}).filter(Boolean))}),J(()=>e(k),()=>{h(z,e(k).reduce((t,a)=>t+a.tests.length,0))}),J(()=>e(D),()=>{h(pe,e(D).reduce((t,a)=>t+a.tests.length,0))}),et(),We();var me=It(),V=tt(me),W=r(V),ge=r(W),be=v(r(ge),2),Le=r(be);{var Me=t=>{var a=Se();u(()=>p(a,`${e(pe)??""} of ${e(z)??""} tests`)),i(t,a)},Re=t=>{var a=Se();u(()=>p(a,`${e(k).length??""} suite${(e(k).length!==1?"s":"")??""} · ${e(z)??""} test${(e(z)!==1?"s":"")??""}`)),i(t,a)};T(Le,t=>{e(b)?t(Me):t(Re,!1)})}s(be),s(ge),s(W);var ye=v(W,2),xe=r(ye),X=v(r(xe),2);at(X);var Ne=v(X,2);{var De=t=>{var a=dt();N("click",a,()=>h(C,"")),i(t,a)};T(Ne,t=>{e(C)&&t(De)})}s(xe),s(ye),s(V);var je=v(V,2);{var qe=t=>{var a=pt(),B=r(a,!0);s(a),u(()=>p(B,e(b)?`No tests matching "${e(C)}"`:"No test suites found.")),i(t,a)},Ee=t=>{var a=$t();x(a,5,()=>e(D),w,(B,f,F)=>{var G=Ct();g(G,"style",`animation-delay: ${F*55}ms`);var Y=r(G),Z=r(Y),ee=r(Z);x(ee,5,()=>ue(e(f)),w,(se,o)=>{var m=ut(),L=r(m,!0);s(m),u(($,M)=>{g(m,"title",$),g(m,"aria-label",$),de(m,"copied",M),p(L,e(o))},[()=>e(_).has(e(o))?`Copied ${e(o)}`:`Copy ${e(o)}`,()=>e(_).has(e(o))],K),N("click",m,()=>fe(e(o))),i(se,m)}),s(ee);var te=v(ee,2),ze=r(te,!0);s(te);var we=v(te,2),Fe=r(we);s(we),s(Z);var Ge=v(Z,2);s(Y);var ke=v(Y,2);x(ke,5,()=>e(f).tests,w,(se,o,m)=>{var L=kt();const $=K(()=>Te(e(o))),M=K(()=>e(A).has(e($)));g(L,"style",`animation-delay: ${(F*4+m)*30}ms`);var ae=r(L),H=r(ae),re=v(H,2);x(re,5,()=>_e(e(o)),w,(d,l)=>{var c=_t(),q=r(c,!0);s(c),u((O,I)=>{g(c,"title",O),g(c,"aria-label",O),de(c,"copied",I),p(q,e(l))},[()=>e(_).has(e(l))?`Copied ${e(l)}`:`Copy ${e(l)}`,()=>e(_).has(e(l))],K),N("click",c,()=>fe(e(l))),i(d,c)}),s(re);var le=v(re,2),Ce=r(le),He=v(Ce);{var Oe=d=>{var l=ht();i(d,l)};T(He,d=>{e(o).type==="outline"&&d(Oe)})}s(le);var Qe=v(le,2);{var Je=d=>{var l=ft(),c=r(l),q=v(c);s(l),u(()=>{g(l,"aria-expanded",e(M)),de(c,"rotated",e(M)),p(q,` ${(e(M)?"Hide":"Steps")??""}`)}),N("click",l,()=>Ae(e($))),i(d,l)};T(Qe,d=>{var l;((l=e(o).steps)==null?void 0:l.length)>0&&d(Je)})}s(ae);var Ke=v(ae,2);{var Pe=d=>{var l=wt(),c=r(l);x(c,5,()=>e(o).steps,w,(I,E)=>{var R=mt(),Q=r(R,!0);s(R),u(()=>p(Q,e(E))),i(I,R)}),s(c);var q=v(c,2);{var O=I=>{var E=xt(),R=v(r(E),2),Q=r(R),oe=r(Q),$e=r(oe);x($e,5,()=>e(o).examples.headers,w,(ie,ve)=>{var S=gt(),ne=r(S,!0);s(S),u(()=>p(ne,e(ve))),i(ie,S)}),s($e),s(oe);var Ie=v(oe);x(Ie,5,()=>e(o).examples.rows,w,(ie,ve)=>{var S=yt();x(S,5,()=>e(ve),w,(ne,Ue)=>{var ce=bt(),Ve=r(ce,!0);s(ce),u(()=>p(Ve,e(Ue))),i(ne,ce)}),s(S),i(ie,S)}),s(Ie),s(Q),s(R),s(E),i(I,E)};T(q,I=>{e(o).examples&&I(O)})}s(l),rt(3,l,()=>lt,()=>({duration:180})),i(d,l)};T(Ke,d=>{var l;e(M)&&((l=e(o).steps)==null?void 0:l.length)>0&&d(Pe)})}s(L),u(()=>{g(H,"title",`Run ${e($)??""}`),g(H,"aria-label",`Run ${e(o).testCase??""}`),p(Ce,`${e(o).testCase??""} `)}),N("click",H,()=>he(e($))),i(se,L)}),s(ke),s(G),u(()=>{p(ze,e(f).suiteName),p(Fe,`${e(f).tests.length??""} test${(e(f).tests.length!==1?"s":"")??""}`)}),N("click",Ge,()=>Be(e(f))),i(B,G)}),s(a),i(t,a)};T(je,t=>{e(D).length===0?t(qe):t(Ee,!1)})}ot(X,()=>e(C),t=>h(C,t)),i(P,me),st()}export{Dt as component};
|
|
@@ -0,0 +1,18 @@
|
|
|
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{c as Pa,a as o,e as Y,t as p,s as b,b as ia}from"../chunks/DFJLQFic.js";import{i as oa}from"../chunks/DTUE7kkY.js";import{l as da,az as Aa,x as O,y as ca,B as s,v as i,D as w,C as t,o as ka,m,aA as Ca,n as E,t as Ra,z as x,A as a,F as I,G as Z}from"../chunks/B0bn91RF.js";import{i as T}from"../chunks/CwBTqcbj.js";import{e as aa,t as u,i as ea,s as L}from"../chunks/Bt3-Z7H1.js";import{a as Ba}from"../chunks/BpaMqo9O.js";import{B as la}from"../chunks/oc0we5Us.js";import{p as va}from"../chunks/Be4iUAB0.js";var Ma=p('<button class="page svelte-tsubiy"></button>'),Ea=p('<div class="pagination svelte-tsubiy"><button class="arrow svelte-tsubiy" aria-label="Previous">←</button> <!> <button class="arrow svelte-tsubiy" aria-label="Next">→</button></div>');function Na(Q,N){da(N,!1);let _=va(N,"current",8,1),A=va(N,"total",8,1);const h=Aa();function B(l){l<1||l>A()||h("change",l)}oa();var f=Pa(),q=O(f);{var r=l=>{var k=Ea(),M=s(k),U=i(M,2);aa(U,1,()=>Array(A()),ea,(j,H,C)=>{var $=Ma();$.textContent=C+1,w(()=>u($,"active",_()===C+1)),Y("click",$,()=>B(C+1)),o(j,$)});var V=i(U,2);t(k),w(()=>{M.disabled=_()===1,V.disabled=_()===A()}),Y("click",M,()=>B(_()-1)),Y("click",V,()=>B(_()+1)),o(l,k)};T(q,l=>{A()>1&&l(r)})}o(Q,f),ca()}var za=p('<div class="rate-display svelte-wxbf05"><span class="rate-number svelte-wxbf05"> </span> <span class="rate-label svelte-wxbf05">passing</span></div>'),Da=p('<span class="trend-dot svelte-wxbf05"></span>'),Fa=p('<div class="stats-bar svelte-wxbf05"><div class="pass-bar-track svelte-wxbf05"><div class="pass-bar-fill svelte-wxbf05"></div></div> <div class="bar-legend svelte-wxbf05"><span class="legend-pass svelte-wxbf05"> </span> <span class="legend-fail svelte-wxbf05"> </span></div></div> <div class="trend-row svelte-wxbf05"><span class="trend-label svelte-wxbf05">Recent</span> <div class="trend-dots svelte-wxbf05"></div> <span class="trend-hint svelte-wxbf05">← older · newer →</span></div>',1),Ga=p('<p class="empty svelte-wxbf05">No reports yet. Run a test to generate one.</p>'),Ia=p('<a class="report-item svelte-wxbf05"><div class="item-left svelte-wxbf05"><span class="status-mark svelte-wxbf05"> </span> <div class="item-meta svelte-wxbf05"><span class="item-tags svelte-wxbf05"> </span> <div class="item-badges svelte-wxbf05"><!> <!></div></div></div> <div class="item-right svelte-wxbf05"><span class="item-date svelte-wxbf05"> </span> <svg class="item-arrow svelte-wxbf05" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline></svg></div></a>'),La=p('<div class="pagination-wrap svelte-wxbf05"><!></div>'),Ta=p('<div class="report-list svelte-wxbf05"></div> <!>',1),qa=p('<div class="page-header svelte-wxbf05"><div class="header-top svelte-wxbf05"><div><h1 class="svelte-wxbf05">Reports</h1> <p class="subtitle svelte-wxbf05"> </p></div> <!></div> <!></div> <!>',1);function Wa(Q,N){da(N,!1);const _=x(),A=x(),h=x(),B=x(),f=x(),q=x();let r=x([]),l=x(1);const k=15;let M=x(!1);function U(e){return e==="manual-trigger"?"Manual":e==="command-line-trigger"||e==="undefined"?"CLI":"Scheduled"}function V(e){return e==="manual-trigger"?"tag":e==="command-line-trigger"||e==="undefined"?"neutral":"schedule"}ka(async()=>{try{m(r,await Ba()),await Ca(),m(M,!0)}catch(e){console.error("Failed to fetch reports",e)}}),E(()=>a(r),()=>{m(_,Math.ceil(a(r).length/k))}),E(()=>(a(r),a(l)),()=>{m(A,a(r).slice((a(l)-1)*k,a(l)*k))}),E(()=>a(r),()=>{m(h,a(r).filter(e=>e.status==="PASS").length)}),E(()=>(a(r),a(h)),()=>{m(B,a(r).length-a(h))}),E(()=>(a(r),a(h)),()=>{m(f,a(r).length?Math.round(a(h)/a(r).length*100):0)}),E(()=>a(r),()=>{m(q,a(r).slice(0,12).reverse())}),Ra(),oa();var j=qa(),H=O(j),C=s(H),$=s(C),ta=i(s($),2),fa=s(ta);t(ta),t($);var ua=i($,2);{var pa=e=>{var c=za(),v=s(c),R=s(v);t(v),I(2),t(c),w(()=>{u(v,"pass",a(f)>=80),u(v,"warn",a(f)<80&&a(f)>=50),u(v,"fail",a(f)<50),b(R,`${a(f)??""}%`)}),o(e,c)};T(ua,e=>{a(r).length>0&&e(pa)})}t(C);var _a=i(C,2);{var ga=e=>{var c=Fa(),v=O(c),R=s(v),W=s(R);t(R);var y=i(R,2),n=s(y),z=s(n);t(n);var d=i(n,2),D=s(d);t(d),t(y),t(v);var S=i(v,2),J=i(s(S),2);aa(J,5,()=>a(q),ea,(K,g,X)=>{var P=Da();L(P,"style",`animation-delay: ${X*35}ms`),w(()=>{L(P,"title",`${a(g).status??""} · ${a(g).tags??""} · ${a(g).date??""}`),u(P,"pass",a(g).status==="PASS"),u(P,"fail",a(g).status!=="PASS")}),o(K,P)}),t(J),I(2),t(S),w(()=>{L(W,"style",`width: ${(a(M)?a(f)+"%":"0")??""}`),b(z,`${a(h)??""} passed`),b(D,`${a(B)??""} failed`)}),o(e,c)};T(_a,e=>{a(r).length>0&&e(ga)})}t(H);var ba=i(H,2);{var ma=e=>{var c=Ga();o(e,c)},xa=e=>{var c=Ta(),v=O(c);aa(v,5,()=>a(A),ea,(y,n,z)=>{var d=Ia();L(d,"style",`animation-delay: ${z*45}ms`);var D=s(d),S=s(D),J=s(S,!0);t(S);var K=i(S,2),g=s(K),X=s(g,!0);t(g);var P=i(g,2),sa=s(P);const wa=Z(()=>V(a(n).triggerType));la(sa,{get variant(){return a(wa)},children:(F,ya)=>{I();var G=ia();w(Sa=>b(G,Sa),[()=>U(a(n).triggerType)],Z),o(F,G)},$$slots:{default:!0}});var ha=i(sa,2);la(ha,{variant:"neutral",children:(F,ya)=>{I();var G=ia();w(()=>b(G,`${a(n).runners??""} runner${(a(n).runners!==1?"s":"")??""}`)),o(F,G)},$$slots:{default:!0}}),t(P),t(K),t(D);var ra=i(D,2),na=s(ra),$a=s(na,!0);t(na),I(2),t(ra),t(d),w(F=>{L(d,"href",`/reports/${F??""}`),u(d,"is-pass",a(n).status==="PASS"),u(d,"is-fail",a(n).status!=="PASS"),u(S,"pass",a(n).status==="PASS"),u(S,"fail",a(n).status!=="PASS"),b(J,a(n).status==="PASS"?"✓":"✗"),b(X,a(n).tags),b($a,a(n).date)},[()=>encodeURIComponent(a(n).fileName)],Z),o(y,d)}),t(v);var R=i(v,2);{var W=y=>{var n=La(),z=s(n);Na(z,{get current(){return a(l)},get total(){return a(_)},$$events:{change:d=>m(l,d.detail)}}),t(n),o(y,n)};T(R,y=>{a(_)>1&&y(W)})}o(e,c)};T(ba,e=>{a(r).length===0?e(ma):e(xa,!1)})}w(()=>b(fa,`${a(r).length??""} run${(a(r).length!==1?"s":"")??""} recorded`)),o(Q,j),ca()}export{Wa as component};
|
|
@@ -0,0 +1,19 @@
|
|
|
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{a as v,t as d,s as l,c as Cs,b as G,e as Ga}from"../chunks/DFJLQFic.js";import{i as Ia}from"../chunks/DTUE7kkY.js";import{l as La,o as qa,m as M,n as E,t as za,v as n,x as H,y as Na,z as B,A as s,B as r,C as a,D as y,F as Y,G as I}from"../chunks/B0bn91RF.js";import{i as m}from"../chunks/CwBTqcbj.js";import{e as Z,s as Ss,i as ss,t as $,a as Ua}from"../chunks/Bt3-Z7H1.js";import{t as ja,s as Ea}from"../chunks/B1kE5jmt.js";import{s as Ha,a as Ja}from"../chunks/Be4iUAB0.js";import{p as Ka}from"../chunks/CJ8q7g9Y.js";import{p as Oa,f as Qa}from"../chunks/BpaMqo9O.js";import{B as Va}from"../chunks/oc0we5Us.js";var Wa=d('<div class="error-state svelte-pys2u"> </div>'),Xa=d('<div class="loading-state svelte-pys2u"><div class="loading-dots svelte-pys2u"><span class="svelte-pys2u"></span><span class="svelte-pys2u"></span><span class="svelte-pys2u"></span></div></div>'),Ya=d('<p class="header-meta svelte-pys2u"><span class="mono svelte-pys2u"> </span> · <!> </p>'),Za=d('<div class="stat svelte-pys2u"><span class="stat-num fail-color svelte-pys2u"> </span> <span class="stat-label svelte-pys2u">failed</span></div>'),se=d('<div class="stat svelte-pys2u"><span class="stat-num muted-color svelte-pys2u"> </span> <span class="stat-label svelte-pys2u">skipped</span></div>'),ae=d('<div class="stat svelte-pys2u"><span class="stat-num svelte-pys2u"> </span> <span class="stat-label svelte-pys2u"> </span></div>'),ee=d('<span class="scenario-count svelte-pys2u"> </span>'),te=d('<span class="tag-chip svelte-pys2u"> </span>'),re=d('<div class="example-header svelte-pys2u"><span class="scenario-status-dot svelte-pys2u"></span> <span class="svelte-pys2u"></span> <span class="scenario-duration svelte-pys2u"> </span></div>'),ne=d('<pre class="step-error svelte-pys2u"> </pre>'),ve=d('<details class="screenshot-wrap svelte-pys2u"><summary class="screenshot-toggle svelte-pys2u">Screenshot</summary> <img class="screenshot svelte-pys2u" alt="Failure screenshot"></details>'),le=d('<div class="step svelte-pys2u"><div class="step-row svelte-pys2u"><span class="step-status-icon svelte-pys2u"><!></span> <span> </span> <span class="step-name svelte-pys2u"> </span> <span class="step-duration svelte-pys2u"> </span></div> <!> <!></div>'),ie=d("<!> <!>",1),oe=d('<div class="steps svelte-pys2u"></div>'),pe=d('<div class="scenario svelte-pys2u"><button class="scenario-header svelte-pys2u"><span class="scenario-status-dot svelte-pys2u"></span> <span class="scenario-name svelte-pys2u"> <!></span> <div class="scenario-tags svelte-pys2u"></div> <span class="scenario-duration svelte-pys2u"> </span> <svg width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" class="chevron svelte-pys2u"><polyline points="9 18 15 12 9 6" class="svelte-pys2u"></polyline></svg></button> <!></div>'),ue=d('<div class="feature svelte-pys2u"><div class="feature-header svelte-pys2u"><!> <h2 class="feature-name svelte-pys2u"> </h2> <span class="feature-file svelte-pys2u"> </span></div> <div class="scenarios svelte-pys2u"></div></div>'),de=d('<div class="report-header svelte-pys2u"><div class="header-main svelte-pys2u"><div class="header-status svelte-pys2u"><span class="status-icon svelte-pys2u"> </span> <div class="svelte-pys2u"><h1 class="svelte-pys2u"> </h1> <!></div></div> <div class="header-stats svelte-pys2u"><div class="stat svelte-pys2u"><span class="stat-num pass-color svelte-pys2u"> </span> <span class="stat-label svelte-pys2u">passed</span></div> <!> <!> <div class="stat svelte-pys2u"><span class="stat-num svelte-pys2u"> </span> <span class="stat-label svelte-pys2u">total</span></div> <!></div></div></div> <!>',1),ce=d('<div class="back-row svelte-pys2u"><a href="/reports" class="back-link svelte-pys2u"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" class="svelte-pys2u"><line x1="19" y1="12" x2="5" y2="12" class="svelte-pys2u"></line><polyline points="12 19 5 12 12 5" class="svelte-pys2u"></polyline></svg> Reports</a></div> <!>',1);function $e(Os,Qs){La(Qs,!1);const[Vs,Ws]=Ha(),Xs=()=>Ja(Ka,"$page",Vs),Ts=B(),is=B(),os=B(),Ms=B(),J=B(),Bs=B(),Fs=decodeURIComponent(Xs().params.slug),g=Oa(Fs);let x=B(null),ps=B(null),L=B(new Set);qa(async()=>{try{M(x,await Qa(Fs))}catch{M(ps,"Could not load report.")}});function Ys(t){s(L).has(t)?s(L).delete(t):s(L).add(t),M(L,s(L))}function as(t){return t>=1e3?(t/1e3).toFixed(2)+"s":t+"ms"}function Zs(t){const e=t.toLowerCase();return e==="given"?"kw-given":e==="when"?"kw-when":e==="then"?"kw-then":"kw-and"}function Ds(t){return t.tags.find(e=>/^@test[\w-]*/i.test(e))}function sa(t){const e=Ds(t);return e?[e]:t.tags.filter(o=>o!==(g==null?void 0:g.tags)&&!o.includes("suite"))}function aa(t){const e={failed:3,pending:2,skipped:1,passed:0};return t.reduce((o,K)=>(e[K.status]??0)>(e[o]??0)?K.status:o,"passed")}function ea(t){const e=new Map;for(const o of t){const q=Ds(o)||`${o.keyword}:${o.name}`;e.has(q)||e.set(q,{key:q,name:o.name,tags:sa(o),scenarios:[],duration:0,status:o.status});const w=e.get(q);w.scenarios.push(o),w.duration+=o.duration,w.status=aa(w.scenarios)}return Array.from(e.values())}E(()=>s(x),()=>{var t;M(Ts,((t=s(x))==null?void 0:t.features.flatMap(e=>e.scenarios).filter(e=>e.status==="passed").length)??0)}),E(()=>s(x),()=>{var t;M(is,((t=s(x))==null?void 0:t.features.flatMap(e=>e.scenarios).filter(e=>e.status==="failed").length)??0)}),E(()=>s(x),()=>{var t;M(os,((t=s(x))==null?void 0:t.features.flatMap(e=>e.scenarios).filter(e=>e.status==="skipped"||e.status==="pending").length)??0)}),E(()=>s(x),()=>{var t;M(Ms,((t=s(x))==null?void 0:t.features.flatMap(e=>e.scenarios).reduce((e,o)=>e+o.duration,0))??0)}),E(()=>{},()=>{M(J,(g==null?void 0:g.status)==="PASS")}),E(()=>s(x),()=>{var t;M(Bs,((t=s(x))==null?void 0:t.features.map(e=>({...e,scenarioGroups:ea(e.scenarios)})))??[])}),za(),Ia();var Ps=ce(),ta=n(H(Ps),2);{var ra=t=>{var e=Wa(),o=r(e,!0);a(e),y(()=>l(o,s(ps))),v(t,e)},na=t=>{var e=Cs(),o=H(e);{var K=w=>{var es=Xa();v(w,es)},q=w=>{var es=de(),O=H(es),Rs=r(O),us=r(Rs),ds=r(us),va=r(ds,!0);a(ds);var As=n(ds,2),cs=r(As),la=r(cs,!0);a(cs);var ia=n(cs,2);{var oa=u=>{var i=Ya(),c=r(i),k=r(c,!0);a(c);var T=n(c,2);{var z=F=>{var R=G("Manual");v(F,R)},ys=F=>{var R=Cs(),ms=H(R);{var ts=p=>{var D=G("CLI");v(p,D)},V=p=>{var D=G("Scheduled");v(p,D)};m(ms,p=>{g.triggerType==="undefined"?p(ts):p(V,!1)},!0)}v(F,R)};m(T,F=>{g.triggerType==="manual-trigger"?F(z):F(ys,!1)})}var Q=n(T);a(i),y(()=>{l(k,g.tags),l(Q,` ·
|
|
19
|
+
${g.date??""}`)}),v(u,i)};m(ia,u=>{g&&u(oa)})}a(As),a(us);var Gs=n(us,2),_s=r(Gs),Is=r(_s),pa=r(Is,!0);a(Is),Y(2),a(_s);var Ls=n(_s,2);{var ua=u=>{var i=Za(),c=r(i),k=r(c,!0);a(c),Y(2),a(i),y(()=>l(k,s(is))),v(u,i)};m(Ls,u=>{s(is)>0&&u(ua)})}var qs=n(Ls,2);{var da=u=>{var i=se(),c=r(i),k=r(c,!0);a(c),Y(2),a(i),y(()=>l(k,s(os))),v(u,i)};m(qs,u=>{s(os)>0&&u(da)})}var fs=n(qs,2),zs=r(fs),ca=r(zs,!0);a(zs),Y(2),a(fs);var _a=n(fs,2);{var fa=u=>{var i=ae(),c=r(i),k=r(c,!0);a(c);var T=n(c,2),z=r(T);a(T),a(i),y(()=>{l(k,g.runners),l(z,`runner${(g.runners!==1?"s":"")??""}`)}),v(u,i)};m(_a,u=>{g&&u(fa)})}a(Gs),a(Rs),a(O);var ya=n(O,2);Z(ya,1,()=>s(Bs),ss,(u,i,c)=>{var k=ue();Ss(k,"style",`animation-delay: ${c*60}ms`);var T=r(k),z=r(T);const ys=I(()=>s(i).status==="passed"?"pass":"fail");Va(z,{get variant(){return s(ys)},children:(V,p)=>{Y();var D=G();y(()=>l(D,s(i).status)),v(V,D)},$$slots:{default:!0}});var Q=n(z,2),F=r(Q,!0);a(Q);var R=n(Q,2),ms=r(R,!0);a(R),a(T);var ts=n(T,2);Z(ts,5,()=>s(i).scenarioGroups,ss,(V,p,D)=>{var rs=pe();const Ns=I(()=>`${c}-${s(p).key}`),Us=I(()=>s(L).has(s(Ns)));Ss(rs,"style",`animation-delay: ${(c*5+D)*40}ms`);var ns=r(rs),vs=r(ns),gs=n(vs,2),js=r(gs),ma=n(js);{var ga=b=>{var C=ee(),A=r(C);a(C),y(()=>l(A,`${s(p).scenarios.length??""} cases`)),v(b,C)};m(ma,b=>{s(p).scenarios.length>1&&b(ga)})}a(gs);var hs=n(gs,2);Z(hs,5,()=>s(p).tags,ss,(b,C)=>{var A=te(),P=r(A,!0);a(A),y(()=>l(P,s(C))),v(b,A)}),a(hs);var xs=n(hs,2),ha=r(xs,!0);a(xs);var xa=n(xs,2);a(ns);var ka=n(ns,2);{var wa=b=>{var C=oe();Z(C,5,()=>s(p).scenarios,ss,(A,P,ba)=>{var Es=ie(),Hs=H(Es);{var $a=W=>{var _=re(),S=r(_),N=n(S,2);N.textContent=`Case ${ba+1}`;var U=n(N,2),ks=r(U,!0);a(U),a(_),y(ws=>{$(S,"pass",s(P).status==="passed"),$(S,"fail",s(P).status==="failed"),$(S,"skip",s(P).status==="skipped"||s(P).status==="pending"),l(ks,ws)},[()=>as(s(P).duration)],I),v(W,_)};m(Hs,W=>{s(p).scenarios.length>1&&W($a)})}var Ca=n(Hs,2);Z(Ca,1,()=>s(P).steps,ss,(W,_)=>{var S=le(),N=r(S),U=r(N),ks=r(U);{var ws=f=>{var h=G("✓");v(f,h)},Sa=f=>{var h=Cs(),X=H(h);{var Ra=j=>{var $s=G("✗");v(j,$s)},Aa=j=>{var $s=G("−");v(j,$s)};m(X,j=>{s(_).status==="failed"?j(Ra):j(Aa,!1)},!0)}v(f,h)};m(ks,f=>{s(_).status==="passed"?f(ws):f(Sa,!1)})}a(U);var ls=n(U,2),Ta=r(ls,!0);a(ls);var bs=n(ls,2),Ma=r(bs,!0);a(bs);var Js=n(bs,2),Ba=r(Js,!0);a(Js),a(N);var Ks=n(N,2);{var Fa=f=>{var h=ne(),X=r(h,!0);a(h),y(()=>l(X,s(_).error)),v(f,h)};m(Ks,f=>{s(_).error&&f(Fa)})}var Da=n(Ks,2);{var Pa=f=>{var h=ve(),X=n(r(h),2);a(h),y(()=>Ss(X,"src",`data:image/png;base64,${s(_).screenshot??""}`)),v(f,h)};m(Da,f=>{s(_).screenshot&&f(Pa)})}a(S),y((f,h)=>{$(S,"step-fail",s(_).status==="failed"),$(S,"step-skip",s(_).status==="skipped"||s(_).status==="pending"),Ua(ls,`kw ${f??""} svelte-pys2u`),l(Ta,s(_).keyword),l(Ma,s(_).name),l(Ba,h)},[()=>Zs(s(_).keyword),()=>as(s(_).duration)],I),v(W,S)}),v(A,Es)}),a(C),ja(3,C,()=>Ea,()=>({duration:200})),v(b,C)};m(ka,b=>{s(Us)&&b(wa)})}a(rs),y(b=>{$(vs,"pass",s(p).status==="passed"),$(vs,"fail",s(p).status==="failed"),$(vs,"skip",s(p).status==="skipped"||s(p).status==="pending"),l(js,`${s(p).name??""} `),l(ha,b),$(xa,"rotated",s(Us))},[()=>as(s(p).duration)],I),Ga("click",ns,()=>Ys(s(Ns))),v(V,rs)}),a(ts),a(k),y(()=>{l(F,s(i).name),l(ms,s(i).uri)}),v(u,k)}),y(u=>{$(O,"pass",s(J)),$(O,"fail",!s(J)),l(va,s(J)?"✓":"✗"),l(la,s(J)?"Passed":"Failed"),l(pa,s(Ts)),l(ca,u)},[()=>as(s(Ms))],I),v(w,es)};m(o,w=>{s(x)?w(q,!1):w(K)},!0)}v(t,e)};m(ta,t=>{s(ps)?t(ra):t(na,!1)})}v(Os,Ps),Na(),Ws()}export{$e as component};
|
|
@@ -0,0 +1,18 @@
|
|
|
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{l as Me,c as qe,e as K,a as f,s as C,t as S,b as F}from"../chunks/DFJLQFic.js";import{i as Je}from"../chunks/DTUE7kkY.js";import{e as xe,x as ie,aK as Oe,B as o,C as s,v as i,D as T,l as Ae,o as Be,m as n,y as je,z as J,A as e,aL as Le,F as B,aM as ne,G as he}from"../chunks/B0bn91RF.js";import{i as Z}from"../chunks/CwBTqcbj.js";import{s as we,r as me,e as ge,i as be,a as ze}from"../chunks/Bt3-Z7H1.js";import{t as de,a as Fe,f as Ie,b as Re}from"../chunks/B1kE5jmt.js";import{b as ye}from"../chunks/BKz6FZdB.js";import{i as Ue,p as $e}from"../chunks/Be4iUAB0.js";import{B as R}from"../chunks/DBk3zeq4.js";import{B as Ge}from"../chunks/oc0we5Us.js";import{s as Ke}from"../chunks/rVEKg0Ak.js";function Xe(t){return function(...r){var u=r[0];return u.preventDefault(),t==null?void 0:t.apply(this,r)}}function Ee(t,r,u){if(t.multiple)return Ve(t,r);for(var v of t.options){var d=X(v);if(Ue(d,r)){v.selected=!0;return}}(!u||r!==void 0)&&(t.selectedIndex=-1)}function He(t,r){xe(()=>{var u=new MutationObserver(()=>{var v=t.__value;Ee(t,v)});return u.observe(t,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["value"]}),()=>{u.disconnect()}})}function Qe(t,r,u=r){var v=!0;Me(t,"change",d=>{var _=d?"[selected]":":checked",y;if(t.multiple)y=[].map.call(t.querySelectorAll(_),X);else{var k=t.querySelector(_)??t.querySelector("option:not([disabled])");y=k&&X(k)}u(y)}),xe(()=>{var d=r();if(Ee(t,d,v),v&&d===void 0){var _=t.querySelector(":checked");_!==null&&(d=X(_),u(d))}t.__value=d,v=!1}),He(t)}function Ve(t,r){for(var u of t.options)u.selected=~r.indexOf(X(u))}function X(t){return"__value"in t?t.__value:t.value}const H="http://localhost:3001";async function We(){const t=await fetch(`${H}/schedules`),{schedules:r}=await t.json();return r??[]}async function le(){const t=await fetch(`${H}/cron-jobs`),{cronJobs:r}=await t.json();return r??[]}async function Ye({taskName:t,cronExpression:r,tags:u,isEditing:v,editTaskName:d}){const _=u.replace(/\sOR\s/gi,j=>j.toLowerCase()),y=v?`${H}/cron-jobs/${d}`:`${H}/cron-jobs`;return(await fetch(y,{method:v?"PUT":"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({cronExpression:r,taskName:t,tags:_})})).json()}async function Ze(t){return(await fetch(`${H}/cron-jobs/${t}`,{method:"DELETE"})).json()}function et(t){const r=t-1;return r*r*r+1}var tt=S('<div class="backdrop svelte-aus6t7" role="presentation"><div class="panel svelte-aus6t7" role="dialog" aria-modal="true"><div class="header svelte-aus6t7"><h3 class="title svelte-aus6t7"> </h3> <button class="close-btn svelte-aus6t7" aria-label="Close"><svg width="14" height="14" viewBox="0 0 14 14" fill="none"><path d="M1 1l12 12M13 1L1 13" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"></path></svg></button></div> <div class="body svelte-aus6t7"><!></div></div></div>');function ke(t,r){let u=$e(r,"open",12,!1),v=$e(r,"title",8,"");function d(){u(!1)}function _(g){g.target===g.currentTarget&&d()}function y(g){g.key==="Escape"&&d()}var k=qe();K("keydown",Oe,y);var x=ie(k);{var j=g=>{var l=tt(),b=o(l),O=o(b),U=o(O),ee=o(U,!0);s(U);var te=i(U,2);s(O);var Q=i(O,2),ae=o(Q);Ke(ae,r,"default",{}),s(Q),s(b),s(l),T(()=>{we(b,"aria-label",v()),C(ee,v())}),K("click",te,d),de(3,b,()=>Fe,()=>({start:.96,duration:260,easing:et})),K("click",l,_),K("keydown",l,se=>se.key==="Escape"&&d()),de(3,l,()=>Ie,()=>({duration:200})),f(g,l)};Z(x,g=>{u()&&g(j)})}f(t,k)}var at=S("<option> </option>"),st=S('<p class="form-error svelte-1ugkbyh"> </p>'),rt=S('<form class="modal-form svelte-1ugkbyh"><div class="field"><div class="field-label"><span>Task Name</span> <span class="field-hint"> </span></div> <input type="text" class="field-input" placeholder="nightly-login-suite" required></div> <div class="field"><div class="field-label"><span>Schedule</span></div> <select class="field-input" required><option disabled selected>Select a schedule</option><!></select></div> <div class="field"><div class="field-label"><span>Tags</span> <span class="field-hint">Multiple: @test-1 or @test-2</span></div> <input type="text" class="field-input" placeholder="@suite-login" required></div> <!> <!></form>'),ot=S('<p class="confirm-text svelte-1ugkbyh">Are you sure you want to delete <strong class="svelte-1ugkbyh"> </strong>? This cannot be undone.</p> <div class="confirm-actions svelte-1ugkbyh"><!> <!></div>',1),nt=S("<div> </div>"),lt=S('<p class="empty svelte-1ugkbyh">No scheduled tests yet. Create one to get started.</p>'),it=S('<tr class="job-row svelte-1ugkbyh"><td class="job-name svelte-1ugkbyh"> </td><td><!></td><td><span class="tag-text svelte-1ugkbyh"> </span></td><td class="actions-cell svelte-1ugkbyh"><!> <!></td></tr>'),dt=S('<div class="table-wrap svelte-1ugkbyh"><table class="data-table"><thead><tr><th>Name</th><th>Schedule</th><th>Tags</th><th>Actions</th></tr></thead><tbody></tbody></table></div>'),vt=S('<!> <!> <div class="page-header svelte-1ugkbyh"><div class="header-row svelte-1ugkbyh"><div><h1 class="svelte-1ugkbyh">Scheduled Tests</h1> <p class="subtitle svelte-1ugkbyh">Manage recurring test runs via cron jobs</p></div> <!></div></div> <!> <div class="card" style="padding: 0; overflow: hidden;"><!></div>',1);function kt(t,r){Ae(r,!1);const u=/^(\*|([0-5]?[0-9])) (\*|([01]?[0-9]|2[0-3])) (\*|([01]?[0-9]|3[01])) (\*|([1-9]|1[0-2])) (\*|[0-6])$/;let v=J([]),d=J([]),_=J(null),y=J(!1),k=J(!1),x=J(!1),j="",g=J(""),l=J({taskName:"",cronExpression:"",tags:""}),b=J("");function O(a,c){n(_,{type:a,message:c}),setTimeout(()=>n(_,null),4e3)}function U(){n(x,!1),j="",n(l,{taskName:"",cronExpression:"",tags:""}),n(b,""),n(y,!0)}function ee(a){n(x,!0),j=a.taskName,n(l,{taskName:a.taskName,cronExpression:a.cronExpression,tags:a.tags}),n(b,""),n(y,!0)}function te(a){n(g,a),n(k,!0)}async function Q(){if(!e(l).taskName||!e(l).cronExpression||!e(l).tags){n(b,"All fields are required.");return}if(!u.test(e(l).cronExpression)){n(b,"Invalid cron expression.");return}n(b,"");try{(await Ye({...e(l),isEditing:e(x),editTaskName:j})).message?(O("success",`${e(x)?"Updated":"Added"}: ${e(l).taskName}`),n(y,!1),n(v,await le())):n(b,"Failed to save. Please try again.")}catch{n(b,"Network error.")}}async function ae(){try{(await Ze(e(g))).message?(O("success",`Deleted: ${e(g)}`),n(v,await le())):O("error","Could not delete cron job.")}catch{O("error","Network error.")}n(k,!1),n(g,"")}function se(a){var c;return((c=e(d).find(p=>p.value===a))==null?void 0:c.label)??a}Be(async()=>{await(async a=>(n(v,a[0]),n(d,a[1])))(await Promise.all([le(),We()]))}),Je();var ve=vt(),ue=ie(ve);const Ne=he(()=>e(x)?"Edit Cron Job":"New Cron Job");ke(ue,{get title(){return e(Ne)},get open(){return e(y)},set open(a){n(y,a)},children:(a,c)=>{var p=rt(),E=o(p),A=o(E),N=i(o(A),2),I=o(N,!0);s(N),s(A);var w=i(A,2);me(w),s(E);var P=i(E,2),D=i(o(P),2);T(()=>{e(l),Le(()=>{e(d)})});var M=o(D);M.value=((M.__value="")==null,"");var L=i(M);ge(L,1,()=>e(d),be,(h,m)=>{var $=at(),q={},oe=o($,!0);s($),T(()=>{q!==(q=e(m).value)&&($.value=($.__value=e(m).value)==null?"":e(m).value),C(oe,e(m).label)}),f(h,$)}),s(D),s(P);var z=i(P,2),G=i(o(z),2);me(G),s(z);var V=i(z,2);{var W=h=>{var m=st(),$=o(m,!0);s(m),T(()=>C($,e(b))),f(h,m)};Z(V,h=>{e(b)&&h(W)})}var Y=i(V,2);R(Y,{type:"submit",size:"md",children:(h,m)=>{B();var $=F();T(()=>C($,e(x)?"Save Changes":"Add Cron Job")),f(h,$)},$$slots:{default:!0}}),s(p),T(()=>{C(I,e(x)?"Name is the ID — cannot be changed":"Use a unique, meaningful name"),w.disabled=e(x)}),ye(w,()=>e(l).taskName,h=>ne(l,e(l).taskName=h)),Qe(D,()=>e(l).cronExpression,h=>ne(l,e(l).cronExpression=h)),ye(G,()=>e(l).tags,h=>ne(l,e(l).tags=h)),K("submit",p,Xe(Q)),f(a,p)},$$slots:{default:!0},$$legacy:!0});var ce=i(ue,2);ke(ce,{title:"Delete Cron Job",get open(){return e(k)},set open(a){n(k,a)},children:(a,c)=>{var p=ot(),E=ie(p),A=i(o(E)),N=o(A,!0);s(A),B(),s(E);var I=i(E,2),w=o(I);R(w,{variant:"danger",$$events:{click:ae},children:(D,M)=>{B();var L=F("Delete");f(D,L)},$$slots:{default:!0}});var P=i(w,2);R(P,{variant:"ghost",$$events:{click:()=>n(k,!1)},children:(D,M)=>{B();var L=F("Cancel");f(D,L)},$$slots:{default:!0}}),s(I),T(()=>C(N,e(g))),f(a,p)},$$slots:{default:!0},$$legacy:!0});var re=i(ce,2),fe=o(re),Ce=i(o(fe),2);R(Ce,{$$events:{click:U},children:(a,c)=>{B();var p=F("+ New Job");f(a,p)},$$slots:{default:!0}}),s(fe),s(re);var pe=i(re,2);{var Te=a=>{var c=nt(),p=o(c,!0);s(c),T(()=>{ze(c,`toast alert alert-${e(_).type??""} svelte-1ugkbyh`),C(p,e(_).message)}),de(3,c,()=>Re,()=>({y:-8,duration:240})),f(a,c)};Z(pe,a=>{e(_)&&a(Te)})}var _e=i(pe,2),Se=o(_e);{var Pe=a=>{var c=lt();f(a,c)},De=a=>{var c=dt(),p=o(c),E=i(o(p));ge(E,5,()=>e(v),be,(A,N,I)=>{var w=it();we(w,"style",`animation-delay: ${I*45}ms`);var P=o(w),D=o(P,!0);s(P);var M=i(P),L=o(M);Ge(L,{variant:"schedule",children:(m,$)=>{B();var q=F();T(oe=>C(q,oe),[()=>se(e(N).cronExpression)],he),f(m,q)},$$slots:{default:!0}}),s(M);var z=i(M),G=o(z),V=o(G,!0);s(G),s(z);var W=i(z),Y=o(W);R(Y,{variant:"ghost",size:"sm",$$events:{click:()=>ee(e(N))},children:(m,$)=>{B();var q=F("Edit");f(m,q)},$$slots:{default:!0}});var h=i(Y,2);R(h,{variant:"danger",size:"sm",$$events:{click:()=>te(e(N).taskName)},children:(m,$)=>{B();var q=F("Delete");f(m,q)},$$slots:{default:!0}}),s(W),s(w),T(()=>{C(D,e(N).taskName),C(V,e(N).tags)}),f(A,w)}),s(E),s(p),s(c),f(a,c)};Z(Se,a=>{e(v).length===0?a(Pe):a(De,!1)})}s(_e),f(t,ve),je()}export{kt as component};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":"1781425198782"}
|
|
Binary file
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
{
|
|
2
|
+
".svelte-kit/generated/server/internal.js": {
|
|
3
|
+
"file": "internal.js",
|
|
4
|
+
"name": "internal",
|
|
5
|
+
"src": ".svelte-kit/generated/server/internal.js",
|
|
6
|
+
"isEntry": true,
|
|
7
|
+
"imports": [
|
|
8
|
+
"_internal.js"
|
|
9
|
+
]
|
|
10
|
+
},
|
|
11
|
+
"_Badge.DLLowvEA.css": {
|
|
12
|
+
"file": "_app/immutable/assets/Badge.DLLowvEA.css",
|
|
13
|
+
"src": "_Badge.DLLowvEA.css"
|
|
14
|
+
},
|
|
15
|
+
"_Badge.js": {
|
|
16
|
+
"file": "chunks/Badge.js",
|
|
17
|
+
"name": "Badge",
|
|
18
|
+
"imports": [
|
|
19
|
+
"_index.js",
|
|
20
|
+
"_attributes.js"
|
|
21
|
+
],
|
|
22
|
+
"css": [
|
|
23
|
+
"_app/immutable/assets/Badge.DLLowvEA.css"
|
|
24
|
+
]
|
|
25
|
+
},
|
|
26
|
+
"_Button.cBruH0aD.css": {
|
|
27
|
+
"file": "_app/immutable/assets/Button.cBruH0aD.css",
|
|
28
|
+
"src": "_Button.cBruH0aD.css"
|
|
29
|
+
},
|
|
30
|
+
"_Button.js": {
|
|
31
|
+
"file": "chunks/Button.js",
|
|
32
|
+
"name": "Button",
|
|
33
|
+
"imports": [
|
|
34
|
+
"_index.js",
|
|
35
|
+
"_attributes.js"
|
|
36
|
+
],
|
|
37
|
+
"css": [
|
|
38
|
+
"_app/immutable/assets/Button.cBruH0aD.css"
|
|
39
|
+
]
|
|
40
|
+
},
|
|
41
|
+
"_attributes.js": {
|
|
42
|
+
"file": "chunks/attributes.js",
|
|
43
|
+
"name": "attributes",
|
|
44
|
+
"imports": [
|
|
45
|
+
"_escaping.js"
|
|
46
|
+
]
|
|
47
|
+
},
|
|
48
|
+
"_client.js": {
|
|
49
|
+
"file": "chunks/client.js",
|
|
50
|
+
"name": "client",
|
|
51
|
+
"imports": [
|
|
52
|
+
"_exports.js",
|
|
53
|
+
"_index.js"
|
|
54
|
+
]
|
|
55
|
+
},
|
|
56
|
+
"_equality.js": {
|
|
57
|
+
"file": "chunks/equality.js",
|
|
58
|
+
"name": "equality"
|
|
59
|
+
},
|
|
60
|
+
"_escaping.js": {
|
|
61
|
+
"file": "chunks/escaping.js",
|
|
62
|
+
"name": "escaping"
|
|
63
|
+
},
|
|
64
|
+
"_exports.js": {
|
|
65
|
+
"file": "chunks/exports.js",
|
|
66
|
+
"name": "exports",
|
|
67
|
+
"imports": [
|
|
68
|
+
"_index.js",
|
|
69
|
+
"_equality.js"
|
|
70
|
+
]
|
|
71
|
+
},
|
|
72
|
+
"_index.js": {
|
|
73
|
+
"file": "chunks/index.js",
|
|
74
|
+
"name": "index"
|
|
75
|
+
},
|
|
76
|
+
"_internal.js": {
|
|
77
|
+
"file": "chunks/internal.js",
|
|
78
|
+
"name": "internal",
|
|
79
|
+
"imports": [
|
|
80
|
+
"_index.js",
|
|
81
|
+
"_equality.js"
|
|
82
|
+
]
|
|
83
|
+
},
|
|
84
|
+
"_reports.js": {
|
|
85
|
+
"file": "chunks/reports.js",
|
|
86
|
+
"name": "reports",
|
|
87
|
+
"imports": [
|
|
88
|
+
"_index.js",
|
|
89
|
+
"_client.js"
|
|
90
|
+
]
|
|
91
|
+
},
|
|
92
|
+
"node_modules/@sveltejs/kit/src/runtime/components/svelte-5/error.svelte": {
|
|
93
|
+
"file": "entries/fallbacks/error.svelte.js",
|
|
94
|
+
"name": "entries/fallbacks/error.svelte",
|
|
95
|
+
"src": "node_modules/@sveltejs/kit/src/runtime/components/svelte-5/error.svelte",
|
|
96
|
+
"isEntry": true,
|
|
97
|
+
"imports": [
|
|
98
|
+
"_escaping.js",
|
|
99
|
+
"_index.js",
|
|
100
|
+
"_client.js"
|
|
101
|
+
]
|
|
102
|
+
},
|
|
103
|
+
"node_modules/@sveltejs/kit/src/runtime/server/index.js": {
|
|
104
|
+
"file": "index.js",
|
|
105
|
+
"name": "index",
|
|
106
|
+
"src": "node_modules/@sveltejs/kit/src/runtime/server/index.js",
|
|
107
|
+
"isEntry": true,
|
|
108
|
+
"imports": [
|
|
109
|
+
"_index.js",
|
|
110
|
+
"_internal.js",
|
|
111
|
+
"_exports.js"
|
|
112
|
+
]
|
|
113
|
+
},
|
|
114
|
+
"src/routes/+layout.svelte": {
|
|
115
|
+
"file": "entries/pages/_layout.svelte.js",
|
|
116
|
+
"name": "entries/pages/_layout.svelte",
|
|
117
|
+
"src": "src/routes/+layout.svelte",
|
|
118
|
+
"isEntry": true,
|
|
119
|
+
"imports": [
|
|
120
|
+
"_index.js",
|
|
121
|
+
"_reports.js",
|
|
122
|
+
"_exports.js",
|
|
123
|
+
"_attributes.js",
|
|
124
|
+
"_escaping.js",
|
|
125
|
+
"_Button.js"
|
|
126
|
+
],
|
|
127
|
+
"css": [
|
|
128
|
+
"_app/immutable/assets/_layout.D7eM-6MV.css"
|
|
129
|
+
]
|
|
130
|
+
},
|
|
131
|
+
"src/routes/+page.svelte": {
|
|
132
|
+
"file": "entries/pages/_page.svelte.js",
|
|
133
|
+
"name": "entries/pages/_page.svelte",
|
|
134
|
+
"src": "src/routes/+page.svelte",
|
|
135
|
+
"isEntry": true,
|
|
136
|
+
"imports": [
|
|
137
|
+
"_index.js",
|
|
138
|
+
"_attributes.js",
|
|
139
|
+
"_escaping.js"
|
|
140
|
+
],
|
|
141
|
+
"css": [
|
|
142
|
+
"_app/immutable/assets/_page.CGnCsn5q.css"
|
|
143
|
+
]
|
|
144
|
+
},
|
|
145
|
+
"src/routes/reports/+page.svelte": {
|
|
146
|
+
"file": "entries/pages/reports/_page.svelte.js",
|
|
147
|
+
"name": "entries/pages/reports/_page.svelte",
|
|
148
|
+
"src": "src/routes/reports/+page.svelte",
|
|
149
|
+
"isEntry": true,
|
|
150
|
+
"imports": [
|
|
151
|
+
"_index.js",
|
|
152
|
+
"_Badge.js",
|
|
153
|
+
"_attributes.js",
|
|
154
|
+
"_escaping.js"
|
|
155
|
+
],
|
|
156
|
+
"css": [
|
|
157
|
+
"_app/immutable/assets/_page.BVnUajEa.css"
|
|
158
|
+
]
|
|
159
|
+
},
|
|
160
|
+
"src/routes/reports/[slug]/+page.svelte": {
|
|
161
|
+
"file": "entries/pages/reports/_slug_/_page.svelte.js",
|
|
162
|
+
"name": "entries/pages/reports/_slug_/_page.svelte",
|
|
163
|
+
"src": "src/routes/reports/[slug]/+page.svelte",
|
|
164
|
+
"isEntry": true,
|
|
165
|
+
"imports": [
|
|
166
|
+
"_index.js",
|
|
167
|
+
"_reports.js"
|
|
168
|
+
],
|
|
169
|
+
"css": [
|
|
170
|
+
"_app/immutable/assets/_page.DBhBrHFz.css",
|
|
171
|
+
"_app/immutable/assets/Badge.DLLowvEA.css"
|
|
172
|
+
]
|
|
173
|
+
},
|
|
174
|
+
"src/routes/scheduled-tests/+page.svelte": {
|
|
175
|
+
"file": "entries/pages/scheduled-tests/_page.svelte.js",
|
|
176
|
+
"name": "entries/pages/scheduled-tests/_page.svelte",
|
|
177
|
+
"src": "src/routes/scheduled-tests/+page.svelte",
|
|
178
|
+
"isEntry": true,
|
|
179
|
+
"imports": [
|
|
180
|
+
"_index.js",
|
|
181
|
+
"_Button.js",
|
|
182
|
+
"_Badge.js",
|
|
183
|
+
"_attributes.js",
|
|
184
|
+
"_escaping.js"
|
|
185
|
+
],
|
|
186
|
+
"css": [
|
|
187
|
+
"_app/immutable/assets/_page.DOqo0UR4.css"
|
|
188
|
+
]
|
|
189
|
+
}
|
|
190
|
+
}
|
|
@@ -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
|
+
.badge.svelte-imjoo5{display:inline-flex;align-items:center;font-size:.68rem;font-weight:500;letter-spacing:.05em;text-transform:uppercase;padding:.2rem .6rem;border-radius:100px;white-space:nowrap}.pass.svelte-imjoo5{background:var(--pass-soft);color:var(--pass)}.fail.svelte-imjoo5{background:var(--fail-soft);color:var(--fail)}.tag.svelte-imjoo5{background:var(--accent-soft);color:var(--accent)}.schedule.svelte-imjoo5{background:var(--warn-soft);color:var(--warn)}.neutral.svelte-imjoo5{background:var(--bg-subtle);color:var(--text-muted);border:1px solid var(--border)}
|
|
@@ -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
|
+
.btn.svelte-1mw9qtj{display:inline-flex;align-items:center;justify-content:center;gap:.375rem;font-family:var(--font-body);font-weight:400;border-radius:var(--radius-md);border:1px solid transparent;cursor:pointer;white-space:nowrap;text-decoration:none;transition:background var(--duration-fast) var(--ease-out),color var(--duration-fast) var(--ease-out),border-color var(--duration-fast) var(--ease-out),box-shadow var(--duration-fast) var(--ease-out),transform var(--duration-fast) var(--ease-out),opacity var(--duration-fast)}.btn.svelte-1mw9qtj:active:not(:disabled){transform:scale(.97)}.btn.svelte-1mw9qtj:disabled{opacity:.38;cursor:not-allowed}.sm.svelte-1mw9qtj{font-size:.75rem;padding:.3rem .75rem;border-radius:var(--radius-sm)}.md.svelte-1mw9qtj{font-size:.875rem;padding:.55rem 1.25rem}.primary.svelte-1mw9qtj{background:var(--accent);color:#fff;border-color:var(--accent)}.primary.svelte-1mw9qtj:hover:not(:disabled){filter:brightness(1.12);box-shadow:0 4px 14px color-mix(in srgb,var(--accent) 30%,transparent)}.ghost.svelte-1mw9qtj{background:transparent;color:var(--text-muted);border-color:var(--border)}.ghost.svelte-1mw9qtj:hover:not(:disabled){background:var(--bg-subtle);color:var(--text);border-color:var(--text-muted)}.danger.svelte-1mw9qtj{background:transparent;color:var(--fail);border-color:var(--fail)}.danger.svelte-1mw9qtj:hover:not(:disabled){background:var(--fail-soft)}.outline.svelte-1mw9qtj{background:transparent;color:var(--accent);border-color:var(--accent)}.outline.svelte-1mw9qtj:hover:not(:disabled){background:var(--accent-soft)}
|