plum-e2e 1.1.1 → 1.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +142 -70
- package/backend/Dockerfile +4 -2
- package/backend/_scaffold/utils/browser.ts +1 -0
- package/backend/app.js +4 -2
- package/backend/config/scripts/generate-report.js +38 -30
- package/{.prettierignore → backend/entrypoint.sh} +7 -6
- package/backend/package-lock.json +453 -10
- package/backend/package.json +5 -2
- package/backend/prisma/migrations/20260614000000_init/migration.sql +35 -0
- package/backend/prisma/migrations/20260614000001_add_project/migration.sql +8 -0
- package/backend/prisma/migrations/migration_lock.toml +3 -0
- package/backend/prisma/schema.prisma +53 -0
- package/backend/routes/backup.routes.js +50 -0
- package/backend/routes/cron.routes.js +9 -60
- package/backend/routes/reports.routes.js +39 -6
- package/backend/routes/settings.routes.js +43 -0
- package/backend/server.js +52 -1
- package/backend/services/backupService.js +88 -0
- package/backend/services/cronService.js +68 -78
- package/backend/{routes/schedules.routes.js → services/prisma.js} +3 -13
- package/backend/services/reportService.js +48 -20
- package/backend/services/settingsService.js +36 -0
- package/bin/plum.js +216 -34
- package/docker-compose.yml +24 -0
- 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/{backend/services/scheduleService.js → frontend/.svelte-kit/adapter-node/chunks/equality.js} +13 -16
- 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/frontend/src/lib/api/reports.js +38 -27
- package/frontend/src/lib/api/schedules.js +9 -25
- package/frontend/src/lib/api/settings.js +48 -0
- package/frontend/src/lib/components/layout/Nav.svelte +2 -1
- package/frontend/src/lib/components/layout/RunnerPanel.svelte +160 -21
- package/frontend/src/lib/components/ui/Terminal.svelte +2 -2
- package/frontend/src/lib/stores/runner.js +9 -0
- package/frontend/src/routes/+page.svelte +10 -3
- package/frontend/src/routes/reports/+page.svelte +342 -51
- package/frontend/src/routes/reports/[slug]/+page.svelte +2 -0
- package/frontend/src/routes/scheduled-tests/+page.svelte +247 -11
- package/frontend/src/routes/settings/+page.svelte +410 -0
- package/package.json +6 -2
- package/.claude/settings.local.json +0 -27
- package/.husky/pre-commit +0 -2
- package/.prettierrc +0 -15
- package/.vscode/settings.json +0 -10
- package/backend/config/scripts/create-settings.js +0 -53
- package/license-config.json +0 -37
|
@@ -0,0 +1,1076 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* This file is part of Plum.
|
|
3
|
+
*
|
|
4
|
+
* Plum is free software: you can redistribute it and/or modify
|
|
5
|
+
* it under the terms of the GNU General Public License as published by
|
|
6
|
+
* the Free Software Foundation, either version 3 of the License, or
|
|
7
|
+
* (at your option) any later version.
|
|
8
|
+
*
|
|
9
|
+
* Plum is distributed in the hope that it will be useful,
|
|
10
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
11
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
12
|
+
* GNU General Public License for more details.
|
|
13
|
+
*
|
|
14
|
+
* You should have received a copy of the GNU General Public License
|
|
15
|
+
* along with Plum. If not, see https://www.gnu.org/licenses/.
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
const DERIVED = 1 << 1;
|
|
19
|
+
const EFFECT = 1 << 2;
|
|
20
|
+
const RENDER_EFFECT = 1 << 3;
|
|
21
|
+
const BLOCK_EFFECT = 1 << 4;
|
|
22
|
+
const BRANCH_EFFECT = 1 << 5;
|
|
23
|
+
const ROOT_EFFECT = 1 << 6;
|
|
24
|
+
const BOUNDARY_EFFECT = 1 << 7;
|
|
25
|
+
const UNOWNED = 1 << 8;
|
|
26
|
+
const DISCONNECTED = 1 << 9;
|
|
27
|
+
const CLEAN = 1 << 10;
|
|
28
|
+
const DIRTY = 1 << 11;
|
|
29
|
+
const MAYBE_DIRTY = 1 << 12;
|
|
30
|
+
const INERT = 1 << 13;
|
|
31
|
+
const DESTROYED = 1 << 14;
|
|
32
|
+
const EFFECT_RAN = 1 << 15;
|
|
33
|
+
const EFFECT_TRANSPARENT = 1 << 16;
|
|
34
|
+
const HEAD_EFFECT = 1 << 19;
|
|
35
|
+
const EFFECT_HAS_DERIVED = 1 << 20;
|
|
36
|
+
const LEGACY_PROPS = Symbol("legacy props");
|
|
37
|
+
const DEV = false;
|
|
38
|
+
var is_array = Array.isArray;
|
|
39
|
+
var index_of = Array.prototype.indexOf;
|
|
40
|
+
var array_from = Array.from;
|
|
41
|
+
var define_property = Object.defineProperty;
|
|
42
|
+
var get_descriptor = Object.getOwnPropertyDescriptor;
|
|
43
|
+
const noop = () => {
|
|
44
|
+
};
|
|
45
|
+
function fallback(value, fallback2, lazy = false) {
|
|
46
|
+
return value === void 0 ? lazy ? (
|
|
47
|
+
/** @type {() => V} */
|
|
48
|
+
fallback2()
|
|
49
|
+
) : (
|
|
50
|
+
/** @type {V} */
|
|
51
|
+
fallback2
|
|
52
|
+
) : value;
|
|
53
|
+
}
|
|
54
|
+
function flush_tasks() {
|
|
55
|
+
}
|
|
56
|
+
function effect_update_depth_exceeded() {
|
|
57
|
+
{
|
|
58
|
+
throw new Error(`https://svelte.dev/e/effect_update_depth_exceeded`);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
function hydration_failed() {
|
|
62
|
+
{
|
|
63
|
+
throw new Error(`https://svelte.dev/e/hydration_failed`);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
function state_unsafe_local_read() {
|
|
67
|
+
{
|
|
68
|
+
throw new Error(`https://svelte.dev/e/state_unsafe_local_read`);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
function state_unsafe_mutation() {
|
|
72
|
+
{
|
|
73
|
+
throw new Error(`https://svelte.dev/e/state_unsafe_mutation`);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
let tracing_mode_flag = false;
|
|
77
|
+
const HYDRATION_START = "[";
|
|
78
|
+
const HYDRATION_END = "]";
|
|
79
|
+
const HYDRATION_ERROR = {};
|
|
80
|
+
function lifecycle_outside_component(name) {
|
|
81
|
+
{
|
|
82
|
+
throw new Error(`https://svelte.dev/e/lifecycle_outside_component`);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
let component_context = null;
|
|
86
|
+
function set_component_context(context) {
|
|
87
|
+
component_context = context;
|
|
88
|
+
}
|
|
89
|
+
function push$1(props, runes = false, fn) {
|
|
90
|
+
component_context = {
|
|
91
|
+
p: component_context,
|
|
92
|
+
c: null,
|
|
93
|
+
e: null,
|
|
94
|
+
m: false,
|
|
95
|
+
s: props,
|
|
96
|
+
x: null,
|
|
97
|
+
l: null
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
function pop$1(component) {
|
|
101
|
+
const context_stack_item = component_context;
|
|
102
|
+
if (context_stack_item !== null) {
|
|
103
|
+
const component_effects = context_stack_item.e;
|
|
104
|
+
if (component_effects !== null) {
|
|
105
|
+
var previous_effect = active_effect;
|
|
106
|
+
var previous_reaction = active_reaction;
|
|
107
|
+
context_stack_item.e = null;
|
|
108
|
+
try {
|
|
109
|
+
for (var i = 0; i < component_effects.length; i++) {
|
|
110
|
+
var component_effect = component_effects[i];
|
|
111
|
+
set_active_effect(component_effect.effect);
|
|
112
|
+
set_active_reaction(component_effect.reaction);
|
|
113
|
+
effect(component_effect.fn);
|
|
114
|
+
}
|
|
115
|
+
} finally {
|
|
116
|
+
set_active_effect(previous_effect);
|
|
117
|
+
set_active_reaction(previous_reaction);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
component_context = context_stack_item.p;
|
|
121
|
+
context_stack_item.m = true;
|
|
122
|
+
}
|
|
123
|
+
return (
|
|
124
|
+
/** @type {T} */
|
|
125
|
+
{}
|
|
126
|
+
);
|
|
127
|
+
}
|
|
128
|
+
function is_runes() {
|
|
129
|
+
return true;
|
|
130
|
+
}
|
|
131
|
+
function destroy_derived_effects(derived) {
|
|
132
|
+
var effects = derived.effects;
|
|
133
|
+
if (effects !== null) {
|
|
134
|
+
derived.effects = null;
|
|
135
|
+
for (var i = 0; i < effects.length; i += 1) {
|
|
136
|
+
destroy_effect(
|
|
137
|
+
/** @type {Effect} */
|
|
138
|
+
effects[i]
|
|
139
|
+
);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
function get_derived_parent_effect(derived) {
|
|
144
|
+
var parent = derived.parent;
|
|
145
|
+
while (parent !== null) {
|
|
146
|
+
if ((parent.f & DERIVED) === 0) {
|
|
147
|
+
return (
|
|
148
|
+
/** @type {Effect} */
|
|
149
|
+
parent
|
|
150
|
+
);
|
|
151
|
+
}
|
|
152
|
+
parent = parent.parent;
|
|
153
|
+
}
|
|
154
|
+
return null;
|
|
155
|
+
}
|
|
156
|
+
function execute_derived(derived) {
|
|
157
|
+
var value;
|
|
158
|
+
var prev_active_effect = active_effect;
|
|
159
|
+
set_active_effect(get_derived_parent_effect(derived));
|
|
160
|
+
{
|
|
161
|
+
try {
|
|
162
|
+
destroy_derived_effects(derived);
|
|
163
|
+
value = update_reaction(derived);
|
|
164
|
+
} finally {
|
|
165
|
+
set_active_effect(prev_active_effect);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
return value;
|
|
169
|
+
}
|
|
170
|
+
function update_derived(derived) {
|
|
171
|
+
var value = execute_derived(derived);
|
|
172
|
+
var status = (skip_reaction || (derived.f & UNOWNED) !== 0) && derived.deps !== null ? MAYBE_DIRTY : CLEAN;
|
|
173
|
+
set_signal_status(derived, status);
|
|
174
|
+
if (!derived.equals(value)) {
|
|
175
|
+
derived.v = value;
|
|
176
|
+
derived.wv = increment_write_version();
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
var $window;
|
|
180
|
+
var first_child_getter;
|
|
181
|
+
var next_sibling_getter;
|
|
182
|
+
function init_operations() {
|
|
183
|
+
if ($window !== void 0) {
|
|
184
|
+
return;
|
|
185
|
+
}
|
|
186
|
+
$window = window;
|
|
187
|
+
var element_prototype = Element.prototype;
|
|
188
|
+
var node_prototype = Node.prototype;
|
|
189
|
+
first_child_getter = get_descriptor(node_prototype, "firstChild").get;
|
|
190
|
+
next_sibling_getter = get_descriptor(node_prototype, "nextSibling").get;
|
|
191
|
+
element_prototype.__click = void 0;
|
|
192
|
+
element_prototype.__className = "";
|
|
193
|
+
element_prototype.__attributes = null;
|
|
194
|
+
element_prototype.__styles = null;
|
|
195
|
+
element_prototype.__e = void 0;
|
|
196
|
+
Text.prototype.__t = void 0;
|
|
197
|
+
}
|
|
198
|
+
function create_text(value = "") {
|
|
199
|
+
return document.createTextNode(value);
|
|
200
|
+
}
|
|
201
|
+
// @__NO_SIDE_EFFECTS__
|
|
202
|
+
function get_first_child(node) {
|
|
203
|
+
return first_child_getter.call(node);
|
|
204
|
+
}
|
|
205
|
+
// @__NO_SIDE_EFFECTS__
|
|
206
|
+
function get_next_sibling(node) {
|
|
207
|
+
return next_sibling_getter.call(node);
|
|
208
|
+
}
|
|
209
|
+
function clear_text_content(node) {
|
|
210
|
+
node.textContent = "";
|
|
211
|
+
}
|
|
212
|
+
const FLUSH_MICROTASK = 0;
|
|
213
|
+
const FLUSH_SYNC = 1;
|
|
214
|
+
let is_throwing_error = false;
|
|
215
|
+
let scheduler_mode = FLUSH_MICROTASK;
|
|
216
|
+
let is_micro_task_queued = false;
|
|
217
|
+
let last_scheduled_effect = null;
|
|
218
|
+
let is_flushing_effect = false;
|
|
219
|
+
function set_is_flushing_effect(value) {
|
|
220
|
+
is_flushing_effect = value;
|
|
221
|
+
}
|
|
222
|
+
let queued_root_effects = [];
|
|
223
|
+
let flush_count = 0;
|
|
224
|
+
let active_reaction = null;
|
|
225
|
+
let untracking = false;
|
|
226
|
+
function set_active_reaction(reaction) {
|
|
227
|
+
active_reaction = reaction;
|
|
228
|
+
}
|
|
229
|
+
let active_effect = null;
|
|
230
|
+
function set_active_effect(effect2) {
|
|
231
|
+
active_effect = effect2;
|
|
232
|
+
}
|
|
233
|
+
let derived_sources = null;
|
|
234
|
+
let new_deps = null;
|
|
235
|
+
let skipped_deps = 0;
|
|
236
|
+
let untracked_writes = null;
|
|
237
|
+
function set_untracked_writes(value) {
|
|
238
|
+
untracked_writes = value;
|
|
239
|
+
}
|
|
240
|
+
let write_version = 1;
|
|
241
|
+
let read_version = 0;
|
|
242
|
+
let skip_reaction = false;
|
|
243
|
+
function increment_write_version() {
|
|
244
|
+
return ++write_version;
|
|
245
|
+
}
|
|
246
|
+
function check_dirtiness(reaction) {
|
|
247
|
+
var flags = reaction.f;
|
|
248
|
+
if ((flags & DIRTY) !== 0) {
|
|
249
|
+
return true;
|
|
250
|
+
}
|
|
251
|
+
if ((flags & MAYBE_DIRTY) !== 0) {
|
|
252
|
+
var dependencies = reaction.deps;
|
|
253
|
+
var is_unowned = (flags & UNOWNED) !== 0;
|
|
254
|
+
if (dependencies !== null) {
|
|
255
|
+
var i;
|
|
256
|
+
var dependency;
|
|
257
|
+
var is_disconnected = (flags & DISCONNECTED) !== 0;
|
|
258
|
+
var is_unowned_connected = is_unowned && active_effect !== null && !skip_reaction;
|
|
259
|
+
var length = dependencies.length;
|
|
260
|
+
if (is_disconnected || is_unowned_connected) {
|
|
261
|
+
var derived = (
|
|
262
|
+
/** @type {Derived} */
|
|
263
|
+
reaction
|
|
264
|
+
);
|
|
265
|
+
var parent = derived.parent;
|
|
266
|
+
for (i = 0; i < length; i++) {
|
|
267
|
+
dependency = dependencies[i];
|
|
268
|
+
if (is_disconnected || !dependency?.reactions?.includes(derived)) {
|
|
269
|
+
(dependency.reactions ??= []).push(derived);
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
if (is_disconnected) {
|
|
273
|
+
derived.f ^= DISCONNECTED;
|
|
274
|
+
}
|
|
275
|
+
if (is_unowned_connected && parent !== null && (parent.f & UNOWNED) === 0) {
|
|
276
|
+
derived.f ^= UNOWNED;
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
for (i = 0; i < length; i++) {
|
|
280
|
+
dependency = dependencies[i];
|
|
281
|
+
if (check_dirtiness(
|
|
282
|
+
/** @type {Derived} */
|
|
283
|
+
dependency
|
|
284
|
+
)) {
|
|
285
|
+
update_derived(
|
|
286
|
+
/** @type {Derived} */
|
|
287
|
+
dependency
|
|
288
|
+
);
|
|
289
|
+
}
|
|
290
|
+
if (dependency.wv > reaction.wv) {
|
|
291
|
+
return true;
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
if (!is_unowned || active_effect !== null && !skip_reaction) {
|
|
296
|
+
set_signal_status(reaction, CLEAN);
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
return false;
|
|
300
|
+
}
|
|
301
|
+
function propagate_error(error, effect2) {
|
|
302
|
+
var current = effect2;
|
|
303
|
+
while (current !== null) {
|
|
304
|
+
if ((current.f & BOUNDARY_EFFECT) !== 0) {
|
|
305
|
+
try {
|
|
306
|
+
current.fn(error);
|
|
307
|
+
return;
|
|
308
|
+
} catch {
|
|
309
|
+
current.f ^= BOUNDARY_EFFECT;
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
current = current.parent;
|
|
313
|
+
}
|
|
314
|
+
is_throwing_error = false;
|
|
315
|
+
throw error;
|
|
316
|
+
}
|
|
317
|
+
function should_rethrow_error(effect2) {
|
|
318
|
+
return (effect2.f & DESTROYED) === 0 && (effect2.parent === null || (effect2.parent.f & BOUNDARY_EFFECT) === 0);
|
|
319
|
+
}
|
|
320
|
+
function handle_error(error, effect2, previous_effect, component_context2) {
|
|
321
|
+
if (is_throwing_error) {
|
|
322
|
+
if (previous_effect === null) {
|
|
323
|
+
is_throwing_error = false;
|
|
324
|
+
}
|
|
325
|
+
if (should_rethrow_error(effect2)) {
|
|
326
|
+
throw error;
|
|
327
|
+
}
|
|
328
|
+
return;
|
|
329
|
+
}
|
|
330
|
+
if (previous_effect !== null) {
|
|
331
|
+
is_throwing_error = true;
|
|
332
|
+
}
|
|
333
|
+
{
|
|
334
|
+
propagate_error(error, effect2);
|
|
335
|
+
return;
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
function schedule_possible_effect_self_invalidation(signal, effect2, root = true) {
|
|
339
|
+
var reactions = signal.reactions;
|
|
340
|
+
if (reactions === null) return;
|
|
341
|
+
for (var i = 0; i < reactions.length; i++) {
|
|
342
|
+
var reaction = reactions[i];
|
|
343
|
+
if ((reaction.f & DERIVED) !== 0) {
|
|
344
|
+
schedule_possible_effect_self_invalidation(
|
|
345
|
+
/** @type {Derived} */
|
|
346
|
+
reaction,
|
|
347
|
+
effect2,
|
|
348
|
+
false
|
|
349
|
+
);
|
|
350
|
+
} else if (effect2 === reaction) {
|
|
351
|
+
if (root) {
|
|
352
|
+
set_signal_status(reaction, DIRTY);
|
|
353
|
+
} else if ((reaction.f & CLEAN) !== 0) {
|
|
354
|
+
set_signal_status(reaction, MAYBE_DIRTY);
|
|
355
|
+
}
|
|
356
|
+
schedule_effect(
|
|
357
|
+
/** @type {Effect} */
|
|
358
|
+
reaction
|
|
359
|
+
);
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
function update_reaction(reaction) {
|
|
364
|
+
var previous_deps = new_deps;
|
|
365
|
+
var previous_skipped_deps = skipped_deps;
|
|
366
|
+
var previous_untracked_writes = untracked_writes;
|
|
367
|
+
var previous_reaction = active_reaction;
|
|
368
|
+
var previous_skip_reaction = skip_reaction;
|
|
369
|
+
var prev_derived_sources = derived_sources;
|
|
370
|
+
var previous_component_context = component_context;
|
|
371
|
+
var previous_untracking = untracking;
|
|
372
|
+
var flags = reaction.f;
|
|
373
|
+
new_deps = /** @type {null | Value[]} */
|
|
374
|
+
null;
|
|
375
|
+
skipped_deps = 0;
|
|
376
|
+
untracked_writes = null;
|
|
377
|
+
active_reaction = (flags & (BRANCH_EFFECT | ROOT_EFFECT)) === 0 ? reaction : null;
|
|
378
|
+
skip_reaction = (flags & UNOWNED) !== 0 && (!is_flushing_effect || previous_reaction === null || previous_untracking);
|
|
379
|
+
derived_sources = null;
|
|
380
|
+
set_component_context(reaction.ctx);
|
|
381
|
+
untracking = false;
|
|
382
|
+
read_version++;
|
|
383
|
+
try {
|
|
384
|
+
var result = (
|
|
385
|
+
/** @type {Function} */
|
|
386
|
+
(0, reaction.fn)()
|
|
387
|
+
);
|
|
388
|
+
var deps = reaction.deps;
|
|
389
|
+
if (new_deps !== null) {
|
|
390
|
+
var i;
|
|
391
|
+
remove_reactions(reaction, skipped_deps);
|
|
392
|
+
if (deps !== null && skipped_deps > 0) {
|
|
393
|
+
deps.length = skipped_deps + new_deps.length;
|
|
394
|
+
for (i = 0; i < new_deps.length; i++) {
|
|
395
|
+
deps[skipped_deps + i] = new_deps[i];
|
|
396
|
+
}
|
|
397
|
+
} else {
|
|
398
|
+
reaction.deps = deps = new_deps;
|
|
399
|
+
}
|
|
400
|
+
if (!skip_reaction) {
|
|
401
|
+
for (i = skipped_deps; i < deps.length; i++) {
|
|
402
|
+
(deps[i].reactions ??= []).push(reaction);
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
} else if (deps !== null && skipped_deps < deps.length) {
|
|
406
|
+
remove_reactions(reaction, skipped_deps);
|
|
407
|
+
deps.length = skipped_deps;
|
|
408
|
+
}
|
|
409
|
+
if (is_runes() && untracked_writes !== null && !untracking && deps !== null && (reaction.f & (DERIVED | MAYBE_DIRTY | DIRTY)) === 0) {
|
|
410
|
+
for (i = 0; i < /** @type {Source[]} */
|
|
411
|
+
untracked_writes.length; i++) {
|
|
412
|
+
schedule_possible_effect_self_invalidation(
|
|
413
|
+
untracked_writes[i],
|
|
414
|
+
/** @type {Effect} */
|
|
415
|
+
reaction
|
|
416
|
+
);
|
|
417
|
+
}
|
|
418
|
+
}
|
|
419
|
+
if (previous_reaction !== null) {
|
|
420
|
+
read_version++;
|
|
421
|
+
}
|
|
422
|
+
return result;
|
|
423
|
+
} finally {
|
|
424
|
+
new_deps = previous_deps;
|
|
425
|
+
skipped_deps = previous_skipped_deps;
|
|
426
|
+
untracked_writes = previous_untracked_writes;
|
|
427
|
+
active_reaction = previous_reaction;
|
|
428
|
+
skip_reaction = previous_skip_reaction;
|
|
429
|
+
derived_sources = prev_derived_sources;
|
|
430
|
+
set_component_context(previous_component_context);
|
|
431
|
+
untracking = previous_untracking;
|
|
432
|
+
}
|
|
433
|
+
}
|
|
434
|
+
function remove_reaction(signal, dependency) {
|
|
435
|
+
let reactions = dependency.reactions;
|
|
436
|
+
if (reactions !== null) {
|
|
437
|
+
var index = index_of.call(reactions, signal);
|
|
438
|
+
if (index !== -1) {
|
|
439
|
+
var new_length = reactions.length - 1;
|
|
440
|
+
if (new_length === 0) {
|
|
441
|
+
reactions = dependency.reactions = null;
|
|
442
|
+
} else {
|
|
443
|
+
reactions[index] = reactions[new_length];
|
|
444
|
+
reactions.pop();
|
|
445
|
+
}
|
|
446
|
+
}
|
|
447
|
+
}
|
|
448
|
+
if (reactions === null && (dependency.f & DERIVED) !== 0 && // Destroying a child effect while updating a parent effect can cause a dependency to appear
|
|
449
|
+
// to be unused, when in fact it is used by the currently-updating parent. Checking `new_deps`
|
|
450
|
+
// allows us to skip the expensive work of disconnecting and immediately reconnecting it
|
|
451
|
+
(new_deps === null || !new_deps.includes(dependency))) {
|
|
452
|
+
set_signal_status(dependency, MAYBE_DIRTY);
|
|
453
|
+
if ((dependency.f & (UNOWNED | DISCONNECTED)) === 0) {
|
|
454
|
+
dependency.f ^= DISCONNECTED;
|
|
455
|
+
}
|
|
456
|
+
destroy_derived_effects(
|
|
457
|
+
/** @type {Derived} **/
|
|
458
|
+
dependency
|
|
459
|
+
);
|
|
460
|
+
remove_reactions(
|
|
461
|
+
/** @type {Derived} **/
|
|
462
|
+
dependency,
|
|
463
|
+
0
|
|
464
|
+
);
|
|
465
|
+
}
|
|
466
|
+
}
|
|
467
|
+
function remove_reactions(signal, start_index) {
|
|
468
|
+
var dependencies = signal.deps;
|
|
469
|
+
if (dependencies === null) return;
|
|
470
|
+
for (var i = start_index; i < dependencies.length; i++) {
|
|
471
|
+
remove_reaction(signal, dependencies[i]);
|
|
472
|
+
}
|
|
473
|
+
}
|
|
474
|
+
function update_effect(effect2) {
|
|
475
|
+
var flags = effect2.f;
|
|
476
|
+
if ((flags & DESTROYED) !== 0) {
|
|
477
|
+
return;
|
|
478
|
+
}
|
|
479
|
+
set_signal_status(effect2, CLEAN);
|
|
480
|
+
var previous_effect = active_effect;
|
|
481
|
+
var previous_component_context = component_context;
|
|
482
|
+
active_effect = effect2;
|
|
483
|
+
try {
|
|
484
|
+
if ((flags & BLOCK_EFFECT) !== 0) {
|
|
485
|
+
destroy_block_effect_children(effect2);
|
|
486
|
+
} else {
|
|
487
|
+
destroy_effect_children(effect2);
|
|
488
|
+
}
|
|
489
|
+
execute_effect_teardown(effect2);
|
|
490
|
+
var teardown = update_reaction(effect2);
|
|
491
|
+
effect2.teardown = typeof teardown === "function" ? teardown : null;
|
|
492
|
+
effect2.wv = write_version;
|
|
493
|
+
var deps = effect2.deps;
|
|
494
|
+
var dep;
|
|
495
|
+
if (DEV && tracing_mode_flag && (effect2.f & DIRTY) !== 0 && deps !== null) ;
|
|
496
|
+
if (DEV) ;
|
|
497
|
+
} catch (error) {
|
|
498
|
+
handle_error(error, effect2, previous_effect, previous_component_context || effect2.ctx);
|
|
499
|
+
} finally {
|
|
500
|
+
active_effect = previous_effect;
|
|
501
|
+
}
|
|
502
|
+
}
|
|
503
|
+
function infinite_loop_guard() {
|
|
504
|
+
if (flush_count > 1e3) {
|
|
505
|
+
flush_count = 0;
|
|
506
|
+
try {
|
|
507
|
+
effect_update_depth_exceeded();
|
|
508
|
+
} catch (error) {
|
|
509
|
+
if (last_scheduled_effect !== null) {
|
|
510
|
+
{
|
|
511
|
+
handle_error(error, last_scheduled_effect, null);
|
|
512
|
+
}
|
|
513
|
+
} else {
|
|
514
|
+
throw error;
|
|
515
|
+
}
|
|
516
|
+
}
|
|
517
|
+
}
|
|
518
|
+
flush_count++;
|
|
519
|
+
}
|
|
520
|
+
function flush_queued_root_effects(root_effects) {
|
|
521
|
+
var length = root_effects.length;
|
|
522
|
+
if (length === 0) {
|
|
523
|
+
return;
|
|
524
|
+
}
|
|
525
|
+
infinite_loop_guard();
|
|
526
|
+
var previously_flushing_effect = is_flushing_effect;
|
|
527
|
+
is_flushing_effect = true;
|
|
528
|
+
try {
|
|
529
|
+
for (var i = 0; i < length; i++) {
|
|
530
|
+
var effect2 = root_effects[i];
|
|
531
|
+
if ((effect2.f & CLEAN) === 0) {
|
|
532
|
+
effect2.f ^= CLEAN;
|
|
533
|
+
}
|
|
534
|
+
var collected_effects = process_effects(effect2);
|
|
535
|
+
flush_queued_effects(collected_effects);
|
|
536
|
+
}
|
|
537
|
+
} finally {
|
|
538
|
+
is_flushing_effect = previously_flushing_effect;
|
|
539
|
+
}
|
|
540
|
+
}
|
|
541
|
+
function flush_queued_effects(effects) {
|
|
542
|
+
var length = effects.length;
|
|
543
|
+
if (length === 0) return;
|
|
544
|
+
for (var i = 0; i < length; i++) {
|
|
545
|
+
var effect2 = effects[i];
|
|
546
|
+
if ((effect2.f & (DESTROYED | INERT)) === 0) {
|
|
547
|
+
try {
|
|
548
|
+
if (check_dirtiness(effect2)) {
|
|
549
|
+
update_effect(effect2);
|
|
550
|
+
if (effect2.deps === null && effect2.first === null && effect2.nodes_start === null) {
|
|
551
|
+
if (effect2.teardown === null) {
|
|
552
|
+
unlink_effect(effect2);
|
|
553
|
+
} else {
|
|
554
|
+
effect2.fn = null;
|
|
555
|
+
}
|
|
556
|
+
}
|
|
557
|
+
}
|
|
558
|
+
} catch (error) {
|
|
559
|
+
handle_error(error, effect2, null, effect2.ctx);
|
|
560
|
+
}
|
|
561
|
+
}
|
|
562
|
+
}
|
|
563
|
+
}
|
|
564
|
+
function process_deferred() {
|
|
565
|
+
is_micro_task_queued = false;
|
|
566
|
+
if (flush_count > 1001) {
|
|
567
|
+
return;
|
|
568
|
+
}
|
|
569
|
+
const previous_queued_root_effects = queued_root_effects;
|
|
570
|
+
queued_root_effects = [];
|
|
571
|
+
flush_queued_root_effects(previous_queued_root_effects);
|
|
572
|
+
if (!is_micro_task_queued) {
|
|
573
|
+
flush_count = 0;
|
|
574
|
+
last_scheduled_effect = null;
|
|
575
|
+
}
|
|
576
|
+
}
|
|
577
|
+
function schedule_effect(signal) {
|
|
578
|
+
if (scheduler_mode === FLUSH_MICROTASK) {
|
|
579
|
+
if (!is_micro_task_queued) {
|
|
580
|
+
is_micro_task_queued = true;
|
|
581
|
+
queueMicrotask(process_deferred);
|
|
582
|
+
}
|
|
583
|
+
}
|
|
584
|
+
last_scheduled_effect = signal;
|
|
585
|
+
var effect2 = signal;
|
|
586
|
+
while (effect2.parent !== null) {
|
|
587
|
+
effect2 = effect2.parent;
|
|
588
|
+
var flags = effect2.f;
|
|
589
|
+
if ((flags & (ROOT_EFFECT | BRANCH_EFFECT)) !== 0) {
|
|
590
|
+
if ((flags & CLEAN) === 0) return;
|
|
591
|
+
effect2.f ^= CLEAN;
|
|
592
|
+
}
|
|
593
|
+
}
|
|
594
|
+
queued_root_effects.push(effect2);
|
|
595
|
+
}
|
|
596
|
+
function process_effects(effect2) {
|
|
597
|
+
var effects = [];
|
|
598
|
+
var current_effect = effect2.first;
|
|
599
|
+
main_loop: while (current_effect !== null) {
|
|
600
|
+
var flags = current_effect.f;
|
|
601
|
+
var is_branch = (flags & BRANCH_EFFECT) !== 0;
|
|
602
|
+
var is_skippable_branch = is_branch && (flags & CLEAN) !== 0;
|
|
603
|
+
var sibling = current_effect.next;
|
|
604
|
+
if (!is_skippable_branch && (flags & INERT) === 0) {
|
|
605
|
+
if ((flags & EFFECT) !== 0) {
|
|
606
|
+
effects.push(current_effect);
|
|
607
|
+
} else if (is_branch) {
|
|
608
|
+
current_effect.f ^= CLEAN;
|
|
609
|
+
} else {
|
|
610
|
+
var previous_active_reaction = active_reaction;
|
|
611
|
+
try {
|
|
612
|
+
active_reaction = current_effect;
|
|
613
|
+
if (check_dirtiness(current_effect)) {
|
|
614
|
+
update_effect(current_effect);
|
|
615
|
+
}
|
|
616
|
+
} catch (error) {
|
|
617
|
+
handle_error(error, current_effect, null, current_effect.ctx);
|
|
618
|
+
} finally {
|
|
619
|
+
active_reaction = previous_active_reaction;
|
|
620
|
+
}
|
|
621
|
+
}
|
|
622
|
+
var child = current_effect.first;
|
|
623
|
+
if (child !== null) {
|
|
624
|
+
current_effect = child;
|
|
625
|
+
continue;
|
|
626
|
+
}
|
|
627
|
+
}
|
|
628
|
+
if (sibling === null) {
|
|
629
|
+
let parent = current_effect.parent;
|
|
630
|
+
while (parent !== null) {
|
|
631
|
+
if (effect2 === parent) {
|
|
632
|
+
break main_loop;
|
|
633
|
+
}
|
|
634
|
+
var parent_sibling = parent.next;
|
|
635
|
+
if (parent_sibling !== null) {
|
|
636
|
+
current_effect = parent_sibling;
|
|
637
|
+
continue main_loop;
|
|
638
|
+
}
|
|
639
|
+
parent = parent.parent;
|
|
640
|
+
}
|
|
641
|
+
}
|
|
642
|
+
current_effect = sibling;
|
|
643
|
+
}
|
|
644
|
+
return effects;
|
|
645
|
+
}
|
|
646
|
+
function flush_sync(fn) {
|
|
647
|
+
var previous_scheduler_mode = scheduler_mode;
|
|
648
|
+
var previous_queued_root_effects = queued_root_effects;
|
|
649
|
+
try {
|
|
650
|
+
infinite_loop_guard();
|
|
651
|
+
const root_effects = [];
|
|
652
|
+
scheduler_mode = FLUSH_SYNC;
|
|
653
|
+
queued_root_effects = root_effects;
|
|
654
|
+
is_micro_task_queued = false;
|
|
655
|
+
flush_queued_root_effects(previous_queued_root_effects);
|
|
656
|
+
var result = fn?.();
|
|
657
|
+
flush_tasks();
|
|
658
|
+
if (queued_root_effects.length > 0 || root_effects.length > 0) {
|
|
659
|
+
flush_sync();
|
|
660
|
+
}
|
|
661
|
+
flush_count = 0;
|
|
662
|
+
last_scheduled_effect = null;
|
|
663
|
+
if (DEV) ;
|
|
664
|
+
return result;
|
|
665
|
+
} finally {
|
|
666
|
+
scheduler_mode = previous_scheduler_mode;
|
|
667
|
+
queued_root_effects = previous_queued_root_effects;
|
|
668
|
+
}
|
|
669
|
+
}
|
|
670
|
+
function get(signal) {
|
|
671
|
+
var flags = signal.f;
|
|
672
|
+
var is_derived = (flags & DERIVED) !== 0;
|
|
673
|
+
if (active_reaction !== null && !untracking) {
|
|
674
|
+
if (derived_sources !== null && derived_sources.includes(signal)) {
|
|
675
|
+
state_unsafe_local_read();
|
|
676
|
+
}
|
|
677
|
+
var deps = active_reaction.deps;
|
|
678
|
+
if (signal.rv < read_version) {
|
|
679
|
+
signal.rv = read_version;
|
|
680
|
+
if (new_deps === null && deps !== null && deps[skipped_deps] === signal) {
|
|
681
|
+
skipped_deps++;
|
|
682
|
+
} else if (new_deps === null) {
|
|
683
|
+
new_deps = [signal];
|
|
684
|
+
} else if (!skip_reaction || !new_deps.includes(signal)) {
|
|
685
|
+
new_deps.push(signal);
|
|
686
|
+
}
|
|
687
|
+
}
|
|
688
|
+
} else if (is_derived && /** @type {Derived} */
|
|
689
|
+
signal.deps === null && /** @type {Derived} */
|
|
690
|
+
signal.effects === null) {
|
|
691
|
+
var derived = (
|
|
692
|
+
/** @type {Derived} */
|
|
693
|
+
signal
|
|
694
|
+
);
|
|
695
|
+
var parent = derived.parent;
|
|
696
|
+
if (parent !== null && (parent.f & UNOWNED) === 0) {
|
|
697
|
+
derived.f ^= UNOWNED;
|
|
698
|
+
}
|
|
699
|
+
}
|
|
700
|
+
if (is_derived) {
|
|
701
|
+
derived = /** @type {Derived} */
|
|
702
|
+
signal;
|
|
703
|
+
if (check_dirtiness(derived)) {
|
|
704
|
+
update_derived(derived);
|
|
705
|
+
}
|
|
706
|
+
}
|
|
707
|
+
return signal.v;
|
|
708
|
+
}
|
|
709
|
+
function untrack(fn) {
|
|
710
|
+
var previous_untracking = untracking;
|
|
711
|
+
try {
|
|
712
|
+
untracking = true;
|
|
713
|
+
return fn();
|
|
714
|
+
} finally {
|
|
715
|
+
untracking = previous_untracking;
|
|
716
|
+
}
|
|
717
|
+
}
|
|
718
|
+
const STATUS_MASK = -7169;
|
|
719
|
+
function set_signal_status(signal, status) {
|
|
720
|
+
signal.f = signal.f & STATUS_MASK | status;
|
|
721
|
+
}
|
|
722
|
+
function push_effect(effect2, parent_effect) {
|
|
723
|
+
var parent_last = parent_effect.last;
|
|
724
|
+
if (parent_last === null) {
|
|
725
|
+
parent_effect.last = parent_effect.first = effect2;
|
|
726
|
+
} else {
|
|
727
|
+
parent_last.next = effect2;
|
|
728
|
+
effect2.prev = parent_last;
|
|
729
|
+
parent_effect.last = effect2;
|
|
730
|
+
}
|
|
731
|
+
}
|
|
732
|
+
function create_effect(type, fn, sync, push2 = true) {
|
|
733
|
+
var is_root = (type & ROOT_EFFECT) !== 0;
|
|
734
|
+
var parent_effect = active_effect;
|
|
735
|
+
var effect2 = {
|
|
736
|
+
ctx: component_context,
|
|
737
|
+
deps: null,
|
|
738
|
+
nodes_start: null,
|
|
739
|
+
nodes_end: null,
|
|
740
|
+
f: type | DIRTY,
|
|
741
|
+
first: null,
|
|
742
|
+
fn,
|
|
743
|
+
last: null,
|
|
744
|
+
next: null,
|
|
745
|
+
parent: is_root ? null : parent_effect,
|
|
746
|
+
prev: null,
|
|
747
|
+
teardown: null,
|
|
748
|
+
transitions: null,
|
|
749
|
+
wv: 0
|
|
750
|
+
};
|
|
751
|
+
if (sync) {
|
|
752
|
+
var previously_flushing_effect = is_flushing_effect;
|
|
753
|
+
try {
|
|
754
|
+
set_is_flushing_effect(true);
|
|
755
|
+
update_effect(effect2);
|
|
756
|
+
effect2.f |= EFFECT_RAN;
|
|
757
|
+
} catch (e) {
|
|
758
|
+
destroy_effect(effect2);
|
|
759
|
+
throw e;
|
|
760
|
+
} finally {
|
|
761
|
+
set_is_flushing_effect(previously_flushing_effect);
|
|
762
|
+
}
|
|
763
|
+
} else if (fn !== null) {
|
|
764
|
+
schedule_effect(effect2);
|
|
765
|
+
}
|
|
766
|
+
var inert = sync && effect2.deps === null && effect2.first === null && effect2.nodes_start === null && effect2.teardown === null && (effect2.f & (EFFECT_HAS_DERIVED | BOUNDARY_EFFECT)) === 0;
|
|
767
|
+
if (!inert && !is_root && push2) {
|
|
768
|
+
if (parent_effect !== null) {
|
|
769
|
+
push_effect(effect2, parent_effect);
|
|
770
|
+
}
|
|
771
|
+
if (active_reaction !== null && (active_reaction.f & DERIVED) !== 0) {
|
|
772
|
+
var derived = (
|
|
773
|
+
/** @type {Derived} */
|
|
774
|
+
active_reaction
|
|
775
|
+
);
|
|
776
|
+
(derived.effects ??= []).push(effect2);
|
|
777
|
+
}
|
|
778
|
+
}
|
|
779
|
+
return effect2;
|
|
780
|
+
}
|
|
781
|
+
function component_root(fn) {
|
|
782
|
+
const effect2 = create_effect(ROOT_EFFECT, fn, true);
|
|
783
|
+
return (options = {}) => {
|
|
784
|
+
return new Promise((fulfil) => {
|
|
785
|
+
if (options.outro) {
|
|
786
|
+
pause_effect(effect2, () => {
|
|
787
|
+
destroy_effect(effect2);
|
|
788
|
+
fulfil(void 0);
|
|
789
|
+
});
|
|
790
|
+
} else {
|
|
791
|
+
destroy_effect(effect2);
|
|
792
|
+
fulfil(void 0);
|
|
793
|
+
}
|
|
794
|
+
});
|
|
795
|
+
};
|
|
796
|
+
}
|
|
797
|
+
function effect(fn) {
|
|
798
|
+
return create_effect(EFFECT, fn, false);
|
|
799
|
+
}
|
|
800
|
+
function branch(fn, push2 = true) {
|
|
801
|
+
return create_effect(RENDER_EFFECT | BRANCH_EFFECT, fn, true, push2);
|
|
802
|
+
}
|
|
803
|
+
function execute_effect_teardown(effect2) {
|
|
804
|
+
var teardown = effect2.teardown;
|
|
805
|
+
if (teardown !== null) {
|
|
806
|
+
const previous_reaction = active_reaction;
|
|
807
|
+
set_active_reaction(null);
|
|
808
|
+
try {
|
|
809
|
+
teardown.call(null);
|
|
810
|
+
} finally {
|
|
811
|
+
set_active_reaction(previous_reaction);
|
|
812
|
+
}
|
|
813
|
+
}
|
|
814
|
+
}
|
|
815
|
+
function destroy_effect_children(signal, remove_dom = false) {
|
|
816
|
+
var effect2 = signal.first;
|
|
817
|
+
signal.first = signal.last = null;
|
|
818
|
+
while (effect2 !== null) {
|
|
819
|
+
var next = effect2.next;
|
|
820
|
+
destroy_effect(effect2, remove_dom);
|
|
821
|
+
effect2 = next;
|
|
822
|
+
}
|
|
823
|
+
}
|
|
824
|
+
function destroy_block_effect_children(signal) {
|
|
825
|
+
var effect2 = signal.first;
|
|
826
|
+
while (effect2 !== null) {
|
|
827
|
+
var next = effect2.next;
|
|
828
|
+
if ((effect2.f & BRANCH_EFFECT) === 0) {
|
|
829
|
+
destroy_effect(effect2);
|
|
830
|
+
}
|
|
831
|
+
effect2 = next;
|
|
832
|
+
}
|
|
833
|
+
}
|
|
834
|
+
function destroy_effect(effect2, remove_dom = true) {
|
|
835
|
+
var removed = false;
|
|
836
|
+
if ((remove_dom || (effect2.f & HEAD_EFFECT) !== 0) && effect2.nodes_start !== null) {
|
|
837
|
+
var node = effect2.nodes_start;
|
|
838
|
+
var end = effect2.nodes_end;
|
|
839
|
+
while (node !== null) {
|
|
840
|
+
var next = node === end ? null : (
|
|
841
|
+
/** @type {TemplateNode} */
|
|
842
|
+
/* @__PURE__ */ get_next_sibling(node)
|
|
843
|
+
);
|
|
844
|
+
node.remove();
|
|
845
|
+
node = next;
|
|
846
|
+
}
|
|
847
|
+
removed = true;
|
|
848
|
+
}
|
|
849
|
+
destroy_effect_children(effect2, remove_dom && !removed);
|
|
850
|
+
remove_reactions(effect2, 0);
|
|
851
|
+
set_signal_status(effect2, DESTROYED);
|
|
852
|
+
var transitions = effect2.transitions;
|
|
853
|
+
if (transitions !== null) {
|
|
854
|
+
for (const transition of transitions) {
|
|
855
|
+
transition.stop();
|
|
856
|
+
}
|
|
857
|
+
}
|
|
858
|
+
execute_effect_teardown(effect2);
|
|
859
|
+
var parent = effect2.parent;
|
|
860
|
+
if (parent !== null && parent.first !== null) {
|
|
861
|
+
unlink_effect(effect2);
|
|
862
|
+
}
|
|
863
|
+
effect2.next = effect2.prev = effect2.teardown = effect2.ctx = effect2.deps = effect2.fn = effect2.nodes_start = effect2.nodes_end = null;
|
|
864
|
+
}
|
|
865
|
+
function unlink_effect(effect2) {
|
|
866
|
+
var parent = effect2.parent;
|
|
867
|
+
var prev = effect2.prev;
|
|
868
|
+
var next = effect2.next;
|
|
869
|
+
if (prev !== null) prev.next = next;
|
|
870
|
+
if (next !== null) next.prev = prev;
|
|
871
|
+
if (parent !== null) {
|
|
872
|
+
if (parent.first === effect2) parent.first = next;
|
|
873
|
+
if (parent.last === effect2) parent.last = prev;
|
|
874
|
+
}
|
|
875
|
+
}
|
|
876
|
+
function pause_effect(effect2, callback) {
|
|
877
|
+
var transitions = [];
|
|
878
|
+
pause_children(effect2, transitions, true);
|
|
879
|
+
run_out_transitions(transitions, () => {
|
|
880
|
+
destroy_effect(effect2);
|
|
881
|
+
if (callback) callback();
|
|
882
|
+
});
|
|
883
|
+
}
|
|
884
|
+
function run_out_transitions(transitions, fn) {
|
|
885
|
+
var remaining = transitions.length;
|
|
886
|
+
if (remaining > 0) {
|
|
887
|
+
var check = () => --remaining || fn();
|
|
888
|
+
for (var transition of transitions) {
|
|
889
|
+
transition.out(check);
|
|
890
|
+
}
|
|
891
|
+
} else {
|
|
892
|
+
fn();
|
|
893
|
+
}
|
|
894
|
+
}
|
|
895
|
+
function pause_children(effect2, transitions, local) {
|
|
896
|
+
if ((effect2.f & INERT) !== 0) return;
|
|
897
|
+
effect2.f ^= INERT;
|
|
898
|
+
if (effect2.transitions !== null) {
|
|
899
|
+
for (const transition of effect2.transitions) {
|
|
900
|
+
if (transition.is_global || local) {
|
|
901
|
+
transitions.push(transition);
|
|
902
|
+
}
|
|
903
|
+
}
|
|
904
|
+
}
|
|
905
|
+
var child = effect2.first;
|
|
906
|
+
while (child !== null) {
|
|
907
|
+
var sibling = child.next;
|
|
908
|
+
var transparent = (child.f & EFFECT_TRANSPARENT) !== 0 || (child.f & BRANCH_EFFECT) !== 0;
|
|
909
|
+
pause_children(child, transitions, transparent ? local : false);
|
|
910
|
+
child = sibling;
|
|
911
|
+
}
|
|
912
|
+
}
|
|
913
|
+
function subscribe_to_store(store, run, invalidate) {
|
|
914
|
+
if (store == null) {
|
|
915
|
+
run(void 0);
|
|
916
|
+
return noop;
|
|
917
|
+
}
|
|
918
|
+
const unsub = untrack(
|
|
919
|
+
() => store.subscribe(
|
|
920
|
+
run,
|
|
921
|
+
// @ts-expect-error
|
|
922
|
+
invalidate
|
|
923
|
+
)
|
|
924
|
+
);
|
|
925
|
+
return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub;
|
|
926
|
+
}
|
|
927
|
+
var current_component = null;
|
|
928
|
+
function getContext(key) {
|
|
929
|
+
const context_map = get_or_init_context_map();
|
|
930
|
+
const result = (
|
|
931
|
+
/** @type {T} */
|
|
932
|
+
context_map.get(key)
|
|
933
|
+
);
|
|
934
|
+
return result;
|
|
935
|
+
}
|
|
936
|
+
function setContext(key, context) {
|
|
937
|
+
get_or_init_context_map().set(key, context);
|
|
938
|
+
return context;
|
|
939
|
+
}
|
|
940
|
+
function get_or_init_context_map(name) {
|
|
941
|
+
if (current_component === null) {
|
|
942
|
+
lifecycle_outside_component();
|
|
943
|
+
}
|
|
944
|
+
return current_component.c ??= new Map(get_parent_context(current_component) || void 0);
|
|
945
|
+
}
|
|
946
|
+
function push(fn) {
|
|
947
|
+
current_component = { p: current_component, c: null, d: null };
|
|
948
|
+
}
|
|
949
|
+
function pop() {
|
|
950
|
+
var component = (
|
|
951
|
+
/** @type {Component} */
|
|
952
|
+
current_component
|
|
953
|
+
);
|
|
954
|
+
var ondestroy = component.d;
|
|
955
|
+
if (ondestroy) {
|
|
956
|
+
on_destroy.push(...ondestroy);
|
|
957
|
+
}
|
|
958
|
+
current_component = component.p;
|
|
959
|
+
}
|
|
960
|
+
function get_parent_context(component_context2) {
|
|
961
|
+
let parent = component_context2.p;
|
|
962
|
+
while (parent !== null) {
|
|
963
|
+
const context_map = parent.c;
|
|
964
|
+
if (context_map !== null) {
|
|
965
|
+
return context_map;
|
|
966
|
+
}
|
|
967
|
+
parent = parent.p;
|
|
968
|
+
}
|
|
969
|
+
return null;
|
|
970
|
+
}
|
|
971
|
+
const BLOCK_OPEN = `<!--${HYDRATION_START}-->`;
|
|
972
|
+
const BLOCK_CLOSE = `<!--${HYDRATION_END}-->`;
|
|
973
|
+
function copy_payload({ out, css, head, uid }) {
|
|
974
|
+
return {
|
|
975
|
+
out,
|
|
976
|
+
css: new Set(css),
|
|
977
|
+
head: {
|
|
978
|
+
title: head.title,
|
|
979
|
+
out: head.out,
|
|
980
|
+
css: new Set(head.css),
|
|
981
|
+
uid: head.uid
|
|
982
|
+
},
|
|
983
|
+
uid
|
|
984
|
+
};
|
|
985
|
+
}
|
|
986
|
+
function assign_payload(p1, p2) {
|
|
987
|
+
p1.out = p2.out;
|
|
988
|
+
p1.head = p2.head;
|
|
989
|
+
p1.uid = p2.uid;
|
|
990
|
+
}
|
|
991
|
+
let on_destroy = [];
|
|
992
|
+
function props_id_generator() {
|
|
993
|
+
let uid = 1;
|
|
994
|
+
return () => "s" + uid++;
|
|
995
|
+
}
|
|
996
|
+
function render(component, options = {}) {
|
|
997
|
+
const uid = props_id_generator();
|
|
998
|
+
const payload = {
|
|
999
|
+
out: "",
|
|
1000
|
+
css: /* @__PURE__ */ new Set(),
|
|
1001
|
+
head: { title: "", out: "", css: /* @__PURE__ */ new Set(), uid },
|
|
1002
|
+
uid
|
|
1003
|
+
};
|
|
1004
|
+
const prev_on_destroy = on_destroy;
|
|
1005
|
+
on_destroy = [];
|
|
1006
|
+
payload.out += BLOCK_OPEN;
|
|
1007
|
+
if (options.context) {
|
|
1008
|
+
push();
|
|
1009
|
+
current_component.c = options.context;
|
|
1010
|
+
}
|
|
1011
|
+
component(payload, options.props ?? {}, {}, {});
|
|
1012
|
+
if (options.context) {
|
|
1013
|
+
pop();
|
|
1014
|
+
}
|
|
1015
|
+
payload.out += BLOCK_CLOSE;
|
|
1016
|
+
for (const cleanup of on_destroy) cleanup();
|
|
1017
|
+
on_destroy = prev_on_destroy;
|
|
1018
|
+
let head = payload.head.out + payload.head.title;
|
|
1019
|
+
for (const { hash, code } of payload.css) {
|
|
1020
|
+
head += `<style id="${hash}">${code}</style>`;
|
|
1021
|
+
}
|
|
1022
|
+
return {
|
|
1023
|
+
head,
|
|
1024
|
+
html: payload.out,
|
|
1025
|
+
body: payload.out
|
|
1026
|
+
};
|
|
1027
|
+
}
|
|
1028
|
+
function stringify(value) {
|
|
1029
|
+
return typeof value === "string" ? value : value == null ? "" : value + "";
|
|
1030
|
+
}
|
|
1031
|
+
function store_get(store_values, store_name, store) {
|
|
1032
|
+
if (store_name in store_values && store_values[store_name][0] === store) {
|
|
1033
|
+
return store_values[store_name][2];
|
|
1034
|
+
}
|
|
1035
|
+
store_values[store_name]?.[1]();
|
|
1036
|
+
store_values[store_name] = [store, null, void 0];
|
|
1037
|
+
const unsub = subscribe_to_store(
|
|
1038
|
+
store,
|
|
1039
|
+
/** @param {any} v */
|
|
1040
|
+
(v) => store_values[store_name][2] = v
|
|
1041
|
+
);
|
|
1042
|
+
store_values[store_name][1] = unsub;
|
|
1043
|
+
return store_values[store_name][2];
|
|
1044
|
+
}
|
|
1045
|
+
function unsubscribe_stores(store_values) {
|
|
1046
|
+
for (const store_name in store_values) {
|
|
1047
|
+
store_values[store_name][1]();
|
|
1048
|
+
}
|
|
1049
|
+
}
|
|
1050
|
+
function slot(payload, $$props, name, slot_props, fallback_fn) {
|
|
1051
|
+
var slot_fn = $$props.$$slots?.[name];
|
|
1052
|
+
if (slot_fn === true) {
|
|
1053
|
+
slot_fn = $$props["children"];
|
|
1054
|
+
}
|
|
1055
|
+
if (slot_fn !== void 0) {
|
|
1056
|
+
slot_fn(payload, slot_props);
|
|
1057
|
+
}
|
|
1058
|
+
}
|
|
1059
|
+
function bind_props(props_parent, props_now) {
|
|
1060
|
+
for (const key in props_now) {
|
|
1061
|
+
const initial_value = props_parent[key];
|
|
1062
|
+
const value = props_now[key];
|
|
1063
|
+
if (initial_value === void 0 && value !== void 0 && Object.getOwnPropertyDescriptor(props_parent, key)?.set) {
|
|
1064
|
+
props_parent[key] = value;
|
|
1065
|
+
}
|
|
1066
|
+
}
|
|
1067
|
+
}
|
|
1068
|
+
function ensure_array_like(array_like_or_iterator) {
|
|
1069
|
+
if (array_like_or_iterator) {
|
|
1070
|
+
return array_like_or_iterator.length !== void 0 ? array_like_or_iterator : Array.from(array_like_or_iterator);
|
|
1071
|
+
}
|
|
1072
|
+
return [];
|
|
1073
|
+
}
|
|
1074
|
+
|
|
1075
|
+
export { getContext as $, BRANCH_EFFECT as A, BLOCK_EFFECT as B, CLEAN as C, DIRTY as D, untracked_writes as E, set_untracked_writes as F, create_text as G, HYDRATION_START as H, branch as I, push as J, setContext as K, LEGACY_PROPS as L, MAYBE_DIRTY as M, pop as N, push$1 as O, component_context as P, pop$1 as Q, ROOT_EFFECT as R, DEV as S, ensure_array_like as T, UNOWNED as U, stringify as V, store_get as W, unsubscribe_stores as X, slot as Y, fallback as Z, bind_props as _, get_first_child as a, current_component as a0, noop as a1, copy_payload as a2, assign_payload as a3, get_next_sibling as b, HYDRATION_ERROR as c, define_property as d, HYDRATION_END as e, flush_sync as f, get as g, hydration_failed as h, init_operations as i, clear_text_content as j, increment_write_version as k, array_from as l, component_root as m, DERIVED as n, schedule_effect as o, set_active_reaction as p, set_active_effect as q, render as r, set_signal_status as s, is_array as t, active_effect as u, active_reaction as v, untracking as w, is_runes as x, derived_sources as y, state_unsafe_mutation as z };
|
|
1076
|
+
//# sourceMappingURL=index-CjHlq1kt.js.map
|